From 398691700b8a02c1a933e4bce4151074f1ec39d2 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 7 Jun 2022 17:43:17 +0300 Subject: [PATCH] [SSE] Update external data --- apps/api/documents/api.js | 13 ++++- apps/common/Gateway.js | 8 +++ .../main/app/controller/DocumentHolder.js | 54 +++++++++++++++++++ .../main/app/controller/Main.js | 1 + 4 files changed, 75 insertions(+), 1 deletion(-) diff --git a/apps/api/documents/api.js b/apps/api/documents/api.js index 274993c62..ed3dc763b 100644 --- a/apps/api/documents/api.js +++ b/apps/api/documents/api.js @@ -23,6 +23,7 @@ options: , key: 'key', vkey: 'vkey', + referenceData: 'data for external paste', info: { owner: 'owner name', folder: 'path to document', @@ -262,6 +263,7 @@ 'onRequestCompareFile': ,// must call setRevisedFile method 'onRequestSharingSettings': ,// must call setSharingSettings method 'onRequestCreateNew': , + 'onRequestReferenceData': , } } @@ -325,6 +327,7 @@ _config.editorConfig.canRequestCompareFile = _config.events && !!_config.events.onRequestCompareFile; _config.editorConfig.canRequestSharingSettings = _config.events && !!_config.events.onRequestSharingSettings; _config.editorConfig.canRequestCreateNew = _config.events && !!_config.events.onRequestCreateNew; + _config.editorConfig.canRequestReferenceData = _config.events && !!_config.events.onRequestReferenceData; _config.frameEditorId = placeholderId; _config.parentOrigin = window.location.origin; @@ -731,6 +734,13 @@ }); }; + var _setReferenceData = function(data) { + _sendCommand({ + command: 'setReferenceData', + data: data + }); + }; + var _serviceCommand = function(command, data) { _sendCommand({ command: 'internalCommand', @@ -765,7 +775,8 @@ setFavorite : _setFavorite, requestClose : _requestClose, grabFocus : _grabFocus, - blurFocus : _blurFocus + blurFocus : _blurFocus, + setReferenceData : _setReferenceData } }; diff --git a/apps/common/Gateway.js b/apps/common/Gateway.js index 675a7421a..438ccce82 100644 --- a/apps/common/Gateway.js +++ b/apps/common/Gateway.js @@ -138,6 +138,10 @@ if (window.Common === undefined) { 'grabFocus': function(data) { $me.trigger('grabfocus', data); + }, + + 'setReferenceData': function(data) { + $me.trigger('setreferencedata', data); } }; @@ -347,6 +351,10 @@ if (window.Common === undefined) { _postMessage({event:'onRequestCreateNew'}); }, + requestReferenceData: function (data) { + _postMessage({event:'onRequestReferenceData', data: data}); + }, + pluginsReady: function() { _postMessage({ event: 'onPluginsReady' }); }, diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index e02a0297d..89c35715f 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -119,6 +119,11 @@ define([ me._state = {wsLock: false, wsProps: []}; me.fastcoauthtips = []; me._TtHeight = 20; + me.externalData = { + stackRequests: [], + stackResponse: [], + callback: undefined + }; /** coauthoring begin **/ this.wrapEvents = { apiHideComment: _.bind(this.onApiHideComment, this) @@ -369,6 +374,10 @@ define([ this.api.asc_registerCallback('asc_onShowPivotGroupDialog', _.bind(this.onShowPivotGroupDialog, this)); if (!this.permissions.isEditMailMerge && !this.permissions.isEditDiagram && !this.permissions.isEditOle) this.api.asc_registerCallback('asc_doubleClickOnTableOleObject', _.bind(this.onDoubleClickOnTableOleObject, this)); + if (this.permissions.canRequestReferenceData) { + this.api.asc_registerCallback('asc_onRefreshExternalData', _.bind(this.onRefreshExternalData, this)); + Common.Gateway.on('setreferencedata', _.bind(this.setReferenceData, this)); + } } this.api.asc_registerCallback('asc_onShowForeignCursorLabel', _.bind(this.onShowForeignCursorLabel, this)); this.api.asc_registerCallback('asc_onHideForeignCursorLabel', _.bind(this.onHideForeignCursorLabel, this)); @@ -4082,6 +4091,51 @@ define([ } }, + onRefreshExternalData: function(arr, callback) { + if (this.permissions.isEdit && !this._isDisabled) { + var me = this; + me.externalData = { + stackRequests: [], + stackResponse: [], + callback: undefined + }; + arr && arr.length>0 && arr.forEach(function(item) { + var data = {}; + switch (item.type) { + case Asc.externalReferenceType.link: + data['link'] = item.data; + break; + case Asc.externalReferenceType.path: + data['path'] = item.data; + break; + case Asc.externalReferenceType.referenceData: + data['referenceData'] = item.data; + break; + } + me.externalData.stackRequests.push(data); + }); + me.externalData.callback = callback; + me.requestReferenceData(); + } + }, + + requestReferenceData: function() { + if (this.externalData.stackRequests.length>0) { + var data = this.externalData.stackRequests.shift(); + Common.Gateway.requestReferenceData(data); + } + }, + + setReferenceData: function(data) { + if (this.permissions.isEdit && !this._isDisabled) { + data && this.externalData.stackResponse.push(data); + if (this.externalData.stackRequests.length>0) + this.requestReferenceData(); + else if (this.externalData.callback) + this.externalData.callback(this.externalData.stackResponse); + } + }, + getUserName: function(id){ var usersStore = SSE.getCollection('Common.Collections.Users'); if (usersStore){ diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 275aa3f6c..ea94868e4 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -505,6 +505,7 @@ define([ docInfo.put_EncryptedInfo(this.editorConfig.encryptionKeys); docInfo.put_Lang(this.editorConfig.lang); docInfo.put_Mode(this.editorConfig.mode); + docInfo.put_ReferenceData(data.doc.referenceData); var coEditMode = !(this.editorConfig.coEditing && typeof this.editorConfig.coEditing == 'object') ? 'fast' : // fast by default this.editorConfig.mode === 'view' && this.editorConfig.coEditing.change!==false ? 'fast' : // if can change mode in viewer - set fast for using live viewer