mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Merge branch 'features/bioeddie-integration' into ma_SCI_5879
This commit is contained in:
commit
888131a465
|
@ -132,6 +132,7 @@ var bioEddieEditor = (function() {
|
|||
bioEddieModal.data('update-url', updateUrl);
|
||||
bioEddieModal.find('.file-name input').val(name);
|
||||
bioEddieModal.modal('show');
|
||||
|
||||
}
|
||||
};
|
||||
}());
|
||||
|
@ -152,5 +153,6 @@ var bioEddieEditor = (function() {
|
|||
this.dataset.moleculeDescription,
|
||||
this.dataset.updateUrl
|
||||
);
|
||||
$.post(this.dataset.editUrl);
|
||||
});
|
||||
}());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class BioEddieAssetsController < ApplicationController
|
||||
include BioEddieActions
|
||||
include ActiveStorage::SetCurrent
|
||||
|
||||
before_action :load_vars, except: :create
|
||||
|
@ -12,6 +13,8 @@ class BioEddieAssetsController < ApplicationController
|
|||
def create
|
||||
asset = BioEddieService.create_molecule(bio_eddie_params, current_user, current_team)
|
||||
|
||||
create_create_bio_eddie_activity(asset, current_user)
|
||||
|
||||
if asset && bio_eddie_params[:object_type] == 'Step'
|
||||
render json: {
|
||||
html: render_to_string(partial: 'assets/asset.html.erb', locals: {
|
||||
|
@ -29,6 +32,8 @@ class BioEddieAssetsController < ApplicationController
|
|||
def update
|
||||
asset = BioEddieService.update_molecule(bio_eddie_params, current_user, current_team)
|
||||
|
||||
create_edit_bio_eddie_activity(asset, current_user, :finish_editing)
|
||||
|
||||
if asset
|
||||
render json: { url: rails_representation_url(asset.medium_preview),
|
||||
id: asset.id,
|
||||
|
@ -39,7 +44,7 @@ class BioEddieAssetsController < ApplicationController
|
|||
end
|
||||
|
||||
def start_editing
|
||||
# Activity here
|
||||
create_edit_bio_eddie_activity(@asset, current_user, :start_editing)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
105
app/controllers/concerns/bio_eddie_actions.rb
Normal file
105
app/controllers/concerns/bio_eddie_actions.rb
Normal file
|
@ -0,0 +1,105 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module BioEddieActions
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
private
|
||||
|
||||
def create_edit_bio_eddie_activity(asset, current_user, started_editing)
|
||||
action = case started_editing
|
||||
when :start_editing
|
||||
t('activities.file_editing.started')
|
||||
when :finish_editing
|
||||
t('activities.file_editing.finished')
|
||||
end
|
||||
return unless bio_eddie_asset_validation(asset)
|
||||
|
||||
bio_eddie_find_target_object(asset, current_user, 'edit', action)
|
||||
end
|
||||
|
||||
def create_create_bio_eddie_activity(asset, current_user)
|
||||
return unless bio_eddie_asset_validation(asset)
|
||||
|
||||
bio_eddie_find_target_object(asset, current_user, 'create')
|
||||
end
|
||||
|
||||
def create_delete_bio_eddie_activity(asset, current_user)
|
||||
return unless bio_eddie_asset_validation(asset)
|
||||
|
||||
bio_eddie_find_target_object(asset, current_user, 'delete')
|
||||
end
|
||||
|
||||
def bio_eddie_asset_validation(asset)
|
||||
asset && asset.file.metadata[:asset_type] == 'bio_eddie'
|
||||
end
|
||||
|
||||
def bio_eddie_asset_type(asset, klass)
|
||||
return true if asset.step_asset&.step.instance_of?(klass)
|
||||
return true if asset.result_asset&.result.instance_of?(klass)
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
def bio_eddie_find_target_object(asset, current_user, activity_type, action = nil)
|
||||
if bio_eddie_asset_type(asset, Step)
|
||||
bio_eddie_step_activity(asset, current_user, activity_type, action)
|
||||
elsif bio_eddie_asset_type(asset, Result)
|
||||
bio_eddie_result_activity(asset, current_user, activity_type, action)
|
||||
end
|
||||
end
|
||||
|
||||
def bio_eddie_step_activity(asset, current_user, activity, action = nil)
|
||||
step = asset.step_asset&.step
|
||||
asset_type = 'asset_name'
|
||||
protocol = step&.protocol
|
||||
|
||||
return unless step && protocol
|
||||
|
||||
default_step_items =
|
||||
{ step: step.id,
|
||||
step_position: { id: step.id, value_for: 'position_plus_one' },
|
||||
asset_type => { id: asset.id, value_for: 'file_name' } }
|
||||
|
||||
default_step_items[:action] = action if action
|
||||
if protocol.in_module?
|
||||
project = protocol.my_module.experiment.project
|
||||
team = project.team
|
||||
type_of = "#{activity}_molecule_on_step".to_sym
|
||||
message_items = { my_module: protocol.my_module.id }
|
||||
else
|
||||
type_of = "#{activity}_molecule_on_step_in_repository".to_sym
|
||||
team = protocol.team
|
||||
message_items = { protocol: protocol.id }
|
||||
end
|
||||
message_items = default_step_items.merge(message_items)
|
||||
Activities::CreateActivityService
|
||||
.call(activity_type: type_of,
|
||||
owner: current_user,
|
||||
subject: protocol,
|
||||
team: team,
|
||||
project: project,
|
||||
message_items: message_items)
|
||||
end
|
||||
|
||||
def bio_eddie_result_activity(asset, current_user, activity, action = nil)
|
||||
result = asset.result_asset&.result
|
||||
asset_type = 'asset_name'
|
||||
my_module = result&.my_module
|
||||
|
||||
return unless result && my_module
|
||||
|
||||
message_items = {
|
||||
result: result.id,
|
||||
asset_type => { id: asset.id, value_for: 'file_name' }
|
||||
}
|
||||
|
||||
message_items[:action] = action if action
|
||||
Activities::CreateActivityService
|
||||
.call(activity_type: "#{activity}_molecule_on_step_on_result".to_sym,
|
||||
owner: current_user,
|
||||
subject: result,
|
||||
team: my_module.experiment.project.team,
|
||||
project: my_module.experiment.project,
|
||||
message_items: message_items)
|
||||
end
|
||||
end
|
|
@ -533,6 +533,10 @@ class StepsController < ApplicationController
|
|||
marvin_js_assets_attributes: %i(
|
||||
id
|
||||
_destroy
|
||||
),
|
||||
bio_eddie_assets_attributes: %i(
|
||||
id
|
||||
_destroy
|
||||
)
|
||||
)
|
||||
end
|
||||
|
|
|
@ -6,8 +6,8 @@ class BioEddieService
|
|||
ApplicationSettings.instance.values['bio_eddie_url']
|
||||
end
|
||||
|
||||
def enabled?
|
||||
url.present?
|
||||
def enabled?(current_user)
|
||||
url.present? && current_user.settings.fetch('bio_eddie_enabled', false)
|
||||
end
|
||||
|
||||
def create_molecule(params, current_user, current_team)
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
<li>
|
||||
<a
|
||||
class="new-bio-eddie-upload-button"
|
||||
data-object-id="<%= element_id %>"
|
||||
data-object-type="<%= element_type %>"
|
||||
data-assets-container="<%= assets_container %>"
|
||||
>
|
||||
<%= image_tag 'icon_small/bio_eddie.png' %>
|
||||
<%= t('bio_eddie.new_button') %>
|
||||
</a>
|
||||
</li>
|
||||
<% if BioEddieService.enabled?(current_user) %>
|
||||
<li>
|
||||
<a
|
||||
class="new-bio-eddie-upload-button"
|
||||
data-object-id="<%= element_id %>"
|
||||
data-object-type="<%= element_type %>"
|
||||
data-assets-container="<%= assets_container %>"
|
||||
>
|
||||
<%= image_tag 'icon_small/bio_eddie.png' %>
|
||||
<%= t('bio_eddie.new_button') %>
|
||||
</a>
|
||||
</li>
|
||||
<% end %>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<% if BioEddieService.enabled? %>
|
||||
<% if BioEddieService.enabled?(current_user) %>
|
||||
<div id="bioEddieModal"
|
||||
class="modal modal-bio-eddie"
|
||||
role="dialog"
|
||||
|
|
|
@ -21,10 +21,11 @@
|
|||
<span class="fas fa-pencil-alt"></span>
|
||||
<%= t('assets.file_preview.edit_in_marvinjs') %>
|
||||
</button>
|
||||
<% elsif asset.file.metadata[:asset_type] == 'bio_eddie' %>
|
||||
<% elsif asset.file.metadata[:asset_type] == 'bio_eddie' && BioEddieService.enabled?(current_user) %>
|
||||
<button class="btn btn-light bio-eddie-edit-button"
|
||||
data-molecule-id="<%= asset.id %>"
|
||||
data-update-url="<%= bio_eddie_asset_path(asset) %>"
|
||||
data-edit-url="<%= start_editing_bio_eddie_asset_path(asset) %>"
|
||||
data-molecule-name="<%= asset.file.metadata[:name] %>"
|
||||
data-molecule-description="<%= asset.file.metadata[:description] %>"
|
||||
>
|
||||
|
|
|
@ -316,21 +316,30 @@ class Extends
|
|||
delete_project_folder: 162,
|
||||
generate_pdf_report: 163,
|
||||
generate_docx_report: 164,
|
||||
edit_molecule_on_step: 168,
|
||||
edit_molecule_on_result: 169,
|
||||
edit_molecule_on_step_in_repository: 170,
|
||||
create_molecule_on_step: 171,
|
||||
create_molecule_on_result: 172,
|
||||
create_molecule_on_step_in_repository: 173,
|
||||
delete_molecule_on_step: 174,
|
||||
delete_molecule_on_result: 175,
|
||||
delete_molecule_on_step_in_repository: 176,
|
||||
register_molecule: 165
|
||||
}
|
||||
|
||||
ACTIVITY_GROUPS = {
|
||||
projects: [*0..7, 32, 33, 34, 95, 108, 65, 109, *158..162],
|
||||
task_results: [23, 26, 25, 42, 24, 40, 41, 99, 110, 122, 116, 128],
|
||||
task_results: [23, 26, 25, 42, 24, 40, 41, 99, 110, 122, 116, 128, 169, 172, 175],
|
||||
task: [8, 58, 9, 59, *10..14, 35, 36, 37, 53, 54, *60..63, 138, 139, 140, 64, 66, 106, 126, 120, 132,
|
||||
*146..148],
|
||||
*146..148, 168, 171, 174],
|
||||
task_protocol: [15, 22, 16, 18, 19, 20, 21, 17, 38, 39, 100, 111, 45, 46, 47, 121, 124, 115, 118, 127, 130, 137],
|
||||
task_inventory: [55, 56, 146, 147],
|
||||
experiment: [*27..31, 57],
|
||||
reports: [48, 50, 49, 163, 164],
|
||||
inventories: [70, 71, 105, 144, 145, 72, 73, 74, 102, 142, 143, 75, 76, 77, 78, 96, 107, 113, 114, *133..136],
|
||||
protocol_repository: [80, 103, 89, 87, 79, 90, 91, 88, 85, 86, 84, 81, 82,
|
||||
83, 101, 112, 123, 125, 117, 119, 129, 131],
|
||||
83, 101, 112, 123, 125, 117, 119, 129, 131, 170, 173, 176],
|
||||
team: [92, 94, 93, 97, 104]
|
||||
}
|
||||
|
||||
|
|
|
@ -184,6 +184,16 @@ en:
|
|||
move_project_folder_html: "%{user} moved folder %{project_folder} from folder %{project_folder_from}</strong> to folder %{project_folder_to}."
|
||||
generate_pdf_report_html: "%{user} generated PDF report %{report}."
|
||||
generate_docx_report_html: "%{user} generated DOCX report %{report}."
|
||||
edit_molecule_on_step_html: "%{user} edited molecule %{asset_name} on protocol's step %{step_position} %{step} on task %{my_module}: %{action}."
|
||||
edit_molecule_on_result_html: "%{user} edited molecule %{asset_name} on result %{result}: %{action}."
|
||||
edit_molecule_on_step_in_repository_html: "%{user} edited molecule %{asset_name} on protocol %{protocol}'s step %{step_position} %{step}: %{action}."
|
||||
create_molecule_on_step_html: "%{user} created molecule %{asset_name} on protocol's step %{step_position} %{step} on task %{my_module}."
|
||||
create_molecule_on_result_html: "%{user} created molecule %{asset_name} on result %{result}."
|
||||
create_molecule_on_step_in_repository_html: "%{user} created molecule %{asset_name} on protocol %{protocol}'s step %{step_position} %{step}."
|
||||
delete_molecule_on_step_html: "%{user} deleted molecule %{asset_name} on protocol's step %{step_position} %{step} on task %{my_module}."
|
||||
delete_molecule_on_result_html: "%{user} deleted molecule %{asset_name} on result %{result}."
|
||||
delete_molecule_on_step_in_repository_html: "%{user} deleted molecule %{asset_name} on protocol %{protocol}'s step %{step_position} %{step}."
|
||||
|
||||
|
||||
register_molecule_html: "%{user} scheduled the %{name} molecule for registration."
|
||||
|
||||
|
@ -334,6 +344,16 @@ en:
|
|||
move_project_folder: "Project folder moved"
|
||||
generate_pdf_report: "PDF Report generated"
|
||||
generate_docx_report: "DOCX Report generated"
|
||||
edit_molecule_on_step: "Molecule on task step edited"
|
||||
edit_molecule_on_result: "Molecule on result edited"
|
||||
edit_molecule_on_step_in_repository: "Molecule on step edited"
|
||||
create_molecule_on_step: "Molecule on task step created"
|
||||
create_molecule_on_result: "Molecule on result created"
|
||||
create_molecule_on_step_in_repository: "Molecule on step created"
|
||||
delete_molecule_on_step: "Molecule on task step deleted"
|
||||
delete_molecule_on_result: "Molecule on result deleted"
|
||||
delete_molecule_on_step_in_repository: "Molecule on step deleted"
|
||||
|
||||
|
||||
activity_group:
|
||||
projects: "Projects"
|
||||
|
|
Loading…
Reference in a new issue