From 62dbe2e80d471c5453cc80ff411488a4d9729887 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 19 Jun 2019 11:22:10 +0300 Subject: [PATCH] [DE] Watermark: disable Ok button when image is not loaded --- .../main/app/view/WatermarkSettingsDialog.js | 50 +++++++++++++++---- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js b/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js index 61e1f54a6..495ef6850 100644 --- a/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js +++ b/apps/documenteditor/main/app/view/WatermarkSettingsDialog.js @@ -116,6 +116,7 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', this.fontName = 'Arial'; this.lang = 'en'; this.isAutoColor = false; + this.isImageLoaded = false; Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); }, @@ -361,6 +362,11 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', }); this.textControls.push(this.radioHor); + this.btnOk = new Common.UI.Button({ + el: this.$window.find('.primary'), + disabled: true + }); + this.afterRender(); }, @@ -399,6 +405,16 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', this.updateThemeColors(); this._setDefaults(this.props); + + var me = this; + var onApiWMLoaded = function() { + me.isImageLoaded = true; + me.btnOk.setDisabled(false); + }; + this.api.asc_registerCallback('asc_onWatermarkImageLoaded', onApiWMLoaded); + this.on('close', function(obj){ + me.api.asc_unregisterCallback('asc_onWatermarkImageLoaded', onApiWMLoaded); + }); }, show: function() { @@ -471,15 +487,17 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', props.put_DivId('watermark-texture-img'); props.put_Api(this.api); - var val = props.get_Type(); - if (val == Asc.c_oAscWatermarkType.None) { - this.radioNone.setValue(true); - } else if (val == Asc.c_oAscWatermarkType.Image) { - this.radioImage.setValue(true); + var val, + type = props.get_Type(); + if (type == Asc.c_oAscWatermarkType.None) { + this.radioNone.setValue(true, true); + } else if (type == Asc.c_oAscWatermarkType.Image) { + this.radioImage.setValue(true, true); + this.isImageLoaded = !!props.get_ImageUrl(); val = props.get_Scale() || -1; this.cmbScale.setValue((val<0) ? -1 : Math.round(val*100), Math.round(val*100) + ' %'); } else { - this.radioText.setValue(true); + this.radioText.setValue(true, true); !props.get_IsDiagonal() && this.radioHor.setValue(true); this.chTransparency.setValue(props.get_Opacity()<255); @@ -538,6 +556,7 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', val = props.get_Text(); val && this.cmbText.setValue(val); } + this.disableControls(type); } }, @@ -592,13 +611,24 @@ define(['text!documenteditor/main/app/template/WatermarkSettings.template', item.setDisabled(disable); }); this.cmbLang.setDisabled(disable || this.languages.length<1); + this.btnOk.setDisabled(type==Asc.c_oAscWatermarkType.Image && !this.isImageLoaded); }, onDlgBtnClick: function(event) { - var me = this; - var state = (typeof(event) == 'object') ? event.currentTarget.attributes['result'].value : event; - if (state == 'ok') { - this.handler && this.handler.call(this, state, this.getSettings()); + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function() { + this._handleInput('ok'); + return false; + }, + + _handleInput: function(state) { + if (this.handler) { + if (state == 'ok' && this.btnOk.isDisabled()) { + return; + } + this.handler.call(this, state, this.getSettings()); } this.close();