myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [2884] branches/datasets: UI refinements


From: noreply
Subject: [myexperiment-hackers] [2884] branches/datasets: UI refinements
Date: Mon, 19 Dec 2011 05:29:22 -0500 (EST)

Revision
2884
Author
fbacall
Date
2011-12-19 05:29:20 -0500 (Mon, 19 Dec 2011)

Log Message

UI refinements

Modified Paths

Diff

Modified: branches/datasets/app/controllers/data_items_controller.rb (2883 => 2884)


--- branches/datasets/app/controllers/data_items_controller.rb	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/controllers/data_items_controller.rb	2011-12-19 10:29:20 UTC (rev 2884)
@@ -8,7 +8,7 @@
   before_filter :fetch_data_item, :except => [:create, :new]
   before_filter :fetch_data_set_and_workflow
   before_filter :auth
-  before_filter :fetch_port_names, : [:new, :edit, :create, :update]
+  before_filter :fetch_port_names, : [:new, :edit]
   before_filter :fetch_blobs, : [:new, :edit]
 
   def create
@@ -18,13 +18,10 @@
        @data_item.update_attributes(:data ="" data, :port_name => params[:workflow_port], :port_type => params[:port_type],
                                     :data_set => @data_set)
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_sets/data_set", :object => @data_set }
-        else
-          format.html { redirect_to data_set_url(@data_set) }
-        end
+        format.html { redirect_to data_set_url(@data_set) }
       end
     else
