Merge branch 'master' into 2060-edit-tags-in-workbench
authorTom Clegg <tom@curoverse.com>
Sun, 16 Feb 2014 11:05:35 +0000 (03:05 -0800)
committerTom Clegg <tom@curoverse.com>
Sun, 16 Feb 2014 11:05:35 +0000 (03:05 -0800)
1  2 
apps/workbench/app/assets/javascripts/application.js

index dc7177060ed3e085756837e664368e400d6945cc,92842825f1fc609f032f7736788eeea1c7652c8a..770a904947ba02e1ab9a9a2b292209ccc1dc4854
@@@ -47,68 -47,14 +47,69 @@@ jQuery(function($)
          }).
          on('ajax:complete', function(e, status) {
              $('.loading').fadeOut('fast', 0);
 +        }).
 +        on('click', '.removable-tag a', function(e) {
 +            var tag_span = $(this).parents('[data-tag-link-uuid]').eq(0)
 +            tag_span.fadeTo('fast', 0.2);
 +            $.ajax('/links/' + tag_span.attr('data-tag-link-uuid'),
 +                   {dataType: 'json',
 +                    type: 'POST',
 +                    data: { '_method': 'DELETE' },
 +                    context: tag_span}).
 +                done(function(data, status, jqxhr) {
 +                    this.remove();
 +                }).
 +                fail(function(jqxhr, status, error) {
 +                    this.addClass('label-danger').fadeTo('fast', '1');
 +                });
 +            return false;
 +        }).
 +        on('click', 'a.add-tag-button', function(e) {
 +            var jqxhr;
 +            var new_tag_uuid = 'new-tag-' + Math.random();
 +            var tag_head_uuid = $(this).parents('tr').attr('data-object-uuid');
 +            var new_tag = window.prompt("Add tag for collection "+
 +                                    tag_head_uuid,
 +                                    "");
 +            if (new_tag == null)
 +                return false;
 +            var new_tag_span =
 +                $('<span class="label label-info removable-tag"></span>').
 +                attr('data-tag-link-uuid', new_tag_uuid).
 +                text(new_tag).
 +                css('opacity', '0.2').
 +                append('&nbsp;<a title="Delete tag"><i class="glyphicon glyphicon-trash"></i></a>&nbsp;');
 +            $(this).
 +                parent().
 +                find('>span').
 +                append(new_tag_span).
 +                append(' ');
 +            $.ajax($(this).attr('data-remote-href'),
 +                           {dataType: 'json',
 +                            type: $(this).attr('data-remote-method'),
 +                            data: {
 +                                'link[head_kind]': 'arvados#collection',
 +                                'link[head_uuid]': tag_head_uuid,
 +                                'link[link_class]': 'tag',
 +                                'link[name]': new_tag
 +                            },
 +                            context: new_tag_span}).
 +                done(function(data, status, jqxhr) {
 +                    this.attr('data-tag-link-uuid', data.uuid).
 +                        fadeTo('fast', '1');
 +                }).
 +                fail(function(jqxhr, status, error) {
 +                    this.addClass('label-danger').fadeTo('fast', '1');
 +                });
 +            return false;
          });
  
      HeaderRowFixer = function(selector) {
-         var tables = $(selector);
          this.duplicateTheadTr = function() {
-             tables.each(function() {
+             $(selector).each(function() {
                  var the_table = this;
+                 if ($('>tbody>tr:first>th', the_table).length > 0)
+                     return;
                  $('>tbody', the_table).
                      prepend($('>thead>tr', the_table).
                              clone().
              });
          }
          this.fixThead = function() {
-             tables.each(function() {
+             $(selector).each(function() {
                  var widths = [];
-                 $('> tbody > tr:eq(0) > td', this).each( function(i,v){
+                 $('> tbody > tr:eq(1) > td', this).each( function(i,v){
                      widths.push($(v).width());
                  });
                  for(i=0;i<widths.length;i++) {
              });
          }
      }
+     
      var fixer = new HeaderRowFixer('.table-fixed-header-row');
-     fixer.fixThead();
      fixer.duplicateTheadTr();
+     fixer.fixThead();
      $(window).resize(function(){
          fixer.fixThead();
      });
+     $(document).on('ajax:complete', function(e, status) {
+         fixer.duplicateTheadTr();
+         fixer.fixThead();
+     });
  })(jQuery);