Add active/archive switch to results page [SCI-9264]

This commit is contained in:
Anton 2023-09-08 13:42:02 +02:00
parent e6252e09cc
commit 7b44a47d51
7 changed files with 38 additions and 25 deletions

View file

@ -195,7 +195,7 @@ class ResultsController < ApplicationController
def set_navigator
@navigator = {
url: tree_navigator_my_module_path(@my_module),
archived: params[:view_mode] == 'archived',
archived: false,
id: @my_module.code
}
end

View file

@ -41,17 +41,13 @@ module SecondaryNavigationHelper
end
def is_module_results?
%w(index).include?(action_name) && controller_name == 'results' && !%w(archived).include?(params[:view_mode])
%w(index).include?(action_name) && controller_name == 'results'
end
def is_module_activities?
action_name == 'activities'
end
def is_module_archive?
%w(index).include?(action_name) && controller_name == 'results' && %w(archived).include?(params[:view_mode])
end
def title_element
if all_projects_page?
current_team

View file

@ -2,6 +2,9 @@
<div class="results-wrapper">
<ResultsToolbar :sort="sort"
:canCreate="canCreate == 'true'"
:archived="archived == 'true'"
:active_url="active_url"
:archived_url="archived_url"
@setSort="setSort"
@setFilters="setFilters"
@newResult="createResult"
@ -36,7 +39,10 @@
components: { ResultsToolbar, Result },
props: {
url: { type: String, required: true },
canCreate: { type: String, required: true }
canCreate: { type: String, required: true },
archived: { type: String, required: true },
active_url: { type: String, required: true },
archived_url: { type: String, required: true }
},
data() {
return {

View file

@ -6,6 +6,25 @@
{{ i18n.t('my_modules.results.add_label') }}
</button>
</div>
<div class="dropdown view-switch" >
<div class="btn btn-light btn-black view-switch-button prevent-shrink" id="viewSwitchButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span v-if="archived" class="state-view-switch-btn-name">{{ i18n.t('my_modules.results.archived_results') }}</span>
<span v-else class="state-view-switch-btn-name">{{ i18n.t('my_modules.results.active_results') }}</span>
<span class="sn-icon sn-icon-down"></span>
</div>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="viewSwitchButton">
<li class="view-switch-active">
<a :href="active_url" :class="{'form-dropdown-state-item prevent-shrink': !archived}">
{{ i18n.t('my_modules.results.active_results') }}
</a>
</li>
<li class="view-switch-archived">
<a :href="archived_url" :class="{'form-dropdown-state-item prevent-shrink': archived}">
{{ i18n.t('my_modules.results.archived_results') }}
</a>
</li>
</ul>
</div>
<div class="result-toolbar__right flex items-center" @click="$emit('expandAll')">
<button class="btn btn-secondary mr-3">
{{ i18n.t('my_modules.results.expand_label') }}
@ -48,7 +67,10 @@
name: 'ResultsToolbar',
props: {
sort: { type: String, required: true },
canCreate: { type: Boolean, required: true }
canCreate: { type: Boolean, required: true },
archived: { type: Boolean, required: true },
active_url: { type: String, required: true },
archived_url: { type: String, required: true }
},
data() {
return {

View file

@ -12,10 +12,6 @@
title="<%= t("nav2.modules.results") %>"
>
<%= t("nav2.modules.results") %>
<% @active_results_size = @my_module.results.where(archived:false).size %>
<% if @active_results_size.positive? %>
<sup class="navigation-results-counter"><%= @my_module.archived_branch? ? @my_module.results.size : @active_results_size %></sup>
<% end %>
</a>
<a class="p-3 border-b-4 border-transparent hover:no-underline uppercase text-bold capitalize <%= is_module_activities? ? "text-sn-blue" : "text-sn-grey" %>"
href="<%= activities_my_module_url(@my_module, view_mode: params[:view_mode]) %>"
@ -26,18 +22,6 @@
<% end %>
<div data-hook="secondary-navigation-tabs"></div>
<% if can_read_experiment?(@my_module.experiment) && !@my_module.archived_branch? %>
<a class="p-3 border-b-4 border-transparent hover:no-underline uppercase text-bold capitalize <%= is_module_archive? ? "text-sn-blue" : "text-sn-grey" %>"
href="<%= my_module_results_path(@my_module, view_mode: :archived) %>"
title="<%= t'nav2.modules.archive' %>"
>
<%= t("nav2.modules.archive") %>
<% @archived_results_size = @my_module.results.where(archived:true).size %>
<% if @archived_results_size.positive? %>
<sup class="navigation-results-counter"><%= @archived_results_size %></sup>
<% end %>
</a>
<% end %>
<%= render partial: '/my_modules/task_flow_and_sharing' %>
</div>
</div>

View file

@ -19,7 +19,10 @@
<div id="results" data-behaviour="vue">
<results url="<%= my_module_results_url(@my_module, view_mode: params[:view_mode]) %>"
can-create=<%= can_create_results?(@my_module) && params[:view_mode].blank? %>>
active_url="<%= my_module_results_url(@my_module) %>"
archived_url="<%= my_module_results_url(@my_module, view_mode: :archived) %>"
can-create=<%= can_create_results?(@my_module) && !(params[:view_mode] == 'archived') %>
archived=<%= params[:view_mode] == 'archived' %>>
</div>
</div>

View file

@ -1252,6 +1252,8 @@ en:
load_from_file_protocol_general_error: "Failed to load the protocol from file. It is likely that certain fields (protocol and individual step titles and names) contain too many or too few characters.(max is %{max} and min is %{min})"
results:
head_title: "%{project} | %{module} | Results"
active_results: "Active results"
archived_results: "Archived results"
default_name: "New result"
placeholder: "Enter result name"
add_label: "New result"