+      fetch_port_names
       respond_to do |format|
         if request.xhr?
           format.html { render :partial => "data_sets/errors", :status => :unprocessable_entity,
@@ -47,6 +44,7 @@
         end
       end
     else
+      fetch_port_names
       respond_to do |format|
         if request.xhr?
           format.html { render :partial => "data_sets/errors", :status => :unprocessable_entity,
@@ -61,12 +59,10 @@
   def destroy
     if @data_item.destroy
       respond_to do |format|
-        if request.xhr?
-          format.html { render :partial => "data_sets/data_set", :object => @data_set }
-        else
-          format.html { redirect_to data_set_url(@data_set) }
-        end
+        format.html { redirect_to data_set_url(@data_set) }
       end
+    else
+      format.html { render :action ="" "show", :status => :unprocessable_entity }
     end
   end
 

Modified: branches/datasets/app/controllers/data_sets_controller.rb (2883 => 2884)


--- branches/datasets/app/controllers/data_sets_controller.rb	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/controllers/data_sets_controller.rb	2011-12-19 10:29:20 UTC (rev 2884)
@@ -10,6 +10,7 @@
   before_filter :auth
   before_filter :fetch_and_auth_data_sets, : [:index]
   before_filter :set_sharing_mode_variables, : [:new, :create, :edit, :update]
+  before_filter :count_ports, : [:show]
 
   def create
     @data_set = @workflow.data_sets.build(params[:data_set])
@@ -167,4 +168,14 @@
         @updating_mode = @data_set.contribution.policy.update_mode
     end
   end
+
+  def count_ports
+    @free_input_count = 0
+    @free_output_count = 0
+    if Authorization.is_authorized?("edit", nil, @workflow, current_user)
+      workflow_model = @workflow.get_workflow_model_object(@data_set.workflow_version)
+      @free_input_count = workflow_model.sources.size - @data_set.data_items.select {|i| i.input?}.size
+      @free_output_count = workflow_model.sinks.size - @data_set.data_items.select {|i| i.output?}.size
+    end
+  end
 end

Modified: branches/datasets/app/views/data_items/_data_item.rhtml (2883 => 2884)


--- branches/datasets/app/views/data_items/_data_item.rhtml	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_items/_data_item.rhtml	2011-12-19 10:29:20 UTC (rev 2884)
@@ -18,16 +18,14 @@
 <td class="arrow"><img src=""
 <%= data_item.port_type == "input" ? port_td : data_td %>
 
-<% if Authorization.is_authorized?("destroy", nil, @data_set, current_user) %>
+<% if Authorization.is_authorized?("edit", nil, @data_set, current_user) %>
 <td class="controls">
-  <% if Authorization.is_authorized?("edit", nil, @data_set, current_user) %>
-    <%= icon('destroy', {:url ="" data_item_path(data_item), :method => :delete,
-                        :update => {:success => "data_set_container"},
-                        :loading => "$('data_item_#{data_item.id}_spinner').show();",
-                        :complete => "$('data_item_#{data_item.id}_spinner').hide();"},
-             nil, {:method => :delete,
-                   :confirm => "Are you sure?",
-                   :title => "Delete this #{data_item.dependent_data? ? "data" : "association"}"}, "", true) %>
+  <% if Authorization.is_authorized?("destroy", nil, @data_set, current_user) %>
+    <%= icon('destroy', data_item_path(data_item), nil,
+             {:method => :delete,
+              :confirm => "Are you sure?",
+              : "$('data_item_#{data_item.id}_spinner').show();",
+              :title => "Delete this #{data_item.dependent_data? ? "data" : "association"}"}, "", false) %>
     <br/>
   <% end %>
   <%= icon('edit', {:url ="" edit_data_item_path(data_item), :method => :get,

Modified: branches/datasets/app/views/data_items/_data_item_form.rhtml (2883 => 2884)


--- branches/datasets/app/views/data_items/_data_item_form.rhtml	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_items/_data_item_form.rhtml	2011-12-19 10:29:20 UTC (rev 2884)
@@ -1,5 +1,4 @@
 <%
-  data = ""
   port_name = @data_item.port_name
   port_type = @data_item.port_type
 
@@ -19,20 +18,21 @@
   # This function decides whether or not to do that when the form is submitted.
 
   form_submit_function = nil
+  no_ajax ||= false
 
-  unless (no_ajax ||= false)
+  unless no_ajax || @data_item.id.nil?
     form_submit_function = %(
       if($F('data_type_select_#{unique_id}') == "FileData"){
         //Normal HTTP request
         $('data_item_form_spinner_#{unique_id}').show();
-        $('data_item_submit_#{unique_id}').disable().value = "Saving...";;
+        $('data_item_submit_#{unique_id}').disable().value = "...";
         return true;
       }
       else{
         //AJAX
-        #{remote_function(:url ="" (@data_item.id.nil? ? data_set_data_items_path(@data_set) : data_item_path(@data_item)),
-                          :method => (@data_item.id.nil? ? :post : :put),
-                          :update => {:success => (@data_item.id.nil? ? "data_set_container" : container_element),
+        #{remote_function(:url ="" data_item_path(@data_item),
+                          :method => :put,
+                          :update => {:success => container_element,
                                       :failure => "data_item_form_errors"},
                           :failure => "$('data_item_form_errors').show();",
                           :loading => "$('data_item_form_spinner_#{unique_id}').show();",
@@ -44,7 +44,7 @@
   else
     form_submit_function = %(
       $('data_item_form_spinner_#{unique_id}').show();
-      $('data_item_submit_#{unique_id}').disable().value = "Saving...";
+      $('data_item_submit_#{unique_id}').disable().value = "...";
       return true;
     )
   end
@@ -99,15 +99,19 @@
           <%= hidden_field_tag(:port_type, port_type) %>
           <%= submit_tag "Save", :id => "data_item_submit_#{unique_id}" %><br/>
           or<br/>
-          <% if @data_item.id.nil? %>
-            <%= link_to "Cancel", "#", : "$$('##{container_element} td').each(function (e){ e.remove()});return false;" %>
+          <% unless no_ajax %>
+            <% if @data_item.id.nil? %>
+              <%= link_to "Cancel", "#", : "$$('##{container_element} td').each(function (e){ e.remove()});return false;" %>
+            <% else %>
+              <%= link_to "Cancel", "#", : remote_function(:url ="" data_item_path(@data_item),
+                                                       :method => :get,
+                                                       :update => {:success => container_element},
+                                                       :loading => "$('data_item_form_spinner_#{unique_id}').show();",
+                                                       :complete => "$('data_item_form_spinner_#{unique_id}').hide();")+
+                                                       ";return false" %>
+            <% end %>
           <% else %>
-            <%= link_to "Cancel", "#", : remote_function(:url ="" data_item_path(@data_item),
-                                                     :method => :get,
-                                                     :update => {:success => container_element},
-                                                     :loading => "$('data_item_form_spinner_#{unique_id}').show();",
-                                                     :complete => "$('data_item_form_spinner_#{unique_id}').hide();")+
-                                                     ";return false" %>
+            <%= link_to "Cancel", @data_set %>
           <% end %>
           <br/>
           <img id="data_item_form_spinner_<%=unique_id-%>" src="" style="display:none; vertical-align: middle;"/>

Modified: branches/datasets/app/views/data_items/data_types/blob/_form.html.erb (2883 => 2884)


--- branches/datasets/app/views/data_items/data_types/blob/_form.html.erb	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_items/data_types/blob/_form.html.erb	2011-12-19 10:29:20 UTC (rev 2884)
@@ -3,8 +3,11 @@
         (current_user.bookmarks.find(:all, :conditions => ["bookmarkable_type = 'Blob'"]).map {|b| b.bookmarkable})
 
   blob_names_for_select = blobs.map do |b|
-    %(<option #{"selected=\"selected\"" if (@data_item.data == b)}
-        value="#{b.id}" title="#{h b.title}">#{h truncate(b.title, :length => 30)}</option>)
+    %(<option #{'selected="selected"' if (@data_item.data == b)}
+        value="#{b.id}" title="#{h b.title}">#{h truncate(b.title, :length => 30)}
+                                             #{' (current)' if (@data_item.data == b)}
+      </option>
+     )
   end.join.html_safe
 %>
 

Modified: branches/datasets/app/views/data_sets/_data_set.rhtml (2883 => 2884)


--- branches/datasets/app/views/data_sets/_data_set.rhtml	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_sets/_data_set.rhtml	2011-12-19 10:29:20 UTC (rev 2884)
@@ -25,20 +25,12 @@
     <tbody>
       <% (@data_set.data_items.select{|r| r.input?}).each do |i| %>
         <tr class="data_item" id="item_<%= i.id -%>">
-          <% if @data_item && @data_item == i %>
-            <%= render :partial => "data_items/data_item_form" %>
-          <% else %>
-            <%= render :partial => "data_items/data_item", :object => i %>
-          <% end %>
+          <%= render :partial => "data_items/data_item", :object => i %>
         </tr>
         <%# Blank row for spacing %>
         <tr><td style="padding: 3px"></td></tr>
       <% end %>
-      <tr id="data_item_input_form">
-        <% if @data_item && @data_item.id.blank? && @data_item.port_type == "input" %>
-          <%= render :partial => "data_items/data_item_form" %>
-        <% end %>
-      </tr>
+      <tr id="data_item_input_form"></tr>
       <tr><td style="padding: 3px"></td></tr>
     </tbody>
   </table>
@@ -47,18 +39,18 @@
     <span class="none_text">No output data specified</span>
   <% end  %>
 
-  <% if mine? @workflow %>
-  <ul class="sectionIcons">
-    <li>
-      <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "input"), :method => :get,
-                       :update => {:success => "data_item_input_form"},
-                       :failure => "alert('No more inputs left to specify.')",
-                       :loading => "$('data_item_input_form_spinner').show();",
-                       :complete => "$('data_item_input_form_spinner').hide();"}, nil, nil,
-               'Add input data', true) %>
-      <img id="data_item_input_form_spinner" src="" style="display:none; vertical-align: middle;"/>
-    </li>
-  </ul>
+  <% if @free_input_count > 0 %>
+    <ul class="sectionIcons">
+      <li>
+        <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "input"), :method => :get,
+                         :update => {:success => "data_item_input_form"},
+                         :failure => "alert('No more inputs left to specify.')",
+                         :loading => "$('data_item_input_form_spinner').show();",
+                         :complete => "$('data_item_input_form_spinner').hide();"}, nil, nil,
+                 'Add input data', true) %>
+        <img id="data_item_input_form_spinner" src="" style="display:none; vertical-align: middle;"/>
+      </li>
+    </ul>
   <% end %>
 
   <h3>Output data</h3>
@@ -67,20 +59,12 @@
     <tbody>
       <% (@data_set.data_items.select{|r| r.output?}).each do |o| %>
         <tr class="data_item" id="item_<%= o.id -%>">
-          <% if @data_item && @data_item == o %>
-            <%= render :partial => "data_items/data_item_form" %>
-          <% else %>
-            <%= render :partial => "data_items/data_item", :object => o %>
-          <% end %>
+          <%= render :partial => "data_items/data_item", :object => o %>
         </tr>
         <%# Blank row for spacing %>
         <tr><td style="padding: 3px"></td></tr>
       <% end %>
-      <tr id="data_item_output_form">
-        <% if @data_item && @data_item.id.blank? && @data_item.port_type == "output" %>
-          <%= render :partial => "data_items/data_item_form" %>
-        <% end %>
-      </tr>
+      <tr id="data_item_output_form"></tr>
       <tr><td style="padding: 3px"></td></tr>
     </tbody>
   </table>
@@ -89,18 +73,18 @@
     <span class="none_text">No output data specified</span>
   <% end  %>
 
-  <% if mine? @workflow %>
-  <ul class="sectionIcons">
-    <li>
-      <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "output"), :method => :get,
-                       :update => {:success => "data_item_output_form"},
-                       :failure => "alert('No more outputs left to specify.')",
-                       :loading => "$('data_item_output_form_spinner').show();",
-                       :complete => "$('data_item_output_form_spinner').hide();"}, nil, nil,
-               'Add output data', true) %>
-      <img id="data_item_output_form_spinner" src="" style="display:none; vertical-align: middle;"/>
-    </li>
-  </ul>
+  <% if @free_output_count > 0 %>
+    <ul class="sectionIcons">
+      <li>
+        <%= icon('new', {:url ="" new_data_set_data_item_path(:data_set_id => @data_set.id, :port_type => "output"), :method => :get,
+                         :update => {:success => "data_item_output_form"},
+                         :failure => "alert('No more outputs left to specify.')",
+                         :loading => "$('data_item_output_form_spinner').show();",
+                         :complete => "$('data_item_output_form_spinner').hide();"}, nil, nil,
+                 'Add output data', true) %>
+        <img id="data_item_output_form_spinner" src="" style="display:none; vertical-align: middle;"/>
+      </li>
+    </ul>
   <% end %>
 
 </div>

