3400: Do not fetch API results just for the sake of looking up resource_class.
[arvados.git] / apps / workbench / app / views / application / _choose.html.erb
index 27ea600446fd4603759a4dc659f456e393632fd6..4e1503bde59738b90eb99b8b42f2d430a8987657 100644 (file)
@@ -3,20 +3,23 @@
     <div class="modal-content">
       <div class="modal-header">
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-        <h4 class="modal-title"><%= params[:title] || "Choose #{@objects.first.andand.class_for_display}" %></h4>
+        <h4 class="modal-title"><%= params[:title] || "Choose #{@objects.resource_class.andand.class_for_display}" %></h4>
       </div>
 
       <div class="modal-body">
+        <% project_filters, chooser_filters = (params[:filters] || []).partition do |attr, op, val|
+             attr == "owner_uuid" and op == "="
+           end %>
         <div class="input-group">
           <% if params[:by_project].to_s != "false" %>
-            <% selected_project_name = 'All projects'
-               @filters.andand.each do |attr, op, val|
-                 if attr == 'owner_uuid' and op == '='
-                   if val == current_user.uuid
-                     selected_project_name = "Home"
-                   else
-                     selected_project_name = Group.find(val).name rescue val
-                   end
+            <% if project_filters.empty?
+                 selected_project_name = 'All projects'
+               else
+                 val = project_filters.last.last
+                 if val == current_user.uuid
+                   selected_project_name = "Home"
+                 else
+                   selected_project_name = Group.find(val).name rescue val
                  end
                end
                %>
                style="height: 100%; overflow-y: scroll"
                data-infinite-scroller="#choose-scroll"
                id="choose-scroll"
-               data-infinite-content-params-from-chooser="<%= {filters: params[:filters] || []}.to_json %>"
-               data-infinite-content-href="<%= url_for partial: true %>">
+               data-infinite-content-params-from-chooser="<%= {filters: chooser_filters}.to_json %>"
+               <% if project_filters.any? %>
+                 data-infinite-content-params-from-project-dropdown="<%= {filters: project_filters, project_uuid: project_filters.last.last}.to_json %>"
+               <% end %>
+               <%
+                  action_data = JSON.parse params['action_data'] if params['action_data']
+                  use_preview_sel = action_data ? action_data['use_preview_selection'] : false
+                %>
+               data-infinite-content-href="<%= url_for partial: true,
+                                                       use_preview_selection: use_preview_sel %>">
           </div>
           <% if preview_pane %>
             <div class="col-md-6 hidden-xs hidden-sm modal-dialog-preview-pane" style="height: 100%; overflow-y: scroll">