From 664540d6d4b96cbafe2d5db1516050a997577266 Mon Sep 17 00:00:00 2001 From: Andrew Wood Date: Wed, 7 Aug 2024 13:07:26 +0100 Subject: [PATCH 01/11] Add observation unit feature filter --- app/controllers/admin_controller.rb | 1 + app/views/admin/features_enabled.html.erb | 3 ++- config/initializers/seek_configuration.rb | 1 + config/initializers/seek_testing.rb | 1 + lib/seek/config_setting_attributes.yml | 1 + 5 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index bdc8686e45..fe21078548 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -121,6 +121,7 @@ def update_features_enabled Seek::Config.documents_enabled = string_to_boolean params[:documents_enabled] Seek::Config.events_enabled = string_to_boolean params[:events_enabled] Seek::Config.isa_enabled = string_to_boolean params[:isa_enabled] + Seek::Config.observation_units_enabled = string_to_boolean params[:observation_units_enabled] Seek::Config.models_enabled = string_to_boolean params[:models_enabled] Seek::Config.organisms_enabled = string_to_boolean params[:organisms_enabled] Seek::Config.programmes_enabled = string_to_boolean params[:programmes_enabled] diff --git a/app/views/admin/features_enabled.html.erb b/app/views/admin/features_enabled.html.erb index b00ebdd8ac..afd51e6a6b 100644 --- a/app/views/admin/features_enabled.html.erb +++ b/app/views/admin/features_enabled.html.erb @@ -58,7 +58,8 @@ <%= admin_checkbox_setting(:isa_enabled, 1, Seek::Config.isa_enabled, "ISA enabled", "Whether the ISA framework is enabled. The ISA framework allows users to create Investigations, Studies and Assays to organize their work.") %> - + <%= admin_checkbox_setting(:observation_units_enabled, 1, Seek::Config.observation_units_enabled, + "Observation Units enabled", "Whether the users can register Observation Units to organize their work.") %> <%= admin_checkbox_setting(:models_enabled, 1, Seek::Config.models_enabled, "Models enabled", "Whether the users can register computational models in SEEK.") %> diff --git a/config/initializers/seek_configuration.rb b/config/initializers/seek_configuration.rb index a6dbde7eca..2d633937f7 100644 --- a/config/initializers/seek_configuration.rb +++ b/config/initializers/seek_configuration.rb @@ -82,6 +82,7 @@ def load_seek_config_defaults! Seek::Config.default :data_files_enabled,true Seek::Config.default :events_enabled,true Seek::Config.default :isa_enabled, true + Seek::Config.default :observation_units_enabled,true Seek::Config.default :models_enabled,true Seek::Config.default :organisms_enabled,true Seek::Config.default :programmes_enabled, false diff --git a/config/initializers/seek_testing.rb b/config/initializers/seek_testing.rb index cd91530bbc..808ae2f05b 100644 --- a/config/initializers/seek_testing.rb +++ b/config/initializers/seek_testing.rb @@ -37,6 +37,7 @@ def load_seek_testing_defaults! Settings.defaults[:file_templates_enabled] = true Settings.defaults[:human_diseases_enabled] = true Settings.defaults[:isa_enabled] = true + Settings.defaults[:observation_units_enabled] = true Settings.defaults[:models_enabled] = true Settings.defaults[:organisms_enabled] = true Settings.defaults[:programmes_enabled] = true diff --git a/lib/seek/config_setting_attributes.yml b/lib/seek/config_setting_attributes.yml index f34b5e22a4..1069308ae5 100644 --- a/lib/seek/config_setting_attributes.yml +++ b/lib/seek/config_setting_attributes.yml @@ -205,6 +205,7 @@ data_files_enabled: documents_enabled: events_enabled: isa_enabled: +observation_units_enabled: models_enabled: organisms_enabled: programmes_enabled: From 98ade7cbbbb46da5fc5d40c4f2d1f61302e017e7 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Thu, 15 Aug 2024 14:13:06 +0100 Subject: [PATCH 02/11] updated Config and tests to reflect new explicit observation_units_enabled setting --- lib/seek/config.rb | 4 ---- test/functional/observation_units_controller_test.rb | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/lib/seek/config.rb b/lib/seek/config.rb index 477dbf78e4..a363d1986e 100644 --- a/lib/seek/config.rb +++ b/lib/seek/config.rb @@ -340,10 +340,6 @@ def strains_enabled organisms_enabled end - def observation_units_enabled - fair_data_station_enabled - end - def omniauth_elixir_aai_config if omniauth_elixir_aai_legacy_mode { diff --git a/test/functional/observation_units_controller_test.rb b/test/functional/observation_units_controller_test.rb index 97fcf82888..83bffca12d 100644 --- a/test/functional/observation_units_controller_test.rb +++ b/test/functional/observation_units_controller_test.rb @@ -166,10 +166,10 @@ def rdf_test_object assert_equal Policy::MANAGING,obs_unit.policy.permissions.first.access_type end - test 'no access if fair data station disabled' do + test 'no access if observation units disabled' do unit = FactoryBot.create(:max_observation_unit) login_as(unit.contributor) - with_config_value(:fair_data_station_enabled, false) do + with_config_value(:observation_units_enabled, false) do get :show, params: { id: unit.id } assert_redirected_to :root refute_nil flash[:error] From a20309b9be25a086a3ad930bc3d8a5da7243c5ce Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Thu, 15 Aug 2024 14:56:15 +0100 Subject: [PATCH 03/11] refactored the edit/new forms into a shared _form partial --- app/views/observation_units/_form.html.erb | 32 +++++++++++++++++++ app/views/observation_units/edit.html.erb | 24 +------------- app/views/observation_units/new.html.erb | 31 +----------------- .../observation_units_controller_test.rb | 10 +++++- 4 files changed, 43 insertions(+), 54 deletions(-) create mode 100644 app/views/observation_units/_form.html.erb diff --git a/app/views/observation_units/_form.html.erb b/app/views/observation_units/_form.html.erb new file mode 100644 index 0000000000..9cb92e1dd5 --- /dev/null +++ b/app/views/observation_units/_form.html.erb @@ -0,0 +1,32 @@ +
+ <%= f.error_messages %> + +
+ + <%= f.text_field :title, class: "form-control" -%> +
+ +
+ + <%= f.text_area :description, class: "form-control rich-text-edit", rows: 5 -%> +
+ + <%= render partial: 'extended_metadata/extended_metadata_type_selection', locals: { f: f, resource: @observation_unit } %> + <%= render partial: 'extended_metadata/extended_metadata_attribute_input', locals: { f: f, resource: @observation_unit } %> + + <% if action == :new %> + <%= render partial: "projects/project_selector", locals: { resource: @observation_unit } %> + <% end %> + +
+ + + <%= resource_study_selection('observation_unit[study_id]', @observation_unit.study) %> +
+ + <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f}-%> + + + <%= form_submit_buttons(@observation_unit) %> + +
\ No newline at end of file diff --git a/app/views/observation_units/edit.html.erb b/app/views/observation_units/edit.html.erb index 54e1f61361..e511f53818 100644 --- a/app/views/observation_units/edit.html.erb +++ b/app/views/observation_units/edit.html.erb @@ -2,27 +2,5 @@