Modified: branches/datasets/app/views/data_sets/_form.rhtml (2883 => 2884)


--- branches/datasets/app/views/data_sets/_form.rhtml	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_sets/_form.rhtml	2011-12-19 10:29:20 UTC (rev 2884)
@@ -17,6 +17,7 @@
   </p>
 
   <p>
+    <%= info_icon_with_tooltip("Select the version of the workflow that this data set will apply to.") -%>
     <b>Workflow version:</b> <%= f.select :workflow_version,
                  @workflow.versions.reverse.map {|w| ["#{w.version.to_s} address@hidden(w.version)}", w.version] } %>
   </p>

Modified: branches/datasets/app/views/data_sets/index.rhtml (2883 => 2884)


--- branches/datasets/app/views/data_sets/index.rhtml	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/app/views/data_sets/index.rhtml	2011-12-19 10:29:20 UTC (rev 2884)
@@ -9,7 +9,9 @@
 <h1>Data Sets</h1>
 
 <% if @data_sets.empty? %>
-  <span class="none_text">Either no data sets have been provided, or you lack sufficient privileges to view them.</span>
+  <div style="text-align: center">
+    <span class="none_text">Either no data sets have been provided, or you lack sufficient privileges to view them.</span>
+  </div>
 <% else %>
   <%= render :partial => 'table', :locals => {:collection => @data_sets} %>
 <% end %>
