From 8acbf0b4f1e3fdaf96cc3375375b020e73c58dc8 Mon Sep 17 00:00:00 2001 From: ajugo Date: Tue, 14 Mar 2023 13:03:37 +0100 Subject: [PATCH] Fix revert protocol action for linked task changes [SCI-8110] (#5125) --- .../javascripts/my_modules/protocols.js | 5 +++-- app/javascript/vue/protocol/container.vue | 22 ++++++++++++++++--- .../vue/protocol/mixins/attachments.js | 4 +++- app/javascript/vue/protocol/step.vue | 1 + app/serializers/protocol_serializer.rb | 6 ++++- 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/my_modules/protocols.js b/app/assets/javascripts/my_modules/protocols.js index a6a50a29f..8353c1f09 100644 --- a/app/assets/javascripts/my_modules/protocols.js +++ b/app/assets/javascripts/my_modules/protocols.js @@ -40,8 +40,9 @@ function initLinkUpdate() { var modalTitle = modal.find('.modal-title'); var modalMessage = modal.find('.modal-body .message'); var updateBtn = modal.find(".modal-footer [data-action='submit']"); - $("[data-action='unlink'], [data-action='revert'], [data-action='update-parent'], [data-action='update-self']") - .on('ajax:success', function(e, data) { + $('.protocol-options-dropdown') + .on('ajax:success', "[data-action='unlink'], [data-action='revert'], [data-action='update-parent']," + + "[data-action='update-self']", function(e, data) { modalTitle.html(data.title); modalMessage.html(data.message); updateBtn.text(data.btn_text); diff --git a/app/javascript/vue/protocol/container.vue b/app/javascript/vue/protocol/container.vue index 5dcc2c1a6..1259a32b9 100644 --- a/app/javascript/vue/protocol/container.vue +++ b/app/javascript/vue/protocol/container.vue @@ -189,6 +189,9 @@ inRepository() { return this.protocol.attributes.in_repository }, + linked() { + return this.protocol.attributes.linked; + }, urls() { return this.protocol.attributes.urls || {} } @@ -232,21 +235,34 @@ if (this.inRepository) return // legacy method from app/assets/javascripts/my_modules/protocols.js refreshProtocolStatusBar(); + + // Update protocol options drowpdown for linked tasks + this.refreshProtocolDropdownOptions(); + }, + refreshProtocolDropdownOptions() { + if (!this.linked && this.inRepository) return + + $.get(this.protocolUrl, (result) => { + this.protocol.attributes.urls = result.data.attributes.urls; + }); }, updateProtocol(attributes) { this.protocol.attributes = attributes }, updateName(newName) { this.protocol.attributes.name = newName; - this.refreshProtocolStatus(); $.ajax({ type: 'PATCH', url: this.urls.update_protocol_name_url, - data: { protocol: { name: newName } } + data: { protocol: { name: newName } }, + success: () => { + this.refreshProtocolStatus(); + } }); }, updateDescription(protocol) { this.protocol.attributes = protocol.attributes + this.refreshProtocolStatus(); }, addStep(position) { $.post(this.urls.add_step_url, {position: position}, (result) => { @@ -257,8 +273,8 @@ if(position === this.steps.length - 1) { this.$nextTick(() => this.scrollToBottom()); } + this.refreshProtocolStatus(); }) - this.refreshProtocolStatus(); }, updateStepsPosition(step, action = 'add') { let position = step.attributes.position; diff --git a/app/javascript/vue/protocol/mixins/attachments.js b/app/javascript/vue/protocol/mixins/attachments.js index dcc8cac92..9d2c11c1c 100644 --- a/app/javascript/vue/protocol/mixins/attachments.js +++ b/app/javascript/vue/protocol/mixins/attachments.js @@ -86,7 +86,9 @@ export default { }); filesUploadedCntr += 1; if (filesUploadedCntr === filesToUploadCntr) { - this.$emit('stepUpdated'); + setTimeout(() => { + this.$emit('stepUpdated'); + }, 1000); resolve('done'); } } diff --git a/app/javascript/vue/protocol/step.vue b/app/javascript/vue/protocol/step.vue index 95b8a7220..3d3baa57a 100644 --- a/app/javascript/vue/protocol/step.vue +++ b/app/javascript/vue/protocol/step.vue @@ -419,6 +419,7 @@ $.post(this.urls[`create_${elementType}_url`], (result) => { result.data.isNew = true; this.elements.push(result.data) + this.$emit('stepUpdated') }).error(() => { HelperModule.flashAlertMsg(this.i18n.t('errors.general'), 'danger'); }) diff --git a/app/serializers/protocol_serializer.rb b/app/serializers/protocol_serializer.rb index 167ff01f7..14a4d2796 100644 --- a/app/serializers/protocol_serializer.rb +++ b/app/serializers/protocol_serializer.rb @@ -8,7 +8,7 @@ class ProtocolSerializer < ActiveModel::Serializer attributes :name, :id, :urls, :description, :description_view, :updated_at, :in_repository, :created_at_formatted, :updated_at_formatted, :added_by, :authors, :keywords, :version, :code, - :published, :version_comment, :archived + :published, :version_comment, :archived, :linked def updated_at object.updated_at.to_i @@ -84,6 +84,10 @@ class ProtocolSerializer < ActiveModel::Serializer !object.in_module? end + def linked + object.linked? + end + private def load_from_repo_url