Editing <%= t('observation_unit') %>: <%= link_to(h(@observation_unit.title), observation_unit_path(@observation_unit)) -%>

<%= form_for(@observation_unit) do |f| %> -
- <%= f.error_messages %> - -
- - <%= f.text_field :title, class: "form-control" -%> -
- -
- - <%= f.text_area :description, class: "form-control rich-text-edit", rows: 5 -%> -
- - <%= render partial: 'extended_metadata/extended_metadata_type_selection', locals: { f: f, resource: @observation_unit } %> - <%= render partial: 'extended_metadata/extended_metadata_attribute_input', locals: { f: f, resource: @observation_unit } %> - - - <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f}-%> - - - <%= form_submit_buttons(@observation_unit) %> - -
+ <%= render :partial => "form", :locals => { :f => f, :action=>:edit } -%> <% end %> \ No newline at end of file diff --git a/app/views/observation_units/new.html.erb b/app/views/observation_units/new.html.erb index 09be407361..d8d99a2da4 100644 --- a/app/views/observation_units/new.html.erb +++ b/app/views/observation_units/new.html.erb @@ -2,34 +2,5 @@

New <%= t('observation_unit') %>

<%= form_for(@observation_unit) do |f| %> -
- <%= f.error_messages %> - -
- - <%= f.text_field :title, class: "form-control" -%> -
- -
- - <%= f.text_area :description, class: "form-control rich-text-edit", rows: 5 -%> -
- - <%= render partial: 'extended_metadata/extended_metadata_type_selection', locals: { f: f, resource: @observation_unit } %> - <%= render partial: 'extended_metadata/extended_metadata_attribute_input', locals: { f: f, resource: @observation_unit } %> - - <%= render partial: "projects/project_selector", locals: { resource: @observation_unit } %> - -
- - - <%= resource_study_selection('observation_unit[study_id]', @observation_unit.study) %> -
- - <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f}-%> - - - <%= form_submit_buttons(@observation_unit) %> - -
+ <%= render :partial => "form", :locals => { :f => f, :action=>:new } -%> <% end %> \ No newline at end of file diff --git a/test/functional/observation_units_controller_test.rb b/test/functional/observation_units_controller_test.rb index 83bffca12d..28f349ec50 100644 --- a/test/functional/observation_units_controller_test.rb +++ b/test/functional/observation_units_controller_test.rb @@ -36,6 +36,9 @@ def rdf_test_object login_as(unit.contributor) get :edit, params: { id: unit.id} assert_response :success + assert_select 'form.edit_observation_unit' do + assert_select 'div#project-selector', count: 0 + end end test 'manage' do @@ -43,6 +46,9 @@ def rdf_test_object login_as(unit.contributor) get :manage, params: { id: unit.id} assert_response :success + assert_select 'form.edit_observation_unit' do + assert_select 'div#project-selector' + end end test 'manage update' do @@ -116,7 +122,9 @@ def rdf_test_object login_as(person) get :new assert_response :success - assert_select 'form.new_observation_unit' + assert_select 'form.new_observation_unit' do + assert_select 'div#project-selector' + end end test 'create' do From e512210d54adfa15514fa6099b1ebe8b11326e6c Mon Sep 17 00:00:00 2001 From: Andrew Wood Date: Wed, 7 Aug 2024 13:12:45 +0100 Subject: [PATCH 04/11] Add create obs unit page --- .../observation_units_controller.rb | 3 +++ app/views/observation_units/_form.html.erb | 2 +- app/views/observation_units/edit.html.erb | 2 +- app/views/observation_units/new.html.erb | 27 ++++++++++++++----- config/locales/en.yml | 1 + lib/seek/add_buttons.rb | 3 ++- 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/controllers/observation_units_controller.rb b/app/controllers/observation_units_controller.rb index e5bdb98bd2..52e43dff41 100644 --- a/app/controllers/observation_units_controller.rb +++ b/app/controllers/observation_units_controller.rb @@ -10,6 +10,9 @@ class ObservationUnitsController < ApplicationController before_action :login_required,:except=>[:show,:index] before_action :find_assets, only: [:index] + include Seek::Publishing::PublishingCommon + include Seek::IsaGraphExtensions + api_actions :index, :show, :create, :update, :destroy def show diff --git a/app/views/observation_units/_form.html.erb b/app/views/observation_units/_form.html.erb index 9cb92e1dd5..ec31d8bb3b 100644 --- a/app/views/observation_units/_form.html.erb +++ b/app/views/observation_units/_form.html.erb @@ -29,4 +29,4 @@ <%= form_submit_buttons(@observation_unit) %> - \ No newline at end of file + diff --git a/app/views/observation_units/edit.html.erb b/app/views/observation_units/edit.html.erb index e511f53818..c8f52e8a19 100644 --- a/app/views/observation_units/edit.html.erb +++ b/app/views/observation_units/edit.html.erb @@ -3,4 +3,4 @@ <%= form_for(@observation_unit) do |f| %> <%= render :partial => "form", :locals => { :f => f, :action=>:edit } -%> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/observation_units/new.html.erb b/app/views/observation_units/new.html.erb index d8d99a2da4..0350efaeb1 100644 --- a/app/views/observation_units/new.html.erb +++ b/app/views/observation_units/new.html.erb @@ -1,6 +1,21 @@ - -

