2016-07-21 19:11:15 +08:00
|
|
|
<div class ="step <%= step.completed? ? "completed" : "not-completed" %>">
|
|
|
|
<div class="badge-num">
|
|
|
|
<span class="badge bg-primary size-digit-<%= (step.position + 1).to_s.length %>"><%= step.position + 1 %></span>
|
|
|
|
</div>
|
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<div class="panel-options pull-right">
|
|
|
|
<% if can_reorder_step_in_protocol(@protocol) %>
|
|
|
|
<a data-action="move-step" class="btn btn-link" href="<%= move_up_step_path(step, format: :json) %>" title="<%= t("protocols.steps.options.up_arrow_title") %>" data-remote="true">
|
|
|
|
<span class="glyphicon glyphicon-arrow-up"></span></a>
|
|
|
|
<a data-action="move-step" class="btn btn-link" href="<%= move_down_step_path(step, format: :json) %>" title="<%= t("protocols.steps.options.down_arrow_title") %>" data-remote="true">
|
|
|
|
<span class="glyphicon glyphicon-arrow-down"></a>
|
|
|
|
<% end %>
|
|
|
|
<% if can_edit_step_in_protocol(@protocol) %>
|
|
|
|
<a data-action="edit-step" class="btn btn-link" title="<%= t("protocols.steps.options.edit_title") %>" href="<%= edit_step_path(step, format: :json) %>" data-remote="true">
|
|
|
|
<span class="glyphicon glyphicon-edit">
|
|
|
|
</a>
|
|
|
|
<% end %>
|
2016-10-01 20:51:55 +08:00
|
|
|
<% if can_delete_step_in_protocol(@protocol) && step.can_destroy? %>
|
2016-07-21 19:11:15 +08:00
|
|
|
<%= link_to(step_path(step), title: t("protocols.steps.options.delete_title"), method: "delete", class: "btn btn-link",
|
|
|
|
data: {action: "delete-step", confirm: t("protocols.steps.destroy.confirm", step: step.name)}) do %>
|
|
|
|
<span class="glyphicon glyphicon-trash">
|
|
|
|
<% end %>
|
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
<a class="step-panel-collapse-link" href="#step-panel-<%= step.id %>" data-toggle="collapse" data-remote="true">
|
|
|
|
<span class="glyphicon glyphicon-collapse-down collapse-step-icon"></span>
|
|
|
|
<strong><%= step.name %></strong> |
|
|
|
|
<span><%= raw t("protocols.steps.published_on", timestamp: l(step.created_at, format: :full), user: step.user.full_name) %></span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
<div class="panel-collapse collapse" id="step-panel-<%= step.id %>" role="tabpanel">
|
2016-09-16 15:04:21 +08:00
|
|
|
<div class="panel-body">
|
2016-09-15 14:46:14 +08:00
|
|
|
<% if @protocol.in_module? %>
|
2016-07-21 19:11:15 +08:00
|
|
|
<ul class="nav nav-tabs">
|
|
|
|
<li role="presentation" class="active">
|
|
|
|
<a class="step-info-tab" href="#step-info-<%= step.id %>" data-toggle="tab"><span class="glyphicon glyphicon-info-sign"></span>
|
|
|
|
<%= t("protocols.steps.info_tab") %></a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2016-09-16 15:04:21 +08:00
|
|
|
<div class="tab-content step-container">
|
2016-07-21 19:11:15 +08:00
|
|
|
<div class="tab-pane active" role="tabpanel" id="step-info-<%= step.id %>">
|
2016-09-16 15:04:21 +08:00
|
|
|
<div class="row">
|
2016-09-15 14:46:14 +08:00
|
|
|
<% end %>
|
2016-07-21 19:11:15 +08:00
|
|
|
<% if step.description.blank? %>
|
|
|
|
<em><%= t("protocols.steps.no_description") %></em>
|
|
|
|
<% else %>
|
|
|
|
<%= step.description %>
|
|
|
|
<% end %>
|
|
|
|
<hr>
|
|
|
|
<div class="row">
|
|
|
|
<% unless step.tables.blank? then %>
|
|
|
|
<div class="col-xs-12">
|
|
|
|
<strong><%= t("protocols.steps.tables") %></strong>
|
|
|
|
<% step.tables.each do |table| %>
|
|
|
|
<div data-role="hot-table" class="hot-table">
|
|
|
|
<%= hidden_field(table, :contents, value: table.contents_utf_8, class: "hot-contents") %>
|
|
|
|
<div data-role="step-hot-table" class="step-result-hot-table"></div>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
<% assets = ordered_assets(step) %>
|
|
|
|
<% unless assets.blank? then %>
|
|
|
|
<div class="col-xs-12">
|
|
|
|
<strong><%= t("protocols.steps.files") %></strong>
|
|
|
|
<ul>
|
|
|
|
<% assets.each do |asset| %>
|
|
|
|
<li>
|
|
|
|
<% if can_view_or_download_step_assets(@protocol) %>
|
2016-08-17 21:51:04 +08:00
|
|
|
<% if asset.file_present %>
|
|
|
|
<%= link_to download_asset_path(asset), data: {no_turbolink: true, id: true, status: "asset-present"} do %>
|
|
|
|
<%= image_tag preview_asset_path(asset) if asset.is_image? %>
|
2016-08-26 17:13:40 +08:00
|
|
|
<p><%= truncate(asset.file_file_name, length: 50) %></p>
|
2016-09-01 18:51:30 +08:00
|
|
|
<% end %>
|
|
|
|
<% if asset.can_perform_action("view") %>
|
|
|
|
<%= link_to "View", view_asset_url(id: asset) %>
|
|
|
|
<% end %>
|
2016-09-28 00:14:19 +08:00
|
|
|
<% if can_edit_step_in_protocol(@protocol) &&
|
|
|
|
asset.can_perform_action("edit") %>
|
2016-09-01 18:51:30 +08:00
|
|
|
<%= link_to "Edit", edit_asset_url(id: asset) %>
|
2016-07-21 19:11:15 +08:00
|
|
|
<% end %>
|
2016-08-17 21:51:04 +08:00
|
|
|
<% else %>
|
|
|
|
<%= asset_loading_span(asset) %>
|
|
|
|
<% end %>
|
2016-07-21 19:11:15 +08:00
|
|
|
<% else %>
|
|
|
|
<%= image_tag preview_asset_path(asset) if asset.is_image? %>
|
2016-08-26 17:13:40 +08:00
|
|
|
<p><%= truncate(asset.file_file_name, length: 50) %></p>
|
2016-07-21 19:11:15 +08:00
|
|
|
<% end %>
|
|
|
|
</li>
|
|
|
|
<% end %>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
|
|
|
|
<% unless step.checklists.blank? then %>
|
|
|
|
<div class="col-xs-12">
|
|
|
|
<% step.checklists.each do |checklist| %>
|
|
|
|
<strong><%= checklist.name %></strong>
|
|
|
|
<% if checklist.checklist_items.empty? %>
|
|
|
|
</br>
|
|
|
|
<%= t("protocols.steps.empty_checklist") %>
|
|
|
|
</br>
|
|
|
|
<% else %>
|
|
|
|
<% ordered_checklist_items(checklist).each do |checklist_item| %>
|
|
|
|
<div class="checkbox" <%= @protocol.in_module? ? "data-action=check-item" : "" %>>
|
|
|
|
<label>
|
|
|
|
<% if @protocol.in_module? %>
|
|
|
|
<input type="checkbox" value="" data-link-url="<%=checklistitem_state_step_path(step) %>" data-id="<%= checklist_item.id %>" <%= "checked" if checklist_item.checked? %> />
|
|
|
|
<% else %>
|
|
|
|
<input type="checkbox" value="" disabled="disabled" />
|
|
|
|
<% end %>
|
|
|
|
<%= checklist_item.text %>
|
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
<% end %>
|
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<% if @protocol.in_module? %>
|
|
|
|
<% if !step.completed? and can_complete_step_in_protocol(@protocol) %>
|
|
|
|
<div data-action="complete-step" class="pull-right" data-link-url="<%= toggle_step_state_step_path(step)%>">
|
|
|
|
<button class="btn btn-primary"><%= t("protocols.steps.options.complete_title") %></button>
|
|
|
|
</div>
|
|
|
|
<% elsif step.completed? and can_uncomplete_step_in_protocol(@protocol) %>
|
|
|
|
<div data-action="uncomplete-step" class="pull-right" data-link-url="<%= toggle_step_state_step_path(step)%>">
|
|
|
|
<button class="btn btn-default"><%= t("protocols.steps.options.uncomplete_title") %></button>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
|
|
|
<% end %>
|
|
|
|
<% if @protocol.in_module? %>
|
|
|
|
</div>
|
2016-09-16 15:04:21 +08:00
|
|
|
<% if can_view_step_comments(@protocol) %>
|
|
|
|
<div class="row">
|
2016-09-21 00:53:51 +08:00
|
|
|
<div class="step-comment"
|
|
|
|
id="step-comments-<%= step.id %>"
|
|
|
|
data-href="<%= url_for step_step_comments_path(step_id: step.id, format: :json) %>">
|
2016-09-16 15:04:21 +08:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<% end %>
|
2016-07-21 19:11:15 +08:00
|
|
|
</div>
|
2016-09-15 14:46:14 +08:00
|
|
|
</div>
|
2016-07-21 19:11:15 +08:00
|
|
|
<% end %>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|