\ No newline at end of file

Modified: branches/datasets/test/functional/data_items_controller_test.rb (2883 => 2884)


--- branches/datasets/test/functional/data_items_controller_test.rb	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/test/functional/data_items_controller_test.rb	2011-12-19 10:29:20 UTC (rev 2884)
@@ -22,8 +22,7 @@
     end
     end
 
-    assert_response :success
-    assert_equal "test", assigns(:data_item).data.data
+    assert_redirected_to data_set_path(assigns(:data_set))
   end
 
   test "can add myexperiment file to a data set" do
@@ -39,7 +38,7 @@
           :data_id => blobs(:picture).id
     end
 
-    assert_response :success
+    assert_redirected_to data_set_path(assigns(:data_set))
     assert_equal blobs(:picture), assigns(:data_item).data
   end
 
@@ -62,7 +61,7 @@
     end
     end
 
-    assert_response :redirect
+    assert_redirected_to data_set_path(assigns(:data_set))
   end
 
   test "file data not saved if data item not saved" do
@@ -194,7 +193,7 @@
     end
     end
 
-    assert_response :success
+    assert_redirected_to data_set_path(assigns(:data_set))
   end
 
   test "can fetch data item form with correct port names for workflow version" do

Modified: branches/datasets/test/functional/data_sets_controller_test.rb (2883 => 2884)


--- branches/datasets/test/functional/data_sets_controller_test.rb	2011-12-15 11:11:37 UTC (rev 2883)
+++ branches/datasets/test/functional/data_sets_controller_test.rb	2011-12-19 10:29:20 UTC (rev 2884)
@@ -92,7 +92,7 @@
     get :index, :workflow_id => workflow.id
 
     assert_response :success
-    assert_equal 3, assigns(:data_sets).size
+    assert_equal 4, assigns(:data_sets).size
   end
 
   test "can download data sets" do

reply via email to

[Prev in Thread] Current Thread [Next in Thread]