New <%= t('observation_unit') %>

- -<%= form_for(@observation_unit) do |f| %> - <%= render :partial => "form", :locals => { :f => f, :action=>:new } -%> -<% end %> \ No newline at end of file +<% if Investigation.authorized_for('view').none? %> + <%= alert_box('info') do %> + <%= "No #{t('study')} and #{t('investigation')} available, you have to create a new #{t('investigation')} first before creating your #{t('study')} and #{t('assays.assay')}!" %> + <% end %> +
+ <%= button_link_to("New #{t('investigation')}", 'arrow_right', new_investigation_path) -%> +
+<% elsif Study.authorized_for('view').none? %> + <%= alert_box('info') do %> + <%= "No #{t('study')} available, you have to create a new #{t('study')} before creating your #{t('assays.assay')}!" %> + <% end %> +
+ <%= button_link_to("New #{t('study')}", 'arrow_right', new_study_path) -%> +
+<% else %> +

New <%= t('observation_unit') %>

+ <%= index_and_new_help_icon controller_name %> + <%= form_for @observation_unit do |f| %> + <%= render :partial => "form", :locals => { :f => f, :action => :new } -%> + <% end %> +<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 2b3fea9ead..a9e3ee19b3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -16,6 +16,7 @@ en: investigation: &investigation "Investigation" study: &study "Study" assay: &assay "Assay" + observation_unit: &observation_unit "Observation Unit" assays: assay: "Assay" experimental_assay: "Experimental assay" diff --git a/lib/seek/add_buttons.rb b/lib/seek/add_buttons.rb index e791065f82..db1ba78ce0 100644 --- a/lib/seek/add_buttons.rb +++ b/lib/seek/add_buttons.rb @@ -21,7 +21,8 @@ class AddButtons [Workflow, 'workflow[project_ids][]'] ], 'Investigation' => [[Study, 'study[investigation_id]']], - 'Study' => [[Assay, 'assay[study_id]']], + 'Study' => [[Assay, 'assay[study_id]'], + [ObservationUnit, 'observation_unit[study_id]']], 'Modelling Analysis' => [[DataFile, 'data_file[assay_assets_attributes[][assay_id]]'], [Document, 'document[assay_assets_attributes[][assay_id]]'], [Sop, 'sop[assay_assets_attributes[][assay_id]]'], From fc147ba77f1f616e75afa7cd25d4b82f2fcf28ae Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Thu, 15 Aug 2024 15:08:53 +0100 Subject: [PATCH 05/11] replace => style syntax, and fix test that now requires a study present --- app/views/observation_units/_form.html.erb | 2 +- app/views/observation_units/edit.html.erb | 2 +- app/views/observation_units/new.html.erb | 2 +- test/functional/observation_units_controller_test.rb | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/views/observation_units/_form.html.erb b/app/views/observation_units/_form.html.erb index ec31d8bb3b..56dda7c6c5 100644 --- a/app/views/observation_units/_form.html.erb +++ b/app/views/observation_units/_form.html.erb @@ -24,7 +24,7 @@ <%= resource_study_selection('observation_unit[study_id]', @observation_unit.study) %> - <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f}-%> + <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f} %> <%= form_submit_buttons(@observation_unit) %> diff --git a/app/views/observation_units/edit.html.erb b/app/views/observation_units/edit.html.erb index c8f52e8a19..01e2095b59 100644 --- a/app/views/observation_units/edit.html.erb +++ b/app/views/observation_units/edit.html.erb @@ -2,5 +2,5 @@

