2 $(document).on('click', '.toggle-persist button', function() {
3 var toggle_group = $(this).parents('[data-remote-href]').first();
4 var want_persist = !toggle_group.find('button').hasClass('active');
5 var want_state = want_persist ? 'persistent' : 'cache';
6 console.log(want_persist);
7 toggle_group.find('button').
8 toggleClass('active', want_persist).
9 html(want_persist ? 'Persistent' : 'Cache');
10 $.ajax(toggle_group.attr('data-remote-href'),
17 toggle_group: toggle_group,
18 want_state: want_state,
22 done(function(data, status, jqxhr) {
24 $(document).trigger('ajax:complete');
25 // Remove "danger" status in case a previous action failed
26 $('.btn-danger', context.toggle_group).
28 removeClass('btn-danger');
29 // Update last-saved-state
31 attr('data-persistent-state', context.want_state);
33 fail(function(jqxhr, status, error) {
36 $(document).trigger('ajax:complete');
37 // Add a visual indication that something failed
39 addClass('btn-danger').
40 removeClass('btn-info');
41 // Change to the last-saved-state
42 saved_state = context.toggle_group.attr('data-persistent-state');
44 toggleClass('active', saved_state == 'persistent').
45 html(saved_state == 'persistent' ? 'Persistent' : 'Cache');
47 if (jqxhr.readyState == 0 || jqxhr.status == 0) {
48 // Request cancelled due to page reload.
49 // Displaying an alert would be rather annoying.
50 } else if (jqxhr.responseJSON && jqxhr.responseJSON.errors) {
51 window.alert("Request failed: " +
52 jqxhr.responseJSON.errors.join("; "));
54 window.alert("Request failed.");
57 $(document).trigger('ajax:send');