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