Editing <%= t('observation_unit') %>: <%= link_to(h(@observation_unit.title), observation_unit_path(@observation_unit)) -%>

<%= form_for(@observation_unit) do |f| %> - <%= render :partial => "form", :locals => { :f => f, :action=>:edit } -%> + <%= render partial: "form", locals: { f: f, action: :edit } -%> <% end %> diff --git a/app/views/observation_units/new.html.erb b/app/views/observation_units/new.html.erb index 0350efaeb1..09f532896f 100644 --- a/app/views/observation_units/new.html.erb +++ b/app/views/observation_units/new.html.erb @@ -16,6 +16,6 @@

New <%= t('observation_unit') %>

<%= index_and_new_help_icon controller_name %> <%= form_for @observation_unit do |f| %> - <%= render :partial => "form", :locals => { :f => f, :action => :new } -%> + <%= render partial: "form", locals: { f: f, action: :new } -%> <% end %> <% end %> diff --git a/test/functional/observation_units_controller_test.rb b/test/functional/observation_units_controller_test.rb index 28f349ec50..d99ecb89b6 100644 --- a/test/functional/observation_units_controller_test.rb +++ b/test/functional/observation_units_controller_test.rb @@ -119,6 +119,7 @@ def rdf_test_object test 'new' do person = FactoryBot.create(:person) + FactoryBot.create(:study, contributor: person) login_as(person) get :new assert_response :success From 9ef3ac4f5d785b84f1f5bf28313192f1f46d2bfe Mon Sep 17 00:00:00 2001 From: Andrew Wood Date: Thu, 8 Aug 2024 17:51:46 +0100 Subject: [PATCH 06/11] Allow create observation unit --- .../observation_units_controller.rb | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/app/controllers/observation_units_controller.rb b/app/controllers/observation_units_controller.rb index 52e43dff41..85ccaac533 100644 --- a/app/controllers/observation_units_controller.rb +++ b/app/controllers/observation_units_controller.rb @@ -41,8 +41,25 @@ def update end def create - item = initialize_asset - create_asset_and_respond(item) + params[:observation_unit][:project_ids] = [params[:policy_attributes][:permissions_attributes]["0"][:contributor_id]] + @observation_unit = ObservationUnit.new(observation_unit_params) + @observation_unit.contributor = current_person + update_sharing_policies @observation_unit + update_annotations(params[:tag_list], @observation_unit) + update_relationships(@observation_unit, params) + + if @observation_unit.save + respond_to do |format| + flash[:notice] = "#{t('observation_unit')} was successfully created." + format.html { redirect_to observation_unit_path(@observation_unit) } + format.json { render json: @observation_unit, include: [params[:include]] } + end + else + respond_to do |format| + format.html { render action: 'new', status: :unprocessable_entity } + format.json { render json: json_api_errors(@observation_unit), status: :unprocessable_entity } + end + end end def observation_unit_params From c89746a8e45aa0c0ddd85e962781f9050b8f814e Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Thu, 15 Aug 2024 15:38:14 +0100 Subject: [PATCH 07/11] revert changes to the controller create action --- .../observation_units_controller.rb | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/app/controllers/observation_units_controller.rb b/app/controllers/observation_units_controller.rb index 85ccaac533..52e43dff41 100644 --- a/app/controllers/observation_units_controller.rb +++ b/app/controllers/observation_units_controller.rb @@ -41,25 +41,8 @@ def update end def create - params[:observation_unit][:project_ids] = [params[:policy_attributes][:permissions_attributes]["0"][:contributor_id]] - @observation_unit = ObservationUnit.new(observation_unit_params) - @observation_unit.contributor = current_person - update_sharing_policies @observation_unit - update_annotations(params[:tag_list], @observation_unit) - update_relationships(@observation_unit, params) - - if @observation_unit.save - respond_to do |format| - flash[:notice] = "#{t('observation_unit')} was successfully created." - format.html { redirect_to observation_unit_path(@observation_unit) } - format.json { render json: @observation_unit, include: [params[:include]] } - end - else - respond_to do |format| - format.html { render action: 'new', status: :unprocessable_entity } - format.json { render json: json_api_errors(@observation_unit), status: :unprocessable_entity } - end - end + item = initialize_asset + create_asset_and_respond(item) end def observation_unit_params From b591593ae99809097be1c2870901e0c1c95d7734 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Thu, 15 Aug 2024 16:11:53 +0100 Subject: [PATCH 08/11] UI to link data files to an observation unit #1961 --- app/views/observation_units/_form.html.erb | 1 + test/functional/observation_units_controller_test.rb | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/views/observation_units/_form.html.erb b/app/views/observation_units/_form.html.erb index 56dda7c6c5..838c1307a8 100644 --- a/app/views/observation_units/_form.html.erb +++ b/app/views/observation_units/_form.html.erb @@ -25,6 +25,7 @@ <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f} %> + <%= f.fancy_multiselect :data_files, other_projects_checkbox: true %> <%= form_submit_buttons(@observation_unit) %> diff --git a/test/functional/observation_units_controller_test.rb b/test/functional/observation_units_controller_test.rb index d99ecb89b6..95d16ec0bd 100644 --- a/test/functional/observation_units_controller_test.rb +++ b/test/functional/observation_units_controller_test.rb @@ -89,12 +89,14 @@ def rdf_test_object test 'update' do obs_unit = FactoryBot.create(:observation_unit) emt = FactoryBot.create(:simple_observation_unit_extended_metadata_type) + datafile = FactoryBot.create(:data_file, contributor: obs_unit.contributor) login_as(obs_unit.contributor) patch :update, params: { id: obs_unit, observation_unit:{ title: 'updated title', description: 'updated description', + data_file_ids: [datafile.id], extended_metadata_attributes: { extended_metadata_type_id: emt.id, data: { @@ -115,6 +117,7 @@ def rdf_test_object assert_equal 'updated name', obs_unit.extended_metadata.get_attribute_value('name') assert_equal 'updated strain', obs_unit.extended_metadata.get_attribute_value('strain') assert_equal %w[fish soup], obs_unit.tags.sort + assert_equal [datafile], obs_unit.data_files end test 'new' do @@ -132,6 +135,7 @@ def rdf_test_object emt = FactoryBot.create(:simple_observation_unit_extended_metadata_type) contributor = FactoryBot.create(:person) study = FactoryBot.create(:study, contributor: contributor) + datafile = FactoryBot.create(:data_file, contributor: contributor) project = contributor.projects.first other_person = FactoryBot.create(:person) creator = FactoryBot.create(:person) @@ -141,7 +145,8 @@ def rdf_test_object title: 'new title', description: 'new description', creator_ids: [creator.id], - project_ids: [project], + project_ids: [project.id], + data_file_ids: [datafile.id], study_id: study, extended_metadata_attributes: { extended_metadata_type_id: emt.id, @@ -167,8 +172,9 @@ def rdf_test_object assert_equal 'new strain', obs_unit.extended_metadata.get_attribute_value('strain') assert_equal %w[fish soup], obs_unit.tags.sort assert_equal contributor, obs_unit.contributor - assert_equal [project],obs_unit.projects.sort_by(&:id) + assert_equal [project],obs_unit.projects assert_equal [creator],obs_unit.creators + assert_equal [datafile],obs_unit.data_files assert_equal Policy::VISIBLE,obs_unit.policy.access_type assert_equal 1,obs_unit.policy.permissions.count assert_equal other_person,obs_unit.policy.permissions.first.contributor From 52efdb77a5c4edaf875af92c380cdc32c7af313f Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Fri, 16 Aug 2024 09:54:08 +0100 Subject: [PATCH 09/11] associate samples via the fancy-multiselect #1961 --- app/views/observation_units/_form.html.erb | 1 + test/functional/observation_units_controller_test.rb | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/app/views/observation_units/_form.html.erb b/app/views/observation_units/_form.html.erb index 838c1307a8..20fa007271 100644 --- a/app/views/observation_units/_form.html.erb +++ b/app/views/observation_units/_form.html.erb @@ -26,6 +26,7 @@ <%= render partial: "assets/asset_form_bottom", locals: {show_publications:false, attribution_enable: false, f: f} %> <%= f.fancy_multiselect :data_files, other_projects_checkbox: true %> + <%= f.fancy_multiselect :samples, other_projects_checkbox: true %> <%= form_submit_buttons(@observation_unit) %> diff --git a/test/functional/observation_units_controller_test.rb b/test/functional/observation_units_controller_test.rb index 95d16ec0bd..f4d0328a4c 100644 --- a/test/functional/observation_units_controller_test.rb +++ b/test/functional/observation_units_controller_test.rb @@ -90,6 +90,7 @@ def rdf_test_object obs_unit = FactoryBot.create(:observation_unit) emt = FactoryBot.create(:simple_observation_unit_extended_metadata_type) datafile = FactoryBot.create(:data_file, contributor: obs_unit.contributor) + sample = FactoryBot.create(:sample, contributor: obs_unit.contributor) login_as(obs_unit.contributor) patch :update, params: { id: obs_unit, @@ -97,6 +98,7 @@ def rdf_test_object title: 'updated title', description: 'updated description', data_file_ids: [datafile.id], + sample_ids: [sample.id], extended_metadata_attributes: { extended_metadata_type_id: emt.id, data: { @@ -118,6 +120,7 @@ def rdf_test_object assert_equal 'updated strain', obs_unit.extended_metadata.get_attribute_value('strain') assert_equal %w[fish soup], obs_unit.tags.sort assert_equal [datafile], obs_unit.data_files + assert_equal [sample], obs_unit.samples end test 'new' do @@ -136,6 +139,7 @@ def rdf_test_object contributor = FactoryBot.create(:person) study = FactoryBot.create(:study, contributor: contributor) datafile = FactoryBot.create(:data_file, contributor: contributor) + sample = FactoryBot.create(:sample, contributor: contributor) project = contributor.projects.first other_person = FactoryBot.create(:person) creator = FactoryBot.create(:person) @@ -147,6 +151,7 @@ def rdf_test_object creator_ids: [creator.id], project_ids: [project.id], data_file_ids: [datafile.id], + sample_ids: [sample.id], study_id: study, extended_metadata_attributes: { extended_metadata_type_id: emt.id, @@ -175,6 +180,7 @@ def rdf_test_object assert_equal [project],obs_unit.projects assert_equal [creator],obs_unit.creators assert_equal [datafile],obs_unit.data_files + assert_equal [sample],obs_unit.samples assert_equal Policy::VISIBLE,obs_unit.policy.access_type assert_equal 1,obs_unit.policy.permissions.count assert_equal other_person,obs_unit.policy.permissions.first.contributor From e4833d8c5222e1424cc8bc788ee85bf03e0fd2e8 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Fri, 16 Aug 2024 10:24:43 +0100 Subject: [PATCH 10/11] implement the resource preview for samples #1961 --- app/views/assets/_resource_preview.html.erb | 2 +- app/views/samples/_resource_preview.html.erb | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/views/assets/_resource_preview.html.erb b/app/views/assets/_resource_preview.html.erb index edec5e15d0..63b158ba7d 100644 --- a/app/views/assets/_resource_preview.html.erb +++ b/app/views/assets/_resource_preview.html.erb @@ -11,7 +11,7 @@ <%= list_item_contributors resource -%> - <%= list_item_simple_list resource.creators, t('contributor').capitalize -%> + <%= list_item_simple_list resource.creators, t('creator').capitalize.pluralize -%> <%= list_item_description resource.description -%> diff --git a/app/views/samples/_resource_preview.html.erb b/app/views/samples/_resource_preview.html.erb index c002fd5651..b074439eed 100644 --- a/app/views/samples/_resource_preview.html.erb +++ b/app/views/samples/_resource_preview.html.erb @@ -1 +1,16 @@ -Preview Not Yet Implemented \ No newline at end of file +<% unless resource.nil? -%> + +
+

