From 233ca7d59b1addc43f746d0897074b741b24f6c3 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Wed, 6 Dec 2023 18:26:26 +0100 Subject: [PATCH] wait #6152 @1.5 --- resources/linkeditor/js/linkeditor.form.js | 41 +++++++++++++++++---- resources/linkeditor/js/linkeditor.links.js | 8 +++- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/resources/linkeditor/js/linkeditor.form.js b/resources/linkeditor/js/linkeditor.form.js index acda0312a..bc36bee4a 100644 --- a/resources/linkeditor/js/linkeditor.form.js +++ b/resources/linkeditor/js/linkeditor.form.js @@ -1,5 +1,6 @@ function LinkeditorForm(linkeditor) { this.linkeditor = linkeditor; + this.loadingFields = {}; this._maskChangeEvent = false; this._maskChangeEventTimeout = null; this.init(); @@ -19,7 +20,6 @@ LinkeditorForm.prototype = { return false; }); - $(document).on('change', '.calculation', function () { var v = $(this).val(); if (/[0-9\., \-\+\*\/]+/.test(v)) { @@ -81,15 +81,28 @@ LinkeditorForm.prototype = { $('body').append(form); var parent = $(this).closest('.freefile-file'); + var tf = $(parent).find('.freefile-text-input'); + let tfname = $(tf).attr('name'); + let uid = $this.getCurrentFormUID(); + $this.loadingFields[uid + '_' + tfname] = true; + $(parent).addClass('loading'); var f = $(form).ajaxSubmit({dataType: 'json'}); var xhr = f.data('jqxhr'); xhr.done(function (data) { - var tf = $(parent).find('.freefile-text-input'); - tf.val(data[0]); - tf.trigger('change'); - $(parent).removeClass('loading'); - $this.saveFormDataInLink(); + if ($this.getCurrentFormUID() === uid) { + let tf = $("#linkeditor-panel-form").find('.freefile-text-input[name="' + tfname + '"]'); + tf.val(data[0]); + tf.trigger('change'); + $(tf).closest('.freefile-file').removeClass('loading'); + $this.saveFormDataInLink(); + } else { + let linkData = {}; + linkData[tfname] = data[0]; + $this.linkeditor.links.updateLinkData(uid, linkData, true); + $this.linkeditor.hasChanged(); + } + $this.loadingFields[uid + '_' + tfname] = false; setTimeout(function () { $this.linkeditor.save.saveIfUnsavedChanges(TRANSLATIONS.upload_save_message, false, function () { @@ -100,6 +113,14 @@ LinkeditorForm.prototype = { }); }, + getCurrentFormUID: function () { + let uid = $("#linkeditor-panel-form").find('[name="uid"]'); + if (uid.length > 0) { + return uid.val(); + } + return false; + }, + saveFormDataInLink: function () { var $this = this; var form = $("#linkeditor-panel-form form"); @@ -256,10 +277,12 @@ LinkeditorForm.prototype = { return; } + let linkData = this.linkeditor.links.getLinkData(link); + let uid = linkData.uid; var map = {top: 'y', left: 'x', width: 'w', height: 'h'}; this.maskChangeEvent(); - $.each(this.linkeditor.links.getLinkData(link), function (k, v) { + $.each(linkData, function (k, v) { if (map[k] !== undefined) { k = map[k]; } @@ -269,6 +292,10 @@ LinkeditorForm.prototype = { } else { $(form).find('[name=' + k + ']').val(v); } + + if ($this.loadingFields[uid + '_' + k] === true) { + $(form).find('[name=' + k + ']').closest('.freefile-file').addClass('loading'); + } }); this.unmaskChangeEvent(); }, diff --git a/resources/linkeditor/js/linkeditor.links.js b/resources/linkeditor/js/linkeditor.links.js index 340308555..ca609b6db 100644 --- a/resources/linkeditor/js/linkeditor.links.js +++ b/resources/linkeditor/js/linkeditor.links.js @@ -1127,13 +1127,19 @@ LinkeditorLinks.prototype = { } }, - updateLinkData: function (id, data) { + updateLinkData: function (id, data, updateHTML) { if (LINKS[id] === undefined) { console.warn('Link ' + id + ' not found'); return; } + + let htmlLink = updateHTML ? $('.link[fb-uid="' + id + '"]') : false; + $.each(data, function (k, v) { LINKS[id][k] = v; + if (htmlLink) { + $(htmlLink).attr('fb-' + k, v); + } }); this.linkeditor.rulers.updateMagnetValues(); this.updateLayers(); -- 2.39.5