function LinkeditorForm(linkeditor) {
this.linkeditor = linkeditor;
+ this.loadingFields = {};
this._maskChangeEvent = false;
this._maskChangeEventTimeout = null;
this.init();
return false;
});
-
$(document).on('change', '.calculation', function () {
var v = $(this).val();
if (/[0-9\., \-\+\*\/]+/.test(v)) {
$('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 () {
});
},
+ 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");
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];
}
} else {
$(form).find('[name=' + k + ']').val(v);
}
+
+ if ($this.loadingFields[uid + '_' + k] === true) {
+ $(form).find('[name=' + k + ']').closest('.freefile-file').addClass('loading');
+ }
});
this.unmaskChangeEvent();
},
}
},
- 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();