Merge branch '0000-ruby-client-config'
[arvados.git] / apps / workbench / app / assets / javascripts / collections.js
1 jQuery(function($){
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'),
11                {dataType: 'json',
12                 type: 'POST',
13                 data: {
14                     value: want_state
15                 },
16                 context: {
17                     toggle_group: toggle_group,
18                     want_state: want_state,
19                     button: this
20                 }
21                }).
22             done(function(data, status, jqxhr) {
23                 var context = this;
24                 $(document).trigger('ajax:complete');
25                 // Remove "danger" status in case a previous action failed
26                 $('.btn-danger', context.toggle_group).
27                     addClass('btn-info').
28                     removeClass('btn-danger');
29                 // Update last-saved-state
30                 context.toggle_group.
31                     attr('data-persistent-state', context.want_state);
32             }).
33             fail(function(jqxhr, status, error) {
34                 var context = this;
35                 var saved_state;
36                 $(document).trigger('ajax:complete');
37                 // Add a visual indication that something failed
38                 $(context.button).
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');
43                 $(context.button).
44                     toggleClass('active', saved_state == 'persistent').
45                     html(saved_state == 'persistent' ? 'Persistent' : 'Cache');
46
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("; "));
53                 } else {
54                     window.alert("Request failed.");
55                 }
56             });
57         $(document).trigger('ajax:send');
58     });
59 });