From 5ab804c35a23cf712970dfbcf14dd3845f3a6227 Mon Sep 17 00:00:00 2001 From: ajugo Date: Mon, 19 Dec 2022 13:18:24 +0100 Subject: [PATCH] Implement general protocol repository toolbar [SCI-7557] (#4698) * Implement general protocol repository toolbar [SCI-7557] * Move protocolsio page [SCI-7557] --- app/assets/javascripts/protocols/index.js | 2 + ...ternal_protocols_tab.js => protocolsio.js} | 0 .../stylesheets/protocol_management.scss | 8 +- app/assets/stylesheets/protocols/index.scss | 23 ++++++ app/controllers/protocols_controller.rb | 5 +- app/views/protocols/index.html.erb | 74 +------------------ .../protocols/index/_general_toolbar.html.erb | 42 +++++++++++ ...ab.html.erb => protocolsio_index.html.erb} | 33 +++++---- config/initializers/assets.rb | 2 +- config/locales/en.yml | 10 +-- config/routes.rb | 1 + 11 files changed, 101 insertions(+), 99 deletions(-) rename app/assets/javascripts/protocols/{external_protocols_tab.js => protocolsio.js} (100%) create mode 100644 app/views/protocols/index/_general_toolbar.html.erb rename app/views/protocols/{index/_external_protocols_tab.html.erb => protocolsio_index.html.erb} (71%) diff --git a/app/assets/javascripts/protocols/index.js b/app/assets/javascripts/protocols/index.js index 93ce008d6..a5488bb80 100644 --- a/app/assets/javascripts/protocols/index.js +++ b/app/assets/javascripts/protocols/index.js @@ -119,7 +119,9 @@ function initProtocolsTable() { dataTableWrapper.find('.main-actions, .pagination-row').removeClass('hidden'); let actionToolBar = $($('#protocolActionToolbar').html()); + let generalToolbar = $($('#protocolGeneralToolbar').html()); $('.protocols-container .actions-toolbar').html(actionToolBar); + $('.protocols-container .toolbar').html(generalToolbar); }, stateLoadCallback: function (settings) { // Load the table state for the current team diff --git a/app/assets/javascripts/protocols/external_protocols_tab.js b/app/assets/javascripts/protocols/protocolsio.js similarity index 100% rename from app/assets/javascripts/protocols/external_protocols_tab.js rename to app/assets/javascripts/protocols/protocolsio.js diff --git a/app/assets/stylesheets/protocol_management.scss b/app/assets/stylesheets/protocol_management.scss index ee2256e5d..d946b52b2 100644 --- a/app/assets/stylesheets/protocol_management.scss +++ b/app/assets/stylesheets/protocol_management.scss @@ -62,14 +62,14 @@ } } -.tab-pane.external_protocols { +.tab-pane.protocolsio { padding-bottom: 0; } -.external-protocols-tab { +.protocolsio-container { display: flex; flex-direction: column; - height: 100%; + height: calc(100vh - var(--navbar-height)); position: relative; .ps__rail-y { @@ -366,7 +366,7 @@ } @media (max-width: 900px) { - .external-protocols-tab { + .protocolsio-container { .header { .protocol-sort { padding-left: 0; diff --git a/app/assets/stylesheets/protocols/index.scss b/app/assets/stylesheets/protocols/index.scss index 6dbde103f..d54f289e6 100644 --- a/app/assets/stylesheets/protocols/index.scss +++ b/app/assets/stylesheets/protocols/index.scss @@ -1,4 +1,6 @@ // scss-lint:disable IdSelector +// scss-lint:disable SelectorDepth +// scss-lint:disable NestingDepth .protocols-index { .protocols-datatable { @@ -13,6 +15,27 @@ width: 100%; } + .toolbar { + display: flex; + + .left-general-toolbar { + align-items: center; + column-gap: .5em; + display: flex; + } + + .right-general-toolbar { + align-items: center; + display: flex; + margin-left: auto; + margin-right: .5em; + } + + .dropdown-menu { + min-width: 150px; + } + } + .dataTables_scroll { display: flex; flex-direction: column; diff --git a/app/controllers/protocols_controller.rb b/app/controllers/protocols_controller.rb index 7b2342f27..b1131645e 100644 --- a/app/controllers/protocols_controller.rb +++ b/app/controllers/protocols_controller.rb @@ -23,9 +23,10 @@ class ProtocolsController < ApplicationController linked_children_datatable permissions ) - before_action :switch_team_with_param, only: :index + before_action :switch_team_with_param, only: %i(index protocolsio_index) before_action :check_view_all_permissions, only: %i( index + protocolsio_index datatable ) # For update_from_parent and update_from_parent_modal we don't need to check @@ -595,6 +596,8 @@ class ProtocolsController < ApplicationController end end + def protocolsio_index; end + def import protocol = nil respond_to do |format| diff --git a/app/views/protocols/index.html.erb b/app/views/protocols/index.html.erb index 147127f07..5ca7560cd 100644 --- a/app/views/protocols/index.html.erb +++ b/app/views/protocols/index.html.erb @@ -18,77 +18,6 @@
- <%= render partial: "protocols/index/protocols_datatable.html.erb" %>
@@ -96,6 +25,7 @@
<%= render partial: "protocols/import_export/import_json_protocol_modal.html.erb" %> +<%= render partial: "protocols/index/general_toolbar.html.erb" %> <%= render partial: "protocols/index/action_toolbar.html.erb" %> <%= render partial: "protocols/index/make_private_results_modal.html.erb" %> <%= render partial: "protocols/index/publish_results_modal.html.erb" %> @@ -104,7 +34,6 @@ <%= render partial: "protocols/index/restore_results_modal.html.erb" %> <%= render partial: "protocols/index/import_results_modal.html.erb" %> <%= render partial: "protocols/index/linked_children_modal.html.erb" %> -<%= render partial: "protocols/index/protocol_preview_modal.html.erb" %> <%= render partial: "protocols/import_export/import_elements.html.erb" %> @@ -116,6 +45,5 @@ <%= stylesheet_link_tag 'datatables' %> <%= javascript_include_tag "assets/wopi/create_wopi_file" %> <%= javascript_include_tag "protocols/index" %> -<%= javascript_include_tag "protocols/steps" %> <%= javascript_pack_tag 'pdfjs/pdf_js' %> <%= stylesheet_pack_tag 'pdfjs/pdf_js_styles' %> diff --git a/app/views/protocols/index/_general_toolbar.html.erb b/app/views/protocols/index/_general_toolbar.html.erb new file mode 100644 index 000000000..99f11a6cb --- /dev/null +++ b/app/views/protocols/index/_general_toolbar.html.erb @@ -0,0 +1,42 @@ + diff --git a/app/views/protocols/index/_external_protocols_tab.html.erb b/app/views/protocols/protocolsio_index.html.erb similarity index 71% rename from app/views/protocols/index/_external_protocols_tab.html.erb rename to app/views/protocols/protocolsio_index.html.erb index 5c8352ee6..90b00080d 100644 --- a/app/views/protocols/index/_external_protocols_tab.html.erb +++ b/app/views/protocols/protocolsio_index.html.erb @@ -1,4 +1,4 @@ -
+
<%= form_tag team_list_external_protocol_path(@current_team.id), method: :get, class: 'protocols-search-bar', @@ -9,16 +9,16 @@ <%= image_tag 'external_protocols/protocolsio_logo.png', class: 'protocolsio-logo' %> - <%= t('protocols.index.external_protocols.protocolsio_title') %> + <%= t('protocols.index.protocolsio.protocolsio_title') %> <%= hidden_field_tag 'protocol_source', 'protocolsio/v3' %> <%= hidden_field_tag 'page_id', 1, id: 'page-id' %>
+ type='text' + name='key' + placeholder="<%= t('protocols.index.protocolsio.search_bar_placeholder') %>" > @@ -26,23 +26,23 @@
- <%= t('protocols.index.external_protocols.sort_by.title') %> + <%= t('protocols.index.protocolsio.sort_by.title') %>
@@ -54,7 +54,7 @@
- <%= t('protocols.index.external_protocols.list_panel.empty_text') %> + <%= t('protocols.index.protocolsio.list_panel.empty_text') %>
@@ -65,7 +65,7 @@
- <%= t('protocols.index.external_protocols.preview_panel.empty_title') %> + <%= t('protocols.index.protocolsio.preview_panel.empty_title') %>
@@ -75,7 +75,7 @@
- <%= t('protocols.index.external_protocols.preview_panel.empty_subtext') %> + <%= t('protocols.index.protocolsio.preview_panel.empty_subtext') %>
@@ -84,7 +84,7 @@
- <%= t('protocols.index.external_protocols.preview_panel.banner_text') %> + <%= t('protocols.index.protocolsio.preview_panel.banner_text') %>
@@ -100,4 +100,7 @@
-<%= javascript_include_tag "protocols/external_protocols_tab.js" %> +<%= render partial: "protocols/index/protocol_preview_modal.html.erb" %> + +<%= javascript_include_tag "protocols/steps" %> +<%= javascript_include_tag "protocols/protocolsio.js" %> diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 2f984a549..f06dc3278 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -54,7 +54,7 @@ Rails.application.config.assets.precompile += %w(projects/canvas.js) Rails.application.config.assets.precompile += %w(experiments/dropdown_actions.js) Rails.application.config.assets.precompile += %w(reports/new.js) Rails.application.config.assets.precompile += %w(protocols/index.js) -Rails.application.config.assets.precompile += %w(protocols/external_protocols_tab.js) +Rails.application.config.assets.precompile += %w(protocols/protocolsio.js) Rails.application.config.assets.precompile += %w(protocols/header.js) Rails.application.config.assets.precompile += %w(protocols/steps.js) Rails.application.config.assets.precompile += %w(protocols/edit.js) diff --git a/config/locales/en.yml b/config/locales/en.yml index f0934af5f..4c6f4bf74 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2557,7 +2557,7 @@ en: navigation: public: "Team protocols" private: "My protocols" - external_protocols: "External protocols" + protocolsio: "External protocols" archive: "Archive" action_toolbar: versions: "Versions" @@ -2568,12 +2568,12 @@ en: restore: "Restore" public_description: "Team protocols are visible and can be used by everyone from the team." private_description: "My protocols are only visible to you." - create_new: "New" + create_new: "New protocol" edit: "Edit" clone_btn: "Copy" import: "Import" - import_alt: " from SciNote protocol file(.eln)" - import_json: " from protocols.io file" + import_alt: "From local file" + import_protocols_io: "From Protocols.io" modal_import_json_upload: "Upload" modal_import_json_title: "Import protocols.io file" modal_import_json_notice: "Upload your protocols.io protocol file" @@ -2665,7 +2665,7 @@ en: row_failed: "Failed" row_in_repository_public: "%{protocol} - into Team protocols" row_in_repository_private: "%{protocol} - into My protocols" - external_protocols: + protocolsio: search_bar_placeholder: 'Search for protocols' protocolsio_title: 'Protocols.io' sort_by: diff --git a/config/routes.rb b/config/routes.rb index e15f99b96..111558bae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -594,6 +594,7 @@ Rails.application.routes.draw do to: 'protocols#protocolsio_import_create' post 'protocolsio_import_save', to: 'protocols#protocolsio_import_save' get 'export', to: 'protocols#export' + get 'protocolsio', to: 'protocols#protocolsio_index' end end