+ <%= list_item_title resource -%> +

+ + <%= render :partial => 'projects/show_project_relationship', :locals => {:resource => resource, :list_item => false} -%> + + <%= list_item_contributors resource -%> + + <%= list_item_simple_list resource.creators, t('creator').capitalize.pluralize -%> + <%= sample_type_list_item_attribute(t('sample_type'),resource) %> +
+ +<% end -%> \ No newline at end of file From df41d5980664a8a401db6c525999879e2d8a8917 Mon Sep 17 00:00:00 2001 From: Stuart Owen Date: Fri, 23 Aug 2024 11:27:10 +0100 Subject: [PATCH 11/11] updated text following review, which still referred to assay instead of observation unit #1972 --- app/views/observation_units/new.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/observation_units/new.html.erb b/app/views/observation_units/new.html.erb index 09f532896f..4e944580fb 100644 --- a/app/views/observation_units/new.html.erb +++ b/app/views/observation_units/new.html.erb @@ -1,13 +1,13 @@ <% if Investigation.authorized_for('view').none? %> <%= alert_box('info') do %> - <%= "No #{t('study')} and #{t('investigation')} available, you have to create a new #{t('investigation')} first before creating your #{t('study')} and #{t('assays.assay')}!" %> + <%= "No #{t('study')} and #{t('investigation')} available, you have to create a new #{t('investigation')} first before creating your #{t('study')} and #{t('observation_unit')}!" %> <% end %>
<%= button_link_to("New #{t('investigation')}", 'arrow_right', new_investigation_path) -%>
<% elsif Study.authorized_for('view').none? %> <%= alert_box('info') do %> - <%= "No #{t('study')} available, you have to create a new #{t('study')} before creating your #{t('assays.assay')}!" %> + <%= "No #{t('study')} available, you have to create a new #{t('study')} before creating your #{t('observation_unit')}!" %> <% end %>
<%= button_link_to("New #{t('study')}", 'arrow_right', new_study_path) -%>