From 5420797c32e73347a79b5ecd8cdfbd212fd8aae8 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Fri, 7 Mar 2014 13:34:24 -0500 Subject: [PATCH] Fixed styling of selection dropdown menu. Menu no longer dismisses when clicking a checkbox to remove an item. Selected files no longer have /./ in the middle. Fixed nil error when non-file or non-collection items are in the selection list. Fixed head_kind and tail_kind. Made a comment about inline x-editable. --- .../app/assets/javascripts/editable.js | 8 +++ .../app/assets/javascripts/selection.js | 15 ++++-- .../assets/stylesheets/application.css.scss | 7 --- .../app/controllers/actions_controller.rb | 13 +++-- .../app/controllers/application_controller.rb | 2 +- apps/workbench/app/models/collection.rb | 18 ------- .../views/collections/_show_files.html.erb | 54 ++++++++++--------- 7 files changed, 57 insertions(+), 60 deletions(-) diff --git a/apps/workbench/app/assets/javascripts/editable.js b/apps/workbench/app/assets/javascripts/editable.js index a743586942..79bad15e77 100644 --- a/apps/workbench/app/assets/javascripts/editable.js +++ b/apps/workbench/app/assets/javascripts/editable.js @@ -1,6 +1,14 @@ $.fn.editable.defaults.ajaxOptions = {type: 'put', dataType: 'json'}; $.fn.editable.defaults.send = 'always'; + +// Default for editing is popup. I experimented with inline which is a little +// nicer in that it shows up right under the mouse instead of nearby. However, +// the inline box is taller than the regular content, which causes the page +// layout to shift unless we make the table rows tall, which leaves a lot of +// wasted space when not editing. Also inline can get cut off if the page is +// too narrow, when the popup box will just move to do the right thing. //$.fn.editable.defaults.mode = 'inline'; + $.fn.editable.defaults.params = function (params) { var a = {}; var key = params.pk.key; diff --git a/apps/workbench/app/assets/javascripts/selection.js b/apps/workbench/app/assets/javascripts/selection.js index c94a557f86..27d63d1b02 100644 --- a/apps/workbench/app/assets/javascripts/selection.js +++ b/apps/workbench/app/assets/javascripts/selection.js @@ -52,14 +52,17 @@ jQuery(function($){ var lst = get_selection_list(); $("#persistent-selection-count").text(lst.length); if (lst.length > 0) { - $('#selection-form-content').html('
  • ' - + '
  • Clear selections
  • ' - + '
  • '); + $('#selection-form-content').html( + '
  • Clear selections
  • ' + + '
  • ' + + '
  • '); for (var i = 0; i < lst.length; i++) { $('#selection-form-content > li > table').append("" + "" - + "" + + "" + "" + "" @@ -109,6 +112,10 @@ jQuery(function($){ $(window).on('load storage', update_count); + + $('#selection-form-content').on("click", function(e) { + e.stopPropagation(); + }); }); add_form_selection_sources = null; diff --git a/apps/workbench/app/assets/stylesheets/application.css.scss b/apps/workbench/app/assets/stylesheets/application.css.scss index 7a26c709ff..6a57f9e969 100644 --- a/apps/workbench/app/assets/stylesheets/application.css.scss +++ b/apps/workbench/app/assets/stylesheets/application.css.scss @@ -185,10 +185,3 @@ table.table-fixed-header-row tbody { overflow-y: auto; } -#persistent-selection-list { - width: 500px; -} - -#persistent-selection-list li table tr { - border-top: 1px solid rgb(221, 221, 221); -} diff --git a/apps/workbench/app/controllers/actions_controller.rb b/apps/workbench/app/controllers/actions_controller.rb index c443c2196e..74e5831235 100644 --- a/apps/workbench/app/controllers/actions_controller.rb +++ b/apps/workbench/app/controllers/actions_controller.rb @@ -1,10 +1,13 @@ class ActionsController < ApplicationController + + skip_before_filter :find_object_by_uuid, only: :post + def combine_selected_files_into_collection lst = [] files = [] params["selection"].each do |s| m = CollectionsHelper.match(s) - if m[1] and m[2] + if m and m[1] and m[2] lst.append(m[1] + m[2]) files.append(m) end @@ -73,9 +76,9 @@ class ActionsController < ApplicationController chash.each do |k,v| l = Link.new({ - tail_kind: "arvados#Collection", + tail_kind: "arvados#collection", tail_uuid: k, - head_kind: "arvados#Collection", + head_kind: "arvados#collection", head_uuid: newuuid, link_class: "provenance", name: "provided" @@ -83,12 +86,12 @@ class ActionsController < ApplicationController l.save! end - '/collections/' + newc.uuid + redirect_to controller: 'collections', action: :show, id: newc.uuid end def post if params["combine_selected_files_into_collection"] - redirect_to combine_selected_files_into_collection + combine_selected_files_into_collection else redirect_to :back end diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index 2790f96472..412f86ce07 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -4,7 +4,7 @@ class ApplicationController < ActionController::Base around_filter :thread_clear around_filter :thread_with_mandatory_api_token, :except => [:render_exception, :render_not_found] around_filter :thread_with_optional_api_token - before_filter :find_object_by_uuid, :except => [:index, :post, :render_exception, :render_not_found] + before_filter :find_object_by_uuid, :except => [:index, :render_exception, :render_not_found] before_filter :check_user_agreements, :except => [:render_exception, :render_not_found] before_filter :check_user_notifications, :except => [:render_exception, :render_not_found] theme :select_theme diff --git a/apps/workbench/app/models/collection.rb b/apps/workbench/app/models/collection.rb index fd6b4e4efc..6bc55bde3d 100644 --- a/apps/workbench/app/models/collection.rb +++ b/apps/workbench/app/models/collection.rb @@ -26,22 +26,4 @@ class Collection < ArvadosBase $arvados_api_client.api "collections/#{self.uuid}/", "used_by" end - # def selection_label - # name = '' - # i = 0 - # if self.files.length > 3 - # m = 3 - # else - # m = self.files.length - # end - # while i < m - # name += "#{self.files[i][1]}" - # i += 1 - # name += ", " if i < m - # end - # if i < self.files.length - # name += "&ellip;" - # end - # name - # end end diff --git a/apps/workbench/app/views/collections/_show_files.html.erb b/apps/workbench/app/views/collections/_show_files.html.erb index 6600a40844..956958eddb 100644 --- a/apps/workbench/app/views/collections/_show_files.html.erb +++ b/apps/workbench/app/views/collections/_show_files.html.erb @@ -16,34 +16,38 @@ <% if @object then @object.files.sort_by{|f|[f[0],f[1]]}.each do |file| %> - <% file_path = "#{file[0]}/#{file[1]}" %> - - - <%= check_box_tag 'uuids[]', @object.uuid+'/'+file_path, false, { - :class => 'persistent-selection', - :friendly_type => "File", - :friendly_name => "#{@object.uuid}/#{file_path}", - :href => "#{url_for controller: 'collections', action: 'show', id: @object.uuid }/#{file_path}" - } %> - - - <%= file[0] %> - + <% f0 = file[0] %> + <% f0 = '' if f0 == '.' %> + <% f0 = f0[2..-1] if f0[0..1] == './' %> + <% f0 += '/' if not f0.empty? %> + <% file_path = "#{f0}#{file[1]}" %> + + + <%= check_box_tag 'uuids[]', @object.uuid+'/'+file_path, false, { + :class => 'persistent-selection', + :friendly_type => "File", + :friendly_name => "#{@object.uuid}/#{file_path}", + :href => "#{url_for controller: 'collections', action: 'show', id: @object.uuid }/#{file_path}" + } %> + + + <%= file[0] %> + - - <%= link_to file[1], {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'inline'}, {title: 'View in browser'} %> - + + <%= link_to file[1], {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'inline'}, {title: 'View in browser'} %> + - - <%= raw(human_readable_bytes_html(file[2])) %> - + + <%= raw(human_readable_bytes_html(file[2])) %> + - -
    - <%= link_to raw(''), {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'attachment'}, {class: 'btn btn-info btn-sm', title: 'Download'} %> -
    - - + +
    + <%= link_to raw(''), {controller: 'collections', action: 'show_file', uuid: @object.uuid, file: file_path, size: file[2], disposition: 'attachment'}, {class: 'btn btn-info btn-sm', title: 'Download'} %> +
    + + <% end; end %> -- 2.30.2