[DE forms] Add onDocumentStateChange event

This commit is contained in:
Julia Radzhabova 2021-12-06 12:01:39 +03:00
parent 269d3a0b9a
commit ed471509c5

View file

@ -53,7 +53,7 @@ define([
weakCompare : function(obj1, obj2){return obj1.type === obj2.type;} weakCompare : function(obj1, obj2){return obj1.type === obj2.type;}
}); });
this._state = {isDisconnected: false, licenseType: false}; this._state = {isDisconnected: false, licenseType: false, isDocModified: false};
this.view = this.createView('ApplicationView').render(); this.view = this.createView('ApplicationView').render();
@ -102,6 +102,7 @@ define([
this.api.asc_registerCallback('asc_onAdvancedOptions', this.onAdvancedOptions.bind(this)); this.api.asc_registerCallback('asc_onAdvancedOptions', this.onAdvancedOptions.bind(this));
this.api.asc_registerCallback('asc_onCountPages', this.onCountPages.bind(this)); this.api.asc_registerCallback('asc_onCountPages', this.onCountPages.bind(this));
this.api.asc_registerCallback('asc_onCurrentPage', this.onCurrentPage.bind(this)); this.api.asc_registerCallback('asc_onCurrentPage', this.onCurrentPage.bind(this));
this.api.asc_registerCallback('asc_onDocumentModifiedChanged', _.bind(this.onDocumentModifiedChanged, this));
// Initialize api gateway // Initialize api gateway
Common.Gateway.on('init', this.loadConfig.bind(this)); Common.Gateway.on('init', this.loadConfig.bind(this));
@ -361,6 +362,23 @@ define([
this.view.txtGoToPage.setValue(number + 1); this.view.txtGoToPage.setValue(number + 1);
}, },
updateWindowTitle: function(force) {
var isModified = this.api.isDocumentModified();
if (this._state.isDocModified !== isModified || force) {
this._isDocReady && (this._state.isDocModified !== isModified) && Common.Gateway.setDocumentModified(isModified);
this._state.isDocModified = isModified;
}
},
onDocumentModifiedChanged: function() {
var isModified = this.api.asc_isDocumentCanSave();
if (this._state.isDocModified !== isModified) {
this._isDocReady && Common.Gateway.setDocumentModified(this.api.isDocumentModified());
}
this.updateWindowTitle();
},
loadConfig: function(data) { loadConfig: function(data) {
this.editorConfig = $.extend(this.editorConfig, data.config); this.editorConfig = $.extend(this.editorConfig, data.config);
this.embedConfig = $.extend(this.embedConfig, data.config.embedded); this.embedConfig = $.extend(this.embedConfig, data.config.embedded);
@ -718,6 +736,8 @@ define([
var action = {id: id, type: type}; var action = {id: id, type: type};
this.stackLongActions.pop(action); this.stackLongActions.pop(action);
this.updateWindowTitle(true);
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.Information}); action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.Information});
action && this.setLongActionView(action); action && this.setLongActionView(action);
action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction}); action = this.stackLongActions.get({type: Asc.c_oAscAsyncActionType.BlockInteraction});
@ -1265,8 +1285,11 @@ define([
}, },
onDocumentContentReady: function() { onDocumentContentReady: function() {
var me = this; if (this._isDocReady)
return;
var me = this;
me._isDocReady = true;
this.hidePreloader(); this.hidePreloader();
this.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument); this.onLongActionEnd(Asc.c_oAscAsyncActionType['BlockInteraction'], LoadingDocument);
@ -1295,6 +1318,8 @@ define([
Common.NotificationCenter.on('storage:image-insert', _.bind(this.insertImageFromStorage, this)); // set loaded image to control Common.NotificationCenter.on('storage:image-insert', _.bind(this.insertImageFromStorage, this)); // set loaded image to control
} }
this.updateWindowTitle(true);
if (this.editorConfig.mode !== 'view') // if want to open editor, but viewer is loaded if (this.editorConfig.mode !== 'view') // if want to open editor, but viewer is loaded
this.applyLicense(); this.applyLicense();