From e1ca9175b7bcb4ed546068d52ca186137c2f635c Mon Sep 17 00:00:00 2001 From: Andrej Date: Fri, 29 Sep 2023 15:35:33 +0200 Subject: [PATCH] Fix marvinjs loading and speedup creating of the wopi files [SCI-9409] --- app/controllers/assets_controller.rb | 2 - app/javascript/vue/protocol/step.vue | 2 +- .../protocol/step_attachments/file_modal.vue | 2 +- app/javascript/vue/results/result.vue | 2 +- .../attachments/mixins/wopi_file_modal.js | 62 ++++++++++--------- 5 files changed, 37 insertions(+), 33 deletions(-) diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb index 85a28583d..cef6afb7e 100644 --- a/app/controllers/assets_controller.rb +++ b/app/controllers/assets_controller.rb @@ -268,8 +268,6 @@ class AssetsController < ApplicationController render_404 and return end - # Prepare file preview in advance - asset.medium_preview.processed && asset.large_preview.processed # Return edit url and asset info render json: { attributes: AssetSerializer.new(asset, scope: { user: current_user }).as_json, diff --git a/app/javascript/vue/protocol/step.vue b/app/javascript/vue/protocol/step.vue index dd8ab3cd3..2153415a0 100644 --- a/app/javascript/vue/protocol/step.vue +++ b/app/javascript/vue/protocol/step.vue @@ -71,7 +71,7 @@ class="new-marvinjs-upload-button hidden" :data-object-id="step.id" ref="marvinJsButton" - :data-marvin-url="step.attributes.marvinjs_context.marvin_js_asset_url" + :data-marvin-url="step.attributes.marvinjs_context?.marvin_js_asset_url" :data-object-type="step.attributes.type" tabindex="0" > diff --git a/app/javascript/vue/protocol/step_attachments/file_modal.vue b/app/javascript/vue/protocol/step_attachments/file_modal.vue index e5a3f0613..4bd8d77d4 100644 --- a/app/javascript/vue/protocol/step_attachments/file_modal.vue +++ b/app/javascript/vue/protocol/step_attachments/file_modal.vue @@ -54,7 +54,7 @@ diff --git a/app/javascript/vue/shared/content/attachments/mixins/wopi_file_modal.js b/app/javascript/vue/shared/content/attachments/mixins/wopi_file_modal.js index 4055b719b..a699616ab 100644 --- a/app/javascript/vue/shared/content/attachments/mixins/wopi_file_modal.js +++ b/app/javascript/vue/shared/content/attachments/mixins/wopi_file_modal.js @@ -1,4 +1,4 @@ -/* global HelperModule */ +/* global HelperModule animateSpinner renderFormError I18n */ const FILENAME_MAX_LENGTH = 100; @@ -19,36 +19,42 @@ export default { } }); - $wopiModal.find('form').on( - 'ajax:success', - (e, data, status) => { - if (status === 'success') { - $wopiModal.modal('hide'); - window.open(data.edit_url, '_blank'); - window.focus(); - } else { - HelperModule.flashAlertMsg(this.i18n.t('errors.general'), 'danger'); + $wopiModal.find('form') + .on('submit', () => { + animateSpinner(null, true); + }) + .on( + 'ajax:success', + (e, data, status) => { + animateSpinner(null, false); + if (status === 'success') { + $wopiModal.modal('hide'); + window.open(data.edit_url, '_blank'); + window.focus(); + } else { + HelperModule.flashAlertMsg(this.i18n.t('errors.general'), 'danger'); + } + requestCallback(e, data, status); } - requestCallback(e, data, status); - } - ).on('ajax:error', function(ev, response) { - var element; - var msg; + ).on('ajax:error', function(ev, response) { + let element; + let msg; - $(this).clearFormErrors(); + animateSpinner(null, false); + $(this).clearFormErrors(); - if (response.status === 400) { - element = $(this).find('#new-wopi-file-name'); - msg = response.responseJSON.message.file.toString(); - } else if (response.status === 403) { - element = $(this).find('#other-wopi-errors'); - msg = I18n.t('assets.create_wopi_file.errors.forbidden'); - } else if (response.status === 404) { - element = $(this).find('#other-wopi-errors'); - msg = I18n.t('assets.create_wopi_file.errors.not_found'); - } - renderFormError(undefined, element, msg); - }); + if (response.status === 400) { + element = $(this).find('#new-wopi-file-name'); + msg = response.responseJSON.message.file.toString(); + } else if (response.status === 403) { + element = $(this).find('#other-wopi-errors'); + msg = I18n.t('assets.create_wopi_file.errors.forbidden'); + } else if (response.status === 404) { + element = $(this).find('#other-wopi-errors'); + msg = I18n.t('assets.create_wopi_file.errors.not_found'); + } + renderFormError(undefined, element, msg); + }); } } };