From 3075df6771e41f176bf7e903a1e718fe9ff5274c Mon Sep 17 00:00:00 2001 From: Martin Artnik Date: Wed, 26 Jun 2024 11:36:32 +0200 Subject: [PATCH] Fix MarvinJS init for remote/local/disabled cases [SCI-10815] --- .../javascripts/sitewide/marvinjs_editor.js | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/sitewide/marvinjs_editor.js b/app/assets/javascripts/sitewide/marvinjs_editor.js index 0a6c17648..a334bf9f5 100644 --- a/app/assets/javascripts/sitewide/marvinjs_editor.js +++ b/app/assets/javascripts/sitewide/marvinjs_editor.js @@ -237,7 +237,9 @@ var MarvinJsEditorApi = (function() { enabled: function() { return ($('#MarvinJsModal').length > 0); }, - + isRemote: function() { + return marvinJsMode === 'remote'; + }, open: function(config) { if (!MarvinJsEditor.enabled()) { $('#MarvinJsPromoModal').modal('show'); @@ -320,22 +322,24 @@ $(document).on('click', '.gene-sequence-edit-button', function() { }); function initMarvinJs() { - const isRemote = $('#marvinjs-editor')[0].dataset.marvinjsMode === 'remote'; + MarvinJsEditor = MarvinJsEditorApi(); - if (isRemote && typeof (ChemicalizeMarvinJs) === 'undefined') { + // MarvinJS is disabled, nothing to initialize + if (!MarvinJsEditor.enabled()) return; + + // wait for remote MarvinJS to initialize + if (MarvinJsEditor.isRemote() && typeof (ChemicalizeMarvinJs) === 'undefined') { setTimeout(initMarvinJs, 100); return; } - MarvinJsEditor = MarvinJsEditorApi(); - if (MarvinJsEditor.enabled()) { - if (isRemote) { - ChemicalizeMarvinJs.createEditor('#marvinjs-sketch').then(function(marvin) { - marvin.setDisplaySettings({ toolbars: 'reporting' }); - marvinJsRemoteEditor = marvin; - }); - } + if (MarvinJsEditor.isRemote()) { + ChemicalizeMarvinJs.createEditor('#marvinjs-sketch').then(function(marvin) { + marvin.setDisplaySettings({ toolbars: 'reporting' }); + marvinJsRemoteEditor = marvin; + }); } + MarvinJsEditor.initNewButton('.new-marvinjs-upload-button'); }