From 0acbad6fa04e36f6146345af6623b09ccee06e5f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 9 Jul 2020 14:53:22 +0300 Subject: [PATCH 01/54] [SSE] Add View tab --- apps/common/main/lib/component/Mixtbar.js | 2 + apps/spreadsheeteditor/main/app.js | 2 + .../main/app/controller/Toolbar.js | 4 + .../main/app/controller/ViewTab.js | 121 ++++++++ .../main/app/template/Toolbar.template | 42 +++ .../main/app/view/Toolbar.js | 7 +- .../main/app/view/ViewTab.js | 287 ++++++++++++++++++ apps/spreadsheeteditor/main/app_dev.js | 2 + .../main/resources/less/toolbar.less | 5 + 9 files changed, 470 insertions(+), 2 deletions(-) create mode 100644 apps/spreadsheeteditor/main/app/controller/ViewTab.js create mode 100644 apps/spreadsheeteditor/main/app/view/ViewTab.js diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index 74b785c60..0081cad91 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -94,11 +94,13 @@ define([ '' + '' + '' + diff --git a/apps/spreadsheeteditor/main/app.js b/apps/spreadsheeteditor/main/app.js index f274e5365..98f81f10a 100644 --- a/apps/spreadsheeteditor/main/app.js +++ b/apps/spreadsheeteditor/main/app.js @@ -158,6 +158,7 @@ require([ 'Main', 'PivotTable', 'DataTab', + 'ViewTab', 'Common.Controllers.Fonts', 'Common.Controllers.Chat', 'Common.Controllers.Comments', @@ -181,6 +182,7 @@ require([ 'spreadsheeteditor/main/app/controller/Print', 'spreadsheeteditor/main/app/controller/PivotTable', 'spreadsheeteditor/main/app/controller/DataTab', + 'spreadsheeteditor/main/app/controller/ViewTab', 'spreadsheeteditor/main/app/view/FileMenuPanels', 'spreadsheeteditor/main/app/view/ParagraphSettings', 'spreadsheeteditor/main/app/view/ImageSettings', diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 856454690..6b916879a 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -3304,6 +3304,10 @@ define([ me.toolbar.addTab(tab, $panel, 7); } } + + var viewtab = me.getApplication().getController('ViewTab'); + viewtab.setApi(me.api).setConfig({toolbar: me}); + } } }, diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js new file mode 100644 index 000000000..92c2d8bad --- /dev/null +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -0,0 +1,121 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ + +/** + * ViewTab.js + * + * Created by Julia Radzhabova on 08.07.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'core', + 'spreadsheeteditor/main/app/view/ViewTab' +], function () { + 'use strict'; + + SSE.Controllers.ViewTab = Backbone.Controller.extend(_.extend({ + models : [], + collections : [ + ], + views : [ + 'ViewTab' + ], + sdkViewName : '#id_main', + + initialize: function () { + }, + onLaunch: function () { + }, + + setApi: function (api) { + if (api) { + this.api = api; + this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); + this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); + Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); + } + return this; + }, + + setConfig: function(config) { + this.toolbar = config.toolbar; + this.view = this.createView('ViewTab', { + toolbar: this.toolbar.toolbar + }); + this.addListeners({ + 'ViewTab': { + 'viewtab:freeze': this.onFreeze + } + }); + }, + + SetDisabled: function(state) { + this.view && this.view.SetDisabled(state); + }, + + getView: function(name) { + return !name && this.view ? + this.view : Backbone.Controller.prototype.getView.call(this, name); + }, + + onCoAuthoringDisconnect: function() { + this.SetDisabled(true); + }, + + onSelectionChanged: function(info) { + if (!this.toolbar.editMode || !this.view) return; + }, + + onFreeze: function() { + var me = this; + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + }, + + onWorksheetLocked: function(index,locked) { + if (index == this.api.asc_getActiveWorksheetIndex()) { + Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); + } + }, + + onApiSheetChanged: function() { + if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; + + var currentSheet = this.api.asc_getActiveWorksheetIndex(); + this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + } + + }, SSE.Controllers.ViewTab || {})); +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/template/Toolbar.template b/apps/spreadsheeteditor/main/app/template/Toolbar.template index cb7050e5f..312b2bc1c 100644 --- a/apps/spreadsheeteditor/main/app/template/Toolbar.template +++ b/apps/spreadsheeteditor/main/app/template/Toolbar.template @@ -225,6 +225,48 @@ +
+
+ +
+
+
+ +
+
+ +
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index 86434fc0d..c7d70c6c3 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -323,7 +323,9 @@ define([ { caption: me.textTabInsert, action: 'ins', extcls: 'canedit'}, {caption: me.textTabLayout, action: 'layout', extcls: 'canedit'}, {caption: me.textTabFormula, action: 'formula', extcls: 'canedit'}, - {caption: me.textTabData, action: 'data', extcls: 'canedit'} + {caption: me.textTabData, action: 'data', extcls: 'canedit'}, + undefined, undefined, undefined, + {caption: me.textTabView, action: 'view', extcls: 'canedit'} ]} ); @@ -2422,6 +2424,7 @@ define([ tipPrintTitles: 'Print titles', capBtnInsSlicer: 'Slicer', tipInsertSlicer: 'Insert slicer', - textVertical: 'Vertical Text' + textVertical: 'Vertical Text', + textTabView: 'View' }, SSE.Views.Toolbar || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js new file mode 100644 index 000000000..785c957d0 --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -0,0 +1,287 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ +/** + * ViewTab.js + * + * Created by Julia Radzhabova on 08.07.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/util/utils', + 'common/main/lib/component/BaseView', + 'common/main/lib/component/Layout' +], function () { + 'use strict'; + + SSE.Views.ViewTab = Common.UI.BaseView.extend(_.extend((function(){ + function setEvents() { + var me = this; + me.btnFreezePanes.on('click', function (btn, e) { + me.fireEvent('viewtab:freeze', [btn.pressed]); + }); + } + + return { + options: {}, + + initialize: function (options) { + Common.UI.BaseView.prototype.initialize.call(this); + this.toolbar = options.toolbar; + + this.lockedControls = []; + + var me = this, + $host = me.toolbar.$el, + _set = SSE.enumLock; + + this.btnSheetView = new Common.UI.Button({ + parentEl: $host.find('#slot-btn-sheet-view'), + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-sheetview', + caption: me.capBtnSheetView, + lock : [_set.lostConnect, _set.coAuth], + menu: true + }); + this.lockedControls.push(this.btnSheetView); + + this.btnCreateView = new Common.UI.Button({ + id : 'id-toolbar-btn-createview', + cls : 'btn-toolbar', + iconCls : 'toolbar__icon btn-createview', + caption : this.textCreate, + lock : [_set.coAuth, _set.lostConnect] + }); + this.lockedControls.push(this.btnCreateView); + Common.Utils.injectComponent($host.find('#slot-createview'), this.btnCreateView); + + this.btnCloseView = new Common.UI.Button({ + id : 'id-toolbar-btn-closeview', + cls : 'btn-toolbar', + iconCls : 'toolbar__icon btn-closeview', + caption : this.textClose, + lock : [_set.coAuth, _set.lostConnect] + }); + this.lockedControls.push(this.btnCloseView); + Common.Utils.injectComponent($host.find('#slot-closeview'), this.btnCloseView); + + this.btnFreezePanes = new Common.UI.Button({ + parentEl: $host.find('#slot-btn-freeze'), + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-to-freeze', + caption: this.capBtnFreeze, + split: false, + enableToggle: true, + lock: [_set.lostConnect, _set.coAuth] + }); + this.lockedControls.push(this.btnFreezePanes); + + this.cmbZoom = new Common.UI.ComboBox({ + cls : 'input-group-nr', + menuStyle : 'min-width: 55px;', + hint : me.tipFontSize, + editable : false, + lock : [_set.coAuth, _set.lostConnect], + data : [ + { displayValue: "50%", value: 50 }, + { displayValue: "75%", value: 75 }, + { displayValue: "100%", value: 100 }, + { displayValue: "125%", value: 125 }, + { displayValue: "150%", value: 150 }, + { displayValue: "175%", value: 175 }, + { displayValue: "200%", value: 200 } + ] + }); + Common.Utils.injectComponent($host.find('#slot-field-zoom'), this.cmbZoom); + + this.chFormula = new Common.UI.CheckBox({ + el: $host.findById('#slot-chk-formula'), + labelText: this.textFormula, + lock : [_set.lostConnect, _set.coAuth] + }); + this.lockedControls.push(this.chFormula); + + this.chHeadings = new Common.UI.CheckBox({ + el: $host.findById('#slot-chk-heading'), + labelText: this.textHeadings, + lock : [_set.lostConnect, _set.coAuth] + }); + this.lockedControls.push(this.chHeadings); + + this.chGridlines = new Common.UI.CheckBox({ + el: $host.findById('#slot-chk-gridlines'), + labelText: this.textGridlines, + lock : [_set.lostConnect, _set.coAuth] + }); + this.lockedControls.push(this.chGridlines); + + $host.find('#slot-lbl-zoom').text(this.textZoom); + + Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); + }, + + render: function (el) { + return this; + }, + + onAppReady: function (config) { + var me = this; + (new Promise(function (accept, reject) { + accept(); + })).then(function(){ + me.btnSheetView.updateHint( me.tipSheetView ); + me.setButtonMenu(me.btnSheetView); + + me.btnCreateView.updateHint(me.tipCreate); + me.btnCloseView.updateHint(me.tipClose); + me.btnFreezePanes.updateHint(me.tipFreeze); + + setEvents.call(me); + }); + }, + + focusInner: function(menu, e) { + if (e.keyCode == Common.UI.Keys.UP) + menu.items[menu.items.length-1].cmpEl.find('> a').focus(); + else + menu.items[0].cmpEl.find('> a').focus(); + }, + + focusOuter: function(menu, e) { + menu.items[2].cmpEl.find('> a').focus(); + }, + + onBeforeKeyDown: function(menu, e) { + if (e.keyCode == Common.UI.Keys.RETURN) { + e.preventDefault(); + e.stopPropagation(); + var li = $(e.target).closest('li'); + (li.length>0) && li.click(); + Common.UI.Menu.Manager.hideAll(); + } else if (e.namespace!=="after.bs.dropdown" && (e.keyCode == Common.UI.Keys.DOWN || e.keyCode == Common.UI.Keys.UP)) { + var $items = $('> [role=menu] > li:not(.divider):not(.disabled):visible', menu.$el).find('> a'); + if (!$items.length) return; + var index = $items.index($items.filter(':focus')), + me = this; + if (menu._outerMenu && (e.keyCode == Common.UI.Keys.UP && index==0 || e.keyCode == Common.UI.Keys.DOWN && index==$items.length - 1) || + menu._innerMenu && (e.keyCode == Common.UI.Keys.UP || e.keyCode == Common.UI.Keys.DOWN) && index!==-1) { + e.preventDefault(); + e.stopPropagation(); + _.delay(function() { + menu._outerMenu ? me.focusOuter(menu._outerMenu, e) : me.focusInner(menu._innerMenu, e); + }, 10); + } + } + }, + + setButtonMenu: function(btn) { + var me = this, + arr = [{caption: me.textDefault, value: 'default'}]; + btn.setMenu(new Common.UI.Menu({ + items: [ + {template: _.template('
')}, + { caption: '--' }, + { + caption: me.textManager, + value: 'manager' + } + ] + })); + btn.menu.items[2].on('click', function (item, e) { + me.fireEvent('viewtab:manager'); + }); + btn.menu.on('show:after', function (menu, e) { + var internalMenu = menu._innerMenu; + internalMenu.scroller.update({alwaysVisibleY: true}); + _.delay(function() { + menu._innerMenu && menu._innerMenu.cmpEl.focus(); + }, 10); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); + + var menu = new Common.UI.Menu({ + maxHeight: 300, + cls: 'internal-menu', + items: arr + }); + menu.render(btn.menu.items[0].cmpEl.children(':first')); + menu.cmpEl.css({ + display : 'block', + position : 'relative', + left : 0, + top : 0 + }); + menu.cmpEl.attr({tabindex: "-1"}); + menu.on('item:click', function (menu, item, e) { + me.fireEvent('viewtab:openview', [{name: item.caption, value: item.value}]); + }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); + btn.menu._innerMenu = menu; + menu._outerMenu = btn.menu; + }, + + show: function () { + Common.UI.BaseView.prototype.show.call(this); + this.fireEvent('show', this); + }, + + getButtons: function(type) { + if (type===undefined) + return this.lockedControls; + return []; + }, + + SetDisabled: function (state) { + this.lockedControls && this.lockedControls.forEach(function(button) { + if ( button ) { + button.setDisabled(state); + } + }, this); + }, + + capBtnSheetView: 'Sheet View', + capBtnFreeze: 'Freeze Panes', + textZoom: 'Zoom', + tipSheetView: 'Sheet view', + textDefault: 'Default', + textManager: 'View manager', + tipFreeze: 'Freeze panes', + tipCreate: 'Create sheet view', + tipClose: 'Close sheet view', + textCreate: 'New', + textClose: 'Close', + textFormula: 'Formula bar', + textHeadings: 'Headings', + textGridlines: 'Gridlines' + } + }()), SSE.Views.ViewTab || {})); +}); diff --git a/apps/spreadsheeteditor/main/app_dev.js b/apps/spreadsheeteditor/main/app_dev.js index d3b10623a..2ca0622ca 100644 --- a/apps/spreadsheeteditor/main/app_dev.js +++ b/apps/spreadsheeteditor/main/app_dev.js @@ -148,6 +148,7 @@ require([ 'Main', 'PivotTable', 'DataTab', + 'ViewTab', 'Common.Controllers.Fonts', 'Common.Controllers.Chat', 'Common.Controllers.Comments', @@ -171,6 +172,7 @@ require([ 'spreadsheeteditor/main/app/controller/Print', 'spreadsheeteditor/main/app/controller/PivotTable', 'spreadsheeteditor/main/app/controller/DataTab', + 'spreadsheeteditor/main/app/controller/ViewTab', 'spreadsheeteditor/main/app/view/FileMenuPanels', 'spreadsheeteditor/main/app/view/ParagraphSettings', 'spreadsheeteditor/main/app/view/ImageSettings', diff --git a/apps/spreadsheeteditor/main/resources/less/toolbar.less b/apps/spreadsheeteditor/main/resources/less/toolbar.less index ebc025adc..4592a867d 100644 --- a/apps/spreadsheeteditor/main/resources/less/toolbar.less +++ b/apps/spreadsheeteditor/main/resources/less/toolbar.less @@ -161,3 +161,8 @@ width: 38px; height: 38px; } + +#slot-field-zoom { + float: left; + min-width: 45px; +} \ No newline at end of file From 30edbea008ddf4928ac9446e99e3223323ae9402 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 9 Jul 2020 19:04:54 +0300 Subject: [PATCH 02/54] [SSE] Apply view settings --- .../main/app/controller/ViewTab.js | 67 ++++++++++++++++--- .../main/app/controller/Viewport.js | 5 +- .../main/app/view/ViewTab.js | 17 ++++- 3 files changed, 76 insertions(+), 13 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 92c2d8bad..736fce2e5 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -62,8 +62,11 @@ define([ setApi: function (api) { if (api) { this.api = api; + this.api.asc_registerCallback('asc_onZoomChanged', this.onApiZoomChange.bind(this)); this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); - this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + // this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); + this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); } @@ -77,9 +80,17 @@ define([ }); this.addListeners({ 'ViewTab': { - 'viewtab:freeze': this.onFreeze + 'viewtab:freeze': this.onFreeze, + 'viewtab:formula': this.onViewSettings, + 'viewtab:headings': this.onViewSettings, + 'viewtab:gridlines': this.onViewSettings, + 'viewtab:zoom': this.onZoom + }, + 'Statusbar': { + 'sheet:changed': this.onApiSheetChanged.bind(this) } }); + Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this)); }, SetDisabled: function(state) { @@ -99,22 +110,58 @@ define([ if (!this.toolbar.editMode || !this.view) return; }, - onFreeze: function() { - var me = this; - Common.NotificationCenter.trigger('edit:complete', me.toolbar); + onFreeze: function(state) { + if (this.api) { + this.api.asc_freezePane(); + } + Common.NotificationCenter.trigger('edit:complete', this.view); }, - onWorksheetLocked: function(index,locked) { - if (index == this.api.asc_getActiveWorksheetIndex()) { - Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); + onZoom: function(zoom) { + if (this.api) { + this.api.asc_setZoom(zoom/100); } + Common.NotificationCenter.trigger('edit:complete', this.view); }, + onViewSettings: function(type, value){ + if (this.api) { + switch (type) { + case 0: this.getApplication().getController('Viewport').header.fireEvent('formulabar:hide', [ value!=='checked']); break; + case 1: this.api.asc_setDisplayHeadings(value=='checked'); break; + case 2: this.api.asc_setDisplayGridlines( value=='checked'); break; + } + } + Common.NotificationCenter.trigger('edit:complete', this.view); + }, + + // onWorksheetLocked: function(index,locked) { + // if (index == this.api.asc_getActiveWorksheetIndex()) { + // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); + // } + // }, + onApiSheetChanged: function() { if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; - var currentSheet = this.api.asc_getActiveWorksheetIndex(); - this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + var params = this.api.asc_getSheetViewSettings(); + this.view.chHeadings.setValue(!!params.asc_getShowRowColHeaders(), true); + this.view.chGridlines.setValue(!!params.asc_getShowGridLines(), true); + this.view.btnFreezePanes.toggle(!!params.asc_getIsFreezePane(), true); + + // var currentSheet = this.api.asc_getActiveWorksheetIndex(); + // this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + }, + + onLayoutChanged: function(area) { + if (area=='celleditor' && arguments[1]) { + this.view.chFormula.setValue(arguments[1]=='showed', true); + } + }, + + onApiZoomChange: function(zf, type){ + var value = Math.floor((zf + .005) * 100); + this.view.cmbZoom.setValue(value, value + '%'); } }, SSE.Controllers.ViewTab || {})); diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index 151f68b4c..d9bbf598a 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -207,7 +207,7 @@ define([ }, this)); } - var mnuitemHideFormulaBar = new Common.UI.MenuItem({ + me.header.mnuitemHideFormulaBar = new Common.UI.MenuItem({ caption : me.textHideFBar, checked : Common.localStorage.getBool('sse-hidden-formula'), checkable : true, @@ -261,7 +261,7 @@ define([ style: 'min-width: 180px;', items: [ me.header.mnuitemCompactToolbar, - mnuitemHideFormulaBar, + me.header.mnuitemHideFormulaBar, {caption:'--'}, me.header.mnuitemHideHeadings, me.header.mnuitemHideGridlines, @@ -391,6 +391,7 @@ define([ case 'celleditor': if (arguments[1]) { this.boxSdk.css('border-top', arguments[1]=='hidden'?'none':''); + this.header.mnuitemHideFormulaBar.setChecked(arguments[1]=='hidden', true); } this.viewport.celayout.doLayout(); break; diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index 785c957d0..f12de75f4 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -51,6 +51,19 @@ define([ me.btnFreezePanes.on('click', function (btn, e) { me.fireEvent('viewtab:freeze', [btn.pressed]); }); + this.chFormula.on('change', function (field, value) { + me.fireEvent('viewtab:formula', [0, value]); + }); + this.chHeadings.on('change', function (field, value) { + me.fireEvent('viewtab:headings', [1, value]); + }); + this.chGridlines.on('change', function (field, value) { + me.fireEvent('viewtab:gridlines', [2, value]); + }); + + this.cmbZoom.on('selected', function(combo, record) { + me.fireEvent('viewtab:zoom', [record.value]); + }); } return { @@ -108,6 +121,7 @@ define([ this.lockedControls.push(this.btnFreezePanes); this.cmbZoom = new Common.UI.ComboBox({ + el : $host.find('#slot-field-zoom'), cls : 'input-group-nr', menuStyle : 'min-width: 55px;', hint : me.tipFontSize, @@ -123,11 +137,12 @@ define([ { displayValue: "200%", value: 200 } ] }); - Common.Utils.injectComponent($host.find('#slot-field-zoom'), this.cmbZoom); + this.cmbZoom.setValue(100); this.chFormula = new Common.UI.CheckBox({ el: $host.findById('#slot-chk-formula'), labelText: this.textFormula, + value: !Common.localStorage.getBool('sse-hidden-formula'), lock : [_set.lostConnect, _set.coAuth] }); this.lockedControls.push(this.chFormula); From 026e17cc13270cfffc919c459cb178ee28dd5b0b Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 9 Jul 2020 20:42:25 +0300 Subject: [PATCH 03/54] [SSE] Show sheet views --- .../main/app/controller/ViewTab.js | 28 ++++++++++++++++++- .../main/app/view/ViewTab.js | 10 ++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 736fce2e5..3b441f76b 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -84,7 +84,10 @@ define([ 'viewtab:formula': this.onViewSettings, 'viewtab:headings': this.onViewSettings, 'viewtab:gridlines': this.onViewSettings, - 'viewtab:zoom': this.onZoom + 'viewtab:zoom': this.onZoom, + 'viewtab:showview': this.onShowView, + 'viewtab:openview': this.onOpenView + // 'viewtab:manager': this.onOpenManager }, 'Statusbar': { 'sheet:changed': this.onApiSheetChanged.bind(this) @@ -135,6 +138,29 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.view); }, + onShowView: function() { + var views = this.api.asc_getNamedSheetViews(), + menu = this.view.btnSheetView.menu._innerMenu, + active = false; + + menu.removeItems(1, menu.items.length-1); + _.each(views, function(item, index) { + menu.addItem(new Common.UI.MenuItem({ + caption : item.asc_getName(), + checkable: true, + allowDepress: false, + checked : item.asc_getIsActive() + })); + if (item.asc_getIsActive()) + active = true; + }); + menu.items[0].setChecked(!active, true); + }, + + onOpenView: function(item) { + this.api && this.api.asc_setActiveNamedSheetView((item.value == 'default') ? null : item.name); + }, + // onWorksheetLocked: function(index,locked) { // if (index == this.api.asc_getActiveWorksheetIndex()) { // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index f12de75f4..0e4232b17 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -60,7 +60,6 @@ define([ this.chGridlines.on('change', function (field, value) { me.fireEvent('viewtab:gridlines', [2, value]); }); - this.cmbZoom.on('selected', function(combo, record) { me.fireEvent('viewtab:zoom', [record.value]); }); @@ -222,7 +221,7 @@ define([ setButtonMenu: function(btn) { var me = this, - arr = [{caption: me.textDefault, value: 'default'}]; + arr = [{caption: me.textDefault, value: 'default', checkable: true, allowDepress: false}]; btn.setMenu(new Common.UI.Menu({ items: [ {template: _.template('
')}, @@ -242,6 +241,8 @@ define([ _.delay(function() { menu._innerMenu && menu._innerMenu.cmpEl.focus(); }, 10); + }).on('show:before', function (menu, e) { + me.fireEvent('viewtab:showview'); }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); var menu = new Common.UI.Menu({ @@ -257,8 +258,9 @@ define([ top : 0 }); menu.cmpEl.attr({tabindex: "-1"}); - menu.on('item:click', function (menu, item, e) { - me.fireEvent('viewtab:openview', [{name: item.caption, value: item.value}]); + menu.on('item:toggle', function (menu, item, state, e) { + if (!!state) + me.fireEvent('viewtab:openview', [{name: item.caption, value: item.value}]); }).on('keydown:before', _.bind(me.onBeforeKeyDown, this)); btn.menu._innerMenu = menu; menu._outerMenu = btn.menu; From 205094da8643553cf468e183ca7a0f2abbca3cb0 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 10:56:20 +0300 Subject: [PATCH 04/54] [SSE] Add/Close views --- apps/spreadsheeteditor/main/app/controller/ViewTab.js | 7 ++++++- apps/spreadsheeteditor/main/app/view/ViewTab.js | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 3b441f76b..00e5d842d 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -86,7 +86,8 @@ define([ 'viewtab:gridlines': this.onViewSettings, 'viewtab:zoom': this.onZoom, 'viewtab:showview': this.onShowView, - 'viewtab:openview': this.onOpenView + 'viewtab:openview': this.onOpenView, + 'viewtab:createview': this.onCreateView // 'viewtab:manager': this.onOpenManager }, 'Statusbar': { @@ -161,6 +162,10 @@ define([ this.api && this.api.asc_setActiveNamedSheetView((item.value == 'default') ? null : item.name); }, + onCreateView: function(item) { + this.api && this.api.asc_addNamedSheetView(); + }, + // onWorksheetLocked: function(index,locked) { // if (index == this.api.asc_getActiveWorksheetIndex()) { // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index 0e4232b17..1617c409b 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -51,6 +51,12 @@ define([ me.btnFreezePanes.on('click', function (btn, e) { me.fireEvent('viewtab:freeze', [btn.pressed]); }); + me.btnCloseView.on('click', function (btn, e) { + me.fireEvent('viewtab:openview', [{name: 'default', value: 'default'}]); + }); + me.btnCreateView.on('click', function (btn, e) { + me.fireEvent('viewtab:createview'); + }); this.chFormula.on('change', function (field, value) { me.fireEvent('viewtab:formula', [0, value]); }); From e0dc3ed7a3be711869c4257e7fd6d431c360bec6 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 11:43:31 +0300 Subject: [PATCH 05/54] [SSE] Create new view --- apps/spreadsheeteditor/main/app/controller/ViewTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 00e5d842d..950c4bda8 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -163,7 +163,7 @@ define([ }, onCreateView: function(item) { - this.api && this.api.asc_addNamedSheetView(); + this.api && this.api.asc_addNamedSheetView(null, true); }, // onWorksheetLocked: function(index,locked) { From 829b4ecd6b59648ed75ebbc9f0b90fd8b9ad63aa Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 13:11:19 +0300 Subject: [PATCH 06/54] [SSE] Add sheet view manager --- .../main/app/controller/ViewTab.js | 19 +- .../main/app/view/ViewManagerDlg.js | 315 ++++++++++++++++++ 2 files changed, 331 insertions(+), 3 deletions(-) create mode 100644 apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 950c4bda8..88febe2b4 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -41,7 +41,8 @@ define([ 'core', - 'spreadsheeteditor/main/app/view/ViewTab' + 'spreadsheeteditor/main/app/view/ViewTab', + 'spreadsheeteditor/main/app/view/ViewManagerDlg' ], function () { 'use strict'; @@ -87,8 +88,8 @@ define([ 'viewtab:zoom': this.onZoom, 'viewtab:showview': this.onShowView, 'viewtab:openview': this.onOpenView, - 'viewtab:createview': this.onCreateView - // 'viewtab:manager': this.onOpenManager + 'viewtab:createview': this.onCreateView, + 'viewtab:manager': this.onOpenManager }, 'Statusbar': { 'sheet:changed': this.onApiSheetChanged.bind(this) @@ -166,6 +167,18 @@ define([ this.api && this.api.asc_addNamedSheetView(null, true); }, + onOpenManager: function(item) { + var me = this; + (new SSE.Views.ViewManagerDlg({ + api: this.api, + handler: function(result) { + Common.NotificationCenter.trigger('edit:complete', me.view); + }, + views: this.api.asc_getNamedSheetViews() + })).on('close', function(win){ + }).show(); + }, + // onWorksheetLocked: function(index,locked) { // if (index == this.api.asc_getActiveWorksheetIndex()) { // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js new file mode 100644 index 000000000..a00f7e95d --- /dev/null +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -0,0 +1,315 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * +*/ +/** + * + * ViewManagerDlg.js + * + * Created by Julia.Radzhabova on 09.07.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ + +define([ 'common/main/lib/view/AdvancedSettingsWindow', + 'common/main/lib/component/ComboBox', + 'common/main/lib/component/ListView', + 'common/main/lib/component/InputField' +], function () { + 'use strict'; + + SSE.Views = SSE.Views || {}; + + SSE.Views.ViewManagerDlg = Common.Views.AdvancedSettingsWindow.extend(_.extend({ + options: { + alias: 'ViewManagerDlg', + contentWidth: 460, + height: 330, + buttons: null + }, + + initialize: function (options) { + var me = this; + _.extend(this.options, { + title: this.txtTitle, + template: [ + '
', + '
', + '
', + '
', + '', + '', + '', + '', + '', + '', + '', + '
', + '', + '
', + '
', + '', + '', + '', + '', + '
', + '
', + '
', + '
', + '
', + '
', + '' + ].join('') + }, options); + + this.api = options.api; + this.handler = options.handler; + this.views = options.views || []; + this.userTooltip = true; + this.currentView = undefined; + + this.wrapEvents = { + onRefreshNamedSheetViewList: _.bind(this.onRefreshNamedSheetViewList, this) + }; + + Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); + }, + render: function () { + Common.Views.AdvancedSettingsWindow.prototype.render.call(this); + var me = this; + + this.viewList = new Common.UI.ListView({ + el: $('#view-manager-list', this.$window), + store: new Common.UI.DataViewStore(), + simpleAddMode: true, + emptyText: this.textEmpty, + template: _.template(['
'].join('')), + itemTemplate: _.template([ + '
', + '
<%= name %>
', + '<% if (lock) { %>', + '
<%=lockuser%>
', + '<% } %>', + '
' + ].join('')) + }); + this.viewList.on('item:select', _.bind(this.onSelectItem, this)) + .on('item:keydown', _.bind(this.onKeyDown, this)) + .on('item:dblclick', _.bind(this.onDblClickItem, this)) + .on('entervalue', _.bind(this.onDblClickItem, this)); + + this.btnNew = new Common.UI.Button({ + el: $('#view-manager-btn-new') + }); + // this.btnNew.on('click', _.bind(this.onNew, this)); + + this.btnRename = new Common.UI.Button({ + el: $('#view-manager-btn-rename') + }); + // this.btnRename.on('click', _.bind(this.onRename, this)); + + this.btnDuplicate = new Common.UI.Button({ + el: $('#view-manager-btn-duplicate') + }); + // this.btnDuplicate.on('click', _.bind(this.onDuplicate, this)); + + this.btnDelete = new Common.UI.Button({ + el: $('#view-manager-btn-delete') + }); + this.btnDelete.on('click', _.bind(this.onDelete, this)); + + this.afterRender(); + }, + + afterRender: function() { + this._setDefaults(); + }, + + _setDefaults: function (props) { + this.refreshList(this.views, 0); + // this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); + }, + + onRefreshNamedSheetViewList: function() { + this.refreshList(this.api.asc_getNamedSheetViews(), this.currentView); + }, + + refreshList: function(views, selectedItem) { + if (views) { + this.views = views; + var arr = []; + for (var i=0; i0) { + if (selectedItem===undefined || selectedItem===null) selectedItem = 0; + if (_.isNumber(selectedItem)) { + if (selectedItem>val-1) selectedItem = val-1; + this.viewList.selectByIndex(selectedItem); + setTimeout(function() { + me.viewList.scrollToRecord(me.viewList.store.at(selectedItem)); + }, 50); + + } + // if (this.userTooltip===true && this.viewList.cmpEl.find('.lock-user').length>0) + // this.viewList.cmpEl.on('mouseover', _.bind(me.onMouseOverLock, me)).on('mouseout', _.bind(me.onMouseOutLock, me)); + } + + var me = this; + _.delay(function () { + me.viewList.cmpEl.find('.listview').focus(); + me.viewList.scroller.update({alwaysVisibleY: true}); + }, 100, this); + }, + + onMouseOverLock: function (evt, el, opt) { + if (this.userTooltip===true && $(evt.target).hasClass('lock-user')) { + var me = this, + tipdata = $(evt.target).tooltip({title: this.tipIsLocked,trigger:'manual'}).data('bs.tooltip'); + + this.userTooltip = tipdata.tip(); + this.userTooltip.css('z-index', parseInt(this.$window.css('z-index')) + 10); + tipdata.show(); + + setTimeout(function() { me.userTipHide(); }, 5000); + } + }, + + userTipHide: function () { + if (typeof this.userTooltip == 'object') { + this.userTooltip.remove(); + this.userTooltip = undefined; + this.viewList.cmpEl.off('mouseover').off('mouseout'); + } + }, + + onMouseOutLock: function (evt, el, opt) { + if (typeof this.userTooltip == 'object') this.userTipHide(); + }, + + onDelete: function () { + var rec = this.viewList.getSelectedRec(); + if (rec) { + this.api.asc_deleteNamedSheetViews([rec.get('view')]); + } + }, + + getSettings: function() { + return this.sort; + }, + + onPrimary: function() { + return true; + }, + + onDlgBtnClick: function(event) { + this.handler && this.handler.call(this, event.currentTarget.attributes['result'].value); + this.close(); + }, + + getUserName: function(id){ + var usersStore = SSE.getCollection('Common.Collections.Users'); + if (usersStore){ + var rec = usersStore.findUser(id); + if (rec) + return rec.get('username'); + } + return this.guestText; + }, + + onSelectItem: function(lisvView, itemView, record) { + this.userTipHide(); + var rawData = {}, + isViewSelect = _.isFunction(record.toJSON); + + if (isViewSelect){ + if (record.get('selected')) { + rawData = record.toJSON(); + } else {// record deselected + return; + } + this.currentView = _.indexOf(this.viewList.store.models, record); + // this.btnRename.setDisabled(rawData.lock); + // this.btnDelete.setDisabled(rawData.lock); + } + }, + + hide: function () { + this.userTipHide(); + Common.UI.Window.prototype.hide.call(this); + }, + + close: function () { + this.userTipHide(); + this.api.asc_unregisterCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); + + Common.UI.Window.prototype.close.call(this); + }, + + onKeyDown: function (lisvView, record, e) { + if (e.keyCode==Common.UI.Keys.DELETE && !this.btnDelete.isDisabled()) + this.onDelete(); + }, + + onDblClickItem: function (lisvView, record, e) { + }, + + txtTitle: 'Sheet View Manager', + textViews: 'Sheet views', + closeButtonText : 'Close', + textNew: 'New', + textRename: 'Rename', + textDuplicate: 'Duplicate', + textDelete: 'Delete', + textGoTo: 'Go to view...', + textEmpty: 'No views have been created yet.', + guestText: 'Guest', + tipIsLocked: 'This element is being edited by another user.' + + }, SSE.Views.ViewManagerDlg || {})); +}); \ No newline at end of file From 8b94b577d11b5573f5524c096e78667cc0909a9d Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 13:23:18 +0300 Subject: [PATCH 07/54] [SSE] Fix deleting view --- apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index a00f7e95d..e4ad1c8e1 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -158,7 +158,7 @@ define([ 'common/main/lib/view/AdvancedSettingsWindow', _setDefaults: function (props) { this.refreshList(this.views, 0); - // this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); + this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); }, onRefreshNamedSheetViewList: function() { From ed0860d4d1a6117bc48aedacc1b7228222c2949f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 14:26:05 +0300 Subject: [PATCH 08/54] [SSE] Edit view list --- apps/common/main/lib/view/EditNameDialog.js | 127 ++++++++++++++++++ .../main/app/view/ViewManagerDlg.js | 38 +++++- 2 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 apps/common/main/lib/view/EditNameDialog.js diff --git a/apps/common/main/lib/view/EditNameDialog.js b/apps/common/main/lib/view/EditNameDialog.js new file mode 100644 index 000000000..d4f6d4f51 --- /dev/null +++ b/apps/common/main/lib/view/EditNameDialog.js @@ -0,0 +1,127 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * +*/ +/** + * EditNameDialog.js + * + * Created by Julia Radzhabova on 10.07.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/InputField' +], function () { 'use strict'; + + Common.Views.EditNameDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 330, + header: false, + cls: 'modal-dlg', + buttons: ['ok', 'cancel'] + }, + + initialize : function(options) { + _.extend(this.options, options || {}); + + this.template = [ + '
', + '
', + '', + '
', + '
', + '
' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + var me = this; + me.inputLabel = new Common.UI.InputField({ + el : $('#id-dlg-label-caption'), + allowBlank : false, + blankError : me.options.error ? me.options.error : me.textLabelError, + style : 'width: 100%;', + validateOnBlur: false, + validation : function(value) { + return value ? true : ''; + } + }); + me.inputLabel.setValue(this.options.value || '' ); + + var $window = this.getChild(); + $window.find('.btn').on('click', _.bind(this.onBtnClick, this)); + }, + + show: function() { + Common.UI.Window.prototype.show.apply(this, arguments); + + var me = this; + _.delay(function(){ + me.getChild('input').focus(); + },50); + }, + + onPrimary: function(event) { + this._handleInput('ok'); + return false; + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + _handleInput: function(state) { + if (this.options.handler) { + if (state == 'ok') { + if (this.inputLabel.checkValidate() !== true) { + this.inputLabel.cmpEl.find('input').focus(); + return; + } + } + + this.options.handler.call(this, state, this.inputLabel.getValue()); + } + + this.close(); + }, + + textLabel: 'Label:', + textLabelError: 'Label must not be empty.' + }, Common.Views.EditNameDialog || {})); +}); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index e4ad1c8e1..92886c9ad 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -39,7 +39,9 @@ * */ -define([ 'common/main/lib/view/AdvancedSettingsWindow', +define([ + 'common/main/lib/view/EditNameDialog', + 'common/main/lib/view/AdvancedSettingsWindow', 'common/main/lib/component/ComboBox', 'common/main/lib/component/ListView', 'common/main/lib/component/InputField' @@ -132,17 +134,17 @@ define([ 'common/main/lib/view/AdvancedSettingsWindow', this.btnNew = new Common.UI.Button({ el: $('#view-manager-btn-new') }); - // this.btnNew.on('click', _.bind(this.onNew, this)); + this.btnNew.on('click', _.bind(this.onNew, this, false)); this.btnRename = new Common.UI.Button({ el: $('#view-manager-btn-rename') }); - // this.btnRename.on('click', _.bind(this.onRename, this)); + this.btnRename.on('click', _.bind(this.onRename, this)); this.btnDuplicate = new Common.UI.Button({ el: $('#view-manager-btn-duplicate') }); - // this.btnDuplicate.on('click', _.bind(this.onDuplicate, this)); + this.btnDuplicate.on('click', _.bind(this.onNew, this, true)); this.btnDelete = new Common.UI.Button({ el: $('#view-manager-btn-delete') @@ -232,6 +234,12 @@ define([ 'common/main/lib/view/AdvancedSettingsWindow', if (typeof this.userTooltip == 'object') this.userTipHide(); }, + onNew: function (duplicate) { + var rec = duplicate ? this.viewList.getSelectedRec().get('view') : undefined; + this.currentView = this.viewList.store.length; + this.api.asc_addNamedSheetView(rec); + }, + onDelete: function () { var rec = this.viewList.getSelectedRec(); if (rec) { @@ -239,6 +247,24 @@ define([ 'common/main/lib/view/AdvancedSettingsWindow', } }, + onRename: function () { + var rec = this.viewList.getSelectedRec(); + if (rec) { + var me = this; + (new Common.Views.EditNameDialog({ + label: this.textRenameLabel, + error: this.textRenameError, + value: rec.get('name'), + handler: function(result, value) { + if (result == 'ok') { + rec.get('view').asc_setName(value); + } + } + })).show(); + this.api.asc_deleteNamedSheetViews([rec.get('view')]); + } + }, + getSettings: function() { return this.sort; }, @@ -309,7 +335,9 @@ define([ 'common/main/lib/view/AdvancedSettingsWindow', textGoTo: 'Go to view...', textEmpty: 'No views have been created yet.', guestText: 'Guest', - tipIsLocked: 'This element is being edited by another user.' + tipIsLocked: 'This element is being edited by another user.', + textRenameLabel: 'Rename view', + textRenameError: 'View name must not be empty.' }, SSE.Views.ViewManagerDlg || {})); }); \ No newline at end of file From 54a589a29beb95c41ce366757788495970a1c45c Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 14:47:26 +0300 Subject: [PATCH 09/54] [SSE] Fix view settings --- .../main/app/controller/ViewTab.js | 7 +++++- .../main/app/view/ViewManagerDlg.js | 24 ++++--------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 88febe2b4..52b79e327 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -171,7 +171,12 @@ define([ var me = this; (new SSE.Views.ViewManagerDlg({ api: this.api, - handler: function(result) { + handler: function(result, value) { + if (result == 'ok' && value) { + if (me.api) { + me.api.asc_setActiveNamedSheetView(value); + } + } Common.NotificationCenter.trigger('edit:complete', me.view); }, views: this.api.asc_getNamedSheetViews() diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index 92886c9ad..af713d68a 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -89,14 +89,13 @@ define([ '', '
', '' ].join('') }, options); this.api = options.api; - this.handler = options.handler; this.views = options.views || []; this.userTooltip = true; this.currentView = undefined; @@ -261,21 +260,12 @@ define([ } } })).show(); - this.api.asc_deleteNamedSheetViews([rec.get('view')]); } }, getSettings: function() { - return this.sort; - }, - - onPrimary: function() { - return true; - }, - - onDlgBtnClick: function(event) { - this.handler && this.handler.call(this, event.currentTarget.attributes['result'].value); - this.close(); + var rec = this.viewList.getSelectedRec(); + return rec ? rec.get('name') : null; }, getUserName: function(id){ @@ -305,16 +295,11 @@ define([ } }, - hide: function () { - this.userTipHide(); - Common.UI.Window.prototype.hide.call(this); - }, - close: function () { this.userTipHide(); this.api.asc_unregisterCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); - Common.UI.Window.prototype.close.call(this); + Common.Views.AdvancedSettingsWindow.prototype.close.call(this); }, onKeyDown: function (lisvView, record, e) { @@ -323,6 +308,7 @@ define([ }, onDblClickItem: function (lisvView, record, e) { + this.onPrimary(); }, txtTitle: 'Sheet View Manager', From ce19f6f1fc8603415d53f941313720cf77e283e1 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 15:42:39 +0300 Subject: [PATCH 10/54] [SSE] Move views to paid features --- .../main/app/controller/Main.js | 1 + .../main/app/controller/Toolbar.js | 2 +- .../main/app/controller/ViewTab.js | 3 +- .../main/app/template/Toolbar.template | 6 +- .../main/app/view/ViewTab.js | 85 +++++++++++-------- 5 files changed, 55 insertions(+), 42 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index dc64e7e64..36c65b014 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -356,6 +356,7 @@ define([ this.appOptions.mentionShare = !((typeof (this.appOptions.customization) == 'object') && (this.appOptions.customization.mentionShare==false)); this.appOptions.canMakeActionLink = this.editorConfig.canMakeActionLink; this.appOptions.canFeaturePivot = !!this.api.asc_isSupportFeature("pivot-tables"); + this.appOptions.canFeatureViews = !!this.api.asc_isSupportFeature("sheet-views"); this.headerView = this.getApplication().getController('Viewport').getView('Common.Views.Header'); this.headerView.setCanBack(this.appOptions.canBackToFolder === true, (this.appOptions.canBackToFolder) ? this.editorConfig.customization.goback.text : '') diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 6b916879a..848d9085b 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -3306,7 +3306,7 @@ define([ } var viewtab = me.getApplication().getController('ViewTab'); - viewtab.setApi(me.api).setConfig({toolbar: me}); + viewtab.setApi(me.api).setConfig({toolbar: me, mode: config}); } } diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 52b79e327..9b901fdf3 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -77,7 +77,8 @@ define([ setConfig: function(config) { this.toolbar = config.toolbar; this.view = this.createView('ViewTab', { - toolbar: this.toolbar.toolbar + toolbar: this.toolbar.toolbar, + mode: config.mode }); this.addListeners({ 'ViewTab': { diff --git a/apps/spreadsheeteditor/main/app/template/Toolbar.template b/apps/spreadsheeteditor/main/app/template/Toolbar.template index 312b2bc1c..b7b156a9d 100644 --- a/apps/spreadsheeteditor/main/app/template/Toolbar.template +++ b/apps/spreadsheeteditor/main/app/template/Toolbar.template @@ -226,10 +226,10 @@
-
+
-
+
@@ -237,7 +237,7 @@
-
+
diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index 1617c409b..cb94ebea8 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -48,15 +48,18 @@ define([ SSE.Views.ViewTab = Common.UI.BaseView.extend(_.extend((function(){ function setEvents() { var me = this; + if ( me.appConfig.canFeatureViews ) { + me.btnCloseView.on('click', function (btn, e) { + me.fireEvent('viewtab:openview', [{name: 'default', value: 'default'}]); + }); + me.btnCreateView.on('click', function (btn, e) { + me.fireEvent('viewtab:createview'); + }); + } + me.btnFreezePanes.on('click', function (btn, e) { me.fireEvent('viewtab:freeze', [btn.pressed]); }); - me.btnCloseView.on('click', function (btn, e) { - me.fireEvent('viewtab:openview', [{name: 'default', value: 'default'}]); - }); - me.btnCreateView.on('click', function (btn, e) { - me.fireEvent('viewtab:createview'); - }); this.chFormula.on('change', function (field, value) { me.fireEvent('viewtab:formula', [0, value]); }); @@ -77,6 +80,7 @@ define([ initialize: function (options) { Common.UI.BaseView.prototype.initialize.call(this); this.toolbar = options.toolbar; + this.appConfig = options.mode; this.lockedControls = []; @@ -84,35 +88,37 @@ define([ $host = me.toolbar.$el, _set = SSE.enumLock; - this.btnSheetView = new Common.UI.Button({ - parentEl: $host.find('#slot-btn-sheet-view'), - cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-sheetview', - caption: me.capBtnSheetView, - lock : [_set.lostConnect, _set.coAuth], - menu: true - }); - this.lockedControls.push(this.btnSheetView); + if ( me.appConfig.canFeatureViews ) { + this.btnSheetView = new Common.UI.Button({ + parentEl: $host.find('#slot-btn-sheet-view'), + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-sheetview', + caption: me.capBtnSheetView, + lock : [_set.lostConnect, _set.coAuth], + menu: true + }); + this.lockedControls.push(this.btnSheetView); - this.btnCreateView = new Common.UI.Button({ - id : 'id-toolbar-btn-createview', - cls : 'btn-toolbar', - iconCls : 'toolbar__icon btn-createview', - caption : this.textCreate, - lock : [_set.coAuth, _set.lostConnect] - }); - this.lockedControls.push(this.btnCreateView); - Common.Utils.injectComponent($host.find('#slot-createview'), this.btnCreateView); + this.btnCreateView = new Common.UI.Button({ + id : 'id-toolbar-btn-createview', + cls : 'btn-toolbar', + iconCls : 'toolbar__icon btn-createview', + caption : this.textCreate, + lock : [_set.coAuth, _set.lostConnect] + }); + this.lockedControls.push(this.btnCreateView); + Common.Utils.injectComponent($host.find('#slot-createview'), this.btnCreateView); - this.btnCloseView = new Common.UI.Button({ - id : 'id-toolbar-btn-closeview', - cls : 'btn-toolbar', - iconCls : 'toolbar__icon btn-closeview', - caption : this.textClose, - lock : [_set.coAuth, _set.lostConnect] - }); - this.lockedControls.push(this.btnCloseView); - Common.Utils.injectComponent($host.find('#slot-closeview'), this.btnCloseView); + this.btnCloseView = new Common.UI.Button({ + id : 'id-toolbar-btn-closeview', + cls : 'btn-toolbar', + iconCls : 'toolbar__icon btn-closeview', + caption : this.textClose, + lock : [_set.coAuth, _set.lostConnect] + }); + this.lockedControls.push(this.btnCloseView); + Common.Utils.injectComponent($host.find('#slot-closeview'), this.btnCloseView); + } this.btnFreezePanes = new Common.UI.Button({ parentEl: $host.find('#slot-btn-freeze'), @@ -180,11 +186,16 @@ define([ (new Promise(function (accept, reject) { accept(); })).then(function(){ - me.btnSheetView.updateHint( me.tipSheetView ); - me.setButtonMenu(me.btnSheetView); + if (!config.canFeatureViews) { + me.toolbar && me.toolbar.$el.find('.group.sheet-views').hide(); + me.toolbar && me.toolbar.$el.find('.separator.sheet-views').hide(); + } else { + me.btnSheetView.updateHint( me.tipSheetView ); + me.setButtonMenu(me.btnSheetView); - me.btnCreateView.updateHint(me.tipCreate); - me.btnCloseView.updateHint(me.tipClose); + me.btnCreateView.updateHint(me.tipCreate); + me.btnCloseView.updateHint(me.tipClose); + } me.btnFreezePanes.updateHint(me.tipFreeze); setEvents.call(me); From 1f49644924b88281062d9cf8a9ff949ad168f273 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 16:19:07 +0300 Subject: [PATCH 11/54] [SSE] Lock view settings --- apps/common/main/lib/view/Header.js | 6 ++++-- .../main/app/controller/Toolbar.js | 2 +- .../main/app/controller/ViewTab.js | 16 ++++++++-------- .../main/app/controller/Viewport.js | 19 +++++++++++++++++++ .../main/app/view/ViewTab.js | 6 +++--- 5 files changed, 35 insertions(+), 14 deletions(-) diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index 974274901..2c83638d6 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -719,9 +719,11 @@ define([ fakeMenuItem: function() { return { - conf: {checked: false}, + conf: {checked: false, disabled: false}, setChecked: function (val) { this.conf.checked = val; }, - isChecked: function () { return this.conf.checked; } + isChecked: function () { return this.conf.checked; }, + setDisabled: function (val) { this.conf.disabled = val; }, + isDisabled: function () { return this.conf.disabled; } }; }, diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index 848d9085b..256bc6d85 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -3307,7 +3307,7 @@ define([ var viewtab = me.getApplication().getController('ViewTab'); viewtab.setApi(me.api).setConfig({toolbar: me, mode: config}); - + Array.prototype.push.apply(me.toolbar.lockControls, viewtab.getView('ViewTab').getButtons()); } } }, diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 9b901fdf3..168bec832 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -65,7 +65,7 @@ define([ this.api = api; this.api.asc_registerCallback('asc_onZoomChanged', this.onApiZoomChange.bind(this)); this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); - // this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); + this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); @@ -185,11 +185,11 @@ define([ }).show(); }, - // onWorksheetLocked: function(index,locked) { - // if (index == this.api.asc_getActiveWorksheetIndex()) { - // Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: this.view.btnsSortDown.concat(this.view.btnsSortUp, this.view.btnCustomSort, this.view.btnGroup, this.view.btnUngroup)}); - // } - // }, + onWorksheetLocked: function(index,locked) { + if (index == this.api.asc_getActiveWorksheetIndex()) { + Common.Utils.lockControls(SSE.enumLock.sheetLock, locked, {array: [this.view.chHeadings, this.view.chGridlines, this.view.btnFreezePanes]}); + } + }, onApiSheetChanged: function() { if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; @@ -199,8 +199,8 @@ define([ this.view.chGridlines.setValue(!!params.asc_getShowGridLines(), true); this.view.btnFreezePanes.toggle(!!params.asc_getIsFreezePane(), true); - // var currentSheet = this.api.asc_getActiveWorksheetIndex(); - // this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + var currentSheet = this.api.asc_getActiveWorksheetIndex(); + this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); }, onLayoutChanged: function(area) { diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index d9bbf598a..dd757f0e5 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -125,6 +125,7 @@ define([ this.api.asc_registerCallback('asc_onZoomChanged', this.onApiZoomChange.bind(this)); this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); + this.api.asc_registerCallback('asc_onWorksheetLocked', this.onWorksheetLocked.bind(this)); this.api.asc_registerCallback('asc_onEditCell', this.onApiEditCell.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',this.onApiCoAuthoringDisconnect.bind(this)); Common.NotificationCenter.on('api:disconnect', this.onApiCoAuthoringDisconnect.bind(this)); @@ -218,6 +219,7 @@ define([ caption : me.textHideHeadings, checkable : true, checked : me.header.mnuitemHideHeadings.isChecked(), + disabled : me.header.mnuitemHideHeadings.isDisabled(), value : 'headings' }); @@ -225,6 +227,7 @@ define([ caption : me.textHideGridlines, checkable : true, checked : me.header.mnuitemHideGridlines.isChecked(), + disabled : me.header.mnuitemHideGridlines.isDisabled(), value : 'gridlines' }); @@ -232,6 +235,7 @@ define([ caption : me.textFreezePanes, checkable : true, checked : me.header.mnuitemFreezePanes.isChecked(), + disabled : me.header.mnuitemFreezePanes.isDisabled(), value : 'freezepanes' }); @@ -434,6 +438,21 @@ define([ me.header.mnuitemHideHeadings.setChecked(!params.asc_getShowRowColHeaders()); me.header.mnuitemHideGridlines.setChecked(!params.asc_getShowGridLines()); me.header.mnuitemFreezePanes.setChecked(params.asc_getIsFreezePane()); + + var currentSheet = me.api.asc_getActiveWorksheetIndex(); + this.onWorksheetLocked(currentSheet, this.api.asc_isWorksheetLockedOrDeleted(currentSheet)); + } + }, + + onWorksheetLocked: function(index,locked) { + var me = this; + var appConfig = me.viewport.mode; + if ( !!appConfig && !appConfig.isEditDiagram && !appConfig.isEditMailMerge ) { + if (index == this.api.asc_getActiveWorksheetIndex()) { + me.header.mnuitemHideHeadings.setDisabled(locked); + me.header.mnuitemHideGridlines.setDisabled(locked); + me.header.mnuitemFreezePanes.setDisabled(locked); + } } }, diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index cb94ebea8..5ff557af0 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -127,7 +127,7 @@ define([ caption: this.capBtnFreeze, split: false, enableToggle: true, - lock: [_set.lostConnect, _set.coAuth] + lock: [_set.sheetLock, _set.lostConnect, _set.coAuth] }); this.lockedControls.push(this.btnFreezePanes); @@ -161,14 +161,14 @@ define([ this.chHeadings = new Common.UI.CheckBox({ el: $host.findById('#slot-chk-heading'), labelText: this.textHeadings, - lock : [_set.lostConnect, _set.coAuth] + lock : [_set.sheetLock, _set.lostConnect, _set.coAuth] }); this.lockedControls.push(this.chHeadings); this.chGridlines = new Common.UI.CheckBox({ el: $host.findById('#slot-chk-gridlines'), labelText: this.textGridlines, - lock : [_set.lostConnect, _set.coAuth] + lock : [_set.sheetLock, _set.lostConnect, _set.coAuth] }); this.lockedControls.push(this.chGridlines); From 0eaa3b53d5c54a8cb5f1e080c420f9b572c03cbf Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 10 Jul 2020 16:36:22 +0300 Subject: [PATCH 12/54] [SSE] Fix freeze settings in context menu --- apps/spreadsheeteditor/main/app/controller/DocumentHolder.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index e0b4360f4..139cd240e 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -1933,6 +1933,7 @@ define([ documentHolder.menuHyperlink.setDisabled(isCellLocked || inPivot); documentHolder.menuAddHyperlink.setDisabled(isCellLocked || inPivot); documentHolder.pmiInsFunction.setDisabled(isCellLocked || inPivot); + documentHolder.pmiFreezePanes.setDisabled(this.api.asc_isWorksheetLockedOrDeleted(this.api.asc_getActiveWorksheetIndex())); if (showMenu) this.showPopupMenu(documentHolder.ssMenu, {}, event); } else if (this.permissions.isEditDiagram && seltype == Asc.c_oAscSelectionType.RangeChartText) { From 10d1ea2e1ca42206f7cc19a4fec3d077047b2f2c Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 15 Jul 2020 19:12:17 +0300 Subject: [PATCH 13/54] [SSE] Add sheet view locking --- .../main/app/controller/ViewTab.js | 29 +++++++- .../main/app/view/ViewManagerDlg.js | 68 +++++++++++++++---- 2 files changed, 82 insertions(+), 15 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 168bec832..89976d893 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -58,6 +58,7 @@ define([ initialize: function () { }, onLaunch: function () { + this._state = {}; }, setApi: function (api) { @@ -68,6 +69,7 @@ define([ this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); + this.api.asc_registerCallback('asc_onLockNamedSheetViewManager', this.onLockNamedSheetViewManager.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); } @@ -97,6 +99,7 @@ define([ } }); Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this)); + Common.NotificationCenter.on('sheetview:locked', _.bind(this.onSheetViewLocked, this)); }, SetDisabled: function(state) { @@ -165,6 +168,10 @@ define([ }, onCreateView: function(item) { + if (this._state.viewlocked) { + Common.NotificationCenter.trigger('sheetview:locked'); + return; + } this.api && this.api.asc_addNamedSheetView(null, true); }, @@ -172,6 +179,7 @@ define([ var me = this; (new SSE.Views.ViewManagerDlg({ api: this.api, + locked: this._state.viewlocked, handler: function(result, value) { if (result == 'ok' && value) { if (me.api) { @@ -212,7 +220,26 @@ define([ onApiZoomChange: function(zf, type){ var value = Math.floor((zf + .005) * 100); this.view.cmbZoom.setValue(value, value + '%'); - } + }, + + onSheetViewLocked: function() { + var me = this; + if ($('.asc-window.modal.alert:visible').length < 1) { + Common.UI.warning({ + msg: this.errorEditView, + maxwidth: 500, + callback: _.bind(function(btn){ + Common.NotificationCenter.trigger('edit:complete', me.view); + }, this) + }); + } + }, + + onLockNamedSheetViewManager: function(state) { + this._state.viewlocked = state; + }, + + errorEditView: 'The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.' }, SSE.Controllers.ViewTab || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index af713d68a..f1120cbbd 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -95,13 +95,15 @@ define([ ].join('') }, options); - this.api = options.api; + this.api = options.api; this.views = options.views || []; + this.locked = options.locked || false; this.userTooltip = true; this.currentView = undefined; this.wrapEvents = { - onRefreshNamedSheetViewList: _.bind(this.onRefreshNamedSheetViewList, this) + onRefreshNamedSheetViewList: _.bind(this.onRefreshNamedSheetViewList, this), + onLockNamedSheetViewManager: _.bind(this.onLockNamedSheetViewManager, this) }; Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); @@ -117,7 +119,7 @@ define([ emptyText: this.textEmpty, template: _.template(['
'].join('')), itemTemplate: _.template([ - '
', + '
', '
<%= name %>
', '<% if (lock) { %>', '
<%=lockuser%>
', @@ -160,24 +162,30 @@ define([ _setDefaults: function (props) { this.refreshList(this.views, 0); this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); + this.api.asc_registerCallback('asc_onLockNamedSheetViewManager', this.wrapEvents.onLockNamedSheetViewManager); }, onRefreshNamedSheetViewList: function() { this.refreshList(this.api.asc_getNamedSheetViews(), this.currentView); }, + onLockNamedSheetViewManager: function(state) { + this.locked = state; + }, + refreshList: function(views, selectedItem) { if (views) { this.views = views; var arr = []; for (var i=0; i0) - // this.viewList.cmpEl.on('mouseover', _.bind(me.onMouseOverLock, me)).on('mouseout', _.bind(me.onMouseOutLock, me)); + if (this.userTooltip===true && this.viewList.cmpEl.find('.lock-user').length>0) + this.viewList.cmpEl.on('mouseover', _.bind(this.onMouseOverLock, this)).on('mouseout', _.bind(this.onMouseOutLock, this)); } var me = this; @@ -234,19 +242,48 @@ define([ }, onNew: function (duplicate) { + if (this.locked) { + Common.NotificationCenter.trigger('sheetview:locked'); + return; + } var rec = duplicate ? this.viewList.getSelectedRec().get('view') : undefined; this.currentView = this.viewList.store.length; this.api.asc_addNamedSheetView(rec); }, onDelete: function () { - var rec = this.viewList.getSelectedRec(); + var me = this, + rec = this.viewList.getSelectedRec(), + res; if (rec) { - this.api.asc_deleteNamedSheetViews([rec.get('view')]); + if (rec.get('active')) { + Common.UI.warning({ + msg: this.warnDeleteView.replace('%1', rec.get('name')), + buttons: ['yes', 'no'], + primary: 'yes', + callback: function(btn) { + if (btn == 'yes') { + res = me.api.asc_deleteNamedSheetViews([rec.get('view')]); + if (res) {// error when deleting + Common.UI.warning({msg: me.errorDeleteView.replace('%1', rec.get('name')), maxwidth: 500}); + } + } + } + }); + } else { + res = this.api.asc_deleteNamedSheetViews([rec.get('view')]); + if (res) {// error when deleting + Common.UI.warning({msg: this.errorDeleteView.replace('%1', rec.get('name')), maxwidth: 500}); + } + } } }, onRename: function () { + if (this.locked) { + Common.NotificationCenter.trigger('sheetview:locked'); + return; + } var rec = this.viewList.getSelectedRec(); if (rec) { var me = this; @@ -290,14 +327,15 @@ define([ return; } this.currentView = _.indexOf(this.viewList.store.models, record); - // this.btnRename.setDisabled(rawData.lock); - // this.btnDelete.setDisabled(rawData.lock); + this.btnRename.setDisabled(rawData.lock); + this.btnDelete.setDisabled(rawData.lock); } }, close: function () { this.userTipHide(); this.api.asc_unregisterCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); + this.api.asc_unregisterCallback('asc_onLockNamedSheetViewManager', this.wrapEvents.onLockNamedSheetViewManager); Common.Views.AdvancedSettingsWindow.prototype.close.call(this); }, @@ -323,7 +361,9 @@ define([ guestText: 'Guest', tipIsLocked: 'This element is being edited by another user.', textRenameLabel: 'Rename view', - textRenameError: 'View name must not be empty.' + textRenameError: 'View name must not be empty.', + warnDeleteView: "You are trying to delete the currently enabled view '%1'.
Close this view and delete it?", + errorDeleteView: "You cannot delete view '%1' because it is currently being used by other users." }, SSE.Views.ViewManagerDlg || {})); }); \ No newline at end of file From 9f309508f831891314d6fa9a9c1c199b46381ed6 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 16 Jul 2020 18:04:34 +0300 Subject: [PATCH 14/54] [SSE] Show icon and tooltip for the active sheet view --- apps/common/main/lib/component/Tab.js | 20 +++++++++++++-- .../main/app/controller/Statusbar.js | 20 +++++++++++++++ .../main/app/view/Statusbar.js | 10 +++++--- .../main/resources/less/statusbar.less | 25 ++++++++++++++++++- 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/apps/common/main/lib/component/Tab.js b/apps/common/main/lib/component/Tab.js index 5d61c243a..e7c644aaa 100644 --- a/apps/common/main/lib/component/Tab.js +++ b/apps/common/main/lib/component/Tab.js @@ -51,9 +51,15 @@ define([ this.active = false; this.label = 'Tab'; this.cls = ''; + this.iconCls = ''; + this.iconVisible = false; + this.iconTitle = ''; this.index = -1; - this.template = _.template(['
  • ', - '<%- label %>', + this.template = _.template(['
  • ', + '', + '
    ', + '<%- label %>', + '
    ', '
  • '].join('')); this.initialize.call(this, opts); @@ -126,6 +132,16 @@ define([ setCaption: function(text) { this.$el.find('> span').text(text); + }, + + changeIconState: function(visible, title) { + if (this.iconCls.length) { + this.iconVisible = visible; + this.iconTitle = title || ''; + this[visible ? 'addClass' : 'removeClass']('icon-visible'); + if (title) + this.$el.find('.' + this.iconCls).attr('title', title); + } } }); diff --git a/apps/spreadsheeteditor/main/app/controller/Statusbar.js b/apps/spreadsheeteditor/main/app/controller/Statusbar.js index 467c902b8..d93061354 100644 --- a/apps/spreadsheeteditor/main/app/controller/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Statusbar.js @@ -104,6 +104,8 @@ define([ this.api.asc_registerCallback('asc_onError', _.bind(this.onError, this)); this.api.asc_registerCallback('asc_onFilterInfo', _.bind(this.onApiFilterInfo , this)); this.api.asc_registerCallback('asc_onActiveSheetChanged', _.bind(this.onApiActiveSheetChanged, this)); + this.api.asc_registerCallback('asc_onActiveSheetChanged', _.bind(this.onApiActiveSheetChanged, this)); + this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', _.bind(this.onRefreshNamedSheetViewList, this)); this.statusbar.setApi(api); }, @@ -710,6 +712,24 @@ define([ this.statusbar.tabMenu.hide(); }, + onRefreshNamedSheetViewList: function() { + var views = this.api.asc_getNamedSheetViews(), + active = false, + name=""; + for (var i=0; i 0 - || $(e.target).parent().hasClass('list-item') + || $(e.target).closest('.statusbar .list-item').length>0 || $('#status-tabs-scroll').find(el).length > 0 || $('#status-addtabs-box').find(el).length > 0) return; this.customizeStatusBarMenu.hide(); diff --git a/apps/spreadsheeteditor/main/resources/less/statusbar.less b/apps/spreadsheeteditor/main/resources/less/statusbar.less index f1afb8293..a3b21dc9b 100644 --- a/apps/spreadsheeteditor/main/resources/less/statusbar.less +++ b/apps/spreadsheeteditor/main/resources/less/statusbar.less @@ -229,6 +229,20 @@ } } + &.icon-visible { + > span { + padding-left: 25px; + > .toolbar__icon { + width: 20px; + height: 20px; + position: absolute; + top: 0; + left: 0; + margin: 3px; + } + } + } + &.disabled { opacity: 0.5; @@ -244,7 +258,6 @@ } &.mousemove { - > span { border-left: 2px solid @gray-deep; padding-left: 9px; @@ -257,6 +270,16 @@ padding-left: 10px; } } + &.icon-visible { + > span { + padding-left: 24px; + } + &.right { + > span { + padding-left: 25px; + } + } + } } } } From 45913675924737f70e83dd533df87d36b7ee2054 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 17 Jul 2020 11:10:27 +0300 Subject: [PATCH 15/54] [SSE] Fix rev. 30edbea008ddf4928ac9446e99e3223323ae9402 --- apps/spreadsheeteditor/main/app/controller/Viewport.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index dd757f0e5..cea8131f2 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -395,7 +395,7 @@ define([ case 'celleditor': if (arguments[1]) { this.boxSdk.css('border-top', arguments[1]=='hidden'?'none':''); - this.header.mnuitemHideFormulaBar.setChecked(arguments[1]=='hidden', true); + this.header.mnuitemHideFormulaBar && this.header.mnuitemHideFormulaBar.setChecked(arguments[1]=='hidden', true); } this.viewport.celayout.doLayout(); break; From 262015dd14afcb8f0f67c47456ca609e9d59099f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 17 Jul 2020 11:13:50 +0300 Subject: [PATCH 16/54] Change component SynchronizeTip --- apps/common/main/lib/component/SynchronizeTip.js | 4 +++- apps/common/main/resources/less/synchronize-tip.less | 10 ++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/common/main/lib/component/SynchronizeTip.js b/apps/common/main/lib/component/SynchronizeTip.js index 9ddedf973..d012a2d97 100644 --- a/apps/common/main/lib/component/SynchronizeTip.js +++ b/apps/common/main/lib/component/SynchronizeTip.js @@ -111,7 +111,9 @@ define([ } else if (this.placement == 'top') this.cmpEl.css({bottom : innerHeight - showxy.top + 'px', right: Common.Utils.innerWidth() - showxy.left - this.target.width()/2 + 'px'}); - else {// left or right + else if (this.placement == 'target') { + this.cmpEl.css({top : (showxy.top+5) + 'px', left: (showxy.left+5) + 'px'}); + } else {// left or right var top = showxy.top + this.target.height()/2, height = this.cmpEl.height(); if (top+height>innerHeight) diff --git a/apps/common/main/resources/less/synchronize-tip.less b/apps/common/main/resources/less/synchronize-tip.less index 921310553..205c3595e 100644 --- a/apps/common/main/resources/less/synchronize-tip.less +++ b/apps/common/main/resources/less/synchronize-tip.less @@ -23,6 +23,16 @@ } } + &.no-arrow { + .tip-arrow { + display: none; + } + + .asc-synchronizetip { + padding-right: 30px; + } + } + &.inc-index { z-index: @zindex-navbar + 4; } From 8197a5a0b267be789bef4dbbf0828a01ca854f70 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 17 Jul 2020 11:16:43 +0300 Subject: [PATCH 17/54] [SSE] Show tip when first opening sheet view mode --- .../main/app/controller/Statusbar.js | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Statusbar.js b/apps/spreadsheeteditor/main/app/controller/Statusbar.js index d93061354..62462da3d 100644 --- a/apps/spreadsheeteditor/main/app/controller/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Statusbar.js @@ -727,13 +727,33 @@ define([ if (tab) { tab.changeIconState(active, name); } - + + if (active && !Common.localStorage.getBool("sse-hide-sheet-view-tip") && !Common.Utils.InternalSettings.get("sse-hide-sheet-view-tip")) { + Common.Utils.InternalSettings.set("sse-hide-sheet-view-tip", true); + var tip = new Common.UI.SynchronizeTip({ + target : $('#editor_sdk'), + extCls : 'no-arrow', + text : this.textSheetViewTip, + placement : 'target' + }); + tip.on({ + 'dontshowclick': function() { + Common.localStorage.setBool("sse-hide-sheet-view-tip", true); + this.close(); + }, + 'closeclick': function() { + this.close(); + } + }); + tip.show(); + } }, zoomText : 'Zoom {0}%', errorLastSheet : 'Workbook must have at least one visible worksheet.', errorRemoveSheet: 'Can\'t delete the worksheet.', warnDeleteSheet : 'The worksheet maybe has data. Proceed operation?', - strSheet : 'Sheet' + strSheet : 'Sheet', + textSheetViewTip: 'You are in Sheet View mode. Filters and sorting are visible only to you and those who are still in this view.' }, SSE.Controllers.Statusbar || {})); }); \ No newline at end of file From 323d50ef4c0b4f0c3c0b9c53deece42e638d73e3 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 17 Jul 2020 16:54:23 +0300 Subject: [PATCH 18/54] [SSE] Add translation --- apps/spreadsheeteditor/main/locale/en.json | 33 +++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 166c3607b..529dd1254 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -1193,6 +1193,7 @@ "SSE.Controllers.Toolbar.warnMergeLostData": "Only the data from the upper-left cell will remain in the merged cell.
    Are you sure you want to continue?", "SSE.Controllers.Toolbar.txtInsertCells": "Insert Cells", "SSE.Controllers.Toolbar.txtDeleteCells": "Delete Cells", + "SSE.Controllers.ViewTab.errorEditView": "The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.", "SSE.Controllers.Viewport.textFreezePanes": "Freeze Panes", "SSE.Controllers.Viewport.textHideFBar": "Hide Formula Bar", "SSE.Controllers.Viewport.textHideGridlines": "Hide Gridlines", @@ -2810,6 +2811,7 @@ "SSE.Views.Toolbar.textVertical": "Vertical Text", "SSE.Views.Toolbar.capBtnInsSlicer": "Slicer", "SSE.Views.Toolbar.tipInsertSlicer": "Insert slicer", + "SSE.Views.Toolbar.textTabView": "View", "SSE.Views.Top10FilterDialog.textType": "Show", "SSE.Views.Top10FilterDialog.txtBottom": "Bottom", "SSE.Views.Top10FilterDialog.txtItems": "Item", @@ -2846,5 +2848,34 @@ "SSE.Views.ValueFieldSettingsDialog.txtSum": "Sum", "SSE.Views.ValueFieldSettingsDialog.txtSummarize": "Summarize value field by", "SSE.Views.ValueFieldSettingsDialog.txtVar": "Var", - "SSE.Views.ValueFieldSettingsDialog.txtVarp": "Varp" + "SSE.Views.ValueFieldSettingsDialog.txtVarp": "Varp", + "SSE.Views.ViewManagerDlg.txtTitle": "Sheet View Manager", + "SSE.Views.ViewManagerDlg.textViews": "Sheet views", + "SSE.Views.ViewManagerDlg.closeButtonText": "Close", + "SSE.Views.ViewManagerDlg.textNew": "New", + "SSE.Views.ViewManagerDlg.textRename": "Rename", + "SSE.Views.ViewManagerDlg.textDuplicate": "Duplicate", + "SSE.Views.ViewManagerDlg.textDelete": "Delete", + "SSE.Views.ViewManagerDlg.textGoTo": "Go to view...", + "SSE.Views.ViewManagerDlg.textEmpty": "No views have been created yet.", + "SSE.Views.ViewManagerDlg.guestText": "Guest", + "SSE.Views.ViewManagerDlg.tipIsLocked": "This element is being edited by another user.", + "SSE.Views.ViewManagerDlg.textRenameLabel": "Rename view", + "SSE.Views.ViewManagerDlg.textRenameError": "View name must not be empty.", + "SSE.Views.ViewManagerDlg.warnDeleteView": "You are trying to delete the currently enabled view '%1'.
    Close this view and delete it?", + "SSE.Views.ViewManagerDlg.errorDeleteView": "You cannot delete view '%1' because it is currently being used by other users.", + "SSE.Views.ViewTab.capBtnSheetView": "Sheet View", + "SSE.Views.ViewTab.capBtnFreeze": "Freeze Panes", + "SSE.Views.ViewTab.textZoom": "Zoom", + "SSE.Views.ViewTab.tipSheetView": "Sheet view", + "SSE.Views.ViewTab.textDefault": "Default", + "SSE.Views.ViewTab.textManager": "View manager", + "SSE.Views.ViewTab.tipFreeze": "Freeze panes", + "SSE.Views.ViewTab.tipCreate": "Create sheet view", + "SSE.Views.ViewTab.tipClose": "Close sheet view", + "SSE.Views.ViewTab.textCreate": "New", + "SSE.Views.ViewTab.textClose": "Close", + "SSE.Views.ViewTab.textFormula": "Formula bar", + "SSE.Views.ViewTab.textHeadings": "Headings", + "SSE.Views.ViewTab.textGridlines": "Gridlines" } \ No newline at end of file From 1854345961fbc0e41a697084689648eb5b1b1f12 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 17 Jul 2020 18:38:38 +0300 Subject: [PATCH 19/54] [SSE] Fix sheet view mode tip --- .../main/app/controller/Statusbar.js | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Statusbar.js b/apps/spreadsheeteditor/main/app/controller/Statusbar.js index 62462da3d..02aca59c4 100644 --- a/apps/spreadsheeteditor/main/app/controller/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Statusbar.js @@ -104,7 +104,6 @@ define([ this.api.asc_registerCallback('asc_onError', _.bind(this.onError, this)); this.api.asc_registerCallback('asc_onFilterInfo', _.bind(this.onApiFilterInfo , this)); this.api.asc_registerCallback('asc_onActiveSheetChanged', _.bind(this.onApiActiveSheetChanged, this)); - this.api.asc_registerCallback('asc_onActiveSheetChanged', _.bind(this.onApiActiveSheetChanged, this)); this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', _.bind(this.onRefreshNamedSheetViewList, this)); this.statusbar.setApi(api); @@ -710,12 +709,16 @@ define([ onApiActiveSheetChanged: function (index) { this.statusbar.tabMenu.hide(); + if (this._sheetViewTip && this._sheetViewTip.isVisible() && !this.api.asc_getActiveNamedSheetView(index)) { // hide tip when sheet in the default mode + this._sheetViewTip.hide(); + } }, onRefreshNamedSheetViewList: function() { var views = this.api.asc_getNamedSheetViews(), active = false, - name=""; + name="", + me = this; for (var i=0; i Date: Fri, 17 Jul 2020 19:46:51 +0300 Subject: [PATCH 20/54] [SSE] Fix VewTab icons --- apps/spreadsheeteditor/main/app/view/ViewTab.js | 8 ++++---- apps/spreadsheeteditor/main/resources/less/toolbar.less | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/view/ViewTab.js b/apps/spreadsheeteditor/main/app/view/ViewTab.js index 5ff557af0..0420a1495 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/view/ViewTab.js @@ -92,7 +92,7 @@ define([ this.btnSheetView = new Common.UI.Button({ parentEl: $host.find('#slot-btn-sheet-view'), cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-sheetview', + iconCls: 'toolbar__icon btn-sheet-view', caption: me.capBtnSheetView, lock : [_set.lostConnect, _set.coAuth], menu: true @@ -102,7 +102,7 @@ define([ this.btnCreateView = new Common.UI.Button({ id : 'id-toolbar-btn-createview', cls : 'btn-toolbar', - iconCls : 'toolbar__icon btn-createview', + iconCls : 'toolbar__icon btn-sheet-view-new', caption : this.textCreate, lock : [_set.coAuth, _set.lostConnect] }); @@ -112,7 +112,7 @@ define([ this.btnCloseView = new Common.UI.Button({ id : 'id-toolbar-btn-closeview', cls : 'btn-toolbar', - iconCls : 'toolbar__icon btn-closeview', + iconCls : 'toolbar__icon btn-sheet-view-close', caption : this.textClose, lock : [_set.coAuth, _set.lostConnect] }); @@ -123,7 +123,7 @@ define([ this.btnFreezePanes = new Common.UI.Button({ parentEl: $host.find('#slot-btn-freeze'), cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-to-freeze', + iconCls: 'toolbar__icon btn-freeze-panes', caption: this.capBtnFreeze, split: false, enableToggle: true, diff --git a/apps/spreadsheeteditor/main/resources/less/toolbar.less b/apps/spreadsheeteditor/main/resources/less/toolbar.less index 4592a867d..c532ae550 100644 --- a/apps/spreadsheeteditor/main/resources/less/toolbar.less +++ b/apps/spreadsheeteditor/main/resources/less/toolbar.less @@ -164,5 +164,5 @@ #slot-field-zoom { float: left; - min-width: 45px; + min-width: 46px; } \ No newline at end of file From fe480d05121e450a66d69bd4651dfe43fb835212 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 20 Jul 2020 18:44:35 +0300 Subject: [PATCH 21/54] [SSE] Add icons --- .../img/toolbar/1.25x/btn-sheet-view.png | Bin 0 -> 342 bytes .../resources/img/toolbar/1.5x/btn-sheet-view.png | Bin 0 -> 389 bytes .../img/toolbar/1.75x/btn-sheet-view.png | Bin 0 -> 473 bytes .../resources/img/toolbar/1x/btn-sheet-view.png | Bin 0 -> 296 bytes .../resources/img/toolbar/2x/btn-sheet-view.png | Bin 0 -> 588 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/spreadsheeteditor/main/resources/img/toolbar/1.25x/btn-sheet-view.png create mode 100644 apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/btn-sheet-view.png create mode 100644 apps/spreadsheeteditor/main/resources/img/toolbar/1.75x/btn-sheet-view.png create mode 100644 apps/spreadsheeteditor/main/resources/img/toolbar/1x/btn-sheet-view.png create mode 100644 apps/spreadsheeteditor/main/resources/img/toolbar/2x/btn-sheet-view.png diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/1.25x/btn-sheet-view.png b/apps/spreadsheeteditor/main/resources/img/toolbar/1.25x/btn-sheet-view.png new file mode 100644 index 0000000000000000000000000000000000000000..76dd2895acd1968467d6bf1a29b42b1466b5b57d GIT binary patch literal 342 zcmV-c0jd6pP)X1ONa4*k^BEWz_&4OF zjrRJ~;PT2X;;jP{3_MPN%fmsu39O{HTFNO^Qtc|}HCA1LmDCmzQ>r9(1fKOe7BL6q zBH<$F1^S3Cq)_`D+I}EN=n}o42jGY0%Dr=Dj{B5kFsQJBOzm{&zs>Abm#Z zptsO)Gyg71lH&U6iC5o;$Pcvx74^j9+i=3$Hy33QIZAC*&xxs&8Kr|!2+g_h_Ji8; z9MXk(DRLMn(Vxjy<`6H;r+o}V=w^&=9EZQ%>0+GE9ENVXToSs|WtcYCO;`2f?suZC ooL=9FAnE;1EM7YX1_qw^0}Vgw^HKdwKL7v#07*qoM6N<$f(oOWsQ>@~ literal 0 HcmV?d00001 diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/btn-sheet-view.png b/apps/spreadsheeteditor/main/resources/img/toolbar/1.5x/btn-sheet-view.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d9e25b3834f4b043624a526f2157f3f4e486e6 GIT binary patch literal 389 zcmV;00eb$4P) z-I|)3n!ZB3>nCA)D^MUk_u=(qwO;ISLW35aEbjP1RtXidx1eF<-oWoL!bV4sRZvMV zjbnh}ouZ8naP56Ef*RhrSV(cuT0EY?*4uL4$OvlCd+7iNttIYn^oCtv#T;U>xI+7- z;*KhzJvMrA!KCO#RYVh3rI>O};3Mrl=H7;Cd;nX_UdlBodvT^Ox|8lg&i6A|NU*2f z&H0{ysr%=H#Rx4^VG|g1*ntTwFPB>8!X`y8O?tV@4h?JQBxpZeDptdkuo=C^dDeco zRIG-%!2ae6>yUmYHjJQM_s_cf2kvrR^Y6qc(yseh;q|b`TkPoqppvmego z3W)(rXN)oQL=wt=m9q^h$=Mest-l97+g(;HO2WR}xufh+3B42<|F8TIRFJ%s=rl?R z{YNW3g;|9G1@clNMhgAMRHV51p%8`nH%q%-%62-~`Y0j`V3A+4$ z8tc^yGfJgGuFO>LF|wuNedoJmmqGX}&BtO(GzH^!) z8S1ylnwPVcK(( P00000NkvXXu0mjfM-b4R literal 0 HcmV?d00001 diff --git a/apps/spreadsheeteditor/main/resources/img/toolbar/1x/btn-sheet-view.png b/apps/spreadsheeteditor/main/resources/img/toolbar/1x/btn-sheet-view.png new file mode 100644 index 0000000000000000000000000000000000000000..142fdc3adde8b83a8bd67a885d984ad8931e277a GIT binary patch literal 296 zcmV+@0oVSCP)n=rRbDKrn=b@a|(*k=jd-Ks%q-cqG5E$VYD` zSIa3J$9KE`jIVqsnE+tt&bdzq+bnF>QA9*1UoCt&2^-i5<`%=mO0b;7rLe4nh|OM8 zxQgg#Te|;=3o?TUGnGI^7}I^GwVahwQhZ<1BqEX~U%XmAEu|1#n0hG- umHhf`itmk~W!Hb+rm#1LWK=$SGyMW8-L3fJVR8Hb0000;2^WFu#5GOpTV1pRA+@F!SS(-M-x{$B>^aXs=xqptz#GsP?NW4b@j(e#^;6=@M2s$mOn6M(9#;W< znFzW73=4^``YEGr6y$FP9p-?xo2TpIrV?ja-X+k8o+dcNg#CZ7gcfaawg6!+C^D zyx~_ume1-E+z44}bqQ{O{5siQ!tlH0q6B*tV?Hw*AW!s!@pmf{xMKL&ud1r5s;a8$ a|LY%N{fC`NeX=?L0000 Date: Fri, 18 Sep 2020 13:15:00 +0300 Subject: [PATCH 22/54] [SSE] Add error for locked views --- apps/spreadsheeteditor/main/app/controller/Main.js | 7 ++++++- apps/spreadsheeteditor/main/app/controller/ViewTab.js | 4 ++-- apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index f1c3e13c1..c706c69bf 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -1534,6 +1534,10 @@ define([ config.msg = this.errorMoveSlicerError; break; + case Asc.c_oAscError.ID.LockedEditView: + config.msg = this.errorEditView; + break; + default: config.msg = (typeof id == 'string') ? id : this.errorDefaultMessage.replace('%1', id); break; @@ -2663,7 +2667,8 @@ define([ errorPasteSlicerError: 'Table slicers cannot be copied from one workbook to another.', errorFrmlMaxLength: 'You cannot add this formula as its length exceeded the allowed number of characters.
    Please edit it and try again.', errorFrmlMaxReference: 'You cannot enter this formula because it has too many values,
    cell references, and/or names.', - errorMoveSlicerError: 'Table slicers cannot be copied from one workbook to another.
    Try again by selecting the entire table and the slicers.' + errorMoveSlicerError: 'Table slicers cannot be copied from one workbook to another.
    Try again by selecting the entire table and the slicers.', + errorEditView: 'The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.' } })(), SSE.Controllers.Main || {})) }); diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 89976d893..2084f3e79 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -235,8 +235,8 @@ define([ } }, - onLockNamedSheetViewManager: function(state) { - this._state.viewlocked = state; + onLockNamedSheetViewManager: function(index, state) { + // this._state.viewlocked = state; }, errorEditView: 'The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.' diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index f1120cbbd..882f56e1b 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -169,8 +169,8 @@ define([ this.refreshList(this.api.asc_getNamedSheetViews(), this.currentView); }, - onLockNamedSheetViewManager: function(state) { - this.locked = state; + onLockNamedSheetViewManager: function(index, state) { + // this.locked = state; }, refreshList: function(views, selectedItem) { From 83bfedde4723bf8edc30ef45c6a465f7c6f6d1be Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 21 Sep 2020 17:49:49 +0300 Subject: [PATCH 23/54] [SSE] Refactoring --- .../main/app/controller/ViewTab.js | 29 +--------------- .../main/app/view/ViewManagerDlg.js | 33 +++---------------- apps/spreadsheeteditor/main/locale/en.json | 3 +- 3 files changed, 7 insertions(+), 58 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/ViewTab.js b/apps/spreadsheeteditor/main/app/controller/ViewTab.js index 2084f3e79..8a38b83bb 100644 --- a/apps/spreadsheeteditor/main/app/controller/ViewTab.js +++ b/apps/spreadsheeteditor/main/app/controller/ViewTab.js @@ -69,7 +69,6 @@ define([ this.api.asc_registerCallback('asc_onWorksheetLocked', _.bind(this.onWorksheetLocked, this)); this.api.asc_registerCallback('asc_onSheetsChanged', this.onApiSheetChanged.bind(this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', this.onApiSheetChanged.bind(this)); - this.api.asc_registerCallback('asc_onLockNamedSheetViewManager', this.onLockNamedSheetViewManager.bind(this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onCoAuthoringDisconnect, this)); } @@ -99,7 +98,6 @@ define([ } }); Common.NotificationCenter.on('layout:changed', _.bind(this.onLayoutChanged, this)); - Common.NotificationCenter.on('sheetview:locked', _.bind(this.onSheetViewLocked, this)); }, SetDisabled: function(state) { @@ -168,10 +166,6 @@ define([ }, onCreateView: function(item) { - if (this._state.viewlocked) { - Common.NotificationCenter.trigger('sheetview:locked'); - return; - } this.api && this.api.asc_addNamedSheetView(null, true); }, @@ -179,7 +173,6 @@ define([ var me = this; (new SSE.Views.ViewManagerDlg({ api: this.api, - locked: this._state.viewlocked, handler: function(result, value) { if (result == 'ok' && value) { if (me.api) { @@ -220,26 +213,6 @@ define([ onApiZoomChange: function(zf, type){ var value = Math.floor((zf + .005) * 100); this.view.cmbZoom.setValue(value, value + '%'); - }, - - onSheetViewLocked: function() { - var me = this; - if ($('.asc-window.modal.alert:visible').length < 1) { - Common.UI.warning({ - msg: this.errorEditView, - maxwidth: 500, - callback: _.bind(function(btn){ - Common.NotificationCenter.trigger('edit:complete', me.view); - }, this) - }); - } - }, - - onLockNamedSheetViewManager: function(index, state) { - // this._state.viewlocked = state; - }, - - errorEditView: 'The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.' - + } }, SSE.Controllers.ViewTab || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index 882f56e1b..3c71202c2 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -97,13 +97,11 @@ define([ this.api = options.api; this.views = options.views || []; - this.locked = options.locked || false; this.userTooltip = true; this.currentView = undefined; this.wrapEvents = { - onRefreshNamedSheetViewList: _.bind(this.onRefreshNamedSheetViewList, this), - onLockNamedSheetViewManager: _.bind(this.onLockNamedSheetViewManager, this) + onRefreshNamedSheetViewList: _.bind(this.onRefreshNamedSheetViewList, this) }; Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); @@ -162,17 +160,12 @@ define([ _setDefaults: function (props) { this.refreshList(this.views, 0); this.api.asc_registerCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); - this.api.asc_registerCallback('asc_onLockNamedSheetViewManager', this.wrapEvents.onLockNamedSheetViewManager); }, onRefreshNamedSheetViewList: function() { this.refreshList(this.api.asc_getNamedSheetViews(), this.currentView); }, - onLockNamedSheetViewManager: function(index, state) { - // this.locked = state; - }, - refreshList: function(views, selectedItem) { if (views) { this.views = views; @@ -242,10 +235,6 @@ define([ }, onNew: function (duplicate) { - if (this.locked) { - Common.NotificationCenter.trigger('sheetview:locked'); - return; - } var rec = duplicate ? this.viewList.getSelectedRec().get('view') : undefined; this.currentView = this.viewList.store.length; this.api.asc_addNamedSheetView(rec); @@ -263,27 +252,17 @@ define([ primary: 'yes', callback: function(btn) { if (btn == 'yes') { - res = me.api.asc_deleteNamedSheetViews([rec.get('view')]); - if (res) {// error when deleting - Common.UI.warning({msg: me.errorDeleteView.replace('%1', rec.get('name')), maxwidth: 500}); - } + me.api.asc_deleteNamedSheetViews([rec.get('view')]); } } }); } else { - res = this.api.asc_deleteNamedSheetViews([rec.get('view')]); - if (res) {// error when deleting - Common.UI.warning({msg: this.errorDeleteView.replace('%1', rec.get('name')), maxwidth: 500}); - } + this.api.asc_deleteNamedSheetViews([rec.get('view')]); } } }, onRename: function () { - if (this.locked) { - Common.NotificationCenter.trigger('sheetview:locked'); - return; - } var rec = this.viewList.getSelectedRec(); if (rec) { var me = this; @@ -310,7 +289,7 @@ define([ if (usersStore){ var rec = usersStore.findUser(id); if (rec) - return rec.get('username'); + return Common.Utils.UserInfoParser.getParsedName(rec.get('username')); } return this.guestText; }, @@ -335,7 +314,6 @@ define([ close: function () { this.userTipHide(); this.api.asc_unregisterCallback('asc_onRefreshNamedSheetViewList', this.wrapEvents.onRefreshNamedSheetViewList); - this.api.asc_unregisterCallback('asc_onLockNamedSheetViewManager', this.wrapEvents.onLockNamedSheetViewManager); Common.Views.AdvancedSettingsWindow.prototype.close.call(this); }, @@ -362,8 +340,7 @@ define([ tipIsLocked: 'This element is being edited by another user.', textRenameLabel: 'Rename view', textRenameError: 'View name must not be empty.', - warnDeleteView: "You are trying to delete the currently enabled view '%1'.
    Close this view and delete it?", - errorDeleteView: "You cannot delete view '%1' because it is currently being used by other users." + warnDeleteView: "You are trying to delete the currently enabled view '%1'.
    Close this view and delete it?" }, SSE.Views.ViewManagerDlg || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index fc4eaed47..0702dbc0d 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -850,6 +850,7 @@ "SSE.Controllers.Main.warnLicenseExceeded": "You've reached the limit for simultaneous connections to %1 editors. This document will be opened for viewing only.
    Contact your administrator to learn more.", "SSE.Controllers.Main.warnLicenseUsersExceeded": "You've reached the user limit for %1 editors. Contact your administrator to learn more.", "SSE.Controllers.Main.warnProcessRightsChange": "You have been denied the right to edit the file.", + "SSE.Controllers.Main.errorEditView": "The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.", "SSE.Controllers.Print.strAllSheets": "All Sheets", "SSE.Controllers.Print.textFirstCol": "First column", "SSE.Controllers.Print.textFirstRow": "First row", @@ -1215,7 +1216,6 @@ "SSE.Controllers.Toolbar.txtTable_TableStyleMedium": "Table Style Medium", "SSE.Controllers.Toolbar.warnLongOperation": "The operation you are about to perform might take rather much time to complete.
    Are you sure you want to continue?", "SSE.Controllers.Toolbar.warnMergeLostData": "Only the data from the upper-left cell will remain in the merged cell.
    Are you sure you want to continue?", - "SSE.Controllers.ViewTab.errorEditView": "The existing sheet view cannot be edited and the new ones cannot be created at the moment as some of them are being edited.", "SSE.Controllers.Viewport.textFreezePanes": "Freeze Panes", "SSE.Controllers.Viewport.textFreezePanesShadow:": "Show Freezed Panes Shadow", "SSE.Controllers.Viewport.textHideFBar": "Hide Formula Bar", @@ -2941,7 +2941,6 @@ "SSE.Views.ViewManagerDlg.textRenameLabel": "Rename view", "SSE.Views.ViewManagerDlg.textRenameError": "View name must not be empty.", "SSE.Views.ViewManagerDlg.warnDeleteView": "You are trying to delete the currently enabled view '%1'.
    Close this view and delete it?", - "SSE.Views.ViewManagerDlg.errorDeleteView": "You cannot delete view '%1' because it is currently being used by other users.", "SSE.Views.ViewTab.capBtnSheetView": "Sheet View", "SSE.Views.ViewTab.capBtnFreeze": "Freeze Panes", "SSE.Views.ViewTab.textZoom": "Zoom", From f61c7bbbb7c7ae547e61b1ea65ddb6ea851b8c6c Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 22 Sep 2020 16:48:45 +0300 Subject: [PATCH 24/54] [DE] Add cross-reference --- .../main/app/controller/Links.js | 21 +- .../main/app/template/Toolbar.template | 1 + .../main/app/view/CrossReferenceDialog.js | 317 ++++++++++++++++++ apps/documenteditor/main/app/view/Links.js | 18 +- 4 files changed, 354 insertions(+), 3 deletions(-) create mode 100644 apps/documenteditor/main/app/view/CrossReferenceDialog.js diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 5e52e1e46..343b79723 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -47,7 +47,8 @@ define([ 'documenteditor/main/app/view/TableOfContentsSettings', 'documenteditor/main/app/view/BookmarksDialog', 'documenteditor/main/app/view/CaptionDialog', - 'documenteditor/main/app/view/NotesRemoveDialog' + 'documenteditor/main/app/view/NotesRemoveDialog', + 'documenteditor/main/app/view/CrossReferenceDialog' ], function () { 'use strict'; @@ -69,7 +70,8 @@ define([ 'links:notes': this.onNotesClick, 'links:hyperlink': this.onHyperlinkClick, 'links:bookmarks': this.onBookmarksClick, - 'links:caption': this.onCaptionClick + 'links:caption': this.onCaptionClick, + 'links:crossref': this.onCrossRefClick }, 'DocumentHolder': { 'links:contents': this.onTableContents, @@ -171,6 +173,9 @@ define([ need_disable = in_header; this.view.btnCaption.setDisabled(need_disable); + + need_disable = paragraph_locked || header_locked || in_image; + this.view.btnCrossRef.setDisabled(need_disable); }, onApiCanAddHyperlink: function(value) { @@ -443,6 +448,18 @@ define([ onShowContentControlsActions: function(obj, x, y) { (obj.type == Asc.c_oAscContentControlSpecificType.TOC) && this.onShowTOCActions(obj, x, y); + }, + + onCrossRefClick: function(btn) { + var me = this; + (new DE.Views.CrossReferenceDialog({ + api: me.api, + handler: function (result, settings) { + if (result == 'ok') { + } + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + })).show(); } }, DE.Controllers.Links || {})); diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index 37f13e618..ad2a425a7 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -158,6 +158,7 @@ +
    diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js new file mode 100644 index 000000000..406e54544 --- /dev/null +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -0,0 +1,317 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * + */ + +/** + * CrossReferenceDialog.js + * + * Created by Julia Radzhabova on 22.09.2020 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/ComboBox' +], function () { 'use strict'; + + DE.Views.CrossReferenceDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 400, + height: 406, + style: 'min-width: 240px;', + cls: 'modal-dlg' + }, + + initialize : function(options) { + _.extend(this.options, { + title: this.txtTitle, + buttons: [{value: 'ok', caption: this.textInsert}, 'close'] + }, options || {}); + + this.template = [ + '
    ', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '', + '
    ', + '', + '
    ', + '
    ', + '', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '', + '
    ', + '
    ', + '
    ' + ].join(''); + + this.props = options.props; + this.api = options.api; + this.options.tpl = _.template(this.template)(this.options); + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + var me = this, + $window = this.getChild(); + $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + + this.cmbType = new Common.UI.ComboBox({ + el : $window.find('#id-dlg-cross-type'), + menuStyle : 'min-width: 100%;', + editable : false, + cls : 'input-group-nr', + data : [ + { value: 0, displayValue: this.textParagraph }, + { value: 1, displayValue: this.textHeading }, + { value: 2, displayValue: this.textBookmark }, + { value: 3, displayValue: this.textFootnote }, + { value: 4, displayValue: this.textEndnote }, + { value: 5, displayValue: this.textEquation }, + { value: 6, displayValue: this.textFigure }, + { value: 7, displayValue: this.textTable } + ] + }); + this.cmbType.on('selected', _.bind(this.onTypeSelected, this)); + + this.cmbReference = new Common.UI.ComboBox({ + el : $window.find('#id-dlg-cross-ref'), + menuStyle : 'min-width: 100%;max-height: 183px;', + editable : false, + cls : 'input-group-nr', + data : [] + }); + this.cmbReference.on('selected', _.bind(function (combo, record) { + if (this._changedProps) { + if (!this._changedProps.get_TextPr()) this._changedProps.put_TextPr(new AscCommonWord.CTextPr()); + this._changedProps.get_TextPr().put_FontSize((record.value>0) ? record.value : undefined); + } + if (this.api) { + this.api.SetDrawImagePreviewBullet('bulleted-list-preview', this.props, this.level, this.type==2); + } + }, this)); + + this.chInsertAs = new Common.UI.CheckBox({ + el: $window.find('#id-dlg-cross-insert-as'), + labelText: this.textInsertAs + }); + + this.chBelowAbove = new Common.UI.CheckBox({ + el: $window.find('#id-dlg-cross-below-above'), + labelText: this.textIncludeAbove + }); + + this.chSeparator = new Common.UI.CheckBox({ + el: $window.find('#id-dlg-cross-separate'), + labelText: this.textSeparate + }).on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var checked = field.getValue() === 'checked'; + this.inputSeparator.setDisabled(checked); + }, this)); + + this.inputSeparator = new Common.UI.InputField({ + el: $window.findById('#id-dlg-cross-separator'), + style: 'width: 35px;', + validateOnBlur: false, + disabled: true + }); + + this.refList = new Common.UI.ListView({ + el: $window.find('#id-dlg-cross-list'), + store: new Common.UI.DataViewStore() + }); + this.refList.on('item:select', _.bind(this.onSelectReference, this)); + + this.afterRender(); + }, + + afterRender: function() { + this._setDefaults(this.props); + }, + + _handleInput: function(state) { + if (this.options.handler) { + this.options.handler.call(this, state, {}); + } + if (state=='ok') { + return; + } + this.close(); + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function(event) { + this._handleInput('ok'); + return false; + }, + + _setDefaults: function (props) { + this.cmbType.setValue(0); + this.onTypeSelected(this.cmbType, this.cmbType.getSelectedRecord()); + if (props) { + } + }, + + onSelectReference: function(listView, itemView, record) { + // record.get('value'); + }, + + onTypeSelected: function (combo, record) { + var arr = []; + switch (record.value) { + case 0: // paragraph + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textParaNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textParaNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textParaNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textText }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + break; + case 1: // heading + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textHeadingText }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textHeadingNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textHeadingNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textHeadingNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + break; + case 2: // bookmark + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textBookmarkText }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textParaNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textParaNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textParaNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + break; + case 3: // note + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.NoteNumber, displayValue: this.textNoteNum }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow }, + { value: Asc.c_oAscDocumentRefenceToType.NoteNumberFormatted, displayValue: this.textNoteNumForm } + ]; + break; + case 4: // end note + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.NoteNumber, displayValue: this.textEndNoteNum }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow }, + { value: Asc.c_oAscDocumentRefenceToType.NoteNumberFormatted, displayValue: this.textEndNoteNumForm } + ]; + break; + case 5: // Equation + case 6: // Shape + case 7: // Table + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.EntireCaption, displayValue: this.textCaption }, + { value: Asc.c_oAscDocumentRefenceToType.OnlyLabelAndNumber, displayValue: this.textLabelNum }, + { value: Asc.c_oAscDocumentRefenceToType.OnlyCaptionText, displayValue: this.textOnlyCaption }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + break; + } + this.cmbReference.setData(arr); + this.cmbReference.setValue(arr[0].value); + }, + + txtTitle: 'Cross-reference', + txtType: 'Reference type', + txtReference: 'Insert reference to', + textInsertAs: 'Insert as hyperlink', + textSeparate: 'Separate numbers with', + textIncludeAbove: 'Include above/below', + textWhich: 'For which caption', + textPageNum: 'Page number', + textParaNum: 'Paragraph number', + textParaNumNo: 'Paragraph number (no context)', + textParaNumFull: 'Paragraph number (full context)', + textText: 'Paragraph text', + textAboveBelow: 'Above/below', + textHeadingText: 'Heading text', + textHeadingNum: 'Heading number', + textHeadingNumNo: 'Heading number (no context)', + textHeadingNumFull: 'Heading number (full context)', + textBookmarkText: 'Bookmark text', + textNoteNum: 'Footnote number', + textNoteNumForm: 'Footnote number (formatted)', + textEndNoteNum: 'Endnote number', + textEndNoteNumForm: 'Endnote number (formatted)', + textCaption: 'Entire caption', + textLabelNum: 'Only label and number', + textOnlyCaption: 'Only caption text', + textParagraph: 'Paragraph', + textHeading: 'Heading', + textBookmark: 'Bookmark', + textFootnote: 'Footnote', + textEndnote: 'Endnote', + textEquation: 'Equation', + textFigure: 'Figure', + textTable: 'Table', + textInsert: 'Insert' + + }, DE.Views.CrossReferenceDialog || {})) +}); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/Links.js b/apps/documenteditor/main/app/view/Links.js index f3fcf5c7f..e16614ad0 100644 --- a/apps/documenteditor/main/app/view/Links.js +++ b/apps/documenteditor/main/app/view/Links.js @@ -124,6 +124,10 @@ define([ this.btnCaption.on('click', function (b, e) { me.fireEvent('links:caption'); }); + + this.btnCrossRef.on('click', function (b, e) { + me.fireEvent('links:crossref'); + }); } return { @@ -177,6 +181,15 @@ define([ }); this.paragraphControls.push(this.btnCaption); + this.btnCrossRef = new Common.UI.Button({ + parentEl: $host.find('#slot-btn-crossref'), + cls: 'btn-toolbar x-huge icon-top', + iconCls: 'toolbar__icon btn-crossref', + caption: this.capBtnCrossRef, + disabled: true + }); + this.paragraphControls.push(this.btnCrossRef); + this._state = {disabled: false}; Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); }, @@ -308,6 +321,7 @@ define([ me.btnBookmarks.updateHint(me.tipBookmarks); me.btnCaption.updateHint(me.tipCaption); + me.btnCrossRef.updateHint(me.tipCrossRef); setEvents.call(me); }); @@ -357,7 +371,9 @@ define([ mniInsEndnote: 'Insert Endnote', textConvertToEndnotes: 'Convert All Footnotes to Endnotes', textConvertToFootnotes: 'Convert All Endnotes to Footnotes', - textSwapNotes: 'Swap Footnotes and Endnotes' + textSwapNotes: 'Swap Footnotes and Endnotes', + capBtnCrossRef: 'Cross-reference', + tipCrossRef: 'Insert cross-reference' } }()), DE.Views.Links || {})); }); \ No newline at end of file From 20954eedea8eb9a6606c1e9d83dd2d5cddfcc92a Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 22 Sep 2020 20:48:06 +0300 Subject: [PATCH 25/54] Refactoring --- apps/documenteditor/main/app/view/CrossReferenceDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 406e54544..d0e611e84 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -160,7 +160,7 @@ define([ labelText: this.textSeparate }).on('change', _.bind(function(field, newValue, oldValue, eOpts){ var checked = field.getValue() === 'checked'; - this.inputSeparator.setDisabled(checked); + this.inputSeparator.setDisabled(!checked); }, this)); this.inputSeparator = new Common.UI.InputField({ From ddebe260379c08c8fa2c0696912922f3ff36c022 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 22 Sep 2020 21:16:38 +0300 Subject: [PATCH 26/54] [SSE] Fix print in view mode --- apps/spreadsheeteditor/main/app/controller/RightMenu.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/RightMenu.js b/apps/spreadsheeteditor/main/app/controller/RightMenu.js index b0318ecce..76477378c 100644 --- a/apps/spreadsheeteditor/main/app/controller/RightMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/RightMenu.js @@ -413,7 +413,7 @@ define([ SetDisabled: function(disabled, allowSignature) { this.setMode({isEdit: !disabled}); - if (this.rightmenu) { + if (this.rightmenu && this.rightmenu.paragraphSettings) { this.rightmenu.paragraphSettings.disableControls(disabled); this.rightmenu.shapeSettings.disableControls(disabled); this.rightmenu.imageSettings.disableControls(disabled); From 770c62fb13bb360230c8d184d255d334ec38ebff Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 13:08:37 +0300 Subject: [PATCH 27/54] [DE] Cross-reference: add labels from caption dialog --- .../main/app/view/CrossReferenceDialog.js | 167 ++++++++++-------- 1 file changed, 98 insertions(+), 69 deletions(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index d0e611e84..bf4f9871b 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -88,7 +88,7 @@ define([ '', '', '', - '', + '', '
    ', '', '', @@ -110,9 +110,27 @@ define([ $window = this.getChild(); $window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + var arr = Common.Utils.InternalSettings.get("de-settings-captions"); + if (arr==null || arr==undefined) { + arr = Common.localStorage.getItem("de-settings-captions") || ''; + Common.Utils.InternalSettings.set("de-settings-captions", arr); + } + arr = arr ? JSON.parse(arr) : []; + + // 0 - not removable + arr = arr.concat([{ value: 5, displayValue: this.textEquation }, + { value: 6, displayValue: this.textFigure }, + { value: 7, displayValue: this.textTable } + ]); + arr.sort(function(a,b){ + var sa = a.displayValue.toLowerCase(), + sb = b.displayValue.toLowerCase(); + return sa>sb ? 1 : (sa 4) { + // custom labels from caption dialog and Equation, Figure, Table + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textCaption }, + { value: Asc.c_oAscDocumentRefenceToType.OnlyLabelAndNumber, displayValue: this.textLabelNum }, + { value: Asc.c_oAscDocumentRefenceToType.OnlyCaptionText, displayValue: this.textOnlyCaption }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + } else { + switch (record.value) { + case 0: // paragraph + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textParaNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textParaNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textParaNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textText }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + str = this.textWhichPara; + break; + case 1: // heading + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textHeadingText }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textHeadingNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textHeadingNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textHeadingNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + str = this.textWhichHeading; + break; + case 2: // bookmark + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.Text, displayValue: this.textBookmarkText }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNum, displayValue: this.textParaNum }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumNoContext, displayValue: this.textParaNumNo }, + { value: Asc.c_oAscDocumentRefenceToType.ParaNumFullContex, displayValue: this.textParaNumFull }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } + ]; + str = this.textWhichBookmark; + break; + case 3: // note + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.NoteNumber, displayValue: this.textNoteNum }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow }, + { value: Asc.c_oAscDocumentRefenceToType.NoteNumberFormatted, displayValue: this.textNoteNumForm } + ]; + str = this.textWhichNote; + break; + case 4: // end note + arr = [ + { value: Asc.c_oAscDocumentRefenceToType.NoteNumber, displayValue: this.textEndNoteNum }, + { value: Asc.c_oAscDocumentRefenceToType.PageNum, displayValue: this.textPageNum }, + { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow }, + { value: Asc.c_oAscDocumentRefenceToType.NoteNumberFormatted, displayValue: this.textEndNoteNumForm } + ]; + str = this.textWhichEndnote; + break; + } } this.cmbReference.setData(arr); this.cmbReference.setValue(arr[0].value); + this.lblWhich.text(str); }, txtTitle: 'Cross-reference', @@ -284,7 +308,6 @@ define([ textInsertAs: 'Insert as hyperlink', textSeparate: 'Separate numbers with', textIncludeAbove: 'Include above/below', - textWhich: 'For which caption', textPageNum: 'Page number', textParaNum: 'Paragraph number', textParaNumNo: 'Paragraph number (no context)', @@ -311,7 +334,13 @@ define([ textEquation: 'Equation', textFigure: 'Figure', textTable: 'Table', - textInsert: 'Insert' + textInsert: 'Insert', + textWhich: 'For which caption', + textWhichHeading: 'For which heading', + textWhichBookmark: 'For which bookmark', + textWhichNote: 'For which footnote', + textWhichEndnote: 'For which endnote', + textWhichPara: 'For which numbered item' }, DE.Views.CrossReferenceDialog || {})) }); \ No newline at end of file From 27f857acc9d31c82306051dd6a374849f0f0e33e Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 15:57:01 +0300 Subject: [PATCH 28/54] [DE] Insert references --- .../main/app/controller/Links.js | 2 +- .../main/app/view/CrossReferenceDialog.js | 112 +++++++++++++++--- 2 files changed, 97 insertions(+), 17 deletions(-) diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 343b79723..2b51b8a5a 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -174,7 +174,7 @@ define([ need_disable = in_header; this.view.btnCaption.setDisabled(need_disable); - need_disable = paragraph_locked || header_locked || in_image; + need_disable = paragraph_locked || header_locked; this.view.btnCrossRef.setDisabled(need_disable); }, diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index bf4f9871b..1dea0b7a6 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -89,7 +89,7 @@ define([ '', '', '', - '
    ', + '
    ', '', '', '', @@ -150,15 +150,7 @@ define([ cls : 'input-group-nr', data : [] }); - this.cmbReference.on('selected', _.bind(function (combo, record) { - if (this._changedProps) { - if (!this._changedProps.get_TextPr()) this._changedProps.put_TextPr(new AscCommonWord.CTextPr()); - this._changedProps.get_TextPr().put_FontSize((record.value>0) ? record.value : undefined); - } - if (this.api) { - this.api.SetDrawImagePreviewBullet('bulleted-list-preview', this.props, this.level, this.type==2); - } - }, this)); + this.cmbReference.on('selected', _.bind(this.onReferenceSelected, this)); this.chInsertAs = new Common.UI.CheckBox({ el: $window.find('#id-dlg-cross-insert-as'), @@ -187,12 +179,17 @@ define([ this.refList = new Common.UI.ListView({ el: $window.find('#id-dlg-cross-list'), - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + itemTemplate: _.template('
    <%= value %>
    ') }); - this.refList.on('item:select', _.bind(this.onSelectReference, this)); this.lblWhich = $window.find('#id-dlg-cross-which'); + this.btnInsert = new Common.UI.Button({ + el: $window.find('.primary'), + disabled: true + }); + this.afterRender(); }, @@ -205,6 +202,7 @@ define([ this.options.handler.call(this, state, {}); } if (state=='ok') { + this.insertReference(); return; } this.close(); @@ -226,13 +224,41 @@ define([ } }, - onSelectReference: function(listView, itemView, record) { - // record.get('value'); + insertReference: function() { + var record = this.refList.getSelectedRec(), + typeRec = this.cmbType.getSelectedRecord(), + type = (typeRec.type==1 || typeRec.value>4) ? 5 : typeRec.value, + reftype = this.cmbReference.getValue(), + link = this.chInsertAs.getValue()=='checked', + below = this.chBelowAbove.getValue()=='checked', + separator = (this.chSeparator.getValue()=='checked') ? this.inputSeparator.getValue() : undefined; + + switch (type) { + case 0: // paragraph + case 1: // heading + this.api.asc_AddCrossRefToParagraph(record.get('para'), reftype, link, below, separator); + break; + case 2: // bookmark + this.api.asc_AddCrossRefToBookmark(record.get('value'), reftype, link, below, separator); + break; + case 3: // footnote + case 4: // endnote + this.api.asc_AddCrossRefToNote(record.get('para'), reftype, link, below); + break; + case 5: // caption + if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText()===false) { + Common.UI.warning({ + msg : this.textEmpty + }); + } else + this.api.asc_AddCrossRefToCaption(record.get('value'), record.get('para'), reftype, link, below); + break; + } }, onTypeSelected: function (combo, record) { var arr = [], - str = this.textWhich; + str = this.textWhich, type = 5; if (record.type==1 || record.value > 4) { // custom labels from caption dialog and Equation, Figure, Table arr = [ @@ -243,6 +269,7 @@ define([ { value: Asc.c_oAscDocumentRefenceToType.AboveBelow, displayValue: this.textAboveBelow } ]; } else { + type = record.value; switch (record.value) { case 0: // paragraph arr = [ @@ -300,6 +327,58 @@ define([ this.cmbReference.setData(arr); this.cmbReference.setValue(arr[0].value); this.lblWhich.text(str); + this.refreshReferences(type); + }, + + refreshReferences: function(type) { + var store = this.refList.store, + arr = [], + props; + switch (type) { + case 0: // paragraph + props = this.api.asc_GetAllNumberedParagraphs(); + break; + case 1: // heading + props = this.api.asc_GetAllHeadingParagraphs(); + break; + case 2: // bookmark + props = this.api.asc_GetBookmarksManager(); + break; + case 3: // footnote + props = this.api.asc_GetAllFootNoteParagraphs(); + break; + case 4: // endnote + props = this.api.asc_GetAllEndNoteParagraphs(); + break; + case 5: // caption + props = this.api.asc_GetAllCaptionParagraphs(this.cmbType.getSelectedRecord().displayValue); + break; + } + if (type==2) { // bookmark + var count = props.asc_GetCount(); + for (var i=0; i0) { + var rec = store.at(0); + this.refList.selectRecord(rec); + this.refList.scrollToRecord(rec); + } + this.btnInsert.setDisabled(arr.length<1); + }, + + onReferenceSelected: function(combo, record) { + }, txtTitle: 'Cross-reference', @@ -340,7 +419,8 @@ define([ textWhichBookmark: 'For which bookmark', textWhichNote: 'For which footnote', textWhichEndnote: 'For which endnote', - textWhichPara: 'For which numbered item' + textWhichPara: 'For which numbered item', + textEmpty: 'The request reference is empty.' }, DE.Views.CrossReferenceDialog || {})) }); \ No newline at end of file From 60bc2aa98cee59ad76d2a1a645c930ec53cf5427 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 16:35:11 +0300 Subject: [PATCH 29/54] [DE] Cross-references refactoring --- .../main/app/view/CrossReferenceDialog.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 1dea0b7a6..151f98cec 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -154,7 +154,8 @@ define([ this.chInsertAs = new Common.UI.CheckBox({ el: $window.find('#id-dlg-cross-insert-as'), - labelText: this.textInsertAs + labelText: this.textInsertAs, + value: true }); this.chBelowAbove = new Common.UI.CheckBox({ @@ -180,7 +181,7 @@ define([ this.refList = new Common.UI.ListView({ el: $window.find('#id-dlg-cross-list'), store: new Common.UI.DataViewStore(), - itemTemplate: _.template('
    <%= value %>
    ') + itemTemplate: _.template('
    <%= value %>
    ') }); this.lblWhich = $window.find('#id-dlg-cross-which'); @@ -326,6 +327,7 @@ define([ } this.cmbReference.setData(arr); this.cmbReference.setValue(arr[0].value); + this.onReferenceSelected(this.cmbReference, this.cmbReference.getSelectedRecord()); this.lblWhich.text(str); this.refreshReferences(type); }, @@ -358,7 +360,7 @@ define([ var count = props.asc_GetCount(); for (var i=0; i4) ? 5 : typeRec.value; + var disable = (type==5 && refType!==Asc.c_oAscDocumentRefenceToType.PageNum) || (type<5) && (refType==Asc.c_oAscDocumentRefenceToType.Text || refType==Asc.c_oAscDocumentRefenceToType.AboveBelow); + this.chBelowAbove.setDisabled(disable); + disable = !(type==0 || type==2) || (refType!==Asc.c_oAscDocumentRefenceToType.ParaNumFullContex); + this.chSeparator.setDisabled(disable); + this.inputSeparator.setDisabled(disable || this.chSeparator.getValue()!=='checked'); }, txtTitle: 'Cross-reference', @@ -405,7 +414,7 @@ define([ textCaption: 'Entire caption', textLabelNum: 'Only label and number', textOnlyCaption: 'Only caption text', - textParagraph: 'Paragraph', + textParagraph: 'Numbered item', textHeading: 'Heading', textBookmark: 'Bookmark', textFootnote: 'Footnote', From 68dc9a79186041b512bd578ada505ce67916a23a Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 17:36:27 +0300 Subject: [PATCH 30/54] [DE] Add locking for cross-reference button --- .../main/app/controller/Links.js | 20 ++++++++++++------- .../main/app/view/CrossReferenceDialog.js | 11 ++++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 2b51b8a5a..1a4761971 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -156,12 +156,15 @@ define([ this._state.in_object = in_image || in_table || in_equation; var control_props = this.api.asc_IsContentControl() ? this.api.asc_GetContentControlProperties() : null, - control_plain = (control_props) ? (control_props.get_ContentControlType()==Asc.c_oAscSdtLevelType.Inline) : false; + control_plain = (control_props) ? (control_props.get_ContentControlType()==Asc.c_oAscSdtLevelType.Inline) : false, + lock_type = control_props ? control_props.get_Lock() : Asc.c_oAscSdtLockType.Unlocked, + content_locked = lock_type==Asc.c_oAscSdtLockType.SdtContentLocked || lock_type==Asc.c_oAscSdtLockType.ContentLocked; var rich_del_lock = (frame_pr) ? !frame_pr.can_DeleteBlockContentControl() : false, rich_edit_lock = (frame_pr) ? !frame_pr.can_EditBlockContentControl() : false, plain_del_lock = (frame_pr) ? !frame_pr.can_DeleteInlineContentControl() : false, plain_edit_lock = (frame_pr) ? !frame_pr.can_EditInlineContentControl() : false; + var need_disable = paragraph_locked || in_equation || in_image || in_header || control_plain || rich_edit_lock || plain_edit_lock; this.view.btnsNotes.setDisabled(need_disable); @@ -174,8 +177,9 @@ define([ need_disable = in_header; this.view.btnCaption.setDisabled(need_disable); - need_disable = paragraph_locked || header_locked; + need_disable = paragraph_locked || header_locked || control_plain || rich_edit_lock || plain_edit_lock || content_locked; this.view.btnCrossRef.setDisabled(need_disable); + this.dlgCrossRefDialog && this.dlgCrossRefDialog.isVisible() && this.dlgCrossRefDialog.setLocked(need_disable); }, onApiCanAddHyperlink: function(value) { @@ -451,15 +455,17 @@ define([ }, onCrossRefClick: function(btn) { + if (this.dlgCrossRefDialog && this.dlgCrossRefDialog.isVisible()) return; + var me = this; - (new DE.Views.CrossReferenceDialog({ + me.dlgCrossRefDialog = new DE.Views.CrossReferenceDialog({ api: me.api, handler: function (result, settings) { - if (result == 'ok') { - } - Common.NotificationCenter.trigger('edit:complete', me.toolbar); + if (result != 'ok') + Common.NotificationCenter.trigger('edit:complete', me.toolbar); } - })).show(); + }); + me.dlgCrossRefDialog.show(); } }, DE.Controllers.Links || {})); diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 151f98cec..3dd2df1f9 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -48,7 +48,8 @@ define([ width: 400, height: 406, style: 'min-width: 240px;', - cls: 'modal-dlg' + cls: 'modal-dlg', + modal: false }, initialize : function(options) { @@ -99,6 +100,7 @@ define([ this.props = options.props; this.api = options.api; this.options.tpl = _.template(this.template)(this.options); + this._locked = false; Common.UI.Window.prototype.initialize.call(this, this.options); }, @@ -376,7 +378,7 @@ define([ this.refList.selectRecord(rec); this.refList.scrollToRecord(rec); } - this.btnInsert.setDisabled(arr.length<1); + this.btnInsert.setDisabled(arr.length<1 || this._locked); }, onReferenceSelected: function(combo, record) { @@ -390,6 +392,11 @@ define([ this.inputSeparator.setDisabled(disable || this.chSeparator.getValue()!=='checked'); }, + setLocked: function(locked){ + this._locked = locked; + this.btnInsert.setDisabled(this.refList.store.length<1 || this._locked); + }, + txtTitle: 'Cross-reference', txtType: 'Reference type', txtReference: 'Insert reference to', From 39b45d0c6f42cde22051cf7fc123e6c61403a7fa Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 17:45:44 +0300 Subject: [PATCH 31/54] [DE] Add translation --- .../main/app/view/CrossReferenceDialog.js | 2 +- apps/documenteditor/main/locale/en.json | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 3dd2df1f9..fe8f9e271 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -46,7 +46,7 @@ define([ DE.Views.CrossReferenceDialog = Common.UI.Window.extend(_.extend({ options: { width: 400, - height: 406, + height: 407, style: 'min-width: 240px;', cls: 'modal-dlg', modal: false diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index d693c7ce7..c31af1caf 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1222,6 +1222,46 @@ "DE.Views.ControlSettingsDialog.tipChange": "Change symbol", "DE.Views.ControlSettingsDialog.txtLockDelete": "Content control cannot be deleted", "DE.Views.ControlSettingsDialog.txtLockEdit": "Contents cannot be edited", + "DE.Views.CrossReferenceDialog.txtTitle": "Cross-reference", + "DE.Views.CrossReferenceDialog.txtType": "Reference type", + "DE.Views.CrossReferenceDialog.txtReference": "Insert reference to", + "DE.Views.CrossReferenceDialog.textInsertAs": "Insert as hyperlink", + "DE.Views.CrossReferenceDialog.textSeparate": "Separate numbers with", + "DE.Views.CrossReferenceDialog.textIncludeAbove": "Include above/below", + "DE.Views.CrossReferenceDialog.textPageNum": "Page number", + "DE.Views.CrossReferenceDialog.textParaNum": "Paragraph number", + "DE.Views.CrossReferenceDialog.textParaNumNo": "Paragraph number (no context)", + "DE.Views.CrossReferenceDialog.textParaNumFull": "Paragraph number (full context)", + "DE.Views.CrossReferenceDialog.textText": "Paragraph text", + "DE.Views.CrossReferenceDialog.textAboveBelow": "Above/below", + "DE.Views.CrossReferenceDialog.textHeadingText": "Heading text", + "DE.Views.CrossReferenceDialog.textHeadingNum": "Heading number", + "DE.Views.CrossReferenceDialog.textHeadingNumNo": "Heading number (no context)", + "DE.Views.CrossReferenceDialog.textHeadingNumFull": "Heading number (full context)", + "DE.Views.CrossReferenceDialog.textBookmarkText": "Bookmark text", + "DE.Views.CrossReferenceDialog.textNoteNum": "Footnote number", + "DE.Views.CrossReferenceDialog.textNoteNumForm": "Footnote number (formatted)", + "DE.Views.CrossReferenceDialog.textEndNoteNum": "Endnote number", + "DE.Views.CrossReferenceDialog.textEndNoteNumForm": "Endnote number (formatted)", + "DE.Views.CrossReferenceDialog.textCaption": "Entire caption", + "DE.Views.CrossReferenceDialog.textLabelNum": "Only label and number", + "DE.Views.CrossReferenceDialog.textOnlyCaption": "Only caption text", + "DE.Views.CrossReferenceDialog.textParagraph": "Numbered item", + "DE.Views.CrossReferenceDialog.textHeading": "Heading", + "DE.Views.CrossReferenceDialog.textBookmark": "Bookmark", + "DE.Views.CrossReferenceDialog.textFootnote": "Footnote", + "DE.Views.CrossReferenceDialog.textEndnote": "Endnote", + "DE.Views.CrossReferenceDialog.textEquation": "Equation", + "DE.Views.CrossReferenceDialog.textFigure": "Figure", + "DE.Views.CrossReferenceDialog.textTable": "Table", + "DE.Views.CrossReferenceDialog.textInsert": "Insert", + "DE.Views.CrossReferenceDialog.textWhich": "For which caption", + "DE.Views.CrossReferenceDialog.textWhichHeading": "For which heading", + "DE.Views.CrossReferenceDialog.textWhichBookmark": "For which bookmark", + "DE.Views.CrossReferenceDialog.textWhichNote": "For which footnote", + "DE.Views.CrossReferenceDialog.textWhichEndnote": "For which endnote", + "DE.Views.CrossReferenceDialog.textWhichPara": "For which numbered item", + "DE.Views.CrossReferenceDialog.textEmpty": "The request reference is empty.", "DE.Views.CustomColumnsDialog.textColumns": "Number of columns", "DE.Views.CustomColumnsDialog.textSeparator": "Column divider", "DE.Views.CustomColumnsDialog.textSpacing": "Spacing between columns", @@ -1782,6 +1822,8 @@ "DE.Views.Links.textConvertToEndnotes": "Convert All Footnotes to Endnotes", "DE.Views.Links.textConvertToFootnotes": "Convert All Endnotes to Footnotes", "DE.Views.Links.textSwapNotes": "Swap Footnotes and Endnotes", + "DE.Views.Links.capBtnCrossRef": "Cross-reference", + "DE.Views.Links.tipCrossRef": "Insert cross-reference", "DE.Views.ListSettingsDialog.textAuto": "Automatic", "DE.Views.ListSettingsDialog.textCenter": "Center", "DE.Views.ListSettingsDialog.textLeft": "Left", From 43ebaff67d0a2f0054734f49ad3b198bb76f56aa Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 23 Sep 2020 19:01:44 +0300 Subject: [PATCH 32/54] [SSE] fix bug 46708, 46707 --- .../main/app/controller/CellEditor.js | 5 +++++ .../main/app/controller/LeftMenu.js | 10 ++++++++++ apps/spreadsheeteditor/main/app/controller/Main.js | 6 +++++- .../main/app/controller/Viewport.js | 4 ++++ apps/spreadsheeteditor/main/app/view/FileMenu.js | 13 +++++++++++++ .../main/app/view/FileMenuPanels.js | 14 ++++++++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/CellEditor.js b/apps/spreadsheeteditor/main/app/controller/CellEditor.js index 659f72cbc..cb92d6915 100644 --- a/apps/spreadsheeteditor/main/app/controller/CellEditor.js +++ b/apps/spreadsheeteditor/main/app/controller/CellEditor.js @@ -309,6 +309,11 @@ define([ onLockDefNameManager: function(state) { this.namedrange_locked = (state == Asc.c_oAscDefinedNameReason.LockDefNameManager); + }, + + disableEditing: function(disabled) { + this.editor.$btnfunc[!disabled?'removeClass':'addClass']('disabled'); + this.editor.btnNamedRanges.setVisible(!disabled); } }); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index de93a8e20..ba0326674 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -188,6 +188,16 @@ define([ return this; }, + disableEditing: function(disabled) { + this.leftMenu.btnComments.setDisabled(disabled); + this.leftMenu.btnChat.setDisabled(disabled); + this.leftMenu.btnPlugins.setDisabled(disabled); + this.leftMenu.btnSpellcheck.setDisabled(disabled); + + this.leftMenu.getMenu('file').disableEditing(disabled); + this.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); + }, + createDelayedElements: function() { /** coauthoring begin **/ if ( this.mode.canCoAuthoring ) { diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 431e08729..e46feea76 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -860,6 +860,7 @@ define([ Common.NotificationCenter.trigger('document:ready', 'main'); me.applyLicense(); + me.warningDocumentIsLocked(); } }, 50); } else { @@ -2220,13 +2221,16 @@ define([ disablefunc: function (disable) { me.disableEditing(disable); var app = me.getApplication(); + app.getController('Toolbar').DisableToolbar(disable,disable); app.getController('RightMenu').SetDisabled(disable, true); app.getController('Statusbar').SetDisabled(disable); app.getController('Common.Controllers.ReviewChanges').SetDisabled(disable); app.getController('DocumentHolder').SetDisabled(disable, true); var leftMenu = app.getController('LeftMenu'); - leftMenu.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); leftMenu.setPreviewMode(disable); + leftMenu.disableEditing(disable); + app.getController('CellEditor').disableEditing(disable); + app.getController('Viewport').disableEditing(disable); var comments = app.getController('Common.Controllers.Comments'); if (comments) comments.setPreviewMode(disable); }}); diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index 5db842009..dfedc5dfa 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -484,6 +484,10 @@ define([ } }, + disableEditing: function (disabled) { + this.header.btnOptions.menu.items[6].setDisabled(disabled); + }, + textHideFBar: 'Hide Formula Bar', textHideHeadings: 'Hide Headings', textHideGridlines: 'Hide Gridlines', diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index b78b27a71..f491daafa 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -258,6 +258,10 @@ define([ } if (!this.mode) return; + if ( this.mode.disableEditing != undefined ) { + this.panels['opts'].disableEditing(this.mode.disableEditing); + delete this.mode.disableEditing; + } this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); var isBCSupport = window["AscDesktopEditor"] ? window["AscDesktopEditor"]["isBlockchainSupport"]() : false; @@ -410,6 +414,15 @@ define([ } }, + disableEditing: function(disabled) { + this.miProtect.setDisabled(disabled); + if ( !this.panels ) { + this.mode.disableEditing = disabled; + } else { + this.panels['opts'].disableEditing(disabled); + } + }, + btnSaveCaption : 'Save', btnDownloadCaption : 'Download as...', btnInfoCaption : 'Document Info...', diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js index 38514fa5b..2cdd37fb7 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js @@ -261,6 +261,20 @@ define([ this.spellcheckSettings && this.spellcheckSettings.setApi(api); }, + disableEditing: function(disabled) { + if ( disabled ) { + $(this.viewSettingsPicker.dataViewItems[1].el).hide(); + $(this.viewSettingsPicker.dataViewItems[2].el).hide(); + } else { + if ( this.mode.canPrint ) + $(this.viewSettingsPicker.dataViewItems[1].el).show(); + + if ( this.mode.isEdit ) { + $(this.viewSettingsPicker.dataViewItems[2].el).show(); + } + } + }, + txtGeneral: 'General', txtPageSettings: 'Page Settings', txtSpellChecking: 'Spell checking' From 8d7a446f742eaa108069335793d631b4d1503cfd Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 23 Sep 2020 19:26:59 +0300 Subject: [PATCH 33/54] [SSE] debug --- .../main/app/controller/LeftMenu.js | 1 - apps/spreadsheeteditor/main/app/view/FileMenu.js | 12 +++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js index ba0326674..40d66fe24 100644 --- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js +++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js @@ -195,7 +195,6 @@ define([ this.leftMenu.btnSpellcheck.setDisabled(disabled); this.leftMenu.getMenu('file').disableEditing(disabled); - this.leftMenu.getMenu('file').getButton('protect').setDisabled(disable); }, createDelayedElements: function() { diff --git a/apps/spreadsheeteditor/main/app/view/FileMenu.js b/apps/spreadsheeteditor/main/app/view/FileMenu.js index f491daafa..4f41c7ba0 100644 --- a/apps/spreadsheeteditor/main/app/view/FileMenu.js +++ b/apps/spreadsheeteditor/main/app/view/FileMenu.js @@ -258,10 +258,6 @@ define([ } if (!this.mode) return; - if ( this.mode.disableEditing != undefined ) { - this.panels['opts'].disableEditing(this.mode.disableEditing); - delete this.mode.disableEditing; - } this.miDownload[(this.mode.canDownload && (!this.mode.isDesktopApp || !this.mode.isOffline))?'show':'hide'](); var isBCSupport = window["AscDesktopEditor"] ? window["AscDesktopEditor"]["isBlockchainSupport"]() : false; @@ -326,6 +322,12 @@ define([ this.panels['help'] = ((new SSE.Views.FileMenuPanels.Help({menu: this})).render()); this.panels['help'].setLangConfig(this.mode.lang); } + + if ( this.mode.disableEditing != undefined ) { + this.panels['opts'].disableEditing(this.mode.disableEditing); + this.miProtect.setDisabled(this.mode.disableEditing); + delete this.mode.disableEditing; + } }, setMode: function(mode, delay) { @@ -415,11 +417,11 @@ define([ }, disableEditing: function(disabled) { - this.miProtect.setDisabled(disabled); if ( !this.panels ) { this.mode.disableEditing = disabled; } else { this.panels['opts'].disableEditing(disabled); + this.miProtect.setDisabled(disabled); } }, From 1f056b16a5493ab2b8656cc1312a9b60192437af Mon Sep 17 00:00:00 2001 From: Maxim Kadushkin Date: Wed, 23 Sep 2020 19:39:36 +0300 Subject: [PATCH 34/54] [SSE] debug --- apps/spreadsheeteditor/main/app/controller/Main.js | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index e46feea76..4719a941f 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -860,7 +860,6 @@ define([ Common.NotificationCenter.trigger('document:ready', 'main'); me.applyLicense(); - me.warningDocumentIsLocked(); } }, 50); } else { From 2493571d170e17a95c3c100da35db64e708d5331 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 23 Sep 2020 21:15:45 +0300 Subject: [PATCH 35/54] [SSE] Add pivot table button to the Insert tab. --- .../main/app/controller/Main.js | 2 +- .../main/app/controller/PivotTable.js | 13 +++---- .../main/app/controller/Toolbar.js | 1 + .../main/app/template/Toolbar.template | 1 + .../main/app/view/PivotTable.js | 37 ++++++++++--------- apps/spreadsheeteditor/main/locale/en.json | 1 + 6 files changed, 30 insertions(+), 25 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js index 4719a941f..e1756ab83 100644 --- a/apps/spreadsheeteditor/main/app/controller/Main.js +++ b/apps/spreadsheeteditor/main/app/controller/Main.js @@ -1149,7 +1149,7 @@ define([ } if (!me.appOptions.isEditMailMerge && !me.appOptions.isEditDiagram && me.appOptions.canFeaturePivot) - application.getController('PivotTable').setMode(me.appOptions).setConfig({config: me.editorConfig}, me.api); + application.getController('PivotTable').setMode(me.appOptions); var viewport = this.getApplication().getController('Viewport').getView('Viewport'); viewport.applyEditorMode(); diff --git a/apps/spreadsheeteditor/main/app/controller/PivotTable.js b/apps/spreadsheeteditor/main/app/controller/PivotTable.js index f826afaea..3b1cba876 100644 --- a/apps/spreadsheeteditor/main/app/controller/PivotTable.js +++ b/apps/spreadsheeteditor/main/app/controller/PivotTable.js @@ -89,12 +89,10 @@ define([ Common.NotificationCenter.on('api:disconnect', _.bind(this.SetDisabled, this)); }, - setConfig: function (data, api) { - this.view = this.createView('PivotTable'); - this.setApi(api); - if (data) { - this.sdkViewName = data['sdkviewname'] || this.sdkViewName; - } + setConfig: function (config) { + this.view = this.createView('PivotTable', { + toolbar: config.toolbar.toolbar + }); }, setApi: function (api) { @@ -106,6 +104,7 @@ define([ this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onSelectionChanged, this)); Common.NotificationCenter.on('cells:range', _.bind(this.onCellsRange, this)); } + return this; }, setMode: function(mode) { @@ -400,7 +399,7 @@ define([ Common.Utils.lockControls(SSE.enumLock.noPivot, !pivotInfo, {array: this.view.lockedControls}); Common.Utils.lockControls(SSE.enumLock.pivotLock, pivotInfo && (info.asc_getLockedPivotTable()===true), {array: this.view.lockedControls}); - Common.Utils.lockControls(SSE.enumLock.editPivot, !!pivotInfo, {array: [this.view.btnAddPivot]}); + Common.Utils.lockControls(SSE.enumLock.editPivot, !!pivotInfo, {array: this.view.btnsAddPivot}); if (pivotInfo) this.ChangeSettings(pivotInfo); diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index d0b765740..19ef0d637 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -3314,6 +3314,7 @@ define([ if ( config.canFeaturePivot ) { tab = {action: 'pivot', caption: me.textPivot}; var pivottab = me.getApplication().getController('PivotTable'); + pivottab.setApi(me.api).setConfig({toolbar: me}); $panel = pivottab.createToolbarPanel(); if ($panel) { me.toolbar.addTab(tab, $panel, 5); diff --git a/apps/spreadsheeteditor/main/app/template/Toolbar.template b/apps/spreadsheeteditor/main/app/template/Toolbar.template index cb7050e5f..1055f6815 100644 --- a/apps/spreadsheeteditor/main/app/template/Toolbar.template +++ b/apps/spreadsheeteditor/main/app/template/Toolbar.template @@ -120,6 +120,7 @@
    +
    diff --git a/apps/spreadsheeteditor/main/app/view/PivotTable.js b/apps/spreadsheeteditor/main/app/view/PivotTable.js index b274d5da8..0598af43e 100644 --- a/apps/spreadsheeteditor/main/app/view/PivotTable.js +++ b/apps/spreadsheeteditor/main/app/view/PivotTable.js @@ -53,7 +53,7 @@ define([ var template = '
    ' + '
    ' + - '' + + '' + '
    ' + '
    ' + '
    ' + @@ -94,8 +94,10 @@ define([ function setEvents() { var me = this; - this.btnAddPivot.on('click', function (e) { - me.fireEvent('pivottable:create'); + this.btnsAddPivot.forEach(function(button) { + button.on('click', function (b, e) { + me.fireEvent('pivottable:create'); + }); }); this.btnPivotLayout.menu.on('item:click', function (menu, item, e) { @@ -149,11 +151,14 @@ define([ initialize: function (options) { Common.UI.BaseView.prototype.initialize.call(this, options); - this.appConfig = options.mode; + this.toolbar = options.toolbar; this.lockedControls = []; var _set = SSE.enumLock; + this.btnsAddPivot = Common.Utils.injectButtons(this.toolbar.$el.find('.btn-slot.slot-add-pivot'), '', 'toolbar__icon btn-pivot-sum', this.txtPivotTable, + [_set.lostConnect, _set.coAuth, _set.editPivot, _set.selRangeEdit, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selSlicer, _set.editCell]); + this.chRowHeader = new Common.UI.CheckBox({ labelText: this.textRowHeader, lock : [_set.lostConnect, _set.coAuth, _set.noPivot, _set.selRangeEdit, _set.pivotLock] @@ -178,14 +183,6 @@ define([ }); this.lockedControls.push(this.chColBanded); - this.btnAddPivot = new Common.UI.Button({ - cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-pivot-sum', - caption: this.txtCreate, - disabled : false, - lock : [_set.lostConnect, _set.coAuth, _set.editPivot, _set.selRangeEdit, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selSlicer, _set.editCell] - }); - this.btnPivotLayout = new Common.UI.Button({ cls : 'btn-toolbar x-huge icon-top', iconCls : 'toolbar__icon btn-pivot-layout', @@ -276,7 +273,9 @@ define([ (new Promise(function (accept, reject) { accept(); })).then(function(){ - me.btnAddPivot.updateHint(me.tipCreatePivot); + me.btnsAddPivot.forEach( function(btn) { + btn.updateHint(me.tipCreatePivot); + }); me.btnRefreshPivot.updateHint(me.tipRefresh); me.btnSelectPivot.updateHint(me.tipSelect); me.btnPivotLayout.updateHint(me.capLayout); @@ -325,12 +324,15 @@ define([ getPanel: function () { this.$el = $(_.template(template)( {} )); + var _set = SSE.enumLock; + this.btnsAddPivot = this.btnsAddPivot.concat(Common.Utils.injectButtons(this.$el.find('.btn-slot.slot-add-pivot'), '', 'toolbar__icon btn-pivot-sum', this.txtCreate, + [_set.lostConnect, _set.coAuth, _set.editPivot, _set.selRangeEdit, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.selImage, _set.selSlicer, _set.editCell])); + this.chRowHeader.render(this.$el.find('#slot-chk-header-row')); this.chColHeader.render(this.$el.find('#slot-chk-header-column')); this.chRowBanded.render(this.$el.find('#slot-chk-banded-row')); this.chColBanded.render(this.$el.find('#slot-chk-banded-column')); - this.btnAddPivot.render(this.$el.find('#slot-btn-add-pivot')); this.btnRefreshPivot.render(this.$el.find('#slot-btn-refresh-pivot')); this.btnSelectPivot.render(this.$el.find('#slot-btn-select-pivot')); this.btnPivotLayout.render(this.$el.find('#slot-btn-pivot-report-layout')); @@ -352,11 +354,11 @@ define([ }, getButtons: function(type) { - return this.lockedControls.concat(this.btnAddPivot); + return this.btnsAddPivot.concat(this.lockedControls); }, SetDisabled: function (state) { - this.lockedControls.concat(this.btnAddPivot).forEach(function(button) { + this.btnsAddPivot.concat(this.lockedControls).forEach(function(button) { if ( button ) { button.setDisabled(state); } @@ -392,7 +394,8 @@ define([ tipGrandTotals: 'Show or hide grand totals', tipSubtotals: 'Show or hide subtotals', txtSelect: 'Select', - tipSelect: 'Select entire pivot table' + tipSelect: 'Select entire pivot table', + txtPivotTable: 'Pivot Table' } }()), SSE.Views.PivotTable || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index b87701625..cb5091814 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -2183,6 +2183,7 @@ "SSE.Views.PivotTable.txtCreate": "Insert Table", "SSE.Views.PivotTable.txtRefresh": "Refresh", "SSE.Views.PivotTable.txtSelect": "Select", + "SSE.Views.PivotTable.txtPivotTable": "Pivot Table", "SSE.Views.PrintSettings.btnDownload": "Save & Download", "SSE.Views.PrintSettings.btnPrint": "Save & Print", "SSE.Views.PrintSettings.strBottom": "Bottom", From f0e84b5005c35fbda643fdae8a6455d2384b0188 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 24 Sep 2020 12:47:58 +0300 Subject: [PATCH 36/54] [DE] Refactoring --- apps/documenteditor/main/app/view/CrossReferenceDialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index fe8f9e271..75d4136b0 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -249,7 +249,7 @@ define([ this.api.asc_AddCrossRefToNote(record.get('para'), reftype, link, below); break; case 5: // caption - if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText()===false) { + if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText(record.get('value'))===false) { Common.UI.warning({ msg : this.textEmpty }); From 2c1a84f7276e6774636355d52dda5624dc547893 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 24 Sep 2020 15:42:33 +0300 Subject: [PATCH 37/54] [SSE] Fix Bug 46721 --- apps/spreadsheeteditor/main/resources/formula-lang/de.json | 2 +- apps/spreadsheeteditor/main/resources/formula-lang/en.json | 2 +- apps/spreadsheeteditor/main/resources/formula-lang/fr.json | 2 +- apps/spreadsheeteditor/main/resources/formula-lang/it.json | 2 +- apps/spreadsheeteditor/mobile/resources/l10n/functions/de.json | 2 +- apps/spreadsheeteditor/mobile/resources/l10n/functions/en.json | 2 +- apps/spreadsheeteditor/mobile/resources/l10n/functions/fr.json | 2 +- apps/spreadsheeteditor/mobile/resources/l10n/functions/it.json | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/de.json b/apps/spreadsheeteditor/main/resources/formula-lang/de.json index 2d68627c1..a989613a4 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/de.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/de.json @@ -288,7 +288,7 @@ "DISC": "DISAGIO", "DOLLARDE": "NOTIERUNGDEZ", "DOLLARFR": "NOTIERUNGBRU", - "DURATION": "DURATIONТ", + "DURATION": "DURATIONT", "EFFECT": "EFFEKTIV", "FV": "ZW", "FVSCHEDULE": "ZW2", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/en.json b/apps/spreadsheeteditor/main/resources/formula-lang/en.json index 750499087..7b3c2aedf 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/en.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/en.json @@ -117,7 +117,7 @@ "SEARCH": "SEARCH", "SEARCHB": "SEARCHB", "SUBSTITUTE": "SUBSTITUTE", - "T": "Т", + "T": "T", "T.TEST": "T.TEST", "TEXT": "TEXT", "TEXTJOIN": "TEXTJOIN", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/fr.json b/apps/spreadsheeteditor/main/resources/formula-lang/fr.json index 27e4d86f0..e37002ce7 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/fr.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/fr.json @@ -117,7 +117,7 @@ "SEARCH": "CHERCHE", "SEARCHB": "CHERCHERB", "SUBSTITUTE": "SUBSTITUE", - "T": "Т", + "T": "T", "T.TEST": "T.TEST", "TEXT": "TEXTE", "TEXTJOIN": "JOINDRE.TEXTE", diff --git a/apps/spreadsheeteditor/main/resources/formula-lang/it.json b/apps/spreadsheeteditor/main/resources/formula-lang/it.json index 49c97be18..d66106a1d 100644 --- a/apps/spreadsheeteditor/main/resources/formula-lang/it.json +++ b/apps/spreadsheeteditor/main/resources/formula-lang/it.json @@ -116,7 +116,7 @@ "SEARCH": "RICERCA", "SEARCHB": "SEARCHB", "SUBSTITUTE": "SOSTITUISCI", - "T": "Т", + "T": "T", "T.TEST": "TESTT", "TEXT": "TESTO", "TEXTJOIN": "TEXTJOIN", diff --git a/apps/spreadsheeteditor/mobile/resources/l10n/functions/de.json b/apps/spreadsheeteditor/mobile/resources/l10n/functions/de.json index 015593e47..423935650 100644 --- a/apps/spreadsheeteditor/mobile/resources/l10n/functions/de.json +++ b/apps/spreadsheeteditor/mobile/resources/l10n/functions/de.json @@ -1 +1 @@ -{"DATE":"DATUM","DATEDIF":"DATEDIF","DATEVALUE":"DATWERT","DAY":"TAG","DAYS":"TAGE","DAYS360":"TAGE360","EDATE":"EDATUM","EOMONTH":"MONATSENDE","HOUR":"STUNDE","ISOWEEKNUM":"ISOKALENDERWOCHE","MINUTE":"MINUTE","MONTH":"MONAT","NETWORKDAYS":"NETTOARBEITSTAGE","NETWORKDAYS.INTL":"NETTOARBEITSTAGE.INTL","NOW":"JETZT","SECOND":"SEKUNDE","TIME":"ZEIT","TIMEVALUE":"ZEITWERT","TODAY":"HEUTE","WEEKDAY":"WOCHENTAG","WEEKNUM":"KALENDERWOCHE","WORKDAY":"ARBEITSTAG","WORKDAY.INTL":"ARBEITSTAG.INTL","YEAR":"JAHR","YEARFRAC":"BRTEILJAHRE","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BININDEZ","BIN2HEX":"BININHEX","BIN2OCT":"BININOKT","BITAND":"BITUND","BITLSHIFT":"BITLVERSCHIEB","BITOR":"BITODER","BITRSHIFT":"BITRVERSCHIEB","BITXOR":"BITXODER","COMPLEX":"KOMPLEXE","CONVERT":"UMWANDELN","DEC2BIN":"DEZINBIN","DEC2HEX":"DEZINHEX","DEC2OCT":"DEZINOKT","DELTA":"DELTA","ERF":"GAUSSFEHLER","ERF.PRECISE":"GAUSSFKOMPL.GENAU","ERFC":"GAUSSFKOMPL","ERFC.PRECISE":"GAUSSFKOMPL.GENAU","GESTEP":"GGANZZAHL","HEX2BIN":"HEXINBIN","HEX2DEC":"HEXINDEZ","HEX2OCT":"HEXINOKT","IMABS":"IMABS","IMAGINARY":"IMAGINÄRTEIL","IMARGUMENT":"IMARGUMENT","IMCONJUGATE":"IMKONJUGIERTE","IMCOS":"IMCOS","IMCOSH":"IMCOSH","IMCOT":"IMCOT","IMCSC":"IMCOSEC","IMCSCH":"IMCOSECHYP","IMDIV":"IMDIV","IMEXP":"IMEXP","IMLN":"IMLN","IMLOG10":"IMLOG10","IMLOG2":"IMLOG2","IMPOWER":"IMAPOTENZ","IMPRODUCT":"IMPRODUKT","IMREAL":"IMREALTEIL","IMSEC":"IMSEC","IMSECH":"IMSECHYP","IMSIN":"IMSIN","IMSINH":"IMSINHYP","IMSQRT":"IMWURZEL","IMSUB":"IMSUB","IMSUM":"IMSUMME","IMTAN":"IMTAN","OCT2BIN":"OKTINBIN","OCT2DEC":"OKTINDEZ","OCT2HEX":"OKTINHEX","DAVERAGE":"DBMITTELWERT","DCOUNT":"DBANZAHL","DCOUNTA":"DBANZAHL2","DGET":"DBAUSZUG","DMAX":"DBMAX","DMIN":"DBMIN","DPRODUCT":"DBPRODUKT","DSTDEV":"DBSTDABW","DSTDEVP":"DBSTDABWN","DSUM":"DBSUMME","DVAR":"DBVARIANZ","DVARP":"DBVARIANZEN","CHAR":"ZEICHEN","CLEAN":"SÄUBERN","CODE":"CODE","CONCATENATE":"VERKETTEN","CONCAT":"TEXTKETTE","DOLLAR":"DM","EXACT":"IDENTISCH","FIND":"FINDEN","FINDB":"FINDENB","FIXED":"FEST","LEFT":"LINKS","LEFTB":"LINKSB","LEN":"LÄNGE","LENB":"LENB","LOWER":"KLEIN","MID":"TEIL","MIDB":"TEILB","NUMBERVALUE":"ZAHLENWERT","PROPER":"GROSS2","REPLACE":"ERSETZEN","REPLACEB":"ERSETZENB","REPT":"WIEDERHOLEN","RIGHT":"RECHTS","RIGHTB":"RECHTSB","SEARCH":"SUCHEN","SEARCHB":"SUCHENB","SUBSTITUTE":"WECHSELN","T":"T","T.TEST":"T.TEST","TEXT":"TEXT","TEXTJOIN":"TEXTVERKETTEN","TRIM":"GLÄTTEN","TRIMMEAN":"GESTUTZTMITTEL","TTEST":"TTEST","UNICHAR":"UNIZEICHEN","UNICODE":"UNICODE","UPPER":"GROSS","VALUE":"WERT","AVEDEV":"MITTELABW","AVERAGE":"MITTELWERT","AVERAGEA":"MITTELWERTA","AVERAGEIF":"MITTELWERTWENN","AVERAGEIFS":"MITTELWERTWENNS","BETADIST":"BETAVERT","BETA.DIST":"BETA.VERT","BETA.INV":"BETAINV","BINOMDIST":"BINOMVERT","BINOM.DIST":"BINOM.VERT","BINOM.DIST.RANGE":"BINOM.VERT.BEREICH","BINOM.INV":"BINOM.INV","CHIDIST":"CHIVERT","CHIINV":"CHIINV","CHITEST":"CHITEST","CHISQ.DIST":"CHIQU.VERT","CHISQ.DIST.RT":"CHIQU.VERT.RE","CHISQ.INV":"CHIQU.INV","CHISQ.INV.RT":"CHIQU.INV.RE","CHISQ.TEST":"CHIQU.TEST","CONFIDENCE":"KONFIDENZ","CONFIDENCE.NORM":"KONFIDENZ.NORM","CONFIDENCE.T":"KONFIDENZ.T","CORREL":"KORREL","COUNT":"ANZAHL","COUNTA":"ANZAHL2","COUNTBLANK":"ANZAHLLEEREZELLEN","COUNTIF":"ZÄHLENWENN","COUNTIFS":"ZÄHLENWENNS","COVAR":"KOVAR","COVARIANCE.P":"KOVARIANZ.P","COVARIANCE.S":"KOVARIANZ.S","CRITBINOM":"KRITBINOM","DEVSQ":"SUMQUADABW","EXPON.DIST":"EXPON.VERT","EXPONDIST":"EXPONVERT","FDIST":"FVERT","FINV":"FINV","FTEST":"FTEST","F.DIST":"F.VERT","F.DIST.RT":"F.VERT.RE","F.INV":"F.INV","F.INV.RT":"F.INV.RE","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHERINV","FORECAST":"SCHÄTZER","FORECAST.ETS":"PROGNOSE.ETS","FORECAST.ETS.CONFINT":"PROGNOSE.ETS.KONFINT","FORECAST.ETS.SEASONALITY":"PROGNOSE.ETS.SAISONALITÄT","FORECAST.ETS.STAT":"PROGNOSE.ETS.STAT","FORECAST.LINEAR":"PROGNOSE.LINEAR","FREQUENCY":"HÄUFIGKEIT","GAMMA":"GAMMA","GAMMADIST":"GAMMAVERT","GAMMA.DIST":"GAMMA.VERT","GAMMAINV":"GAMMAINV","GAMMA.INV":"GAMMA.INV","GAMMALN":"GAMMALN","GAMMALN.PRECISE":"GAMMALN.GENAU","GAUSS":"GAUSS","GEOMEAN":"GEOMITTEL","HARMEAN":"HARMITTEL","HYPGEOM.DIST":"HYPGEOM.VERT","HYPGEOMDIST":"HYPGEOMVERT","INTERCEPT":"ACHSENABSCHNITT","KURT":"KURT","LARGE":"KGRÖSSTE","LOGINV":"LOGINV","LOGNORM.DIST":"LOGNORM.VERT","LOGNORM.INV":"LOGNORM.INV","LOGNORMDIST":"LOGNORMVERT","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAXWENNS","MEDIAN":"MEDIAN","MIN":"MIN","MINA":"MINA","MINIFS":"MINWENNS","MODE":"MODALWERT","MODE.MULT":"MODUS.VIELF","MODE.SNGL":"MODUS.EINF","NEGBINOM.DIST":"NEGBINOM.VERT","NEGBINOMDIST":"NEGBINOMVERT","NORM.DIST":"NORM.VERT","NORM.INV":"NORM.INV","NORM.S.DIST":"NORM.S.VERT","NORM.S.INV":"NORM.S.INV","NORMDIST":"NORMVERT","NORMINV":"NORMINV","NORMSDIST":"STANDNORMVERT","NORMSINV":"STANDNORMINV","PEARSON":"PEARSON","PERCENTILE":"QUANTIL","PERCENTILE.EXC":"QUANTIL.EXKL","PERCENTILE.INC":"QUANTIL.INKL","PERCENTRANK":"QUANTILSRANG","PERCENTRANK.EXC":"QUANTILSRANG.EXKL","PERCENTRANK.INC":"QUANTILSRANG.INKL","PERMUT":"VARIATIONEN","PERMUTATIONA":"VARIATIONEN2","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"POISSON.VERT","PROB":"WAHRSCHBEREICH","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INKL","QUARTILE.EXC":"QUARTILE.EXKL","RANK.AVG":"RANG.MITTELW","RANK.EQ":"RANG.GLEICH","RANK":"RANG","RSQ":"BESTIMMTHEITSMASS","SKEW":"SCHIEFE","SKEW.P":"SCHIEFE.P","SLOPE":"STEIGUNG","SMALL":"KKLEINSTE","STANDARDIZE":"STANDARDISIERUNG","STDEV":"STABW","STDEV.P":"STABW.N","STDEV.S":"STABW.S","STDEVA":"STABWA","STDEVP":"STABWN","STDEVPA":"STABWNA","STEYX":"STFEHLERYX","TDIST":"TVERT","TINV":"TINV","T.DIST":"T.VERT","T.DIST.2T":"T.VERT.2S","T.DIST.RT":"T.VERT.RE","T.INV":"T.INV","T.INV.2T":"T.INV.2S","VAR":"VARIANZ","VAR.P":"VAR.P","VAR.S":"VAR.S","VARA":"VARIANZA","VARP":"VARIANZEN","VARPA":"VARIANZENA","WEIBULL":"WEIBULL","WEIBULL.DIST":"WEIBULL.VERT","Z.TEST":"G.TEST","ZTEST":"GTEST","ACCRINT":"AUFGELZINS","ACCRINTM":"AUFGELZINSF","AMORDEGRC":"AMORDEGRK","AMORLINC":"AMORLINEARK","COUPDAYBS":"ZINSTERMTAGVA","COUPDAYS":"ZINSTERMTAGE","COUPDAYSNC":"ZINSTERMTAGNZ","COUPNCD":"ZINSTERMNZ","COUPNUM":"ZINSTERMZAHL","COUPPCD":"ZINSTERMVZ","CUMIPMT":"KUMZINSZ","CUMPRINC":"KUMKAPITAL","DB":"GDA2","DDB":"GDA","DISC":"DISAGIO","DOLLARDE":"NOTIERUNGDEZ","DOLLARFR":"NOTIERUNGBRU","DURATION":"DURATIONТ","EFFECT":"EFFEKTIV","FV":"ZW","FVSCHEDULE":"ZW2","INTRATE":"ZINSSATZ","IPMT":"ZINSZ","IRR":"IKV","ISPMT":"ISPMT","MDURATION":"MDURATION","MIRR":"QIKV","NOMINAL":"NOMINAL","NPER":"ZZR","NPV":"NBW","ODDFPRICE":"UNREGER.KURS","ODDFYIELD":"UNREGER.REND","ODDLPRICE":"UNREGLE.KURS","ODDLYIELD":"UNREGLE.REND","PDURATION":"PDURATION","PMT":"RMZ","PPMT":"KAPZ","PRICE":"KURS","PRICEDISC":"KURSDISAGIO","PRICEMAT":"KURSFÄLLIG","PV":"BW","RATE":"ZINS","RECEIVED":"AUSZAHLUNG","RRI":"ZSATZINVEST","SLN":"LIA","SYD":"DIA","TBILLEQ":"TBILLÄQUIV","TBILLPRICE":"TBILLKURS","TBILLYIELD":"TBILLRENDITE","VDB":"VDB","XIRR":"XINTZINSFUSS","XNPV":"XKAPITALWERT","YIELD":"RENDITE","YIELDDISC":"RENDITEDIS","YIELDMAT":"RENDITEFÄLL","ABS":"ABS","ACOS":"ARCCOS","ACOSH":"ARCCOSHYP","ACOT":"ARCCOT","ACOTH":"ARCCOTHYP","AGGREGATE":"AGGREGAT","ARABIC":"ARABISCH","ASIN":"ARCSIN","ASINH":"ARCSINHYP","ATAN":"ARCTAN","ATAN2":"ARCTAN2","ATANH":"ARCTANHYP","BASE":"BASE","CEILING":"OBERGRENZE","CEILING.MATH":"OBERGRENZE.MATHEMATIK","CEILING.PRECISE":"OBERGRENZE.GENAU","COMBIN":"KOMBINATIONEN","COMBINA":"KOMBINATIONEN2","COS":"COS","COSH":"COSHYP","COT":"COT","COTH":"COTHYP","CSC":"COSEC","CSCH":"COSECHYP","DECIMAL":"DEZIMAL","DEGREES":"GRAD","ECMA.CEILING":"ECMA.OBERGRENZE","EVEN":"GERADE","EXP":"EXP","FACT":"FAKULTÄT","FACTDOUBLE":"ZWEIFAKULTÄT","FLOOR":"UNTERGRENZE","FLOOR.PRECISE":"UNTERGRENZE.GENAU","FLOOR.MATH":"UNTERGRENZE.MATHEMATIK","GCD":"GGT","INT":"GANZZAHL","ISO.CEILING":"ISO.OBERGRENZE","LCM":"KGV","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MDET","MINVERSE":"MINV","MMULT":"MMULT","MOD":"REST","MROUND":"VRUNDEN","MULTINOMIAL":"POLYNOMIAL","ODD":"UNGERADE","PI":"PI","POWER":"POTENZ","PRODUCT":"PRODUKT","QUOTIENT":"QUOTIENT","RADIANS":"BOGENMASS","RAND":"ZUFALLSZAHL","RANDBETWEEN":"ZUFALLSBEREICH","ROMAN":"RÖMISCH","ROUND":"RUNDEN","ROUNDDOWN":"ABRUNDEN","ROUNDUP":"AUFRUNDEN","SEC":"SEC","SECH":"SECHYP","SERIESSUM":"POTENZREIHE","SIGN":"VORZEICHEN","SIN":"SIN","SINH":"SINHYP","SQRT":"WURZEL","SQRTPI":"WURZELPI","SUBTOTAL":"TEILERGEBNIS","SUM":"SUMME","SUMIF":"SUMMEWENN","SUMIFS":"SUMMEWENNS","SUMPRODUCT":"SUMMENPRODUKT","SUMSQ":"QUADRATESUMME","SUMX2MY2":"SUMMEX2MY2","SUMX2PY2":"SUMMEX2PY2","SUMXMY2":"SUMMEXMY2","TAN":"TAN","TANH":"TANHYP","TRUNC":"KÜRZEN","ADDRESS":"ADRESSE","CHOOSE":"WAHL","COLUMN":"SPALTE","COLUMNS":"SPALTEN","FORMULATEXT":"FORMELTEXT","HLOOKUP":"WVERWEIS","INDEX":"INDEX","INDIRECT":"INDIREKT","LOOKUP":"VERWEIS","MATCH":"VERGLEICH","OFFSET":"BEREICH.VERSCHIEBEN","ROW":"ZEILE","ROWS":"ZEILEN","TRANSPOSE":"MTRANS","VLOOKUP":"SVERWEIS","ERROR.TYPE":"FEHLER.TYP","ISBLANK":"ISTLEER","ISERR":"ISTFEHL","ISERROR":"ISTFEHLER","ISEVEN":"ISTGERADE","ISFORMULA":"ISTFORMEL","ISLOGICAL":"ISTLOG","ISNA":"ISTNV","ISNONTEXT":"ISTKTEXT","ISNUMBER":"ISTZAHL","ISODD":"ISTUNGERADE","ISREF":"ISTBEZUG","ISTEXT":"ISTTEXT","N":"N","NA":"NV","SHEET":"BLATT","SHEETS":"BLÄTTER","TYPE":"TYP","AND":"UND","FALSE":"FALSCH","IF":"WENN","IFS":"WENNS","IFERROR":"WENNFEHLER","IFNA":"WENNNV","NOT":"NICHT","OR":"ODER","SWITCH":"ERSTERWERT","TRUE":"WAHR","XOR":"XODER","LocalFormulaOperands":{"StructureTables":{"h":"Kopfzeilen","d":"Daten","a":"Alle","tr":"Diese Zeile","t":"Ergebnisse"},"CONST_TRUE_FALSE":{"t":"WAHR","f":"FALSCH"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#WERT!","ref":"#BEZUG!","name":"#NAME\\?","num":"#ZAHL!","na":"#NV","getdata":"#DATEN_ABRUFEN","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file +{"DATE":"DATUM","DATEDIF":"DATEDIF","DATEVALUE":"DATWERT","DAY":"TAG","DAYS":"TAGE","DAYS360":"TAGE360","EDATE":"EDATUM","EOMONTH":"MONATSENDE","HOUR":"STUNDE","ISOWEEKNUM":"ISOKALENDERWOCHE","MINUTE":"MINUTE","MONTH":"MONAT","NETWORKDAYS":"NETTOARBEITSTAGE","NETWORKDAYS.INTL":"NETTOARBEITSTAGE.INTL","NOW":"JETZT","SECOND":"SEKUNDE","TIME":"ZEIT","TIMEVALUE":"ZEITWERT","TODAY":"HEUTE","WEEKDAY":"WOCHENTAG","WEEKNUM":"KALENDERWOCHE","WORKDAY":"ARBEITSTAG","WORKDAY.INTL":"ARBEITSTAG.INTL","YEAR":"JAHR","YEARFRAC":"BRTEILJAHRE","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BININDEZ","BIN2HEX":"BININHEX","BIN2OCT":"BININOKT","BITAND":"BITUND","BITLSHIFT":"BITLVERSCHIEB","BITOR":"BITODER","BITRSHIFT":"BITRVERSCHIEB","BITXOR":"BITXODER","COMPLEX":"KOMPLEXE","CONVERT":"UMWANDELN","DEC2BIN":"DEZINBIN","DEC2HEX":"DEZINHEX","DEC2OCT":"DEZINOKT","DELTA":"DELTA","ERF":"GAUSSFEHLER","ERF.PRECISE":"GAUSSFKOMPL.GENAU","ERFC":"GAUSSFKOMPL","ERFC.PRECISE":"GAUSSFKOMPL.GENAU","GESTEP":"GGANZZAHL","HEX2BIN":"HEXINBIN","HEX2DEC":"HEXINDEZ","HEX2OCT":"HEXINOKT","IMABS":"IMABS","IMAGINARY":"IMAGINÄRTEIL","IMARGUMENT":"IMARGUMENT","IMCONJUGATE":"IMKONJUGIERTE","IMCOS":"IMCOS","IMCOSH":"IMCOSH","IMCOT":"IMCOT","IMCSC":"IMCOSEC","IMCSCH":"IMCOSECHYP","IMDIV":"IMDIV","IMEXP":"IMEXP","IMLN":"IMLN","IMLOG10":"IMLOG10","IMLOG2":"IMLOG2","IMPOWER":"IMAPOTENZ","IMPRODUCT":"IMPRODUKT","IMREAL":"IMREALTEIL","IMSEC":"IMSEC","IMSECH":"IMSECHYP","IMSIN":"IMSIN","IMSINH":"IMSINHYP","IMSQRT":"IMWURZEL","IMSUB":"IMSUB","IMSUM":"IMSUMME","IMTAN":"IMTAN","OCT2BIN":"OKTINBIN","OCT2DEC":"OKTINDEZ","OCT2HEX":"OKTINHEX","DAVERAGE":"DBMITTELWERT","DCOUNT":"DBANZAHL","DCOUNTA":"DBANZAHL2","DGET":"DBAUSZUG","DMAX":"DBMAX","DMIN":"DBMIN","DPRODUCT":"DBPRODUKT","DSTDEV":"DBSTDABW","DSTDEVP":"DBSTDABWN","DSUM":"DBSUMME","DVAR":"DBVARIANZ","DVARP":"DBVARIANZEN","CHAR":"ZEICHEN","CLEAN":"SÄUBERN","CODE":"CODE","CONCATENATE":"VERKETTEN","CONCAT":"TEXTKETTE","DOLLAR":"DM","EXACT":"IDENTISCH","FIND":"FINDEN","FINDB":"FINDENB","FIXED":"FEST","LEFT":"LINKS","LEFTB":"LINKSB","LEN":"LÄNGE","LENB":"LENB","LOWER":"KLEIN","MID":"TEIL","MIDB":"TEILB","NUMBERVALUE":"ZAHLENWERT","PROPER":"GROSS2","REPLACE":"ERSETZEN","REPLACEB":"ERSETZENB","REPT":"WIEDERHOLEN","RIGHT":"RECHTS","RIGHTB":"RECHTSB","SEARCH":"SUCHEN","SEARCHB":"SUCHENB","SUBSTITUTE":"WECHSELN","T":"T","T.TEST":"T.TEST","TEXT":"TEXT","TEXTJOIN":"TEXTVERKETTEN","TRIM":"GLÄTTEN","TRIMMEAN":"GESTUTZTMITTEL","TTEST":"TTEST","UNICHAR":"UNIZEICHEN","UNICODE":"UNICODE","UPPER":"GROSS","VALUE":"WERT","AVEDEV":"MITTELABW","AVERAGE":"MITTELWERT","AVERAGEA":"MITTELWERTA","AVERAGEIF":"MITTELWERTWENN","AVERAGEIFS":"MITTELWERTWENNS","BETADIST":"BETAVERT","BETA.DIST":"BETA.VERT","BETA.INV":"BETAINV","BINOMDIST":"BINOMVERT","BINOM.DIST":"BINOM.VERT","BINOM.DIST.RANGE":"BINOM.VERT.BEREICH","BINOM.INV":"BINOM.INV","CHIDIST":"CHIVERT","CHIINV":"CHIINV","CHITEST":"CHITEST","CHISQ.DIST":"CHIQU.VERT","CHISQ.DIST.RT":"CHIQU.VERT.RE","CHISQ.INV":"CHIQU.INV","CHISQ.INV.RT":"CHIQU.INV.RE","CHISQ.TEST":"CHIQU.TEST","CONFIDENCE":"KONFIDENZ","CONFIDENCE.NORM":"KONFIDENZ.NORM","CONFIDENCE.T":"KONFIDENZ.T","CORREL":"KORREL","COUNT":"ANZAHL","COUNTA":"ANZAHL2","COUNTBLANK":"ANZAHLLEEREZELLEN","COUNTIF":"ZÄHLENWENN","COUNTIFS":"ZÄHLENWENNS","COVAR":"KOVAR","COVARIANCE.P":"KOVARIANZ.P","COVARIANCE.S":"KOVARIANZ.S","CRITBINOM":"KRITBINOM","DEVSQ":"SUMQUADABW","EXPON.DIST":"EXPON.VERT","EXPONDIST":"EXPONVERT","FDIST":"FVERT","FINV":"FINV","FTEST":"FTEST","F.DIST":"F.VERT","F.DIST.RT":"F.VERT.RE","F.INV":"F.INV","F.INV.RT":"F.INV.RE","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHERINV","FORECAST":"SCHÄTZER","FORECAST.ETS":"PROGNOSE.ETS","FORECAST.ETS.CONFINT":"PROGNOSE.ETS.KONFINT","FORECAST.ETS.SEASONALITY":"PROGNOSE.ETS.SAISONALITÄT","FORECAST.ETS.STAT":"PROGNOSE.ETS.STAT","FORECAST.LINEAR":"PROGNOSE.LINEAR","FREQUENCY":"HÄUFIGKEIT","GAMMA":"GAMMA","GAMMADIST":"GAMMAVERT","GAMMA.DIST":"GAMMA.VERT","GAMMAINV":"GAMMAINV","GAMMA.INV":"GAMMA.INV","GAMMALN":"GAMMALN","GAMMALN.PRECISE":"GAMMALN.GENAU","GAUSS":"GAUSS","GEOMEAN":"GEOMITTEL","HARMEAN":"HARMITTEL","HYPGEOM.DIST":"HYPGEOM.VERT","HYPGEOMDIST":"HYPGEOMVERT","INTERCEPT":"ACHSENABSCHNITT","KURT":"KURT","LARGE":"KGRÖSSTE","LOGINV":"LOGINV","LOGNORM.DIST":"LOGNORM.VERT","LOGNORM.INV":"LOGNORM.INV","LOGNORMDIST":"LOGNORMVERT","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAXWENNS","MEDIAN":"MEDIAN","MIN":"MIN","MINA":"MINA","MINIFS":"MINWENNS","MODE":"MODALWERT","MODE.MULT":"MODUS.VIELF","MODE.SNGL":"MODUS.EINF","NEGBINOM.DIST":"NEGBINOM.VERT","NEGBINOMDIST":"NEGBINOMVERT","NORM.DIST":"NORM.VERT","NORM.INV":"NORM.INV","NORM.S.DIST":"NORM.S.VERT","NORM.S.INV":"NORM.S.INV","NORMDIST":"NORMVERT","NORMINV":"NORMINV","NORMSDIST":"STANDNORMVERT","NORMSINV":"STANDNORMINV","PEARSON":"PEARSON","PERCENTILE":"QUANTIL","PERCENTILE.EXC":"QUANTIL.EXKL","PERCENTILE.INC":"QUANTIL.INKL","PERCENTRANK":"QUANTILSRANG","PERCENTRANK.EXC":"QUANTILSRANG.EXKL","PERCENTRANK.INC":"QUANTILSRANG.INKL","PERMUT":"VARIATIONEN","PERMUTATIONA":"VARIATIONEN2","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"POISSON.VERT","PROB":"WAHRSCHBEREICH","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INKL","QUARTILE.EXC":"QUARTILE.EXKL","RANK.AVG":"RANG.MITTELW","RANK.EQ":"RANG.GLEICH","RANK":"RANG","RSQ":"BESTIMMTHEITSMASS","SKEW":"SCHIEFE","SKEW.P":"SCHIEFE.P","SLOPE":"STEIGUNG","SMALL":"KKLEINSTE","STANDARDIZE":"STANDARDISIERUNG","STDEV":"STABW","STDEV.P":"STABW.N","STDEV.S":"STABW.S","STDEVA":"STABWA","STDEVP":"STABWN","STDEVPA":"STABWNA","STEYX":"STFEHLERYX","TDIST":"TVERT","TINV":"TINV","T.DIST":"T.VERT","T.DIST.2T":"T.VERT.2S","T.DIST.RT":"T.VERT.RE","T.INV":"T.INV","T.INV.2T":"T.INV.2S","VAR":"VARIANZ","VAR.P":"VAR.P","VAR.S":"VAR.S","VARA":"VARIANZA","VARP":"VARIANZEN","VARPA":"VARIANZENA","WEIBULL":"WEIBULL","WEIBULL.DIST":"WEIBULL.VERT","Z.TEST":"G.TEST","ZTEST":"GTEST","ACCRINT":"AUFGELZINS","ACCRINTM":"AUFGELZINSF","AMORDEGRC":"AMORDEGRK","AMORLINC":"AMORLINEARK","COUPDAYBS":"ZINSTERMTAGVA","COUPDAYS":"ZINSTERMTAGE","COUPDAYSNC":"ZINSTERMTAGNZ","COUPNCD":"ZINSTERMNZ","COUPNUM":"ZINSTERMZAHL","COUPPCD":"ZINSTERMVZ","CUMIPMT":"KUMZINSZ","CUMPRINC":"KUMKAPITAL","DB":"GDA2","DDB":"GDA","DISC":"DISAGIO","DOLLARDE":"NOTIERUNGDEZ","DOLLARFR":"NOTIERUNGBRU","DURATION":"DURATIONT","EFFECT":"EFFEKTIV","FV":"ZW","FVSCHEDULE":"ZW2","INTRATE":"ZINSSATZ","IPMT":"ZINSZ","IRR":"IKV","ISPMT":"ISPMT","MDURATION":"MDURATION","MIRR":"QIKV","NOMINAL":"NOMINAL","NPER":"ZZR","NPV":"NBW","ODDFPRICE":"UNREGER.KURS","ODDFYIELD":"UNREGER.REND","ODDLPRICE":"UNREGLE.KURS","ODDLYIELD":"UNREGLE.REND","PDURATION":"PDURATION","PMT":"RMZ","PPMT":"KAPZ","PRICE":"KURS","PRICEDISC":"KURSDISAGIO","PRICEMAT":"KURSFÄLLIG","PV":"BW","RATE":"ZINS","RECEIVED":"AUSZAHLUNG","RRI":"ZSATZINVEST","SLN":"LIA","SYD":"DIA","TBILLEQ":"TBILLÄQUIV","TBILLPRICE":"TBILLKURS","TBILLYIELD":"TBILLRENDITE","VDB":"VDB","XIRR":"XINTZINSFUSS","XNPV":"XKAPITALWERT","YIELD":"RENDITE","YIELDDISC":"RENDITEDIS","YIELDMAT":"RENDITEFÄLL","ABS":"ABS","ACOS":"ARCCOS","ACOSH":"ARCCOSHYP","ACOT":"ARCCOT","ACOTH":"ARCCOTHYP","AGGREGATE":"AGGREGAT","ARABIC":"ARABISCH","ASIN":"ARCSIN","ASINH":"ARCSINHYP","ATAN":"ARCTAN","ATAN2":"ARCTAN2","ATANH":"ARCTANHYP","BASE":"BASE","CEILING":"OBERGRENZE","CEILING.MATH":"OBERGRENZE.MATHEMATIK","CEILING.PRECISE":"OBERGRENZE.GENAU","COMBIN":"KOMBINATIONEN","COMBINA":"KOMBINATIONEN2","COS":"COS","COSH":"COSHYP","COT":"COT","COTH":"COTHYP","CSC":"COSEC","CSCH":"COSECHYP","DECIMAL":"DEZIMAL","DEGREES":"GRAD","ECMA.CEILING":"ECMA.OBERGRENZE","EVEN":"GERADE","EXP":"EXP","FACT":"FAKULTÄT","FACTDOUBLE":"ZWEIFAKULTÄT","FLOOR":"UNTERGRENZE","FLOOR.PRECISE":"UNTERGRENZE.GENAU","FLOOR.MATH":"UNTERGRENZE.MATHEMATIK","GCD":"GGT","INT":"GANZZAHL","ISO.CEILING":"ISO.OBERGRENZE","LCM":"KGV","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MDET","MINVERSE":"MINV","MMULT":"MMULT","MOD":"REST","MROUND":"VRUNDEN","MULTINOMIAL":"POLYNOMIAL","ODD":"UNGERADE","PI":"PI","POWER":"POTENZ","PRODUCT":"PRODUKT","QUOTIENT":"QUOTIENT","RADIANS":"BOGENMASS","RAND":"ZUFALLSZAHL","RANDBETWEEN":"ZUFALLSBEREICH","ROMAN":"RÖMISCH","ROUND":"RUNDEN","ROUNDDOWN":"ABRUNDEN","ROUNDUP":"AUFRUNDEN","SEC":"SEC","SECH":"SECHYP","SERIESSUM":"POTENZREIHE","SIGN":"VORZEICHEN","SIN":"SIN","SINH":"SINHYP","SQRT":"WURZEL","SQRTPI":"WURZELPI","SUBTOTAL":"TEILERGEBNIS","SUM":"SUMME","SUMIF":"SUMMEWENN","SUMIFS":"SUMMEWENNS","SUMPRODUCT":"SUMMENPRODUKT","SUMSQ":"QUADRATESUMME","SUMX2MY2":"SUMMEX2MY2","SUMX2PY2":"SUMMEX2PY2","SUMXMY2":"SUMMEXMY2","TAN":"TAN","TANH":"TANHYP","TRUNC":"KÜRZEN","ADDRESS":"ADRESSE","CHOOSE":"WAHL","COLUMN":"SPALTE","COLUMNS":"SPALTEN","FORMULATEXT":"FORMELTEXT","HLOOKUP":"WVERWEIS","INDEX":"INDEX","INDIRECT":"INDIREKT","LOOKUP":"VERWEIS","MATCH":"VERGLEICH","OFFSET":"BEREICH.VERSCHIEBEN","ROW":"ZEILE","ROWS":"ZEILEN","TRANSPOSE":"MTRANS","VLOOKUP":"SVERWEIS","ERROR.TYPE":"FEHLER.TYP","ISBLANK":"ISTLEER","ISERR":"ISTFEHL","ISERROR":"ISTFEHLER","ISEVEN":"ISTGERADE","ISFORMULA":"ISTFORMEL","ISLOGICAL":"ISTLOG","ISNA":"ISTNV","ISNONTEXT":"ISTKTEXT","ISNUMBER":"ISTZAHL","ISODD":"ISTUNGERADE","ISREF":"ISTBEZUG","ISTEXT":"ISTTEXT","N":"N","NA":"NV","SHEET":"BLATT","SHEETS":"BLÄTTER","TYPE":"TYP","AND":"UND","FALSE":"FALSCH","IF":"WENN","IFS":"WENNS","IFERROR":"WENNFEHLER","IFNA":"WENNNV","NOT":"NICHT","OR":"ODER","SWITCH":"ERSTERWERT","TRUE":"WAHR","XOR":"XODER","LocalFormulaOperands":{"StructureTables":{"h":"Kopfzeilen","d":"Daten","a":"Alle","tr":"Diese Zeile","t":"Ergebnisse"},"CONST_TRUE_FALSE":{"t":"WAHR","f":"FALSCH"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#WERT!","ref":"#BEZUG!","name":"#NAME\\?","num":"#ZAHL!","na":"#NV","getdata":"#DATEN_ABRUFEN","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/resources/l10n/functions/en.json b/apps/spreadsheeteditor/mobile/resources/l10n/functions/en.json index a5ad5504f..889c78d54 100644 --- a/apps/spreadsheeteditor/mobile/resources/l10n/functions/en.json +++ b/apps/spreadsheeteditor/mobile/resources/l10n/functions/en.json @@ -1 +1 @@ -{"DATE":"DATE","DATEDIF":"DATEDIF","DATEVALUE":"DATEVALUE","DAY":"DAY","DAYS":"DAYS","DAYS360":"DAYS360","EDATE":"EDATE","EOMONTH":"EOMONTH","HOUR":"HOUR","ISOWEEKNUM":"ISOWEEKNUM","MINUTE":"MINUTE","MONTH":"MONTH","NETWORKDAYS":"NETWORKDAYS","NETWORKDAYS.INTL":"NETWORKDAYS.INTL","NOW":"NOW","SECOND":"SECOND","TIME":"TIME","TIMEVALUE":"TIMEVALUE","TODAY":"TODAY","WEEKDAY":"WEEKDAY","WEEKNUM":"WEEKNUM","WORKDAY":"WORKDAY","WORKDAY.INTL":"WORKDAY.INTL","YEAR":"YEAR","YEARFRAC":"YEARFRAC","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BIN2DEC","BIN2HEX":"BIN2HEX","BIN2OCT":"BIN2OCT","BITAND":"BITAND","BITLSHIFT":"BITLSHIFT","BITOR":"BITOR","BITRSHIFT":"BITRSHIFT","BITXOR":"BITXOR","COMPLEX":"COMPLEX","CONVERT":"CONVERT","DEC2BIN":"DEC2BIN","DEC2HEX":"DEC2HEX","DEC2OCT":"DEC2OCT","DELTA":"DELTA","ERF":"ERF","ERF.PRECISE":"ERFC.PRECISE","ERFC":"ERFC","ERFC.PRECISE":"ERFC.PRECISE","GESTEP":"GESTEP","HEX2BIN":"HEX2BIN","HEX2DEC":"HEX2DEC","HEX2OCT":"HEX2OCT","IMABS":"IMABS","IMAGINARY":"IMAGINARY","IMARGUMENT":"IMARGUMENT","IMCONJUGATE":"IMCONJUGATE","IMCOS":"IMCOS","IMCOSH":"IMCOSH","IMCOT":"IMCOT","IMCSC":"IMCSC","IMCSCH":"IMCSCH","IMDIV":"IMDIV","IMEXP":"IMEXP","IMLN":"IMLN","IMLOG10":"IMLOG10","IMLOG2":"IMLOG2","IMPOWER":"IMPOWER","IMPRODUCT":"IMPRODUCT","IMREAL":"IMREAL","IMSEC":"IMSEC","IMSECH":"IMSECH","IMSIN":"IMSIN","IMSINH":"IMSINH","IMSQRT":"IMSQRT","IMSUB":"IMSUB","IMSUM":"IMSUM","IMTAN":"IMTAN","OCT2BIN":"OCT2BIN","OCT2DEC":"OCT2DEC","OCT2HEX":"OCT2HEX","DAVERAGE":"DAVERAGE","DCOUNT":"DCOUNT","DCOUNTA":"DCOUNTA","DGET":"DGET","DMAX":"DMAX","DMIN":"DMIN","DPRODUCT":"DPRODUCT","DSTDEV":"DSTDEV","DSTDEVP":"DSTDEVP","DSUM":"DSUM","DVAR":"DVAR","DVARP":"DVARP","CHAR":"CHAR","CLEAN":"CLEAN","CODE":"CODE","CONCATENATE":"CONCATENATE","CONCAT":"CONCAT","DOLLAR":"DOLLAR","EXACT":"EXACT","FIND":"FIND","FINDB":"FINDB","FIXED":"FIXED","LEFT":"LEFT","LEFTB":"LEFTB","LEN":"LEN","LENB":"LENB","LOWER":"LOWER","MID":"MID","MIDB":"MIDB","NUMBERVALUE":"NUMBERVALUE","PROPER":"PROPER","REPLACE":"REPLACE","REPLACEB":"REPLACEB","REPT":"REPT","RIGHT":"RIGHT","RIGHTB":"RIGHTB","SEARCH":"SEARCH","SEARCHB":"SEARCHB","SUBSTITUTE":"SUBSTITUTE","T":"Т","T.TEST":"T.TEST","TEXT":"TEXT","TEXTJOIN":"TEXTJOIN","TRIM":"TRIM","TRIMMEAN":"TRIMMEAN","TTEST":"TTEST","UNICHAR":"UNICHAR","UNICODE":"UNICODE","UPPER":"UPPER","VALUE":"VALUE","AVEDEV":"AVEDEV","AVERAGE":"AVERAGE","AVERAGEA":"AVERAGEA","AVERAGEIF":"AVERAGEIF","AVERAGEIFS":"AVERAGEIFS","BETADIST":"BETADIST","BETA.DIST":"BETA.DIST","BETA.INV":"BETAINV","BINOMDIST":"BINOMDIST","BINOM.DIST":"BINOM.DIST","BINOM.DIST.RANGE":"BINOM.DIST.RANGE","BINOM.INV":"BINOM.INV","CHIDIST":"CHIDIST","CHIINV":"CHIINV","CHITEST":"CHITEST","CHISQ.DIST":"CHISQ.DIST","CHISQ.DIST.RT":"CHISQ.DIST.RT","CHISQ.INV":"CHISQ.INV","CHISQ.INV.RT":"CHISQ.INV.RT","CHISQ.TEST":"CHISQ.TEST","CONFIDENCE":"CONFIDENCE","CONFIDENCE.NORM":"CONFIDENCE.NORM","CONFIDENCE.T":"CONFIDENCE.T","CORREL":"CORREL","COUNT":"COUNT","COUNTA":"COUNTA","COUNTBLANK":"COUNTBLANK","COUNTIF":"COUNTIF","COUNTIFS":"COUNTIFS","COVAR":"COVAR","COVARIANCE.P":"COVARIANCE.P","COVARIANCE.S":"COVARIANCE.S","CRITBINOM":"CRITBINOM","DEVSQ":"DEVSQ","EXPON.DIST":"EXPON.DIST","EXPONDIST":"EXPONDIST","FDIST":"FDIST","FINV":"FINV","FTEST":"FTEST","F.DIST":"F.DIST","F.DIST.RT":"FDIST.RT","F.INV":"F.INV","F.INV.RT":"F.INV.RT","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHERINV","FORECAST":"FORECAST","FORECAST.ETS":"FORECAST.ETS","FORECAST.ETS.CONFINT":"FORECAST.ETS.CONFINT","FORECAST.ETS.SEASONALITY":"FORECAST.ETS.SEASONALITY","FORECAST.ETS.STAT":"FORECAST.ETS.STAT","FORECAST.LINEAR":"FORECAST.LINEAR","FREQUENCY":"FREQUENCY","GAMMA":"GAMMA","GAMMADIST":"GAMMADIST","GAMMA.DIST":"GAMMA.DIST","GAMMAINV":"GAMMAINV","GAMMA.INV":"GAMMA.INV","GAMMALN":"GAMMALN","GAMMALN.PRECISE":"GAMMALN.PRECISE","GAUSS":"GAUSS","GEOMEAN":"GEOMEAN","HARMEAN":"HARMEAN","HYPGEOM.DIST":"HYPGEOM.DIST","HYPGEOMDIST":"HYPGEOMDIST","INTERCEPT":"INTERCEPT","KURT":"KURT","LARGE":"LARGE","LOGINV":"LOGINV","LOGNORM.DIST":"LOGNORM.DIST","LOGNORM.INV":"LOGNORM.INV","LOGNORMDIST":"LOGNORMDIST","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAXIFS","MEDIAN":"MEDIAN","MIN":"MIN","MINA":"MINA","MINIFS":"MINIFS","MODE":"MODE","MODE.MULT":"MODE.MULT","MODE.SNGL":"MODE.SNGL","NEGBINOM.DIST":"NEGBINOM.DIST","NEGBINOMDIST":"NEGBINOMDIST","NORM.DIST":"NORM.DIST","NORM.INV":"NORM.INV","NORM.S.DIST":"NORM.S.DIST","NORM.S.INV":"NORM.S.INV","NORMDIST":"NORMDIST","NORMINV":"NORMINV","NORMSDIST":"NORMSDIST","NORMSINV":"NORMSINV","PEARSON":"PEARSON","PERCENTILE":"PERCENTILE","PERCENTILE.EXC":"PERCENTILE.EXC","PERCENTILE.INC":"PERCENTILE.INC","PERCENTRANK":"PERCENTRANK","PERCENTRANK.EXC":"PERCENTRANK.EXC","PERCENTRANK.INC":"PERCENTRANK.INC","PERMUT":"PERMUT","PERMUTATIONA":"PERMUTATIONA","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"POISSON.DIST","PROB":"PROB","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INC","QUARTILE.EXC":"QUARTILE.EXC","RANK.AVG":"RANK.AVG","RANK.EQ":"RANK.EQ","RANK":"RANK","RSQ":"RSQ","SKEW":"SKEW","SKEW.P":"SKEW.P","SLOPE":"SLOPE","SMALL":"SMALL","STANDARDIZE":"STANDARDIZE","STDEV":"STDEV","STDEV.P":"STDEV.P","STDEV.S":"STDEV.S","STDEVA":"STDEVA","STDEVP":"STDEVP","STDEVPA":"STDEVPA","STEYX":"STEYX","TDIST":"TDIST","TINV":"TINV","T.DIST":"T.DIST","T.DIST.2T":"T.DIST.2T","T.DIST.RT":"T.DIST.RT","T.INV":"T.INV","T.INV.2T":"T.INV.2T","VAR":"VAR","VAR.P":"VAR.P","VAR.S":"VAR.S","VARA":"VARA","VARP":"VARP","VARPA":"VARPA","WEIBULL":"WEIBULL","WEIBULL.DIST":"WEIBULL.DIST","Z.TEST":"Z.TEST","ZTEST":"ZTEST","ACCRINT":"ACCRINT","ACCRINTM":"ACCRINTM","AMORDEGRC":"AMORDEGRC","AMORLINC":"AMORLINC","COUPDAYBS":"COUPDAYBS","COUPDAYS":"COUPDAYS","COUPDAYSNC":"COUPDAYSNC","COUPNCD":"COUPNCD","COUPNUM":"COUPNUM","COUPPCD":"COUPPCD","CUMIPMT":"CUMIPMT","CUMPRINC":"CUMPRINC","DB":"DB","DDB":"DDB","DISC":"DISC","DOLLARDE":"DOLLARDE","DOLLARFR":"DOLLARFR","DURATION":"DURATION","EFFECT":"EFFECT","FV":"FV","FVSCHEDULE":"FVSCHEDULE","INTRATE":"INTRATE","IPMT":"IPMT","IRR":"IRR","ISPMT":"ISPMT","MDURATION":"MDURATION","MIRR":"MIRR","NOMINAL":"NOMINAL","NPER":"NPER","NPV":"NPV","ODDFPRICE":"ODDFPRICE","ODDFYIELD":"ODDFYIELD","ODDLPRICE":"ODDLPRICE","ODDLYIELD":"ODDLYIELD","PDURATION":"PDURATION","PMT":"PMT","PPMT":"PPMT","PRICE":"PRICE","PRICEDISC":"PRICEDISC","PRICEMAT":"PRICEMAT","PV":"PV","RATE":"RATE","RECEIVED":"RECEIVED","RRI":"RRI","SLN":"SLN","SYD":"SYD","TBILLEQ":"TBILLEQ","TBILLPRICE":"TBILLPRICE","TBILLYIELD":"TBILLYIELD","VDB":"VDB","XIRR":"XIRR","XNPV":"XNPV","YIELD":"YIELD","YIELDDISC":"YIELDDISC","YIELDMAT":"YIELDMAT","ABS":"ABS","ACOS":"ACOS","ACOSH":"ACOSH","ACOT":"ACOT","ACOTH":"ACOTH","AGGREGATE":"AGGREGATE","ARABIC":"ARABIC","ASIN":"ASIN","ASINH":"ASINH","ATAN":"ATAN","ATAN2":"ATAN2","ATANH":"ATANH","BASE":"BASE","CEILING":"CEILING","CEILING.MATH":"CEILING.MATH","CEILING.PRECISE":"CEILING.PRESIZE","COMBIN":"COMBIN","COMBINA":"COMBINA","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMAL","DEGREES":"DEGREES","ECMA.CEILING":"ECMA.CEILING","EVEN":"EVEN","EXP":"EXP","FACT":"FACT","FACTDOUBLE":"FACTDOUBLE","FLOOR":"FLOOR","FLOOR.PRECISE":"FLOOR.PRECISE","FLOOR.MATH":"FLOOR.MATH","GCD":"GCD","INT":"INT","ISO.CEILING":"ISO.CEILING","LCM":"LCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MDETERM","MINVERSE":"MINVERSE","MMULT":"MMULT","MOD":"MOD","MROUND":"MROUND","MULTINOMIAL":"MULTINOMIAL","ODD":"ODD","PI":"PI","POWER":"POWER","PRODUCT":"PRODUCT","QUOTIENT":"QUOTIENT","RADIANS":"RADIANS","RAND":"RAND","RANDBETWEEN":"RANDBETWEEN","ROMAN":"ROMAN","ROUND":"ROUND","ROUNDDOWN":"ROUNDDOWN","ROUNDUP":"ROUNDUP","SEC":"SEC","SECH":"SECH","SERIESSUM":"SERIESSUM","SIGN":"SIGN","SIN":"SIN","SINH":"SINH","SQRT":"SQRT","SQRTPI":"SQRTPI","SUBTOTAL":"SUBTOTAL","SUM":"SUM","SUMIF":"SUMIF","SUMIFS":"SUMIFS","SUMPRODUCT":"SUMPRODUCT","SUMSQ":"SUMSQ","SUMX2MY2":"SUMX2MY2","SUMX2PY2":"SUMX2PY2","SUMXMY2":"SUMXMY2","TAN":"TAN","TANH":"TANH","TRUNC":"TRUNC","ADDRESS":"ADDRESS","CHOOSE":"CHOOSE","COLUMN":"COLUMN","COLUMNS":"COLUMNS","FORMULATEXT":"FORMULATEXT","HLOOKUP":"HLOOKUP","INDEX":"INDEX","INDIRECT":"INDIRECT","LOOKUP":"LOOKUP","MATCH":"MATCH","OFFSET":"OFFSET","ROW":"ROW","ROWS":"ROWS","TRANSPOSE":"TRANSPOSE","VLOOKUP":"VLOOKUP","ERROR.TYPE":"ERROR.TYPE","ISBLANK":"ISBLANK","ISERR":"ISERR","ISERROR":"ISERROR","ISEVEN":"ISEVEN","ISFORMULA":"ISFORMULA","ISLOGICAL":"ISLOGICAL","ISNA":"ISNA","ISNONTEXT":"ISNONTEXT","ISNUMBER":"ISNUMBER","ISODD":"ISODD","ISREF":"ISREF","ISTEXT":"ISTEXT","N":"N","NA":"NA","SHEET":"SHEET","SHEETS":"SHEETS","TYPE":"TYPE","AND":"AND","FALSE":"FALSE","IF":"IF","IFS":"IFS","IFERROR":"IFERROR","IFNA":"IFNA","NOT":"NOT","OR":"OR","SWITCH":"SWITCH","TRUE":"TRUE","XOR":"XOR","LocalFormulaOperands":{"StructureTables":{"h":"Headers","d":"Data","a":"All","tr":"This row","t":"Totals"},"CONST_TRUE_FALSE":{"t":"TRUE","f":"FALSE"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#VALUE!","ref":"#REF!","name":"#NAME\\?","num":"#NUM!","na":"#N/A","getdata":"#GETTING_DATA","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file +{"DATE":"DATE","DATEDIF":"DATEDIF","DATEVALUE":"DATEVALUE","DAY":"DAY","DAYS":"DAYS","DAYS360":"DAYS360","EDATE":"EDATE","EOMONTH":"EOMONTH","HOUR":"HOUR","ISOWEEKNUM":"ISOWEEKNUM","MINUTE":"MINUTE","MONTH":"MONTH","NETWORKDAYS":"NETWORKDAYS","NETWORKDAYS.INTL":"NETWORKDAYS.INTL","NOW":"NOW","SECOND":"SECOND","TIME":"TIME","TIMEVALUE":"TIMEVALUE","TODAY":"TODAY","WEEKDAY":"WEEKDAY","WEEKNUM":"WEEKNUM","WORKDAY":"WORKDAY","WORKDAY.INTL":"WORKDAY.INTL","YEAR":"YEAR","YEARFRAC":"YEARFRAC","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BIN2DEC","BIN2HEX":"BIN2HEX","BIN2OCT":"BIN2OCT","BITAND":"BITAND","BITLSHIFT":"BITLSHIFT","BITOR":"BITOR","BITRSHIFT":"BITRSHIFT","BITXOR":"BITXOR","COMPLEX":"COMPLEX","CONVERT":"CONVERT","DEC2BIN":"DEC2BIN","DEC2HEX":"DEC2HEX","DEC2OCT":"DEC2OCT","DELTA":"DELTA","ERF":"ERF","ERF.PRECISE":"ERFC.PRECISE","ERFC":"ERFC","ERFC.PRECISE":"ERFC.PRECISE","GESTEP":"GESTEP","HEX2BIN":"HEX2BIN","HEX2DEC":"HEX2DEC","HEX2OCT":"HEX2OCT","IMABS":"IMABS","IMAGINARY":"IMAGINARY","IMARGUMENT":"IMARGUMENT","IMCONJUGATE":"IMCONJUGATE","IMCOS":"IMCOS","IMCOSH":"IMCOSH","IMCOT":"IMCOT","IMCSC":"IMCSC","IMCSCH":"IMCSCH","IMDIV":"IMDIV","IMEXP":"IMEXP","IMLN":"IMLN","IMLOG10":"IMLOG10","IMLOG2":"IMLOG2","IMPOWER":"IMPOWER","IMPRODUCT":"IMPRODUCT","IMREAL":"IMREAL","IMSEC":"IMSEC","IMSECH":"IMSECH","IMSIN":"IMSIN","IMSINH":"IMSINH","IMSQRT":"IMSQRT","IMSUB":"IMSUB","IMSUM":"IMSUM","IMTAN":"IMTAN","OCT2BIN":"OCT2BIN","OCT2DEC":"OCT2DEC","OCT2HEX":"OCT2HEX","DAVERAGE":"DAVERAGE","DCOUNT":"DCOUNT","DCOUNTA":"DCOUNTA","DGET":"DGET","DMAX":"DMAX","DMIN":"DMIN","DPRODUCT":"DPRODUCT","DSTDEV":"DSTDEV","DSTDEVP":"DSTDEVP","DSUM":"DSUM","DVAR":"DVAR","DVARP":"DVARP","CHAR":"CHAR","CLEAN":"CLEAN","CODE":"CODE","CONCATENATE":"CONCATENATE","CONCAT":"CONCAT","DOLLAR":"DOLLAR","EXACT":"EXACT","FIND":"FIND","FINDB":"FINDB","FIXED":"FIXED","LEFT":"LEFT","LEFTB":"LEFTB","LEN":"LEN","LENB":"LENB","LOWER":"LOWER","MID":"MID","MIDB":"MIDB","NUMBERVALUE":"NUMBERVALUE","PROPER":"PROPER","REPLACE":"REPLACE","REPLACEB":"REPLACEB","REPT":"REPT","RIGHT":"RIGHT","RIGHTB":"RIGHTB","SEARCH":"SEARCH","SEARCHB":"SEARCHB","SUBSTITUTE":"SUBSTITUTE","T":"T","T.TEST":"T.TEST","TEXT":"TEXT","TEXTJOIN":"TEXTJOIN","TRIM":"TRIM","TRIMMEAN":"TRIMMEAN","TTEST":"TTEST","UNICHAR":"UNICHAR","UNICODE":"UNICODE","UPPER":"UPPER","VALUE":"VALUE","AVEDEV":"AVEDEV","AVERAGE":"AVERAGE","AVERAGEA":"AVERAGEA","AVERAGEIF":"AVERAGEIF","AVERAGEIFS":"AVERAGEIFS","BETADIST":"BETADIST","BETA.DIST":"BETA.DIST","BETA.INV":"BETAINV","BINOMDIST":"BINOMDIST","BINOM.DIST":"BINOM.DIST","BINOM.DIST.RANGE":"BINOM.DIST.RANGE","BINOM.INV":"BINOM.INV","CHIDIST":"CHIDIST","CHIINV":"CHIINV","CHITEST":"CHITEST","CHISQ.DIST":"CHISQ.DIST","CHISQ.DIST.RT":"CHISQ.DIST.RT","CHISQ.INV":"CHISQ.INV","CHISQ.INV.RT":"CHISQ.INV.RT","CHISQ.TEST":"CHISQ.TEST","CONFIDENCE":"CONFIDENCE","CONFIDENCE.NORM":"CONFIDENCE.NORM","CONFIDENCE.T":"CONFIDENCE.T","CORREL":"CORREL","COUNT":"COUNT","COUNTA":"COUNTA","COUNTBLANK":"COUNTBLANK","COUNTIF":"COUNTIF","COUNTIFS":"COUNTIFS","COVAR":"COVAR","COVARIANCE.P":"COVARIANCE.P","COVARIANCE.S":"COVARIANCE.S","CRITBINOM":"CRITBINOM","DEVSQ":"DEVSQ","EXPON.DIST":"EXPON.DIST","EXPONDIST":"EXPONDIST","FDIST":"FDIST","FINV":"FINV","FTEST":"FTEST","F.DIST":"F.DIST","F.DIST.RT":"FDIST.RT","F.INV":"F.INV","F.INV.RT":"F.INV.RT","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHERINV","FORECAST":"FORECAST","FORECAST.ETS":"FORECAST.ETS","FORECAST.ETS.CONFINT":"FORECAST.ETS.CONFINT","FORECAST.ETS.SEASONALITY":"FORECAST.ETS.SEASONALITY","FORECAST.ETS.STAT":"FORECAST.ETS.STAT","FORECAST.LINEAR":"FORECAST.LINEAR","FREQUENCY":"FREQUENCY","GAMMA":"GAMMA","GAMMADIST":"GAMMADIST","GAMMA.DIST":"GAMMA.DIST","GAMMAINV":"GAMMAINV","GAMMA.INV":"GAMMA.INV","GAMMALN":"GAMMALN","GAMMALN.PRECISE":"GAMMALN.PRECISE","GAUSS":"GAUSS","GEOMEAN":"GEOMEAN","HARMEAN":"HARMEAN","HYPGEOM.DIST":"HYPGEOM.DIST","HYPGEOMDIST":"HYPGEOMDIST","INTERCEPT":"INTERCEPT","KURT":"KURT","LARGE":"LARGE","LOGINV":"LOGINV","LOGNORM.DIST":"LOGNORM.DIST","LOGNORM.INV":"LOGNORM.INV","LOGNORMDIST":"LOGNORMDIST","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAXIFS","MEDIAN":"MEDIAN","MIN":"MIN","MINA":"MINA","MINIFS":"MINIFS","MODE":"MODE","MODE.MULT":"MODE.MULT","MODE.SNGL":"MODE.SNGL","NEGBINOM.DIST":"NEGBINOM.DIST","NEGBINOMDIST":"NEGBINOMDIST","NORM.DIST":"NORM.DIST","NORM.INV":"NORM.INV","NORM.S.DIST":"NORM.S.DIST","NORM.S.INV":"NORM.S.INV","NORMDIST":"NORMDIST","NORMINV":"NORMINV","NORMSDIST":"NORMSDIST","NORMSINV":"NORMSINV","PEARSON":"PEARSON","PERCENTILE":"PERCENTILE","PERCENTILE.EXC":"PERCENTILE.EXC","PERCENTILE.INC":"PERCENTILE.INC","PERCENTRANK":"PERCENTRANK","PERCENTRANK.EXC":"PERCENTRANK.EXC","PERCENTRANK.INC":"PERCENTRANK.INC","PERMUT":"PERMUT","PERMUTATIONA":"PERMUTATIONA","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"POISSON.DIST","PROB":"PROB","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INC","QUARTILE.EXC":"QUARTILE.EXC","RANK.AVG":"RANK.AVG","RANK.EQ":"RANK.EQ","RANK":"RANK","RSQ":"RSQ","SKEW":"SKEW","SKEW.P":"SKEW.P","SLOPE":"SLOPE","SMALL":"SMALL","STANDARDIZE":"STANDARDIZE","STDEV":"STDEV","STDEV.P":"STDEV.P","STDEV.S":"STDEV.S","STDEVA":"STDEVA","STDEVP":"STDEVP","STDEVPA":"STDEVPA","STEYX":"STEYX","TDIST":"TDIST","TINV":"TINV","T.DIST":"T.DIST","T.DIST.2T":"T.DIST.2T","T.DIST.RT":"T.DIST.RT","T.INV":"T.INV","T.INV.2T":"T.INV.2T","VAR":"VAR","VAR.P":"VAR.P","VAR.S":"VAR.S","VARA":"VARA","VARP":"VARP","VARPA":"VARPA","WEIBULL":"WEIBULL","WEIBULL.DIST":"WEIBULL.DIST","Z.TEST":"Z.TEST","ZTEST":"ZTEST","ACCRINT":"ACCRINT","ACCRINTM":"ACCRINTM","AMORDEGRC":"AMORDEGRC","AMORLINC":"AMORLINC","COUPDAYBS":"COUPDAYBS","COUPDAYS":"COUPDAYS","COUPDAYSNC":"COUPDAYSNC","COUPNCD":"COUPNCD","COUPNUM":"COUPNUM","COUPPCD":"COUPPCD","CUMIPMT":"CUMIPMT","CUMPRINC":"CUMPRINC","DB":"DB","DDB":"DDB","DISC":"DISC","DOLLARDE":"DOLLARDE","DOLLARFR":"DOLLARFR","DURATION":"DURATION","EFFECT":"EFFECT","FV":"FV","FVSCHEDULE":"FVSCHEDULE","INTRATE":"INTRATE","IPMT":"IPMT","IRR":"IRR","ISPMT":"ISPMT","MDURATION":"MDURATION","MIRR":"MIRR","NOMINAL":"NOMINAL","NPER":"NPER","NPV":"NPV","ODDFPRICE":"ODDFPRICE","ODDFYIELD":"ODDFYIELD","ODDLPRICE":"ODDLPRICE","ODDLYIELD":"ODDLYIELD","PDURATION":"PDURATION","PMT":"PMT","PPMT":"PPMT","PRICE":"PRICE","PRICEDISC":"PRICEDISC","PRICEMAT":"PRICEMAT","PV":"PV","RATE":"RATE","RECEIVED":"RECEIVED","RRI":"RRI","SLN":"SLN","SYD":"SYD","TBILLEQ":"TBILLEQ","TBILLPRICE":"TBILLPRICE","TBILLYIELD":"TBILLYIELD","VDB":"VDB","XIRR":"XIRR","XNPV":"XNPV","YIELD":"YIELD","YIELDDISC":"YIELDDISC","YIELDMAT":"YIELDMAT","ABS":"ABS","ACOS":"ACOS","ACOSH":"ACOSH","ACOT":"ACOT","ACOTH":"ACOTH","AGGREGATE":"AGGREGATE","ARABIC":"ARABIC","ASIN":"ASIN","ASINH":"ASINH","ATAN":"ATAN","ATAN2":"ATAN2","ATANH":"ATANH","BASE":"BASE","CEILING":"CEILING","CEILING.MATH":"CEILING.MATH","CEILING.PRECISE":"CEILING.PRESIZE","COMBIN":"COMBIN","COMBINA":"COMBINA","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMAL","DEGREES":"DEGREES","ECMA.CEILING":"ECMA.CEILING","EVEN":"EVEN","EXP":"EXP","FACT":"FACT","FACTDOUBLE":"FACTDOUBLE","FLOOR":"FLOOR","FLOOR.PRECISE":"FLOOR.PRECISE","FLOOR.MATH":"FLOOR.MATH","GCD":"GCD","INT":"INT","ISO.CEILING":"ISO.CEILING","LCM":"LCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MDETERM","MINVERSE":"MINVERSE","MMULT":"MMULT","MOD":"MOD","MROUND":"MROUND","MULTINOMIAL":"MULTINOMIAL","ODD":"ODD","PI":"PI","POWER":"POWER","PRODUCT":"PRODUCT","QUOTIENT":"QUOTIENT","RADIANS":"RADIANS","RAND":"RAND","RANDBETWEEN":"RANDBETWEEN","ROMAN":"ROMAN","ROUND":"ROUND","ROUNDDOWN":"ROUNDDOWN","ROUNDUP":"ROUNDUP","SEC":"SEC","SECH":"SECH","SERIESSUM":"SERIESSUM","SIGN":"SIGN","SIN":"SIN","SINH":"SINH","SQRT":"SQRT","SQRTPI":"SQRTPI","SUBTOTAL":"SUBTOTAL","SUM":"SUM","SUMIF":"SUMIF","SUMIFS":"SUMIFS","SUMPRODUCT":"SUMPRODUCT","SUMSQ":"SUMSQ","SUMX2MY2":"SUMX2MY2","SUMX2PY2":"SUMX2PY2","SUMXMY2":"SUMXMY2","TAN":"TAN","TANH":"TANH","TRUNC":"TRUNC","ADDRESS":"ADDRESS","CHOOSE":"CHOOSE","COLUMN":"COLUMN","COLUMNS":"COLUMNS","FORMULATEXT":"FORMULATEXT","HLOOKUP":"HLOOKUP","INDEX":"INDEX","INDIRECT":"INDIRECT","LOOKUP":"LOOKUP","MATCH":"MATCH","OFFSET":"OFFSET","ROW":"ROW","ROWS":"ROWS","TRANSPOSE":"TRANSPOSE","VLOOKUP":"VLOOKUP","ERROR.TYPE":"ERROR.TYPE","ISBLANK":"ISBLANK","ISERR":"ISERR","ISERROR":"ISERROR","ISEVEN":"ISEVEN","ISFORMULA":"ISFORMULA","ISLOGICAL":"ISLOGICAL","ISNA":"ISNA","ISNONTEXT":"ISNONTEXT","ISNUMBER":"ISNUMBER","ISODD":"ISODD","ISREF":"ISREF","ISTEXT":"ISTEXT","N":"N","NA":"NA","SHEET":"SHEET","SHEETS":"SHEETS","TYPE":"TYPE","AND":"AND","FALSE":"FALSE","IF":"IF","IFS":"IFS","IFERROR":"IFERROR","IFNA":"IFNA","NOT":"NOT","OR":"OR","SWITCH":"SWITCH","TRUE":"TRUE","XOR":"XOR","LocalFormulaOperands":{"StructureTables":{"h":"Headers","d":"Data","a":"All","tr":"This row","t":"Totals"},"CONST_TRUE_FALSE":{"t":"TRUE","f":"FALSE"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#VALUE!","ref":"#REF!","name":"#NAME\\?","num":"#NUM!","na":"#N/A","getdata":"#GETTING_DATA","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/resources/l10n/functions/fr.json b/apps/spreadsheeteditor/mobile/resources/l10n/functions/fr.json index a858d5ef0..cc07b6883 100644 --- a/apps/spreadsheeteditor/mobile/resources/l10n/functions/fr.json +++ b/apps/spreadsheeteditor/mobile/resources/l10n/functions/fr.json @@ -1 +1 @@ -{"DATE":"DATE","DATEDIF":"DATEDIF","DATEVALUE":"DATEVAL","DAY":"JOUR","DAYS":"JOURS","DAYS360":"JOURS360","EDATE":"MOIS.DECALER","EOMONTH":"FIN.MOIS","HOUR":"HEURE","ISOWEEKNUM":"NO.SEMAINE.ISO","MINUTE":"MINUTE","MONTH":"MOIS","NETWORKDAYS":"NB.JOURS.OUVRES","NETWORKDAYS.INTL":"NB.JOURS.OUVRES.INTL","NOW":"MAINTENANT","SECOND":"SECONDE","TIME":"TEMPS","TIMEVALUE":"TEMPSVAL","TODAY":"AUJOURDHUI","WEEKDAY":"JOURSEM","WEEKNUM":"NO.SEMAINE","WORKDAY":"SERIE.JOUR.OUVRE","WORKDAY.INTL":"SERIE.JOUR.OUVRE.INTL","YEAR":"ANNEE","YEARFRAC":"FRACTION.ANNEE","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BINDEC","BIN2HEX":"BINHEX","BIN2OCT":"BINOCT","BITAND":"BITET","BITLSHIFT":"BITDECALG","BITOR":"BITOU","BITRSHIFT":"BITDECALD","BITXOR":"BITOUEXCLUSIF","COMPLEX":"COMPLEXE","CONVERT":"CONVERT","DEC2BIN":"DECBIN","DEC2HEX":"DECHEX","DEC2OCT":"DECOCT","DELTA":"DELTA","ERF":"ERF","ERF.PRECISE":"ERFC.PRECIS","ERFC":"ERFC","ERFC.PRECISE":"ERFC.PRECIS","GESTEP":"SUP.SEUIL","HEX2BIN":"HEXBIN","HEX2DEC":"HEXDEC","HEX2OCT":"HEXOCT","IMABS":"COMPLEXE.MODULE","IMAGINARY":"COMPLEXE.IMAGINAIRE","IMARGUMENT":"COMPLEXE.ARGUMENT","IMCONJUGATE":"COMPLEXE.CONJUGUE","IMCOS":"COMPLEXE.COS","IMCOSH":"COMPLEXE.COSH","IMCOT":"COMPLEXE.COT","IMCSC":"COMPLEXE.CSC","IMCSCH":"COMPLEXE.CSCH","IMDIV":"COMPLEXE.DIV","IMEXP":"COMPLEXE.EXP","IMLN":"COMPLEXE.LN","IMLOG10":"COMPLEXE.LOG10","IMLOG2":"COMPLEXE.LOG2","IMPOWER":"COMPLEXE.PUISSANCE","IMPRODUCT":"COMPLEXE.PRODUIT","IMREAL":"COMPLEXE.REEL","IMSEC":"COMPLEXE.SEC","IMSECH":"COMPLEXE.SECH","IMSIN":"COMPLEXE.SIN","IMSINH":"COMPLEXE.SINH","IMSQRT":"COMPLEXE.RACINE","IMSUB":"COMPLEXE.DIFFERENCE","IMSUM":"COMPLEXE.SOMME","IMTAN":"COMPLEXE.TAN","OCT2BIN":"OCTBIN","OCT2DEC":"OCTDEC","OCT2HEX":"OCTHEX","DAVERAGE":"BDMOYENNE","DCOUNT":"BCOMPTE","DCOUNTA":"BDNBVAL","DGET":"BDLIRE","DMAX":"BDMAX","DMIN":"BDMIN","DPRODUCT":"BDPRODUIT","DSTDEV":"BDECARTYPE","DSTDEVP":"BDECARTYPEP","DSUM":"BDSOMME","DVAR":"BDVAR","DVARP":"BDVARP","CHAR":"CAR","CLEAN":"EPURAGE","CODE":"CODE","CONCATENATE":"CONCATENER","CONCAT":"CONCAT","DOLLAR":"DEVISE","EXACT":"EXACT","FIND":"TROUVE","FINDB":"TROUVERB","FIXED":"CTXT","LEFT":"GAUCHE","LEFTB":"GAUCHEB","LEN":"NBCAR","LENB":"LENB","LOWER":"MINUSCULE","MID":"STXT","MIDB":"MIDB","NUMBERVALUE":"VALEURNOMBRE","PROPER":"NOMPROPRE","REPLACE":"REMPLACER","REPLACEB":"REMPLACERB","REPT":"REPT","RIGHT":"DROITE","RIGHTB":"DROITEB","SEARCH":"CHERCHE","SEARCHB":"CHERCHERB","SUBSTITUTE":"SUBSTITUE","T":"Т","T.TEST":"T.TEST","TEXT":"TEXTE","TEXTJOIN":"JOINDRE.TEXTE","TRIM":"SUPPRESPACE","TRIMMEAN":"MOYENNE.REDUITE","TTEST":"TEST.STUDENT","UNICHAR":"UNICAR","UNICODE":"UNICODE","UPPER":"MAJUSCULE","VALUE":"VALEUR","AVEDEV":"ECART.MOYEN","AVERAGE":"MOYENNE","AVERAGEA":"AVERAGEA","AVERAGEIF":"MOYENNE.SI","AVERAGEIFS":"MOYENNE.SI.ENS","BETADIST":"LOI.BETA","BETA.DIST":"LOI.BETA.N","BETA.INV":"BETA.INVERSE","BINOMDIST":"LOI.BINOMIALE","BINOM.DIST":"LOI.BINOMIALE.N","BINOM.DIST.RANGE":"LOI.BINOMIALE.SERIE","BINOM.INV":"LOI.BINOMIALE.INVERSE","CHIDIST":"LOI.KHIDEUX","CHIINV":"KHIDEUX.INVERSE","CHITEST":"TEST.KHIDEUX","CHISQ.DIST":"LOI.KHIDEUX.N","CHISQ.DIST.RT":"LOI.KHIDEUX.DROITE","CHISQ.INV":"LOI.KHIDEUX.INVERSE","CHISQ.INV.RT":"LOI.KHIDEUX.INVERSE.DROITE","CHISQ.TEST":"CHISQ.TEST","CONFIDENCE":"INTERVALLE.CONFIANCE","CONFIDENCE.NORM":"INTERVALLE.CONFIANCE.NORMAL","CONFIDENCE.T":"INTERVALLE.CONFIANCE.STUDENT","CORREL":"COEFFICIENT.CORRELATION","COUNT":"NB","COUNTA":"NBVAL","COUNTBLANK":"NB.VIDE","COUNTIF":"NB.SI","COUNTIFS":"NB.SI.ENS","COVAR":"COVARIANCE","COVARIANCE.P":"COVARIANCE.PEARSON","COVARIANCE.S":"COVARIANCE.STANDARD","CRITBINOM":"CRITERE.LOI.BINOMIALE","DEVSQ":"SOMME.CARRES.ECARTS","EXPON.DIST":"LOI.EXPONENTIELLE.N","EXPONDIST":"LOI.EXPONENTIELLE","FDIST":"LOI.F","FINV":"INVERSE.LOI.F","FTEST":"TEST.F","F.DIST":"LOI.F.N","F.DIST.RT":"LOI.F.DROITE","F.INV":"INVERSE.LOI.F.N","F.INV.RT":"INVERSE.LOI.F.DROITE","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHER.INVERSE","FORECAST":"PREVISION","FORECAST.ETS":"PREVISION.ETS","FORECAST.ETS.CONFINT":"PREVISION.ETS.CONFINT","FORECAST.ETS.SEASONALITY":"PREVISION.ETS.CARACTERESAISONNIER","FORECAST.ETS.STAT":"PREVISION.ETS.STAT","FORECAST.LINEAR":"PREVISION.LINEAIRE","FREQUENCY":"FREQUENCE","GAMMA":"GAMMA","GAMMADIST":"LOI.GAMMA","GAMMA.DIST":"LOI.GAMMA.N","GAMMAINV":"LOI.GAMMA.INVERSE","GAMMA.INV":"LOI.GAMMA.INVERSE.N","GAMMALN":"LNGAMMA","GAMMALN.PRECISE":"LNGAMMA.PRECIS","GAUSS":"GAUSS","GEOMEAN":"MOYENNE.GEOMETRIQUE","HARMEAN":"MOYENNE.HARMONIQUE","HYPGEOM.DIST":"LOI.HYPERGEOMETRIQUE.N","HYPGEOMDIST":"LOI.HYPERGEOMETRIQUE","INTERCEPT":"ORDONNEE.ORIGINE","KURT":"KURTOSIS","LARGE":"GRANDE.VALEUR","LOGINV":"LOI.LOGNORMALE.INVERSE","LOGNORM.DIST":"LOI.LOGNORMALE.N","LOGNORM.INV":"LOI.LOGNORMALE.INVERSE.N","LOGNORMDIST":"LOI.LOGNORMALE","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAX.SI.ENS","MEDIAN":"MEDIANE","MIN":"MIN","MINA":"MINA","MINIFS":"MIN.SI.ENS","MODE":"MODE","MODE.MULT":"MODE.MULTIPLE","MODE.SNGL":"MODE.SIMPLE","NEGBINOM.DIST":"LOI.BINOMIALE.NEG.N","NEGBINOMDIST":"LOI.BINOMIALE.NEG","NORM.DIST":"LOI.NORMALE.N","NORM.INV":"LOI.NORMALE.INVERSE.N","NORM.S.DIST":"LOI.NORMALE.STANDARD.N","NORM.S.INV":"LOI.NORMALE.STANDARD.INVERSE.N","NORMDIST":"LOI.NORMALE","NORMINV":"LOI.NORMALE.INVERSE","NORMSDIST":"LOI.NORMALE.STANDARD","NORMSINV":"LOI.NORMALE.STANDARD.INVERSE","PEARSON":"PEARSON","PERCENTILE":"CENTILE","PERCENTILE.EXC":"CENTILE.EXCLURE","PERCENTILE.INC":"CENTILE.INCLURE","PERCENTRANK":"RANG.POURCENTAGE","PERCENTRANK.EXC":"RANG.POURCENTAGE.EXCLURE","PERCENTRANK.INC":"RANG.POURCENTAGE.INCLURE","PERMUT":"PERMUTATION","PERMUTATIONA":"PERMUTATIONA","PHI":"PHI","POISSON":"LOI.POISSON","POISSON.DIST":"LOI.POISSON.N","PROB":"PROBABILITE","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INCLURE","QUARTILE.EXC":"QUARTILE.EXCLURE","RANK.AVG":"MOYENNE.RANG","RANK.EQ":"EQUATION.RANG","RANK":"RANG","RSQ":"COEFFICIENT.DETERMINATION","SKEW":"COEFFICIENT.ASYMETRIE","SKEW.P":"COEFFICIENT.ASYMETRIE.P","SLOPE":"PENTE","SMALL":"PETITE.VALEUR","STANDARDIZE":"CENTREE.REDUITE","STDEV":"ECARTYPE","STDEV.P":"ECARTYPE.PEARSON","STDEV.S":"ECARTYPE.STANDARD","STDEVA":"STDEVA","STDEVP":"ECARTYPEP","STDEVPA":"STDEVPA","STEYX":"ERREUR.TYPE.XY","TDIST":"LOI.STUDENT","TINV":"LOI.STUDENT.INVERSE","T.DIST":"LOI.STUDENT.N","T.DIST.2T":"LOI.STUDENT.BILATERALE","T.DIST.RT":"LOI.STUDENT.DROITE","T.INV":"LOI.STUDENT.INVERSE.N","T.INV.2T":"LOI.STUDENT.INVERSE.BILATERALE","VAR":"VAR","VAR.P":"VAR.P.N","VAR.S":"VAR.S","VARA":"VARA","VARP":"VAR.P","VARPA":"VARPA","WEIBULL":"LOI.WEIBULL","WEIBULL.DIST":"LOI.WEIBULL.N","Z.TEST":"Z.TEST","ZTEST":"TEST.Z","ACCRINT":"INTERET.ACC","ACCRINTM":"INTERET.ACC.MAT","AMORDEGRC":"AMORDEGRC","AMORLINC":"AMORLINC","COUPDAYBS":"NB.JOURS.COUPON.PREC","COUPDAYS":"NB.JOURS.COUPONS","COUPDAYSNC":"NB.JOURS.COUPON.SUIV","COUPNCD":"DATE.COUPON.SUIV","COUPNUM":"NB.COUPONS","COUPPCD":"DATE.COUPON.PREC","CUMIPMT":"CUMUL.INTER","CUMPRINC":"CUMUL.PRINCPER","DB":"DB","DDB":"DDB","DISC":"TAUX.ESCOMPTE","DOLLARDE":"PRIX.DEC","DOLLARFR":"PRIX.FRAC","DURATION":"DUREE","EFFECT":"TAUX.EFFECTIF","FV":"VC","FVSCHEDULE":"VC.PAIEMENTS","INTRATE":"TAUX.INTERET","IPMT":"INTPER","IRR":"TRI","ISPMT":"ISPMT","MDURATION":"DUREE.MODIFIEE","MIRR":"TRIM","NOMINAL":"TAUX.NOMINAL","NPER":"NPM","NPV":"VAN","ODDFPRICE":"PRIX.PCOUPON.IRREG","ODDFYIELD":"REND.PCOUPON.IRREG","ODDLPRICE":"PRIX.DCOUPON.IRREG","ODDLYIELD":"REND.DCOUPON.IRREG","PDURATION":"PDUREE","PMT":"VPM","PPMT":"PRINCPER","PRICE":"PRIX.TITRE","PRICEDISC":"VALEUR.ENCAISSEMENT","PRICEMAT":"PRIX.TITRE.ECHEANCE","PV":"VA","RATE":"TAUX","RECEIVED":"VALEUR.NOMINALE","RRI":"TAUX.INT.EQUIV","SLN":"AMORLIN","SYD":"AMORANN","TBILLEQ":"TAUX.ESCOMPTE.R","TBILLPRICE":"PRIX.BON.TRESOR","TBILLYIELD":"RENDEMENT.BON.TRESOR","VDB":"VDB","XIRR":"TRI.PAIEMENTS","XNPV":"VAN.PAIEMENTS","YIELD":"RENDEMENT.TITRE","YIELDDISC":"RENDEMENT.SIMPLE","YIELDMAT":"RENDEMENT.TITRE.ECHEANCE","ABS":"ABS","ACOS":"ACOS","ACOSH":"ACOSH","ACOT":"ACOT","ACOTH":"ACOTH","AGGREGATE":"AGREGAT","ARABIC":"CHIFFRE.ARABE","ASIN":"ASIN","ASINH":"ASINH","ATAN":"ATAN","ATAN2":"ATAN2","ATANH":"ATANH","BASE":"BASE","CEILING":"PLAFOND","CEILING.MATH":"PLAFOND.MATH","CEILING.PRECISE":"PLAFOND.PRECIS","COMBIN":"COMBIN","COMBINA":"COMBINA","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMAL","DEGREES":"DEGRES","ECMA.CEILING":"ECMA.PLAFOND","EVEN":"PAIR","EXP":"EXP","FACT":"FACT","FACTDOUBLE":"FACTDOUBLE","FLOOR":"PLANCHER","FLOOR.PRECISE":"PLANCHER.PRECIS","FLOOR.MATH":"PLANCHER.MATH","GCD":"PGCD","INT":"ENT","ISO.CEILING":"ISO.PLAFOND","LCM":"PPCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"DETERMAT","MINVERSE":"INVERSEMAT","MMULT":"PRODUITMAT","MOD":"MOD","MROUND":"ARRONDI.AU.MULTIPLE","MULTINOMIAL":"MULTINOMIALE","ODD":"IMPAIR","PI":"PI","POWER":"PUISSANCE","PRODUCT":"PRODUIT","QUOTIENT":"QUOTIENT","RADIANS":"RADIANS","RAND":"ALEA","RANDBETWEEN":"ALEA.ENTRE.BORNES","ROMAN":"ROMAIN","ROUND":"ARRONDI","ROUNDDOWN":"ARRONDI.INF","ROUNDUP":"ARRONDI.SUP","SEC":"SEC","SECH":"SECH","SERIESSUM":"SOMME.SERIES","SIGN":"SIGNE","SIN":"SIN","SINH":"SINH","SQRT":"RACINE","SQRTPI":"RACINE.PI","SUBTOTAL":"SOUS.TOTAL","SUM":"SOMME","SUMIF":"SOMME.SI","SUMIFS":"SOMME.SI.ENS","SUMPRODUCT":"SOMMEPROD","SUMSQ":"SOMME.CARRES","SUMX2MY2":"SOMME.X2MY2","SUMX2PY2":"SOMME.X2PY2","SUMXMY2":"SOMME.XMY2","TAN":"TAN","TANH":"TANH","TRUNC":"TRONQUE","ADDRESS":"ADRESSE","CHOOSE":"CHOISIR","COLUMN":"COLONNE","COLUMNS":"COLONNES","FORMULATEXT":"FORMULETEXTE","HLOOKUP":"RECHERCHEH","INDEX":"INDEX","INDIRECT":"INDIRECT","LOOKUP":"RECHERCHE","MATCH":"EQUIV","OFFSET":"DECALER","ROW":"LIGNE","ROWS":"LIGNES","TRANSPOSE":"TRANSPOSE","VLOOKUP":"RECHERCHEV","ERROR.TYPE":"TYPE.ERREUR","ISBLANK":"ESTVIDE","ISERR":"ESTERR","ISERROR":"ESTERREUR","ISEVEN":"EST.PAIR","ISFORMULA":"ESTFORMULE","ISLOGICAL":"ESTLOGIQUE","ISNA":"ESTNA","ISNONTEXT":"ESTNONTEXTE","ISNUMBER":"ESTNUM","ISODD":"EST.IMPAIR","ISREF":"ESTREF","ISTEXT":"ESTTEXTE","N":"N","NA":"NA","SHEET":"FEUILLE","SHEETS":"FEUILLES","TYPE":"TYPE","AND":"ET","FALSE":"FAUX","IF":"SI","IFS":"SI.CONDITIONS","IFERROR":"SIERREUR","IFNA":"SI.NON.DISP","NOT":"PAS","OR":"OU","SWITCH":"SI.MULTIPLE","TRUE":"VRAI","XOR":"OUX","LocalFormulaOperands":{"StructureTables":{"h":"En-têtes","d":"Données","a":"Tous","tr":"Cette ligne","t":"Totaux"},"CONST_TRUE_FALSE":{"t":"VRAI","f":"FAUX"},"CONST_ERROR":{"nil":"#NUL!","div":"#DIV/0!","value":"#VALEUR!","ref":"#REF!","name":"#NOM\\?","num":"#NOMBRE!","na":"#N/A","getdata":"#CHARGEMENT_DONNEES","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file +{"DATE":"DATE","DATEDIF":"DATEDIF","DATEVALUE":"DATEVAL","DAY":"JOUR","DAYS":"JOURS","DAYS360":"JOURS360","EDATE":"MOIS.DECALER","EOMONTH":"FIN.MOIS","HOUR":"HEURE","ISOWEEKNUM":"NO.SEMAINE.ISO","MINUTE":"MINUTE","MONTH":"MOIS","NETWORKDAYS":"NB.JOURS.OUVRES","NETWORKDAYS.INTL":"NB.JOURS.OUVRES.INTL","NOW":"MAINTENANT","SECOND":"SECONDE","TIME":"TEMPS","TIMEVALUE":"TEMPSVAL","TODAY":"AUJOURDHUI","WEEKDAY":"JOURSEM","WEEKNUM":"NO.SEMAINE","WORKDAY":"SERIE.JOUR.OUVRE","WORKDAY.INTL":"SERIE.JOUR.OUVRE.INTL","YEAR":"ANNEE","YEARFRAC":"FRACTION.ANNEE","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BINDEC","BIN2HEX":"BINHEX","BIN2OCT":"BINOCT","BITAND":"BITET","BITLSHIFT":"BITDECALG","BITOR":"BITOU","BITRSHIFT":"BITDECALD","BITXOR":"BITOUEXCLUSIF","COMPLEX":"COMPLEXE","CONVERT":"CONVERT","DEC2BIN":"DECBIN","DEC2HEX":"DECHEX","DEC2OCT":"DECOCT","DELTA":"DELTA","ERF":"ERF","ERF.PRECISE":"ERFC.PRECIS","ERFC":"ERFC","ERFC.PRECISE":"ERFC.PRECIS","GESTEP":"SUP.SEUIL","HEX2BIN":"HEXBIN","HEX2DEC":"HEXDEC","HEX2OCT":"HEXOCT","IMABS":"COMPLEXE.MODULE","IMAGINARY":"COMPLEXE.IMAGINAIRE","IMARGUMENT":"COMPLEXE.ARGUMENT","IMCONJUGATE":"COMPLEXE.CONJUGUE","IMCOS":"COMPLEXE.COS","IMCOSH":"COMPLEXE.COSH","IMCOT":"COMPLEXE.COT","IMCSC":"COMPLEXE.CSC","IMCSCH":"COMPLEXE.CSCH","IMDIV":"COMPLEXE.DIV","IMEXP":"COMPLEXE.EXP","IMLN":"COMPLEXE.LN","IMLOG10":"COMPLEXE.LOG10","IMLOG2":"COMPLEXE.LOG2","IMPOWER":"COMPLEXE.PUISSANCE","IMPRODUCT":"COMPLEXE.PRODUIT","IMREAL":"COMPLEXE.REEL","IMSEC":"COMPLEXE.SEC","IMSECH":"COMPLEXE.SECH","IMSIN":"COMPLEXE.SIN","IMSINH":"COMPLEXE.SINH","IMSQRT":"COMPLEXE.RACINE","IMSUB":"COMPLEXE.DIFFERENCE","IMSUM":"COMPLEXE.SOMME","IMTAN":"COMPLEXE.TAN","OCT2BIN":"OCTBIN","OCT2DEC":"OCTDEC","OCT2HEX":"OCTHEX","DAVERAGE":"BDMOYENNE","DCOUNT":"BCOMPTE","DCOUNTA":"BDNBVAL","DGET":"BDLIRE","DMAX":"BDMAX","DMIN":"BDMIN","DPRODUCT":"BDPRODUIT","DSTDEV":"BDECARTYPE","DSTDEVP":"BDECARTYPEP","DSUM":"BDSOMME","DVAR":"BDVAR","DVARP":"BDVARP","CHAR":"CAR","CLEAN":"EPURAGE","CODE":"CODE","CONCATENATE":"CONCATENER","CONCAT":"CONCAT","DOLLAR":"DEVISE","EXACT":"EXACT","FIND":"TROUVE","FINDB":"TROUVERB","FIXED":"CTXT","LEFT":"GAUCHE","LEFTB":"GAUCHEB","LEN":"NBCAR","LENB":"LENB","LOWER":"MINUSCULE","MID":"STXT","MIDB":"MIDB","NUMBERVALUE":"VALEURNOMBRE","PROPER":"NOMPROPRE","REPLACE":"REMPLACER","REPLACEB":"REMPLACERB","REPT":"REPT","RIGHT":"DROITE","RIGHTB":"DROITEB","SEARCH":"CHERCHE","SEARCHB":"CHERCHERB","SUBSTITUTE":"SUBSTITUE","T":"T","T.TEST":"T.TEST","TEXT":"TEXTE","TEXTJOIN":"JOINDRE.TEXTE","TRIM":"SUPPRESPACE","TRIMMEAN":"MOYENNE.REDUITE","TTEST":"TEST.STUDENT","UNICHAR":"UNICAR","UNICODE":"UNICODE","UPPER":"MAJUSCULE","VALUE":"VALEUR","AVEDEV":"ECART.MOYEN","AVERAGE":"MOYENNE","AVERAGEA":"AVERAGEA","AVERAGEIF":"MOYENNE.SI","AVERAGEIFS":"MOYENNE.SI.ENS","BETADIST":"LOI.BETA","BETA.DIST":"LOI.BETA.N","BETA.INV":"BETA.INVERSE","BINOMDIST":"LOI.BINOMIALE","BINOM.DIST":"LOI.BINOMIALE.N","BINOM.DIST.RANGE":"LOI.BINOMIALE.SERIE","BINOM.INV":"LOI.BINOMIALE.INVERSE","CHIDIST":"LOI.KHIDEUX","CHIINV":"KHIDEUX.INVERSE","CHITEST":"TEST.KHIDEUX","CHISQ.DIST":"LOI.KHIDEUX.N","CHISQ.DIST.RT":"LOI.KHIDEUX.DROITE","CHISQ.INV":"LOI.KHIDEUX.INVERSE","CHISQ.INV.RT":"LOI.KHIDEUX.INVERSE.DROITE","CHISQ.TEST":"CHISQ.TEST","CONFIDENCE":"INTERVALLE.CONFIANCE","CONFIDENCE.NORM":"INTERVALLE.CONFIANCE.NORMAL","CONFIDENCE.T":"INTERVALLE.CONFIANCE.STUDENT","CORREL":"COEFFICIENT.CORRELATION","COUNT":"NB","COUNTA":"NBVAL","COUNTBLANK":"NB.VIDE","COUNTIF":"NB.SI","COUNTIFS":"NB.SI.ENS","COVAR":"COVARIANCE","COVARIANCE.P":"COVARIANCE.PEARSON","COVARIANCE.S":"COVARIANCE.STANDARD","CRITBINOM":"CRITERE.LOI.BINOMIALE","DEVSQ":"SOMME.CARRES.ECARTS","EXPON.DIST":"LOI.EXPONENTIELLE.N","EXPONDIST":"LOI.EXPONENTIELLE","FDIST":"LOI.F","FINV":"INVERSE.LOI.F","FTEST":"TEST.F","F.DIST":"LOI.F.N","F.DIST.RT":"LOI.F.DROITE","F.INV":"INVERSE.LOI.F.N","F.INV.RT":"INVERSE.LOI.F.DROITE","F.TEST":"F.TEST","FISHER":"FISHER","FISHERINV":"FISHER.INVERSE","FORECAST":"PREVISION","FORECAST.ETS":"PREVISION.ETS","FORECAST.ETS.CONFINT":"PREVISION.ETS.CONFINT","FORECAST.ETS.SEASONALITY":"PREVISION.ETS.CARACTERESAISONNIER","FORECAST.ETS.STAT":"PREVISION.ETS.STAT","FORECAST.LINEAR":"PREVISION.LINEAIRE","FREQUENCY":"FREQUENCE","GAMMA":"GAMMA","GAMMADIST":"LOI.GAMMA","GAMMA.DIST":"LOI.GAMMA.N","GAMMAINV":"LOI.GAMMA.INVERSE","GAMMA.INV":"LOI.GAMMA.INVERSE.N","GAMMALN":"LNGAMMA","GAMMALN.PRECISE":"LNGAMMA.PRECIS","GAUSS":"GAUSS","GEOMEAN":"MOYENNE.GEOMETRIQUE","HARMEAN":"MOYENNE.HARMONIQUE","HYPGEOM.DIST":"LOI.HYPERGEOMETRIQUE.N","HYPGEOMDIST":"LOI.HYPERGEOMETRIQUE","INTERCEPT":"ORDONNEE.ORIGINE","KURT":"KURTOSIS","LARGE":"GRANDE.VALEUR","LOGINV":"LOI.LOGNORMALE.INVERSE","LOGNORM.DIST":"LOI.LOGNORMALE.N","LOGNORM.INV":"LOI.LOGNORMALE.INVERSE.N","LOGNORMDIST":"LOI.LOGNORMALE","MAX":"MAX","MAXA":"MAXA","MAXIFS":"MAX.SI.ENS","MEDIAN":"MEDIANE","MIN":"MIN","MINA":"MINA","MINIFS":"MIN.SI.ENS","MODE":"MODE","MODE.MULT":"MODE.MULTIPLE","MODE.SNGL":"MODE.SIMPLE","NEGBINOM.DIST":"LOI.BINOMIALE.NEG.N","NEGBINOMDIST":"LOI.BINOMIALE.NEG","NORM.DIST":"LOI.NORMALE.N","NORM.INV":"LOI.NORMALE.INVERSE.N","NORM.S.DIST":"LOI.NORMALE.STANDARD.N","NORM.S.INV":"LOI.NORMALE.STANDARD.INVERSE.N","NORMDIST":"LOI.NORMALE","NORMINV":"LOI.NORMALE.INVERSE","NORMSDIST":"LOI.NORMALE.STANDARD","NORMSINV":"LOI.NORMALE.STANDARD.INVERSE","PEARSON":"PEARSON","PERCENTILE":"CENTILE","PERCENTILE.EXC":"CENTILE.EXCLURE","PERCENTILE.INC":"CENTILE.INCLURE","PERCENTRANK":"RANG.POURCENTAGE","PERCENTRANK.EXC":"RANG.POURCENTAGE.EXCLURE","PERCENTRANK.INC":"RANG.POURCENTAGE.INCLURE","PERMUT":"PERMUTATION","PERMUTATIONA":"PERMUTATIONA","PHI":"PHI","POISSON":"LOI.POISSON","POISSON.DIST":"LOI.POISSON.N","PROB":"PROBABILITE","QUARTILE":"QUARTILE","QUARTILE.INC":"QUARTILE.INCLURE","QUARTILE.EXC":"QUARTILE.EXCLURE","RANK.AVG":"MOYENNE.RANG","RANK.EQ":"EQUATION.RANG","RANK":"RANG","RSQ":"COEFFICIENT.DETERMINATION","SKEW":"COEFFICIENT.ASYMETRIE","SKEW.P":"COEFFICIENT.ASYMETRIE.P","SLOPE":"PENTE","SMALL":"PETITE.VALEUR","STANDARDIZE":"CENTREE.REDUITE","STDEV":"ECARTYPE","STDEV.P":"ECARTYPE.PEARSON","STDEV.S":"ECARTYPE.STANDARD","STDEVA":"STDEVA","STDEVP":"ECARTYPEP","STDEVPA":"STDEVPA","STEYX":"ERREUR.TYPE.XY","TDIST":"LOI.STUDENT","TINV":"LOI.STUDENT.INVERSE","T.DIST":"LOI.STUDENT.N","T.DIST.2T":"LOI.STUDENT.BILATERALE","T.DIST.RT":"LOI.STUDENT.DROITE","T.INV":"LOI.STUDENT.INVERSE.N","T.INV.2T":"LOI.STUDENT.INVERSE.BILATERALE","VAR":"VAR","VAR.P":"VAR.P.N","VAR.S":"VAR.S","VARA":"VARA","VARP":"VAR.P","VARPA":"VARPA","WEIBULL":"LOI.WEIBULL","WEIBULL.DIST":"LOI.WEIBULL.N","Z.TEST":"Z.TEST","ZTEST":"TEST.Z","ACCRINT":"INTERET.ACC","ACCRINTM":"INTERET.ACC.MAT","AMORDEGRC":"AMORDEGRC","AMORLINC":"AMORLINC","COUPDAYBS":"NB.JOURS.COUPON.PREC","COUPDAYS":"NB.JOURS.COUPONS","COUPDAYSNC":"NB.JOURS.COUPON.SUIV","COUPNCD":"DATE.COUPON.SUIV","COUPNUM":"NB.COUPONS","COUPPCD":"DATE.COUPON.PREC","CUMIPMT":"CUMUL.INTER","CUMPRINC":"CUMUL.PRINCPER","DB":"DB","DDB":"DDB","DISC":"TAUX.ESCOMPTE","DOLLARDE":"PRIX.DEC","DOLLARFR":"PRIX.FRAC","DURATION":"DUREE","EFFECT":"TAUX.EFFECTIF","FV":"VC","FVSCHEDULE":"VC.PAIEMENTS","INTRATE":"TAUX.INTERET","IPMT":"INTPER","IRR":"TRI","ISPMT":"ISPMT","MDURATION":"DUREE.MODIFIEE","MIRR":"TRIM","NOMINAL":"TAUX.NOMINAL","NPER":"NPM","NPV":"VAN","ODDFPRICE":"PRIX.PCOUPON.IRREG","ODDFYIELD":"REND.PCOUPON.IRREG","ODDLPRICE":"PRIX.DCOUPON.IRREG","ODDLYIELD":"REND.DCOUPON.IRREG","PDURATION":"PDUREE","PMT":"VPM","PPMT":"PRINCPER","PRICE":"PRIX.TITRE","PRICEDISC":"VALEUR.ENCAISSEMENT","PRICEMAT":"PRIX.TITRE.ECHEANCE","PV":"VA","RATE":"TAUX","RECEIVED":"VALEUR.NOMINALE","RRI":"TAUX.INT.EQUIV","SLN":"AMORLIN","SYD":"AMORANN","TBILLEQ":"TAUX.ESCOMPTE.R","TBILLPRICE":"PRIX.BON.TRESOR","TBILLYIELD":"RENDEMENT.BON.TRESOR","VDB":"VDB","XIRR":"TRI.PAIEMENTS","XNPV":"VAN.PAIEMENTS","YIELD":"RENDEMENT.TITRE","YIELDDISC":"RENDEMENT.SIMPLE","YIELDMAT":"RENDEMENT.TITRE.ECHEANCE","ABS":"ABS","ACOS":"ACOS","ACOSH":"ACOSH","ACOT":"ACOT","ACOTH":"ACOTH","AGGREGATE":"AGREGAT","ARABIC":"CHIFFRE.ARABE","ASIN":"ASIN","ASINH":"ASINH","ATAN":"ATAN","ATAN2":"ATAN2","ATANH":"ATANH","BASE":"BASE","CEILING":"PLAFOND","CEILING.MATH":"PLAFOND.MATH","CEILING.PRECISE":"PLAFOND.PRECIS","COMBIN":"COMBIN","COMBINA":"COMBINA","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMAL","DEGREES":"DEGRES","ECMA.CEILING":"ECMA.PLAFOND","EVEN":"PAIR","EXP":"EXP","FACT":"FACT","FACTDOUBLE":"FACTDOUBLE","FLOOR":"PLANCHER","FLOOR.PRECISE":"PLANCHER.PRECIS","FLOOR.MATH":"PLANCHER.MATH","GCD":"PGCD","INT":"ENT","ISO.CEILING":"ISO.PLAFOND","LCM":"PPCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"DETERMAT","MINVERSE":"INVERSEMAT","MMULT":"PRODUITMAT","MOD":"MOD","MROUND":"ARRONDI.AU.MULTIPLE","MULTINOMIAL":"MULTINOMIALE","ODD":"IMPAIR","PI":"PI","POWER":"PUISSANCE","PRODUCT":"PRODUIT","QUOTIENT":"QUOTIENT","RADIANS":"RADIANS","RAND":"ALEA","RANDBETWEEN":"ALEA.ENTRE.BORNES","ROMAN":"ROMAIN","ROUND":"ARRONDI","ROUNDDOWN":"ARRONDI.INF","ROUNDUP":"ARRONDI.SUP","SEC":"SEC","SECH":"SECH","SERIESSUM":"SOMME.SERIES","SIGN":"SIGNE","SIN":"SIN","SINH":"SINH","SQRT":"RACINE","SQRTPI":"RACINE.PI","SUBTOTAL":"SOUS.TOTAL","SUM":"SOMME","SUMIF":"SOMME.SI","SUMIFS":"SOMME.SI.ENS","SUMPRODUCT":"SOMMEPROD","SUMSQ":"SOMME.CARRES","SUMX2MY2":"SOMME.X2MY2","SUMX2PY2":"SOMME.X2PY2","SUMXMY2":"SOMME.XMY2","TAN":"TAN","TANH":"TANH","TRUNC":"TRONQUE","ADDRESS":"ADRESSE","CHOOSE":"CHOISIR","COLUMN":"COLONNE","COLUMNS":"COLONNES","FORMULATEXT":"FORMULETEXTE","HLOOKUP":"RECHERCHEH","INDEX":"INDEX","INDIRECT":"INDIRECT","LOOKUP":"RECHERCHE","MATCH":"EQUIV","OFFSET":"DECALER","ROW":"LIGNE","ROWS":"LIGNES","TRANSPOSE":"TRANSPOSE","VLOOKUP":"RECHERCHEV","ERROR.TYPE":"TYPE.ERREUR","ISBLANK":"ESTVIDE","ISERR":"ESTERR","ISERROR":"ESTERREUR","ISEVEN":"EST.PAIR","ISFORMULA":"ESTFORMULE","ISLOGICAL":"ESTLOGIQUE","ISNA":"ESTNA","ISNONTEXT":"ESTNONTEXTE","ISNUMBER":"ESTNUM","ISODD":"EST.IMPAIR","ISREF":"ESTREF","ISTEXT":"ESTTEXTE","N":"N","NA":"NA","SHEET":"FEUILLE","SHEETS":"FEUILLES","TYPE":"TYPE","AND":"ET","FALSE":"FAUX","IF":"SI","IFS":"SI.CONDITIONS","IFERROR":"SIERREUR","IFNA":"SI.NON.DISP","NOT":"PAS","OR":"OU","SWITCH":"SI.MULTIPLE","TRUE":"VRAI","XOR":"OUX","LocalFormulaOperands":{"StructureTables":{"h":"En-têtes","d":"Données","a":"Tous","tr":"Cette ligne","t":"Totaux"},"CONST_TRUE_FALSE":{"t":"VRAI","f":"FAUX"},"CONST_ERROR":{"nil":"#NUL!","div":"#DIV/0!","value":"#VALEUR!","ref":"#REF!","name":"#NOM\\?","num":"#NOMBRE!","na":"#N/A","getdata":"#CHARGEMENT_DONNEES","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file diff --git a/apps/spreadsheeteditor/mobile/resources/l10n/functions/it.json b/apps/spreadsheeteditor/mobile/resources/l10n/functions/it.json index 20d1216db..f74574abb 100644 --- a/apps/spreadsheeteditor/mobile/resources/l10n/functions/it.json +++ b/apps/spreadsheeteditor/mobile/resources/l10n/functions/it.json @@ -1 +1 @@ -{"DATE":"DATA","DATEDIF":"DATEDIF","DATEVALUE":"DATE.VALORE","DAY":"GIORNO","DAYS":"GIORNI","DAYS360":"GIORNO360","EDATE":"DATA.MESE","EOMONTH":"FINE.MESE","HOUR":"ORA","ISOWEEKNUM":"NUM.SETTIMANA.ISO","MINUTE":"MINUTO","MONTH":"MESI","NETWORKDAYS":"GIORNI.LAVORATIVI.TOT","NETWORKDAYS.INTL":"GIORNI.LAVORATIVI.TOT.INTL","NOW":"ORA","SECOND":"SECONDO","TIME":"ORARIO","TIMEVALUE":"ORARIO.VALORE","TODAY":"OGGI","WEEKDAY":"GIORNO.SETTIMANA","WEEKNUM":"NUM.SETTIMANA","WORKDAY":"GIORNO.LAVORATIVO","WORKDAY.INTL":"GIORNO.LAVORATIVO.INTL","YEAR":"ANNO","YEARFRAC":"FRAZIONE.ANNO","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BINARIO.DECIMALE","BIN2HEX":"BINARIO.HEX","BIN2OCT":"BINARIO.OCT","BITAND":"BITAND","BITLSHIFT":"BIT.SPOSTA.SX","BITOR":"BITOR","BITRSHIFT":"BIT.SPOSTA.DX","BITXOR":"BITXOR","COMPLEX":"COMPLESSO","DEC2BIN":"DECIMALE.BINARIO","DEC2HEX":"DECIMALE.HEX","DEC2OCT":"DECIMALE.OCT","DELTA":"DELTA","ERF":"FUNZ.ERRORE","ERF.PRECISE":"FUNZ.ERRORE.PRECISA","ERFC":"FUNZ.ERRORE.COMP","ERFC.PRECISE":"FUNZ.ERRORE.COMP.PRECISA","GESTEP":"SOGLIA","HEX2BIN":"HEX.BINARIO","HEX2DEC":"HEX.DECIMALE","HEX2OCT":"HEX.OCT","IMABS":"COMP.MODULO","IMAGINARY":"COMP.IMMAGINARIO","IMARGUMENT":"COMP.ARGOMENTO","IMCONJUGATE":"COMP.CONIUGATO","IMCOS":"COMP.COS","IMCOSH":"COMP.COSH","IMCOT":"COMP.COT","IMCSC":"COMP.CSC","IMCSCH":"COMP.CSCH","IMDIV":"COMP.DIV","IMEXP":"COMP.EXP","IMLN":"COMP.LN","IMLOG10":"COMP.LOG10","IMLOG2":"COMP.LOG2","IMPOWER":"COMP.POTENZA","IMPRODUCT":"COMP.PRODOTTO","IMREAL":"COMP.PARTE.REALE","IMSEC":"COMP.SEC","IMSECH":"COMP.SECH","IMSIN":"COMP.SEN","IMSINH":"COMP.SENH","IMSQRT":"COMP.RADQ","IMSUB":"COMP.DIFF","IMSUM":"COMP.SOMMA","IMTAN":"COMP.TAN","OCT2BIN":"OCT.BINARIO","OCT2DEC":"OCT.DECIMALE","OCT2HEX":"OCT.HEX","DAVERAGE":"DB.MEDIA","DCOUNT":"DB.CONTA.NUMERI","DCOUNTA":"DB.CONTA.VALORI","DGET":"DB.VALORI","DMAX":"DB.MAX","DMIN":"DB.MIN","DPRODUCT":"DB.PRODOTTO","DSTDEV":"DB.DEV.ST","DSTDEVP":"DB.DEV.ST.POP","DSUM":"DB.SOMMA","DVAR":"DB.VAR","DVARP":"DB.VAR.POP","CHAR":"CODICE.CARATT","CLEAN":"LIBERA","CODE":"CODICE","CONCATENATE":"CONCATENA","CONCAT":"CONCATENA","DOLLAR":"VALUTA","EXACT":"IDENTICO","FIND":"TROVA","FINDB":"FINDB","FIXED":"FISSO","LEFT":"SINISTRA","LEFTB":"LEFTB","LEN":"LUNGHEZZA","LENB":"LENB","LOWER":"MINUSC","MID":"STRINGA.ESTRAI","MIDB":"MIDB","NUMBERVALUE":"NUMERO.VALORE","PROPER":"MAIUSC.INIZ","REPLACE":"RIMPIAZZA","REPLACEB":"REPLACEB","REPT":"RIPETI","RIGHT":"DESTRA","RIGHTB":"RIGHTB","SEARCH":"RICERCA","SEARCHB":"SEARCHB","SUBSTITUTE":"SOSTITUISCI","T":"Т","T.TEST":"TESTT","TEXT":"TESTO","TEXTJOIN":"TEXTJOIN","TRIM":"ANNULLA.SPAZI","TRIMMEAN":"MEDIA.TRONCATA","TTEST":"TEST.T","UNICHAR":"CARATT.UNI","UNICODE":"UNICODE","UPPER":"MAIUSCOL","VALUE":"VALORE","AVEDEV":"MEDIA.DEV","AVERAGE":"MEDIA","AVERAGEA":"MEDIA.VALORI","AVERAGEIF":"MEDIA.SE","AVERAGEIFS":"MEDIA.PIÙ.SE","BETADIST":"DISTRIB.BETA","BETA.DIST":"DISTRIB.BETA.N","BETA.INV":"INV.BETA.N","BINOMDIST":"DISTRIB.BINOM","BINOM.DIST":"DISTRIB.BINOM.N","BINOM.DIST.RANGE":"INTERVALLO.DISTRIB.BINOM.N.","BINOM.INV":"INV.BINOM","CHIDIST":"DISTRIB.CHI","CHIINV":"INV.CHI","CHITEST":"TEST.CHI","CHISQ.DIST":"DISTRIB.CHI.QUAD","CHISQ.DIST.RT":"DISTRIB.CHI.QUAD.DS","CHISQ.INV":"INV.CHI.QUAD","CHISQ.INV.RT":"INV.CHI.QUAD.DS","CHISQ.TEST":"TEST.CHI.QUAD","CONFIDENCE":"CONFIDENZA","CONFIDENCE.NORM":"CONFIDENZA.NORM","CONFIDENCE.T":"CONFIDENZA.T","CORREL":"CORRELAZIONE","COUNT":"CONTA.NUMERI","COUNTA":"COUNTA","COUNTBLANK":"CONTA.VUOTE","COUNTIF":"CONTA.SE","COUNTIFS":"CONTA.PIÙ.SE","COVAR":"COVARIANZA","COVARIANCE.P":"COVARIANZA.P","COVARIANCE.S":"COVARIANZA.C","CRITBINOM":"CRIT.BINOM","DEVSQ":"DEV.Q","EXPON.DIST":"DISTRIB.EXP.N","EXPONDIST":"EXPONDIST","FDIST":"DISTRIB.F","FINV":"INV.F","F.DIST":"DISTRIBF","F.DIST.RT":"DISTRIB.F.DS","F.INV":"INVF","F.INV.RT":"INV.F.DS","FISHER":"FISHER","FISHERINV":"INV.FISHER","FORECAST":"PREVISIONE","FORECAST.LINEAR":"PREVISIONE.LINEARE","FREQUENCY":"FREQUENZA","GAMMA":"GAMMA","GAMMADIST":"DISTRIB.GAMMA","GAMMA.DIST":"DISTRIB.GAMMA.N","GAMMAINV":"INV.GAMMA","GAMMA.INV":"INV.GAMMA.N","GAMMALN":"LN.GAMMA","GAMMALN.PRECISE":"LN.GAMMA.PRECISA","GAUSS":"GAUSS","GEOMEAN":"MEDIA.GEOMETRICA","HARMEAN":"MEDIA.ARMONICA","HYPGEOM.DIST":"DISTRIB.IPERGEOM.N","HYPGEOMDIST":"DISTRIB.IPERGEOM","INTERCEPT":"INTERCETTA","KURT":"CURTOSI","LARGE":"GRANDE","LOGINV":"INV.LOGNORM","LOGNORM.DIST":"DISTRIB.LOGNORM.N","LOGNORM.INV":"INV.LOGNORM.N","LOGNORMDIST":"DISTRIB.LOGNORM","MAX":"MAX","MAXA":"MAX.VALORI","MAXIFS":"MAXIFS","MEDIAN":"MEDIANA","MIN":"MIN","MINA":"MIN.VALORI","MINIFS":"MINIFS","MODE":"MODA","MODE.MULT":"MODA.MULT","MODE.SNGL":"MODA.SNGL","NEGBINOM.DIST":"DISTRIB.BINOM.NEG.N","NEGBINOMDIST":"DISTRIB.BINOM.NEG","NORM.DIST":"DISTRIB.NORM.N","NORM.INV":"INV.NORM.N","NORM.S.DIST":"DISTRIB.NORM.ST.N","NORM.S.INV":"INV.NORM.S","NORMDIST":"DISTRIB.NORM.N","NORMINV":"INV.NORM.N","NORMSDIST":"DISTRIB.NORM.ST","NORMSINV":"INV.NORM.ST","PEARSON":"PEARSON","PERCENTILE":"PERCENTILE","PERCENTILE.EXC":"ESC.PERCENTILE","PERCENTILE.INC":"INC.PERCENTILE","PERCENTRANK":"PERCENT.RANGO","PERCENTRANK.EXC":"ESC.PERCENT.RANGO","PERCENTRANK.INC":"INC.PERCENT.RANGO","PERMUT":"PERMUTAZIONE","PERMUTATIONA":"PERMUTAZIONE.VALORI","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"DISTRIB.POISSON","PROB":"PROBABILITÀ","QUARTILE":"QUARTILE","QUARTILE.INC":"INC.QUARTILE","QUARTILE.EXC":"ESC.QUARTILE","RANK.AVG":"RANGO.MEDIA","RANK.EQ":"RANGO.UG","RANK":"RANGO","RSQ":"RQ","SKEW":"ASIMMETRIA","SKEW.P":"ASSIMETRIA.P","SLOPE":"PENDENZA","SMALL":"PICCOLO","STANDARDIZE":"NORMALIZZA","STDEV":"DEV.ST","STDEV.P":"DEV.ST.P","STDEV.S":"DEV.ST.C","STDEVA":"DEV.ST.VALORI","STDEVP":"DEV.ST.P","STDEVPA":"DEV.ST.POP.VALORI","STEYX":"ERR.STD.YX","TDIST":"DISTRIB.T","TINV":"INV.T","T.DIST":"DISTRIB.T.N","T.DIST.2T":"DISTRIB.T.2T","T.DIST.RT":"DISTRIB.T.DS","T.INV":"INVT","T.INV.2T":"INV.T.2T","VAR":"VAR","VAR.P":"VAR.P","VAR.S":"VAR.C","VARA":"VAR.VALORI","VARP":"VAR.POP","VARPA":"VAR.POP.VALORI","WEIBULL":"WEIBULL","WEIBULL.DIST":"DISTRIB.WEIBULL","Z.TEST":"TESTZ","ZTEST":"TEST.Z","ACCRINT":"INT.MATUTRATO.PER","ACCRINTM":"INT.MATUTRATO.SCAD","AMORDEGRC":"AMMORT.DEGR","AMORLINC":"AMMORT.PER","COUPDAYBS":"GIORNI.CED.INIZ.LIQ","COUPDAYS":"GIORNI.CED","COUPDAYSNC":"GIORNI.CED.NUOVA","COUPNCD":"DATA.CED.SUCC","COUPNUM":"NUM.CED","COUPPCD":"DATA.CED.PREC","CUMIPMT":"INT.CUMUL","CUMPRINC":"CAP.CUM","DB":"AMMORT.FISSO","DDB":"AMMORT","DISC":"TASSO.SCONTO","DOLLARDE":"VALUTA.DEC","DOLLARFR":"VALUTA.FRAZ","DURATION":"DURATA","EFFECT":"EFFETTIVO","FV":"VAL.FUT","FVSCHEDULE":"VAL.FUT.CAPITALE","INTRATE":"TASSO.INT","IPMT":"INTERESSI","IRR":"TIR.COST","ISPMT":"INTERESSE,RATA","MDURATION":"DURATA.M","MIRR":"TIR.VAR","NOMINAL":"NOMINALE","NPER":"NUM.RATE","NPV":"VAN","ODDFPRICE":"PREZZO.PRIMO.IRR","ODDFYIELD":"REND.PRIMO.IRR","ODDLPRICE":"PREZZO.ULTIMO.IRR","ODDLYIELD":"REND.ULTIMO.IRR","PMT":"RATA","PPMT":"P.RATA","PRICE":"PREZZO","PRICEDISC":"PREZZO.SCONT","PRICEMAT":"PREZZO.SCAD","PV":"VA","RATE":"TASSO","RECEIVED":"RICEV.SCAD","RRI":"RIT.INVEST.EFFETT","SLN":"AMMORT.COST","SYD":"AMMORT.ANNUO","TBILLEQ":"BOT.EQUIV","TBILLPRICE":"BOT.PREZZO","TBILLYIELD":"BOT.REND","VDB":"AMMORT.VAR","XIRR":"TIR.X","XNPV":"VAN.X","YIELD":"REND","YIELDDISC":"REND.TITOLI.SOCNTI","YIELDMAT":"REND.SCAD","ABS":"ASS","ACOS":"ARCCOS","ACOSH":"ARCCOSH","ACOT":"ARCCOT","ACOTH":"ARCCOTH","AGGREGATE":"AGGREGA","ARABIC":"ARABO","ASIN":"ARCSEN","ASINH":"ARCSENH","ATAN":"ARCTAN","ATAN2":"ARCTAN.2","ATANH":"ARCTANH","BASE":"BASE","CEILING":"ARROTONDA.ECCESSO","CEILING.MATH":"ARROTONDA.ECCESSO.MAT","CEILING.PRECISE":"ARROTONDA.ECCESSO.PRECISA","COMBIN":"COMBINAZIONE","COMBINA":"COMBINAZIONE.VALORI","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMALE","DEGREES":"GRADI","ECMA.CEILING":"ECMA.CEILING","EVEN":"PARI","EXP":"EXP","FACT":"FATTORIALE","FACTDOUBLE":"FATT.DOPPIO","FLOOR":"ARROTONDA.DIFETTO","FLOOR.PRECISE":"ARROTONDA.DIFETTO.PRECISA","FLOOR.MATH":"ARROTONDA.DIFETTO.MAT","GCD":"MCD","INT":"INT","ISO.CEILING":"ISO.ARROTONDA.ECCESSO","LCM":"MCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MATR.DETERM","MINVERSE":"MATR.INVERSA","MMULT":"MATR.PRODOTTO","MOD":"RESTO","MROUND":"ARROTONDA.MULTIPLO","MULTINOMIAL":"MULTINOMIALE","ODD":"DISPARI","PI":"PI.GRECO","POWER":"POTENZA","PRODUCT":"PRODOTTO","QUOTIENT":"QUOZIENTE","RADIANS":"RADIANTI","RAND":"CASUALE","RANDBETWEEN":"CASUALE.TRA","ROMAN":"ROMANO","ROUND":"ARROTONDA","ROUNDDOWN":"ARROTONDA.PER.DIF","ROUNDUP":"ARROTONDA.PER.ECC","SEC":"SEC","SECH":"SECH","SERIESSUM":"SOMMA.SERIE","SIGN":"SEGNO","SIN":"SEN","SINH":"SENH","SQRT":"RADQ","SQRTPI":"RADQ.PI.GRECO","SUBTOTAL":"SUBTOTAL","SUM":"SOMMA","SUMIF":"SOMMA.SE","SUMIFS":"SOMMA.PIÙ.SE","SUMPRODUCT":"MATR.SOMMA.PRODOTTO","SUMSQ":"SOMMA.Q","SUMX2MY2":"SOMMA.DIFF.Q","SUMX2PY2":"SOMMA.SOMMA.Q","SUMXMY2":"SOMMA.Q.DIFF","TAN":"TAN","TANH":"TANH","TRUNC":"TRONCA","ADDRESS":"INDIRIZZO","CHOOSE":"SCEGLI","COLUMN":"RIF.COLONNA","COLUMNS":"COLONNE","HLOOKUP":"CERCA.ORIZZ","INDEX":"INDICE","INDIRECT":"INDIRETTO","LOOKUP":"CERCA","MATCH":"CONFRONTA","OFFSET":"SCARTO","ROW":"RIF.RIGA","ROWS":"RIGHE","TRANSPOSE":"MATR.TRASPOSTA","VLOOKUP":"CERCA.VERT","ERROR.TYPE":"ERRORE.TIPO","ISBLANK":"VAL.VUOTO","ISERR":"VAL.ERR","ISERROR":"VAL.ERRORE","ISEVEN":"VAL.PARI","ISFORMULA":"VAL.FORMULA","ISLOGICAL":"VAL.LOGICO","ISNA":"ISNA","ISNONTEXT":"VAL.NON.TESTO","ISNUMBER":"VAL.NUMERO","ISODD":"VAL.DISPARI","ISREF":"VAL.RIF","ISTEXT":"VAL.TESTO","N":"N","NA":"NA","SHEET":"FOGLIO","SHEETS":"FOGLI","TYPE":"TYPE","AND":"E","FALSE":"FALSO","IF":"SE","IFERROR":"SE.ERRORE","IFNA":"SE.NON.DISP.","NOT":"NON","OR":"O","SWITCH":"SWITCH","TRUE":"VERO","XOR":"XOR","LocalFormulaOperands":{"StructureTables":{"h":"Headers","d":"Data","a":"All","tr":"This row","t":"Totals"},"CONST_TRUE_FALSE":{"t":"TRUE","f":"FALSE"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#VALUE!","ref":"#REF!","name":"#NAME\\?","num":"#NUM!","na":"#N/A","getdata":"#GETTING_DATA","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file +{"DATE":"DATA","DATEDIF":"DATEDIF","DATEVALUE":"DATE.VALORE","DAY":"GIORNO","DAYS":"GIORNI","DAYS360":"GIORNO360","EDATE":"DATA.MESE","EOMONTH":"FINE.MESE","HOUR":"ORA","ISOWEEKNUM":"NUM.SETTIMANA.ISO","MINUTE":"MINUTO","MONTH":"MESI","NETWORKDAYS":"GIORNI.LAVORATIVI.TOT","NETWORKDAYS.INTL":"GIORNI.LAVORATIVI.TOT.INTL","NOW":"ORA","SECOND":"SECONDO","TIME":"ORARIO","TIMEVALUE":"ORARIO.VALORE","TODAY":"OGGI","WEEKDAY":"GIORNO.SETTIMANA","WEEKNUM":"NUM.SETTIMANA","WORKDAY":"GIORNO.LAVORATIVO","WORKDAY.INTL":"GIORNO.LAVORATIVO.INTL","YEAR":"ANNO","YEARFRAC":"FRAZIONE.ANNO","BESSELI":"BESSELI","BESSELJ":"BESSELJ","BESSELK":"BESSELK","BESSELY":"BESSELY","BIN2DEC":"BINARIO.DECIMALE","BIN2HEX":"BINARIO.HEX","BIN2OCT":"BINARIO.OCT","BITAND":"BITAND","BITLSHIFT":"BIT.SPOSTA.SX","BITOR":"BITOR","BITRSHIFT":"BIT.SPOSTA.DX","BITXOR":"BITXOR","COMPLEX":"COMPLESSO","DEC2BIN":"DECIMALE.BINARIO","DEC2HEX":"DECIMALE.HEX","DEC2OCT":"DECIMALE.OCT","DELTA":"DELTA","ERF":"FUNZ.ERRORE","ERF.PRECISE":"FUNZ.ERRORE.PRECISA","ERFC":"FUNZ.ERRORE.COMP","ERFC.PRECISE":"FUNZ.ERRORE.COMP.PRECISA","GESTEP":"SOGLIA","HEX2BIN":"HEX.BINARIO","HEX2DEC":"HEX.DECIMALE","HEX2OCT":"HEX.OCT","IMABS":"COMP.MODULO","IMAGINARY":"COMP.IMMAGINARIO","IMARGUMENT":"COMP.ARGOMENTO","IMCONJUGATE":"COMP.CONIUGATO","IMCOS":"COMP.COS","IMCOSH":"COMP.COSH","IMCOT":"COMP.COT","IMCSC":"COMP.CSC","IMCSCH":"COMP.CSCH","IMDIV":"COMP.DIV","IMEXP":"COMP.EXP","IMLN":"COMP.LN","IMLOG10":"COMP.LOG10","IMLOG2":"COMP.LOG2","IMPOWER":"COMP.POTENZA","IMPRODUCT":"COMP.PRODOTTO","IMREAL":"COMP.PARTE.REALE","IMSEC":"COMP.SEC","IMSECH":"COMP.SECH","IMSIN":"COMP.SEN","IMSINH":"COMP.SENH","IMSQRT":"COMP.RADQ","IMSUB":"COMP.DIFF","IMSUM":"COMP.SOMMA","IMTAN":"COMP.TAN","OCT2BIN":"OCT.BINARIO","OCT2DEC":"OCT.DECIMALE","OCT2HEX":"OCT.HEX","DAVERAGE":"DB.MEDIA","DCOUNT":"DB.CONTA.NUMERI","DCOUNTA":"DB.CONTA.VALORI","DGET":"DB.VALORI","DMAX":"DB.MAX","DMIN":"DB.MIN","DPRODUCT":"DB.PRODOTTO","DSTDEV":"DB.DEV.ST","DSTDEVP":"DB.DEV.ST.POP","DSUM":"DB.SOMMA","DVAR":"DB.VAR","DVARP":"DB.VAR.POP","CHAR":"CODICE.CARATT","CLEAN":"LIBERA","CODE":"CODICE","CONCATENATE":"CONCATENA","CONCAT":"CONCATENA","DOLLAR":"VALUTA","EXACT":"IDENTICO","FIND":"TROVA","FINDB":"FINDB","FIXED":"FISSO","LEFT":"SINISTRA","LEFTB":"LEFTB","LEN":"LUNGHEZZA","LENB":"LENB","LOWER":"MINUSC","MID":"STRINGA.ESTRAI","MIDB":"MIDB","NUMBERVALUE":"NUMERO.VALORE","PROPER":"MAIUSC.INIZ","REPLACE":"RIMPIAZZA","REPLACEB":"REPLACEB","REPT":"RIPETI","RIGHT":"DESTRA","RIGHTB":"RIGHTB","SEARCH":"RICERCA","SEARCHB":"SEARCHB","SUBSTITUTE":"SOSTITUISCI","T":"T","T.TEST":"TESTT","TEXT":"TESTO","TEXTJOIN":"TEXTJOIN","TRIM":"ANNULLA.SPAZI","TRIMMEAN":"MEDIA.TRONCATA","TTEST":"TEST.T","UNICHAR":"CARATT.UNI","UNICODE":"UNICODE","UPPER":"MAIUSCOL","VALUE":"VALORE","AVEDEV":"MEDIA.DEV","AVERAGE":"MEDIA","AVERAGEA":"MEDIA.VALORI","AVERAGEIF":"MEDIA.SE","AVERAGEIFS":"MEDIA.PIÙ.SE","BETADIST":"DISTRIB.BETA","BETA.DIST":"DISTRIB.BETA.N","BETA.INV":"INV.BETA.N","BINOMDIST":"DISTRIB.BINOM","BINOM.DIST":"DISTRIB.BINOM.N","BINOM.DIST.RANGE":"INTERVALLO.DISTRIB.BINOM.N.","BINOM.INV":"INV.BINOM","CHIDIST":"DISTRIB.CHI","CHIINV":"INV.CHI","CHITEST":"TEST.CHI","CHISQ.DIST":"DISTRIB.CHI.QUAD","CHISQ.DIST.RT":"DISTRIB.CHI.QUAD.DS","CHISQ.INV":"INV.CHI.QUAD","CHISQ.INV.RT":"INV.CHI.QUAD.DS","CHISQ.TEST":"TEST.CHI.QUAD","CONFIDENCE":"CONFIDENZA","CONFIDENCE.NORM":"CONFIDENZA.NORM","CONFIDENCE.T":"CONFIDENZA.T","CORREL":"CORRELAZIONE","COUNT":"CONTA.NUMERI","COUNTA":"COUNTA","COUNTBLANK":"CONTA.VUOTE","COUNTIF":"CONTA.SE","COUNTIFS":"CONTA.PIÙ.SE","COVAR":"COVARIANZA","COVARIANCE.P":"COVARIANZA.P","COVARIANCE.S":"COVARIANZA.C","CRITBINOM":"CRIT.BINOM","DEVSQ":"DEV.Q","EXPON.DIST":"DISTRIB.EXP.N","EXPONDIST":"EXPONDIST","FDIST":"DISTRIB.F","FINV":"INV.F","F.DIST":"DISTRIBF","F.DIST.RT":"DISTRIB.F.DS","F.INV":"INVF","F.INV.RT":"INV.F.DS","FISHER":"FISHER","FISHERINV":"INV.FISHER","FORECAST":"PREVISIONE","FORECAST.LINEAR":"PREVISIONE.LINEARE","FREQUENCY":"FREQUENZA","GAMMA":"GAMMA","GAMMADIST":"DISTRIB.GAMMA","GAMMA.DIST":"DISTRIB.GAMMA.N","GAMMAINV":"INV.GAMMA","GAMMA.INV":"INV.GAMMA.N","GAMMALN":"LN.GAMMA","GAMMALN.PRECISE":"LN.GAMMA.PRECISA","GAUSS":"GAUSS","GEOMEAN":"MEDIA.GEOMETRICA","HARMEAN":"MEDIA.ARMONICA","HYPGEOM.DIST":"DISTRIB.IPERGEOM.N","HYPGEOMDIST":"DISTRIB.IPERGEOM","INTERCEPT":"INTERCETTA","KURT":"CURTOSI","LARGE":"GRANDE","LOGINV":"INV.LOGNORM","LOGNORM.DIST":"DISTRIB.LOGNORM.N","LOGNORM.INV":"INV.LOGNORM.N","LOGNORMDIST":"DISTRIB.LOGNORM","MAX":"MAX","MAXA":"MAX.VALORI","MAXIFS":"MAXIFS","MEDIAN":"MEDIANA","MIN":"MIN","MINA":"MIN.VALORI","MINIFS":"MINIFS","MODE":"MODA","MODE.MULT":"MODA.MULT","MODE.SNGL":"MODA.SNGL","NEGBINOM.DIST":"DISTRIB.BINOM.NEG.N","NEGBINOMDIST":"DISTRIB.BINOM.NEG","NORM.DIST":"DISTRIB.NORM.N","NORM.INV":"INV.NORM.N","NORM.S.DIST":"DISTRIB.NORM.ST.N","NORM.S.INV":"INV.NORM.S","NORMDIST":"DISTRIB.NORM.N","NORMINV":"INV.NORM.N","NORMSDIST":"DISTRIB.NORM.ST","NORMSINV":"INV.NORM.ST","PEARSON":"PEARSON","PERCENTILE":"PERCENTILE","PERCENTILE.EXC":"ESC.PERCENTILE","PERCENTILE.INC":"INC.PERCENTILE","PERCENTRANK":"PERCENT.RANGO","PERCENTRANK.EXC":"ESC.PERCENT.RANGO","PERCENTRANK.INC":"INC.PERCENT.RANGO","PERMUT":"PERMUTAZIONE","PERMUTATIONA":"PERMUTAZIONE.VALORI","PHI":"PHI","POISSON":"POISSON","POISSON.DIST":"DISTRIB.POISSON","PROB":"PROBABILITÀ","QUARTILE":"QUARTILE","QUARTILE.INC":"INC.QUARTILE","QUARTILE.EXC":"ESC.QUARTILE","RANK.AVG":"RANGO.MEDIA","RANK.EQ":"RANGO.UG","RANK":"RANGO","RSQ":"RQ","SKEW":"ASIMMETRIA","SKEW.P":"ASSIMETRIA.P","SLOPE":"PENDENZA","SMALL":"PICCOLO","STANDARDIZE":"NORMALIZZA","STDEV":"DEV.ST","STDEV.P":"DEV.ST.P","STDEV.S":"DEV.ST.C","STDEVA":"DEV.ST.VALORI","STDEVP":"DEV.ST.P","STDEVPA":"DEV.ST.POP.VALORI","STEYX":"ERR.STD.YX","TDIST":"DISTRIB.T","TINV":"INV.T","T.DIST":"DISTRIB.T.N","T.DIST.2T":"DISTRIB.T.2T","T.DIST.RT":"DISTRIB.T.DS","T.INV":"INVT","T.INV.2T":"INV.T.2T","VAR":"VAR","VAR.P":"VAR.P","VAR.S":"VAR.C","VARA":"VAR.VALORI","VARP":"VAR.POP","VARPA":"VAR.POP.VALORI","WEIBULL":"WEIBULL","WEIBULL.DIST":"DISTRIB.WEIBULL","Z.TEST":"TESTZ","ZTEST":"TEST.Z","ACCRINT":"INT.MATUTRATO.PER","ACCRINTM":"INT.MATUTRATO.SCAD","AMORDEGRC":"AMMORT.DEGR","AMORLINC":"AMMORT.PER","COUPDAYBS":"GIORNI.CED.INIZ.LIQ","COUPDAYS":"GIORNI.CED","COUPDAYSNC":"GIORNI.CED.NUOVA","COUPNCD":"DATA.CED.SUCC","COUPNUM":"NUM.CED","COUPPCD":"DATA.CED.PREC","CUMIPMT":"INT.CUMUL","CUMPRINC":"CAP.CUM","DB":"AMMORT.FISSO","DDB":"AMMORT","DISC":"TASSO.SCONTO","DOLLARDE":"VALUTA.DEC","DOLLARFR":"VALUTA.FRAZ","DURATION":"DURATA","EFFECT":"EFFETTIVO","FV":"VAL.FUT","FVSCHEDULE":"VAL.FUT.CAPITALE","INTRATE":"TASSO.INT","IPMT":"INTERESSI","IRR":"TIR.COST","ISPMT":"INTERESSE,RATA","MDURATION":"DURATA.M","MIRR":"TIR.VAR","NOMINAL":"NOMINALE","NPER":"NUM.RATE","NPV":"VAN","ODDFPRICE":"PREZZO.PRIMO.IRR","ODDFYIELD":"REND.PRIMO.IRR","ODDLPRICE":"PREZZO.ULTIMO.IRR","ODDLYIELD":"REND.ULTIMO.IRR","PMT":"RATA","PPMT":"P.RATA","PRICE":"PREZZO","PRICEDISC":"PREZZO.SCONT","PRICEMAT":"PREZZO.SCAD","PV":"VA","RATE":"TASSO","RECEIVED":"RICEV.SCAD","RRI":"RIT.INVEST.EFFETT","SLN":"AMMORT.COST","SYD":"AMMORT.ANNUO","TBILLEQ":"BOT.EQUIV","TBILLPRICE":"BOT.PREZZO","TBILLYIELD":"BOT.REND","VDB":"AMMORT.VAR","XIRR":"TIR.X","XNPV":"VAN.X","YIELD":"REND","YIELDDISC":"REND.TITOLI.SOCNTI","YIELDMAT":"REND.SCAD","ABS":"ASS","ACOS":"ARCCOS","ACOSH":"ARCCOSH","ACOT":"ARCCOT","ACOTH":"ARCCOTH","AGGREGATE":"AGGREGA","ARABIC":"ARABO","ASIN":"ARCSEN","ASINH":"ARCSENH","ATAN":"ARCTAN","ATAN2":"ARCTAN.2","ATANH":"ARCTANH","BASE":"BASE","CEILING":"ARROTONDA.ECCESSO","CEILING.MATH":"ARROTONDA.ECCESSO.MAT","CEILING.PRECISE":"ARROTONDA.ECCESSO.PRECISA","COMBIN":"COMBINAZIONE","COMBINA":"COMBINAZIONE.VALORI","COS":"COS","COSH":"COSH","COT":"COT","COTH":"COTH","CSC":"CSC","CSCH":"CSCH","DECIMAL":"DECIMALE","DEGREES":"GRADI","ECMA.CEILING":"ECMA.CEILING","EVEN":"PARI","EXP":"EXP","FACT":"FATTORIALE","FACTDOUBLE":"FATT.DOPPIO","FLOOR":"ARROTONDA.DIFETTO","FLOOR.PRECISE":"ARROTONDA.DIFETTO.PRECISA","FLOOR.MATH":"ARROTONDA.DIFETTO.MAT","GCD":"MCD","INT":"INT","ISO.CEILING":"ISO.ARROTONDA.ECCESSO","LCM":"MCM","LN":"LN","LOG":"LOG","LOG10":"LOG10","MDETERM":"MATR.DETERM","MINVERSE":"MATR.INVERSA","MMULT":"MATR.PRODOTTO","MOD":"RESTO","MROUND":"ARROTONDA.MULTIPLO","MULTINOMIAL":"MULTINOMIALE","ODD":"DISPARI","PI":"PI.GRECO","POWER":"POTENZA","PRODUCT":"PRODOTTO","QUOTIENT":"QUOZIENTE","RADIANS":"RADIANTI","RAND":"CASUALE","RANDBETWEEN":"CASUALE.TRA","ROMAN":"ROMANO","ROUND":"ARROTONDA","ROUNDDOWN":"ARROTONDA.PER.DIF","ROUNDUP":"ARROTONDA.PER.ECC","SEC":"SEC","SECH":"SECH","SERIESSUM":"SOMMA.SERIE","SIGN":"SEGNO","SIN":"SEN","SINH":"SENH","SQRT":"RADQ","SQRTPI":"RADQ.PI.GRECO","SUBTOTAL":"SUBTOTAL","SUM":"SOMMA","SUMIF":"SOMMA.SE","SUMIFS":"SOMMA.PIÙ.SE","SUMPRODUCT":"MATR.SOMMA.PRODOTTO","SUMSQ":"SOMMA.Q","SUMX2MY2":"SOMMA.DIFF.Q","SUMX2PY2":"SOMMA.SOMMA.Q","SUMXMY2":"SOMMA.Q.DIFF","TAN":"TAN","TANH":"TANH","TRUNC":"TRONCA","ADDRESS":"INDIRIZZO","CHOOSE":"SCEGLI","COLUMN":"RIF.COLONNA","COLUMNS":"COLONNE","HLOOKUP":"CERCA.ORIZZ","INDEX":"INDICE","INDIRECT":"INDIRETTO","LOOKUP":"CERCA","MATCH":"CONFRONTA","OFFSET":"SCARTO","ROW":"RIF.RIGA","ROWS":"RIGHE","TRANSPOSE":"MATR.TRASPOSTA","VLOOKUP":"CERCA.VERT","ERROR.TYPE":"ERRORE.TIPO","ISBLANK":"VAL.VUOTO","ISERR":"VAL.ERR","ISERROR":"VAL.ERRORE","ISEVEN":"VAL.PARI","ISFORMULA":"VAL.FORMULA","ISLOGICAL":"VAL.LOGICO","ISNA":"ISNA","ISNONTEXT":"VAL.NON.TESTO","ISNUMBER":"VAL.NUMERO","ISODD":"VAL.DISPARI","ISREF":"VAL.RIF","ISTEXT":"VAL.TESTO","N":"N","NA":"NA","SHEET":"FOGLIO","SHEETS":"FOGLI","TYPE":"TYPE","AND":"E","FALSE":"FALSO","IF":"SE","IFERROR":"SE.ERRORE","IFNA":"SE.NON.DISP.","NOT":"NON","OR":"O","SWITCH":"SWITCH","TRUE":"VERO","XOR":"XOR","LocalFormulaOperands":{"StructureTables":{"h":"Headers","d":"Data","a":"All","tr":"This row","t":"Totals"},"CONST_TRUE_FALSE":{"t":"TRUE","f":"FALSE"},"CONST_ERROR":{"nil":"#NULL!","div":"#DIV/0!","value":"#VALUE!","ref":"#REF!","name":"#NAME\\?","num":"#NUM!","na":"#N/A","getdata":"#GETTING_DATA","uf":"#UNSUPPORTED_FUNCTION!"}}} \ No newline at end of file From 1e9d6650a9923bbcb9a515171c9cb4c4d0c07204 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 24 Sep 2020 16:04:48 +0300 Subject: [PATCH 38/54] [DE] Refactoring --- apps/documenteditor/main/app/view/CrossReferenceDialog.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 75d4136b0..b644c8776 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -249,12 +249,12 @@ define([ this.api.asc_AddCrossRefToNote(record.get('para'), reftype, link, below); break; case 5: // caption - if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText(record.get('value'))===false) { + if (reftype==Asc.c_oAscDocumentRefenceToType.OnlyCaptionText && record.get('para').asc_canAddRefToCaptionText(typeRec.displayValue)===false) { Common.UI.warning({ msg : this.textEmpty }); } else - this.api.asc_AddCrossRefToCaption(record.get('value'), record.get('para'), reftype, link, below); + this.api.asc_AddCrossRefToCaption(typeRec.displayValue, record.get('para'), reftype, link, below); break; } }, From aa9c3e3c02d294ecf1282db694d1632df5c48989 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Thu, 24 Sep 2020 17:03:46 +0300 Subject: [PATCH 39/54] [DE] Cross-references: save last used settings --- .../main/app/controller/Links.js | 4 +++ .../main/app/view/CrossReferenceDialog.js | 28 +++++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/apps/documenteditor/main/app/controller/Links.js b/apps/documenteditor/main/app/controller/Links.js index 1a4761971..661e67e2e 100644 --- a/apps/documenteditor/main/app/controller/Links.js +++ b/apps/documenteditor/main/app/controller/Links.js @@ -460,11 +460,15 @@ define([ var me = this; me.dlgCrossRefDialog = new DE.Views.CrossReferenceDialog({ api: me.api, + crossRefProps: me.crossRefProps, handler: function (result, settings) { if (result != 'ok') Common.NotificationCenter.trigger('edit:complete', me.toolbar); } }); + me.dlgCrossRefDialog.on('close', function(obj){ + me.crossRefProps = me.dlgCrossRefDialog.getSettings(); + }); me.dlgCrossRefDialog.show(); } diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index b644c8776..ba689ea6a 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -97,7 +97,7 @@ define([ '
    ' ].join(''); - this.props = options.props; + this.crossRefProps = options.crossRefProps; this.api = options.api; this.options.tpl = _.template(this.template)(this.options); this._locked = false; @@ -197,12 +197,12 @@ define([ }, afterRender: function() { - this._setDefaults(this.props); + this._setDefaults(); }, _handleInput: function(state) { if (this.options.handler) { - this.options.handler.call(this, state, {}); + this.options.handler.call(this, state); } if (state=='ok') { this.insertReference(); @@ -220,11 +220,19 @@ define([ return false; }, - _setDefaults: function (props) { - this.cmbType.setValue(0); - this.onTypeSelected(this.cmbType, this.cmbType.getSelectedRecord()); - if (props) { + getSettings: function() { + return {type: this.cmbType.getValue(), refType: this.cmbReference.getValue()}; + }, + + _setDefaults: function () { + var rec, + currentRef; + if (this.crossRefProps) { + rec = this.cmbType.store.findWhere({value: this.crossRefProps.type}); + rec && (currentRef = this.crossRefProps.refType); } + rec ? this.cmbType.selectRecord(rec) : this.cmbType.setValue(0); + this.refreshReferenceTypes(this.cmbType.getSelectedRecord(), currentRef); }, insertReference: function() { @@ -260,6 +268,10 @@ define([ }, onTypeSelected: function (combo, record) { + this.refreshReferenceTypes(record); + }, + + refreshReferenceTypes: function(record, currentRef) { var arr = [], str = this.textWhich, type = 5; if (record.type==1 || record.value > 4) { @@ -328,7 +340,7 @@ define([ } } this.cmbReference.setData(arr); - this.cmbReference.setValue(arr[0].value); + this.cmbReference.setValue(currentRef ? currentRef : arr[0].value); this.onReferenceSelected(this.cmbReference, this.cmbReference.getSelectedRecord()); this.lblWhich.text(str); this.refreshReferences(type); From ccac16c69c39897c3637894a50cbbbd2ec482f48 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 25 Sep 2020 18:17:54 +0300 Subject: [PATCH 40/54] [DE] Refactoring keydown in cross-reference dialog --- apps/documenteditor/main/app/view/CrossReferenceDialog.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index ba689ea6a..094a906e3 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -185,6 +185,7 @@ define([ store: new Common.UI.DataViewStore(), itemTemplate: _.template('
    <%= value %>
    ') }); + this.refList.on('entervalue', _.bind(this.onPrimary, this)); this.lblWhich = $window.find('#id-dlg-cross-which'); @@ -205,7 +206,10 @@ define([ this.options.handler.call(this, state); } if (state=='ok') { - this.insertReference(); + if(document.activeElement && document.activeElement.localName == 'textarea' && /area_id/.test(document.activeElement.id)){ + return; + } + !this.btnInsert.isDisabled() && this.insertReference(); return; } this.close(); From 8992318be7c0df3f6396988bd25b97b31d6d0633 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 25 Sep 2020 21:13:17 +0300 Subject: [PATCH 41/54] [DE] Add icons --- apps/documenteditor/main/app/view/Links.js | 2 +- .../img/toolbar/1.25x/big/btn-cross-reference.png | Bin 0 -> 319 bytes .../img/toolbar/1.5x/big/btn-cross-reference.png | Bin 0 -> 358 bytes .../img/toolbar/1.75x/big/btn-cross-reference.png | Bin 0 -> 358 bytes .../img/toolbar/1x/big/btn-cross-reference.png | Bin 0 -> 276 bytes .../img/toolbar/2x/big/btn-cross-reference.png | Bin 0 -> 554 bytes 6 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-cross-reference.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.5x/big/btn-cross-reference.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-cross-reference.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1x/big/btn-cross-reference.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/2x/big/btn-cross-reference.png diff --git a/apps/documenteditor/main/app/view/Links.js b/apps/documenteditor/main/app/view/Links.js index e16614ad0..5477712e0 100644 --- a/apps/documenteditor/main/app/view/Links.js +++ b/apps/documenteditor/main/app/view/Links.js @@ -184,7 +184,7 @@ define([ this.btnCrossRef = new Common.UI.Button({ parentEl: $host.find('#slot-btn-crossref'), cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-crossref', + iconCls: 'toolbar__icon btn-cross-reference', caption: this.capBtnCrossRef, disabled: true }); diff --git a/apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-cross-reference.png b/apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-cross-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..627bfeea4a9f21252eeaf74c1b4674a60e3ab254 GIT binary patch literal 319 zcmV-F0l@x=P)Rs1XF}gC@`y0|viPtI(i%PCSTG zF%=`k^h`L9o--z8gc@gH2%+1;BPW4^k!#FheWq_$gxR+Vop@z*`x(h6abhdeVuTNI zveHDB+zn~6aAJ%ZNR#gsjUvnd4G)D;gwe_{p=Yf`7zGBvP{K56Wfn@b*ss#0R?4B+ zi%XkOj0yI<6|?>32r%1LF%@$s#ss$zhBGknEkr6N9y4kNXKpHv|8QQwd6?}Z3FLIE zJ960=?5-VJbZ{b!`K`THfLUjO6<|_FvR~9cp4T(qW)N1v3%`8uT!zo7inEqe~`12RH;b6gV<(MT@#& zbScCYEpPyiLM=~H^vo-#mv^8DO)-a&I83u!0O}=+vBNQvpE9AZdET~SBktFLxgigpv$e3tQ{ajqT zkf4iu;zELMnX$PV1T>%xX>9~u>HK+?u#*HdpaCW23n!kv(`dWHumAu607*qoM6N<$ Ef;3)}N&o-= literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-cross-reference.png b/apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-cross-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3ea3ab944509fcdd847e662920d330f93d2492 GIT binary patch literal 358 zcmV-s0h#`ZP)9cp4T(qW)N1v3%`8uT!zo7inEqe~`12RH;b6gV<(MT@#& zbScCYEpPyiLM=~H^vo-#mv^8DO)-a&I83u!0O}=+vBNQvpE9AZdET~SBktFLxgigpv$e3tQ{ajqT zkf4iu;zELMnX$PV1T>%xX>9~u>HK+?u#*HdpaCW23n!kv(`dWHumAu607*qoM6N<$ Ef;3)}N&o-= literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/1x/big/btn-cross-reference.png b/apps/documenteditor/main/resources/img/toolbar/1x/big/btn-cross-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8ff7f2340221deefa71588b35c432c4f4a535b GIT binary patch literal 276 zcmV+v0qg#WP)RDghNyV{h50e@XWpPxssw~pd9@zuwJzSaP-SD aHL4dLD5WX#7X=6a0000gx z4zyUkB*-tAA^!dU`yhNi{=9-hz6j;LH)rLgE*Sf58-^*x1UrQzz$Q?8kp6|9WA zeNbZe8vm-d8}FsmT#{D1_pD*V$BNmEho-&M<8G<0Il=gF;=D}PpkH_$whp+by$DF zG@e&;tvhBkJ)X_u<-_F{EcT+G!9Ab7l0o7IUzy@Pr*zh8@%(k$o8F&nX8q$K*P-|O te-h)=+^Lthhx*+Qv#gE&@4NJp`fYxxClcn79>B0?@O1TaS?83{1OVgA{yYEx literal 0 HcmV?d00001 From be82d31de117813fe5f7e95557b8ca70c93a5d0e Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Fri, 25 Sep 2020 23:01:19 +0300 Subject: [PATCH 42/54] [DE] Fix insert cross-reference --- .../documenteditor/main/app/view/CrossReferenceDialog.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/documenteditor/main/app/view/CrossReferenceDialog.js b/apps/documenteditor/main/app/view/CrossReferenceDialog.js index 094a906e3..cfc5b6f61 100644 --- a/apps/documenteditor/main/app/view/CrossReferenceDialog.js +++ b/apps/documenteditor/main/app/view/CrossReferenceDialog.js @@ -185,7 +185,8 @@ define([ store: new Common.UI.DataViewStore(), itemTemplate: _.template('
    <%= value %>
    ') }); - this.refList.on('entervalue', _.bind(this.onPrimary, this)); + this.refList.on('entervalue', _.bind(this.onPrimary, this)) + .on('item:dblclick', _.bind(this.onPrimary, this)); this.lblWhich = $window.find('#id-dlg-cross-which'); @@ -201,12 +202,12 @@ define([ this._setDefaults(); }, - _handleInput: function(state) { + _handleInput: function(state, fromButton) { if (this.options.handler) { this.options.handler.call(this, state); } if (state=='ok') { - if(document.activeElement && document.activeElement.localName == 'textarea' && /area_id/.test(document.activeElement.id)){ + if(!fromButton && document.activeElement && document.activeElement.localName == 'textarea' && /area_id/.test(document.activeElement.id)){ return; } !this.btnInsert.isDisabled() && this.insertReference(); @@ -216,7 +217,7 @@ define([ }, onBtnClick: function(event) { - this._handleInput(event.currentTarget.attributes['result'].value); + this._handleInput(event.currentTarget.attributes['result'].value, true); }, onPrimary: function(event) { From ba470b0f123210b8eafc9dcc6e0391f046e0796f Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Sun, 27 Sep 2020 16:48:28 +0300 Subject: [PATCH 43/54] [DE] Fix color settings for the list --- apps/documenteditor/main/app/view/ListSettingsDialog.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/documenteditor/main/app/view/ListSettingsDialog.js b/apps/documenteditor/main/app/view/ListSettingsDialog.js index ff07be93b..59891135c 100644 --- a/apps/documenteditor/main/app/view/ListSettingsDialog.js +++ b/apps/documenteditor/main/app/view/ListSettingsDialog.js @@ -160,13 +160,15 @@ define([ id: 'id-dlg-bullet-text-color', caption: this.txtLikeText, checkable: true, - toggleGroup: 'list-settings-color' + toggleGroup: 'list-settings-color', + style: 'padding-left: 20px;' }, { id: 'id-dlg-bullet-auto-color', caption: this.textAuto, checkable: true, - toggleGroup: 'list-settings-color' + toggleGroup: 'list-settings-color', + style: 'padding-left: 20px;' }, {caption: '--'}], additionalAlign: this.menuAddAlign From 83aeabb62375e6da8ae5e67418423c196b2f446c Mon Sep 17 00:00:00 2001 From: Julia Svinareva Date: Wed, 18 Sep 2019 16:12:39 +0300 Subject: [PATCH 44/54] =?UTF-8?q?[DE]=20Line=20Numbers=20=D0=90=D0=B2?= =?UTF-8?q?=D1=82=D0=BE=D1=80:=20Julia=20Svinareva=20=20=D0=94=D0=B0=D1=82=D0=B0:=2019=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D1=8F=D0=B1=D1=80=D1=8F=202019=20=D0=B3.=2010:20:2?= =?UTF-8?q?1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/app/controller/Toolbar.js | 31 ++- .../main/app/template/Toolbar.template | 1 + .../main/app/view/LineNumbersDialog.js | 194 ++++++++++++++++++ apps/documenteditor/main/app/view/Toolbar.js | 61 +++++- 4 files changed, 285 insertions(+), 2 deletions(-) create mode 100644 apps/documenteditor/main/app/view/LineNumbersDialog.js diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index b2b2974bf..fa5398ffd 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -60,7 +60,8 @@ define([ 'documenteditor/main/app/view/WatermarkSettingsDialog', 'documenteditor/main/app/view/CompareSettingsDialog', 'documenteditor/main/app/view/ListSettingsDialog', - 'documenteditor/main/app/view/DateTimeDialog' + 'documenteditor/main/app/view/DateTimeDialog', + 'documenteditor/main/app/view/LineNumbersDialog' ], function () { 'use strict'; @@ -334,6 +335,7 @@ define([ toolbar.btnInsertSymbol.on('click', _.bind(this.onInsertSymbolClick, this)); toolbar.mnuNoControlsColor.on('click', _.bind(this.onNoControlsColor, this)); toolbar.mnuControlsColorPicker.on('select', _.bind(this.onSelectControlsColor, this)); + toolbar.btnLineNumbers.menu.on('item:click', _.bind(this.onLineNumbersSelect, this)); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); Common.Gateway.on('setmailmergerecipients', _.bind(this.setMailMergeRecipients, this)); $('#id-toolbar-menu-new-control-color').on('click', _.bind(this.onNewControlsColor, this)); @@ -1674,6 +1676,33 @@ define([ Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, + onLineNumbersSelect: function(menu, item) { + switch (item.value) { + case 0: + break; + case 1: + break; + case 2: + break; + case 3: + break; + case 4: + break; + case 5: + var win, + me = this; + win = new DE.Views.LineNumbersDialog({ + handler: function(dlg, result) { + if (result == 'ok') { + Common.NotificationCenter.trigger('edit:complete', me.toolbar); + } + } + }); + win.show(); + break; + } + }, + onColorSchemaClick: function(menu, item) { if (this.api) { this.api.asc_ChangeColorSchemeByIdx(item.value); diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index ad2a425a7..255dbd46a 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -130,6 +130,7 @@ +
    diff --git a/apps/documenteditor/main/app/view/LineNumbersDialog.js b/apps/documenteditor/main/app/view/LineNumbersDialog.js new file mode 100644 index 000000000..30645d25f --- /dev/null +++ b/apps/documenteditor/main/app/view/LineNumbersDialog.js @@ -0,0 +1,194 @@ +/* + * + * (c) Copyright Ascensio System SIA 2010-2020 + * + * This program is a free software product. You can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License (AGPL) + * version 3 as published by the Free Software Foundation. In accordance with + * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect + * that Ascensio System SIA expressly excludes the warranty of non-infringement + * of any third-party rights. + * + * This program is distributed WITHOUT ANY WARRANTY; without even the implied + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For + * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html + * + * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha + * street, Riga, Latvia, EU, LV-1050. + * + * The interactive user interfaces in modified source and object code versions + * of the Program must display Appropriate Legal Notices, as required under + * Section 5 of the GNU AGPL version 3. + * + * Pursuant to Section 7(b) of the License you must retain the original Product + * logo when distributing the program. Pursuant to Section 7(e) we decline to + * grant you any rights under trademark law for use of our trademarks. + * + * All the Product's GUI elements, including illustrations and icon sets, as + * well as technical writing content are licensed under the terms of the + * Creative Commons Attribution-ShareAlike 4.0 International. See the License + * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + * +*/ +/** + * LineNumbersDialog.js + * + * Created by Julia Svinareva on 18/09/19 + * Copyright (c) 2020 Ascensio System SIA. All rights reserved. + * + */ + +define([ + 'common/main/lib/component/Window', + 'common/main/lib/component/CheckBox', + 'common/main/lib/component/MetricSpinner' +], function () { 'use strict'; + + DE.Views.LineNumbersDialog = Common.UI.Window.extend(_.extend({ + options: { + width: 300, + header: true, + style: 'min-width: 216px;', + cls: 'modal-dlg' + }, + + initialize : function(options) { + _.extend(this.options, { + title: this.textTitle + }, options || {}); + + this.template = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '' + ].join(''); + + this.options.tpl = _.template(this.template)(this.options); + + this.spinners = []; + this._noApply = false; + + Common.UI.Window.prototype.initialize.call(this, this.options); + }, + + render: function() { + Common.UI.Window.prototype.render.call(this); + + this.chAddLineNumbering = new Common.UI.CheckBox({ + el: $('#line-numbers-add-line-numbering'), + labelText: this.textAddLineNumbering + }); + + this.spnStartAt = new Common.UI.MetricSpinner({ + el: $('#line-numbers-start-at'), + step: 1, + width: 80, + defaultUnit : '', + value: 1, + maxValue: 32767, + minValue: 1 + }); + + this.spnFromText = new Common.UI.MetricSpinner({ + el: $('#line-numbers-from-text'), + step: 0.1, + width: 80, + defaultUnit : 'cm', + value: 0.4, + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.spnFromText); + + this.spnCountBy = new Common.UI.MetricSpinner({ + el: $('#line-numbers-count-by'), + step: 1, + width: 80, + defaultUnit : '', + value: 1, + maxValue: 100, + minValue: 1 + }); + + this.rbRestartEachPage = new Common.UI.RadioBox({ + el: $('#line-numbers-restart-each-page'), + labelText: this.textRestartEachPage, + name: 'asc-radio-line-numbers' + }); + + this.rbRestartEachSection = new Common.UI.RadioBox({ + el: $('#line-numbers-restart-each-section'), + labelText: this.textRestartEachSection, + name: 'asc-radio-line-numbers' + }); + + this.rbContinuous = new Common.UI.RadioBox({ + el: $('#line-numbers-continuous'), + labelText: this.textContinuous, + name: 'asc-radio-line-numbers' + }); + + + this.getChild().find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); + + this.updateMetricUnit(); + }, + + _handleInput: function(state) { + if (this.options.handler) { + this.options.handler.call(this, this, state); + } + + this.close(); + }, + + onBtnClick: function(event) { + this._handleInput(event.currentTarget.attributes['result'].value); + }, + + onPrimary: function() { + this._handleInput('ok'); + return false; + }, + + getSettings: function() { + return this; + }, + + updateMetricUnit: function() { + if (this.spinners) { + for (var i=0; i Date: Thu, 19 Sep 2019 10:20:21 +0300 Subject: [PATCH 45/54] [DE] Line Numbers --- .../ParagraphSettingsAdvanced.template | 5 +++ .../main/app/view/LineNumbersDialog.js | 45 +++++++++++++------ .../app/view/ParagraphSettingsAdvanced.js | 8 +++- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template index 8fa069f2c..b97fe4433 100644 --- a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -79,6 +79,11 @@
    + + +
    + +
    diff --git a/apps/documenteditor/main/app/view/LineNumbersDialog.js b/apps/documenteditor/main/app/view/LineNumbersDialog.js index 30645d25f..68a483c48 100644 --- a/apps/documenteditor/main/app/view/LineNumbersDialog.js +++ b/apps/documenteditor/main/app/view/LineNumbersDialog.js @@ -46,9 +46,9 @@ define([ DE.Views.LineNumbersDialog = Common.UI.Window.extend(_.extend({ options: { - width: 300, + width: 290, header: true, - style: 'min-width: 216px;', + style: 'min-width: 290px;', cls: 'modal-dlg' }, @@ -59,16 +59,16 @@ define([ this.template = [ '
    ', - '
    ', - '
    ', - '
    ', - '
    ', + '
    ', + '
    ', + '
    ', + '
    ', '
    ', '
    ', - '
    ', - '
    ', - '
    ', - '
    ', + '
    ', + '
    ', + '
    ', + '
    ', '
    ', '', - '' ].join(''); @@ -107,7 +105,8 @@ define([ defaultUnit : '', value: 1, maxValue: 32767, - minValue: 1 + minValue: 1, + disabled: true }); this.spnFromText = new Common.UI.MetricSpinner({ @@ -118,7 +117,8 @@ define([ value: 'Auto', maxValue: 55.87, minValue: 0.1, - allowAuto: true + allowAuto: true, + disabled: true }); this.spinners.push(this.spnFromText); @@ -129,25 +129,30 @@ define([ defaultUnit : '', value: 1, maxValue: 100, - minValue: 1 + minValue: 1, + disabled: true }); this.rbRestartEachPage = new Common.UI.RadioBox({ el: $('#line-numbers-restart-each-page'), labelText: this.textRestartEachPage, - name: 'asc-radio-line-numbers' + name: 'asc-radio-line-numbers', + disabled: true, + checked: true }); this.rbRestartEachSection = new Common.UI.RadioBox({ el: $('#line-numbers-restart-each-section'), labelText: this.textRestartEachSection, - name: 'asc-radio-line-numbers' + name: 'asc-radio-line-numbers', + disabled: true }); this.rbContinuous = new Common.UI.RadioBox({ el: $('#line-numbers-continuous'), labelText: this.textContinuous, - name: 'asc-radio-line-numbers' + name: 'asc-radio-line-numbers', + disabled: true }); @@ -157,11 +162,21 @@ define([ }, afterRender: function() { - this._setDefaults(); }, - _setDefaults: function() { - + setSettings: function (props) { + if (props) { + // var type = props.asc_getType(); + // this.chAddLineNumbering.setValue(type !== case Asc.None); + // switch (type) { + // case Asc.Continuous: this.rbContinuous.setValue(true, true); break; + // case Asc.Page: this.rbRestartEachPage.setValue(true, true); break; + // case Asc.Section: this.rbRestartEachSection.setValue(true, true); break; + // } + // this.spnStartAt.setValue(props.get_StartAt()!==null ? props.get_StartAt() : '', true); + // this.spnFromText.setValue(props.get_FromText()!==null ? (props.get_FromText()<0 ? -1 : Common.Utils.Metric.fnRecalcFromMM(props.get_FromText())) : '', true); + // this.spnCountBy.setValue(props.get_Count()!==null ? props.get_Count() : '', true); + } }, _handleInput: function(state) { @@ -182,7 +197,22 @@ define([ }, getSettings: function() { - return this; + // var props = new Asc.CDocumentLineNumberProps(); + // if (this.chAddLineNumbering.getValue()!=='checked') { + // props.put_Type(Asc.None); + // } else { + // if (this.rbContinuous.getValue()) + // props.put_Type(Asc.Continuous); + // else if (this.rbRestartEachPage.getValue()) + // props.put_Type(Asc.Page); + // else if (this.rbRestartEachSection.getValue()) + // props.put_Type(Asc.Section); + // props.put_StartAt(this.spnStartAt.getNumberValue()); + // var value = this.spnFromText.getNumberValue(); + // props.put_FromText(value<0 ? -1 : Common.Utils.Metric.fnRecalcToMM()); + // props.put_Count(this.spnCountBy.getNumberValue()); + // } + // return props; }, updateMetricUnit: function() { @@ -196,9 +226,7 @@ define([ }, - textTitle: 'Line Numbers Settings', - cancelButtonText: 'Cancel', - okButtonText: 'Ok', + textTitle: 'Line Numbers', textAddLineNumbering: 'Add line numbering', textStartAt: 'Start at', textFromText: 'From text', diff --git a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js index 558a2a49d..b79f5a641 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -350,6 +350,11 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem el: $('#paragraphadv-checkbox-suppress-line-numbers'), labelText: this.strSuppressLineNumbers }); + this.chLineNumbers.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + if (this._changedProps) { + // this._changedProps.put_SuppressLineNumbers(field.getValue()=='checked'); + } + }, this)); // Borders @@ -779,6 +784,8 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.chKeepNext.setValue((props.get_KeepNext() !== null && props.get_KeepNext() !== undefined) ? props.get_KeepNext() : 'indeterminate', true); this.chOrphan.setValue((props.get_WidowControl() !== null && props.get_WidowControl() !== undefined) ? props.get_WidowControl() : 'indeterminate', true); + // this.chLineNumbers.setValue((props.get_SuppressLineNumbers() !== null && props.get_SuppressLineNumbers() !== undefined) ? props.get_SuppressLineNumbers() : 'indeterminate', true); + this.Borders = new Asc.asc_CParagraphBorders(props.get_Borders()); // Margins diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 7ae282680..4d01f9555 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -1009,15 +1009,13 @@ define([ { caption: this.textSuppressForCurrentParagraph, checkable: true, - toggleGroup: 'menuLineNumbers', + allowDepress: true, value: 4 }, {caption: '--'}, { caption: this.textCustomLineNumbers, - value: 5, - checkable: true, - toggleGroup: 'menuLineNumbers' + value: 5 } ] }) @@ -2420,8 +2418,8 @@ define([ textRestartEachPage: 'Restart Each Page', textRestartEachSection: 'Restart Each Section', textSuppressForCurrentParagraph: 'Suppress for Current Paragraph', - textCustomLineNumbers: 'Custom Line Numbers', - tipLineNumbers: 'Line Numbers' + textCustomLineNumbers: 'Line Numbering Options', + tipLineNumbers: 'Show line numbers' } })(), DE.Views.Toolbar || {})); }); From b76e5ce940544aa40f0050a4c69de4e07b365b21 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 28 Sep 2020 15:37:43 +0300 Subject: [PATCH 47/54] [DE] Add icons --- apps/documenteditor/main/app/view/Toolbar.js | 2 +- .../img/toolbar/1.25x/big/btn-line-numbering.png | Bin 0 -> 311 bytes .../img/toolbar/1.5x/big/btn-line-numbering.png | Bin 0 -> 343 bytes .../img/toolbar/1.75x/big/btn-line-numbering.png | Bin 0 -> 343 bytes .../img/toolbar/1x/big/btn-line-numbering.png | Bin 0 -> 238 bytes .../img/toolbar/2x/big/btn-line-numbering.png | Bin 0 -> 375 bytes 6 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-line-numbering.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.5x/big/btn-line-numbering.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-line-numbering.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/1x/big/btn-line-numbering.png create mode 100644 apps/documenteditor/main/resources/img/toolbar/2x/big/btn-line-numbering.png diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 4d01f9555..ede840dd5 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -977,7 +977,7 @@ define([ this.btnLineNumbers = new Common.UI.Button({ id: 'tlbtn-line-numbers', cls: 'btn-toolbar x-huge icon-top', - iconCls: 'toolbar__icon btn-columns', + iconCls: 'toolbar__icon btn-line-numbering', caption: me.capBtnLineNumbers, menu: new Common.UI.Menu({ cls: 'ppm-toolbar', diff --git a/apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-line-numbering.png b/apps/documenteditor/main/resources/img/toolbar/1.25x/big/btn-line-numbering.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f0d3a2bdf459d06e6e7964686b90f404c2e19e GIT binary patch literal 311 zcmV-70m%M|P)STlx!lTb5uM1T=b)5t(0 zo+i-f2BS^tRHAB_y$K?iy$OHfGli4#83*pBmp47@k2OQWy|R1I>_2gUT3< z(ByXz!~$-j8P`NJm_abg*cQB-tUnMi$yLU(chh&H!*rP1cmnGcRz3ME{0IO5002ov JPDHLkV1m-*eKP<6 literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/1.5x/big/btn-line-numbering.png b/apps/documenteditor/main/resources/img/toolbar/1.5x/big/btn-line-numbering.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd62505912903b64548510f7951c7e4ae441275 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^AwaCf!3-p&=Jq%NDdPa25LY1W0tT+GuK!^GC;()7 zcz6IwXJ=;!*TKO7!jRA`t_EroED7=pW~l#vABY+n6cp}n*r4$K{UINZy+FxBo-U3d z6^w7Eb)Gt`Ai(yud$ron{(b*1Pun097Zk~o{EoJpw%{4z|$G_|32~YM$5Hr+eqiPq^|h=#I&UWz+9`ValAMG+Avk%hIF$P0OzK zZ(6qc#b@)yzSoyJyqu;zY1d?ryPQkksrcUQoaN=@8(VVqf62Ljua9q8EFFBOB+NzM9|+0%f5Bz|N8E~^fs@Ta^9?p%SxhZYtuwMq|175IJ5t7_#LEH{?>x+ruP58 RQb6A@c)I$ztaD0e0s!DdpEm#i literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-line-numbering.png b/apps/documenteditor/main/resources/img/toolbar/1.75x/big/btn-line-numbering.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd62505912903b64548510f7951c7e4ae441275 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^AwaCf!3-p&=Jq%NDdPa25LY1W0tT+GuK!^GC;()7 zcz6IwXJ=;!*TKO7!jRA`t_EroED7=pW~l#vABY+n6cp}n*r4$K{UINZy+FxBo-U3d z6^w7Eb)Gt`Ai(yud$ron{(b*1Pun097Zk~o{EoJpw%{4z|$G_|32~YM$5Hr+eqiPq^|h=#I&UWz+9`ValAMG+Avk%hIF$P0OzK zZ(6qc#b@)yzSoyJyqu;zY1d?ryPQkksrcUQoaN=@8(VVqf62Ljua9q8EFFBOB+NzM9|+0%f5Bz|N8E~^fs@Ta^9?p%SxhZYtuwMq|175IJ5t7_#LEH{?>x+ruP58 RQb6A@c)I$ztaD0e0s!DdpEm#i literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/1x/big/btn-line-numbering.png b/apps/documenteditor/main/resources/img/toolbar/1x/big/btn-line-numbering.png new file mode 100644 index 0000000000000000000000000000000000000000..9f86dc4a47f796fb728c46a68e6b5626fcaba7d3 GIT binary patch literal 238 zcmV=T(Fs=bd(xYet1+k6*Zy#ph-zDceJD=)YoYMJ_cyS$R5q?Ak zEM?;i!vGl0oM&?qouu6P5MU~2C17fwVW<|Z$Xx_%kdz=vx1ttc=*@x*&sh|5f_14i z4wBT0LnJ-mni&STR)%$rQFud4(#~DleGXqAi&)I+v53XgK5w&tf9djv!QaGl;2XM2 oV=*Z!#>7g|))k|V55U`f1+S017RBMV1^@s607*qoM6N<$f~pB*qW}N^ literal 0 HcmV?d00001 diff --git a/apps/documenteditor/main/resources/img/toolbar/2x/big/btn-line-numbering.png b/apps/documenteditor/main/resources/img/toolbar/2x/big/btn-line-numbering.png new file mode 100644 index 0000000000000000000000000000000000000000..7af7e67ecc46d04142b4a62a9a18010609e6fa21 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^1wd@U!3-pYOnWMTltF+`h%1nGadB~Wb_SBJuCD)) z08j+TgOET4PEJlh?)%2ID}Z_gN`m}?8UDw=zYoIo^$iX86B5=P*4Ye{d*lz>5nior1UTjX;ulzMr(YT^Up!I!|j*Q%&!=@qo7VJs`bLXgboRyH! zG!IT$a-(~r!tw`FO!F2f=?lpe^5@R#++2J)0F17O89LKk<{j5#L zo7&kwNB_G0J@KBHyjkz_$G)pJvohXE-rqULS^4YQg{P$N+lXy6RcX%t@#<*PW|pQ^ wu1A%Y%@b|DA;<0W*4gK^L-2ktua_qC_Q&&H@4X}z3iL69r>mdKI;Vst0E0fM0{{R3 literal 0 HcmV?d00001 From 21cb4c099424ce11078276f81c5b63f64d68ef26 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 28 Sep 2020 23:49:46 +0300 Subject: [PATCH 48/54] [DE] Apply line numbering --- .../main/app/controller/Toolbar.js | 46 +++++------ .../main/app/view/LineNumbersDialog.js | 79 ++++++++++++------- .../app/view/ParagraphSettingsAdvanced.js | 4 +- 3 files changed, 75 insertions(+), 54 deletions(-) diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index 7e06507a9..f310a187a 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -102,7 +102,8 @@ define([ pgmargins: undefined, fontsize: undefined, in_equation: false, - in_chart: false + in_chart: false, + linenum_apply: Asc.c_oAscSectionApplyType.All }; this.flg = {}; this.diagramEditor = null; @@ -1683,54 +1684,55 @@ define([ switch (item.value) { case 0: + this.api.asc_SetLineNumbersProps(this._state.linenum_apply, null); + break; case 1: case 2: case 3: this._state.linenum = undefined; if (this.api && item.checked) { - + var props = new Asc.CSectionLnNumType(); + props.put_Restart(item.value==1 ? Asc.c_oAscLineNumberRestartType.Continuous : (item.value==2 ? Asc.c_oAscLineNumberRestartType.NewPage : Asc.c_oAscLineNumberRestartType.NewSection)); + this.api.asc_SetLineNumbersProps(this._state.linenum_apply, props); } break; case 4: - this.api && this.api.put_ParagraphSuppressLineNumbers(item.checked); + this.api && this.api.asc_SetParagraphSuppressLineNumbers(item.checked); break; case 5: var win, me = this; win = new DE.Views.LineNumbersDialog({ + applyTo: me._state.linenum_apply, handler: function(dlg, result) { if (result == 'ok') { - // var props = dlg.getSettings(); - // me.api.asc_SetLineNumbersProps(props); + var settings = dlg.getSettings(); + me.api.asc_SetLineNumbersProps(settings.type, settings.props); + me._state.linenum_apply = settings.type; Common.NotificationCenter.trigger('edit:complete', me.toolbar); } } }); win.show(); - // win.setSettings(me.api.asc_GetLineNumbersProps()); + win.setSettings(me.api.asc_GetLineNumbersProps()); break; } + Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onLineNumbersProps: function(props) { + var index = 0; if (props) { - // var type = props.asc_getType(); - var index = -1; - // switch (type) { - // case Asc.None: index = 0; break; - // case Asc.Continuous: index = 1; break; - // case Asc.Page: index = 2; break; - // case Asc.Section: index = 3; break; - // } - if (this._state.linenum === index) - return; - if (index < 0) - this.toolbar.btnLineNumbers.menu.clearAll(); - else - this.toolbar.btnLineNumbers.menu.items[index].setChecked(true); - - this._state.linenum = index; + switch (props.get_Restart()) { + case Asc.c_oAscLineNumberRestartType.Continuous: index = 1; break; + case Asc.c_oAscLineNumberRestartType.NewPage: index = 2; break; + case Asc.c_oAscLineNumberRestartType.NewSection: index = 3; break; + } } + if (this._state.linenum === index) + return; + this.toolbar.btnLineNumbers.menu.items[index].setChecked(true); + this._state.linenum = index; }, onColorSchemaClick: function(menu, item) { diff --git a/apps/documenteditor/main/app/view/LineNumbersDialog.js b/apps/documenteditor/main/app/view/LineNumbersDialog.js index ba57aa7fe..f1c37058e 100644 --- a/apps/documenteditor/main/app/view/LineNumbersDialog.js +++ b/apps/documenteditor/main/app/view/LineNumbersDialog.js @@ -47,7 +47,7 @@ define([ DE.Views.LineNumbersDialog = Common.UI.Window.extend(_.extend({ options: { width: 290, - height: 273, + height: 308, header: true, style: 'min-width: 290px;', cls: 'modal-dlg', @@ -70,7 +70,10 @@ define([ '
    ', '
    ', '
    ', - '
    ', + '
    ', + '
    ', + '
    ', + '
    ', '
    ' ].join(''); @@ -155,6 +158,18 @@ define([ disabled: true }); + this.cmbApply = new Common.UI.ComboBox({ + el: $('#line-numbers-combo-apply'), + cls: 'input-group-nr', + menuStyle: 'min-width: 125px;', + editable: false, + data: [ + { displayValue: this.textSection, value: Asc.c_oAscSectionApplyType.Current }, + { displayValue: this.textForward, value: Asc.c_oAscSectionApplyType.ToEnd }, + { displayValue: this.textDocument, value: Asc.c_oAscSectionApplyType.All } + ] + }); + this.cmbApply.setValue(this.options.applyTo); this.getChild().find('.dlg-btn').on('click', _.bind(this.onBtnClick, this)); @@ -166,17 +181,18 @@ define([ setSettings: function (props) { if (props) { - // var type = props.asc_getType(); - // this.chAddLineNumbering.setValue(type !== case Asc.None); - // switch (type) { - // case Asc.Continuous: this.rbContinuous.setValue(true, true); break; - // case Asc.Page: this.rbRestartEachPage.setValue(true, true); break; - // case Asc.Section: this.rbRestartEachSection.setValue(true, true); break; - // } - // this.spnStartAt.setValue(props.get_StartAt()!==null ? props.get_StartAt() : '', true); - // this.spnFromText.setValue(props.get_FromText()!==null ? (props.get_FromText()<0 ? -1 : Common.Utils.Metric.fnRecalcFromMM(props.get_FromText())) : '', true); - // this.spnCountBy.setValue(props.get_Count()!==null ? props.get_Count() : '', true); - } + var type = props.get_Restart(); + this.chAddLineNumbering.setValue(true); + switch (type) { + case Asc.c_oAscLineNumberRestartType.Continuous: this.rbContinuous.setValue(true, true); break; + case Asc.c_oAscLineNumberRestartType.NewPage: this.rbRestartEachPage.setValue(true, true); break; + case Asc.c_oAscLineNumberRestartType.NewSection: this.rbRestartEachSection.setValue(true, true); break; + } + this.spnStartAt.setValue(props.get_Start()!==null && props.get_Start()!==undefined ? props.get_Start() : '', true); + this.spnFromText.setValue(props.get_Distance()!==null && props.get_Distance()!==undefined ? Common.Utils.Metric.fnRecalcFromMM(props.get_Distance() * 25.4 / 20 / 72.0) : -1, true); + this.spnCountBy.setValue(props.get_CountBy()!==null && props.get_CountBy()!==undefined ? props.get_CountBy() : '', true); + } else + this.chAddLineNumbering.setValue(false); }, _handleInput: function(state) { @@ -197,22 +213,21 @@ define([ }, getSettings: function() { - // var props = new Asc.CDocumentLineNumberProps(); - // if (this.chAddLineNumbering.getValue()!=='checked') { - // props.put_Type(Asc.None); - // } else { - // if (this.rbContinuous.getValue()) - // props.put_Type(Asc.Continuous); - // else if (this.rbRestartEachPage.getValue()) - // props.put_Type(Asc.Page); - // else if (this.rbRestartEachSection.getValue()) - // props.put_Type(Asc.Section); - // props.put_StartAt(this.spnStartAt.getNumberValue()); - // var value = this.spnFromText.getNumberValue(); - // props.put_FromText(value<0 ? -1 : Common.Utils.Metric.fnRecalcToMM()); - // props.put_Count(this.spnCountBy.getNumberValue()); - // } - // return props; + var props; + if (this.chAddLineNumbering.getValue()==='checked') { + props = new Asc.CSectionLnNumType(); + if (this.rbContinuous.getValue()) + props.put_Restart(Asc.c_oAscLineNumberRestartType.Continuous); + else if (this.rbRestartEachPage.getValue()) + props.put_Restart(Asc.c_oAscLineNumberRestartType.NewPage); + else if (this.rbRestartEachSection.getValue()) + props.put_Restart(Asc.c_oAscLineNumberRestartType.NewSection); + props.put_Start(this.spnStartAt.getValue()!=='' ? this.spnStartAt.getNumberValue() : undefined); + var value = this.spnFromText.getNumberValue(); + props.put_Distance(value<0 ? null : parseInt(Common.Utils.Metric.fnRecalcToMM(value) * 72 * 20 / 25.4)); + props.put_CountBy(this.spnCountBy.getValue()!=='' ? this.spnCountBy.getNumberValue() : undefined); + } + return {props: props, type: this.cmbApply.getValue()}; }, updateMetricUnit: function() { @@ -234,6 +249,10 @@ define([ textNumbering: 'Numbering', textRestartEachPage: 'Restart Each Page', textRestartEachSection: 'Restart Each Section', - textContinuous: 'Continuous' + textContinuous: 'Continuous', + textApplyTo: 'Apply changes to', + textDocument: 'Whole document', + textSection: 'Current section', + textForward: 'This point forward' }, DE.Views.LineNumbersDialog || {})) }); \ No newline at end of file diff --git a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js index b79f5a641..5cddca362 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -352,7 +352,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem }); this.chLineNumbers.on('change', _.bind(function(field, newValue, oldValue, eOpts){ if (this._changedProps) { - // this._changedProps.put_SuppressLineNumbers(field.getValue()=='checked'); + this._changedProps.put_SuppressLineNumbers(field.getValue()=='checked'); } }, this)); @@ -784,7 +784,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.chKeepNext.setValue((props.get_KeepNext() !== null && props.get_KeepNext() !== undefined) ? props.get_KeepNext() : 'indeterminate', true); this.chOrphan.setValue((props.get_WidowControl() !== null && props.get_WidowControl() !== undefined) ? props.get_WidowControl() : 'indeterminate', true); - // this.chLineNumbers.setValue((props.get_SuppressLineNumbers() !== null && props.get_SuppressLineNumbers() !== undefined) ? props.get_SuppressLineNumbers() : 'indeterminate', true); + this.chLineNumbers.setValue((props.get_SuppressLineNumbers() !== null && props.get_SuppressLineNumbers() !== undefined) ? props.get_SuppressLineNumbers() : 'indeterminate', true); this.Borders = new Asc.asc_CParagraphBorders(props.get_Borders()); From a3ae81e07286e9fadcf9920c95ccae067e28156e Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 28 Sep 2020 23:54:36 +0300 Subject: [PATCH 49/54] [DE] Add translation --- apps/documenteditor/main/locale/en.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index c31af1caf..684de3619 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1795,6 +1795,19 @@ "DE.Views.LeftMenu.tipTitles": "Titles", "DE.Views.LeftMenu.txtDeveloper": "DEVELOPER MODE", "DE.Views.LeftMenu.txtTrial": "TRIAL MODE", + "DE.Views.LineNumbersDialog.textTitle": "Line Numbers", + "DE.Views.LineNumbersDialog.textAddLineNumbering": "Add line numbering", + "DE.Views.LineNumbersDialog.textStartAt": "Start at", + "DE.Views.LineNumbersDialog.textFromText": "From text", + "DE.Views.LineNumbersDialog.textCountBy": "Count by", + "DE.Views.LineNumbersDialog.textNumbering": "Numbering", + "DE.Views.LineNumbersDialog.textRestartEachPage": "Restart Each Page", + "DE.Views.LineNumbersDialog.textRestartEachSection": "Restart Each Section", + "DE.Views.LineNumbersDialog.textContinuous": "Continuous", + "DE.Views.LineNumbersDialog.textApplyTo": "Apply changes to", + "DE.Views.LineNumbersDialog.textDocument": "Whole document", + "DE.Views.LineNumbersDialog.textSection": "Current section", + "DE.Views.LineNumbersDialog.textForward": "This point forward", "DE.Views.Links.capBtnBookmarks": "Bookmark", "DE.Views.Links.capBtnCaption": "Caption", "DE.Views.Links.capBtnContentsUpdate": "Refresh", @@ -2030,6 +2043,7 @@ "DE.Views.ParagraphSettingsAdvanced.tipTop": "Set top border only", "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "No borders", + "DE.Views.ParagraphSettingsAdvanced.strSuppressLineNumbers": "Suppress line numbers", "DE.Views.RightMenu.txtChartSettings": "Chart settings", "DE.Views.RightMenu.txtHeaderFooterSettings": "Header and footer settings", "DE.Views.RightMenu.txtImageSettings": "Image settings", @@ -2498,6 +2512,13 @@ "DE.Views.Toolbar.txtScheme7": "Equity", "DE.Views.Toolbar.txtScheme8": "Flow", "DE.Views.Toolbar.txtScheme9": "Foundry", + "DE.Views.Toolbar.capBtnLineNumbers": "Line Numbers", + "DE.Views.Toolbar.textContinuous": "Continuous", + "DE.Views.Toolbar.textRestartEachPage": "Restart Each Page", + "DE.Views.Toolbar.textRestartEachSection": "Restart Each Section", + "DE.Views.Toolbar.textSuppressForCurrentParagraph": "Suppress for Current Paragraph", + "DE.Views.Toolbar.textCustomLineNumbers": "Line Numbering Options", + "DE.Views.Toolbar.tipLineNumbers": "Show line numbers", "DE.Views.WatermarkSettingsDialog.textAuto": "Auto", "DE.Views.WatermarkSettingsDialog.textBold": "Bold", "DE.Views.WatermarkSettingsDialog.textColor": "Text color", From 301af74045342acb8c0cd64852bcfc20b92bbba4 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Sep 2020 00:02:30 +0300 Subject: [PATCH 50/54] [DE] Fix line numbering --- .../main/app/template/ParagraphSettingsAdvanced.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template index b97fe4433..99fcd8786 100644 --- a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -80,7 +80,7 @@ - +
    From f4e989d41214b4823bea9c17bc80c69fdab1c5ae Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Sep 2020 12:42:16 +0300 Subject: [PATCH 51/54] [DE] Update line numbering settings --- apps/documenteditor/main/app/controller/Toolbar.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index f310a187a..44d96d76d 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -103,7 +103,8 @@ define([ fontsize: undefined, in_equation: false, in_chart: false, - linenum_apply: Asc.c_oAscSectionApplyType.All + linenum_apply: Asc.c_oAscSectionApplyType.All, + suppress_num: undefined }; this.flg = {}; this.diagramEditor = null; @@ -337,6 +338,7 @@ define([ toolbar.mnuNoControlsColor.on('click', _.bind(this.onNoControlsColor, this)); toolbar.mnuControlsColorPicker.on('select', _.bind(this.onSelectControlsColor, this)); toolbar.btnLineNumbers.menu.on('item:click', _.bind(this.onLineNumbersSelect, this)); + toolbar.btnLineNumbers.menu.on('show:after', _.bind(this.onLineNumbersShow, this)); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); Common.Gateway.on('setmailmergerecipients', _.bind(this.setMailMergeRecipients, this)); $('#id-toolbar-menu-new-control-color').on('click', _.bind(this.onNewControlsColor, this)); @@ -890,6 +892,10 @@ define([ toolbar.btnWatermark.setDisabled(header_locked); + if (frame_pr) { + this._state.suppress_num = !!frame_pr.get_SuppressLineNumbers(); + } + this._state.in_equation = in_equation; }, @@ -1735,6 +1741,10 @@ define([ this._state.linenum = index; }, + onLineNumbersShow: function(menu) { + menu.items[4].setChecked(this._state.suppress_num); + }, + onColorSchemaClick: function(menu, item) { if (this.api) { this.api.asc_ChangeColorSchemeByIdx(item.value); From c10603dd78b189e39f73b721b287638ebfa63e6d Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Sep 2020 13:26:07 +0300 Subject: [PATCH 52/54] [SSE] Update translation --- apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js | 2 +- apps/spreadsheeteditor/main/locale/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js index 3c71202c2..59c46eaf3 100644 --- a/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js +++ b/apps/spreadsheeteditor/main/app/view/ViewManagerDlg.js @@ -334,7 +334,7 @@ define([ textRename: 'Rename', textDuplicate: 'Duplicate', textDelete: 'Delete', - textGoTo: 'Go to view...', + textGoTo: 'Go to view', textEmpty: 'No views have been created yet.', guestText: 'Guest', tipIsLocked: 'This element is being edited by another user.', diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 490eaa33f..76229fefc 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -2940,7 +2940,7 @@ "SSE.Views.ViewManagerDlg.textRename": "Rename", "SSE.Views.ViewManagerDlg.textDuplicate": "Duplicate", "SSE.Views.ViewManagerDlg.textDelete": "Delete", - "SSE.Views.ViewManagerDlg.textGoTo": "Go to view...", + "SSE.Views.ViewManagerDlg.textGoTo": "Go to view", "SSE.Views.ViewManagerDlg.textEmpty": "No views have been created yet.", "SSE.Views.ViewManagerDlg.guestText": "Guest", "SSE.Views.ViewManagerDlg.tipIsLocked": "This element is being edited by another user.", From 1c15e12505f7aee5a9895c39aaeae6378a118c5a Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 29 Sep 2020 14:22:39 +0300 Subject: [PATCH 53/54] [SSE] Fix statusbar when sheet-views feature is not supported --- apps/spreadsheeteditor/main/app/controller/Statusbar.js | 2 +- apps/spreadsheeteditor/main/app/view/Statusbar.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/spreadsheeteditor/main/app/controller/Statusbar.js b/apps/spreadsheeteditor/main/app/controller/Statusbar.js index 9e257d371..fdc2310b2 100644 --- a/apps/spreadsheeteditor/main/app/controller/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Statusbar.js @@ -712,7 +712,7 @@ define([ onApiActiveSheetChanged: function (index) { this.statusbar.tabMenu.hide(); - if (this._sheetViewTip && this._sheetViewTip.isVisible() && !this.api.asc_getActiveNamedSheetView(index)) { // hide tip when sheet in the default mode + if (this._sheetViewTip && this._sheetViewTip.isVisible() && this.api.asc_getActiveNamedSheetView && !this.api.asc_getActiveNamedSheetView(index)) { // hide tip when sheet in the default mode this._sheetViewTip.hide(); } }, diff --git a/apps/spreadsheeteditor/main/app/view/Statusbar.js b/apps/spreadsheeteditor/main/app/view/Statusbar.js index 697f6a861..36ce28f51 100644 --- a/apps/spreadsheeteditor/main/app/view/Statusbar.js +++ b/apps/spreadsheeteditor/main/app/view/Statusbar.js @@ -494,7 +494,7 @@ define([ while (++i < wc) { locked = me.api.asc_isWorksheetLockedOrDeleted(i); - name = me.api.asc_getActiveNamedSheetView(i) || ''; + name = me.api.asc_getActiveNamedSheetView ? me.api.asc_getActiveNamedSheetView(i) || '' : ''; tab = { sheetindex : i, index : items.length, From c7699959418f056f7a7b89f1dc4286d2cd2af0c0 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Mon, 5 Oct 2020 17:32:18 +0300 Subject: [PATCH 54/54] Fix opening symbol dialog: select first symbol from the selected text or recent symbol --- .../common/main/lib/view/SymbolTableDialog.js | 22 ++++++++++++++----- .../main/app/controller/Toolbar.js | 5 ++++- .../main/app/controller/Toolbar.js | 3 +++ .../main/app/controller/Toolbar.js | 3 +++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/apps/common/main/lib/view/SymbolTableDialog.js b/apps/common/main/lib/view/SymbolTableDialog.js index a1755132e..d1afd2dbb 100644 --- a/apps/common/main/lib/view/SymbolTableDialog.js +++ b/apps/common/main/lib/view/SymbolTableDialog.js @@ -489,9 +489,18 @@ define([ var init = (aFontSelects.length<1); init && this.initFonts(); + //fill recents + this.fillRecentSymbols(); + + var lastfont; if (options.font) { + lastfont = options.font; + } else if (aRecents.length>0) { + lastfont = aRecents[0].font; + } + if (lastfont) { for(var i = 0; i < aFontSelects.length; ++i){ - if(aFontSelects[i].displayValue === options.font){ + if(aFontSelects[i].displayValue === lastfont){ nCurrentFont = i; break; } @@ -526,6 +535,8 @@ define([ nCurrentSymbol = options.code; } else if (options.symbol) { nCurrentSymbol = this.fixedCharCodeAt(options.symbol, 0); + } else if (aRecents.length>0) { + nCurrentSymbol = aRecents[0].symbol; } if (init && this.options.lang && this.options.lang != 'en') { @@ -539,6 +550,8 @@ define([ this.on('resizing', _.bind(this.onWindowResizing, this)); this.on('resize', _.bind(this.onWindowResize, this)); + + bMainFocus = true; }, initFonts: function() { @@ -705,9 +718,6 @@ define([ me.updateInput(); }); - //fill recents - this.fillRecentSymbols(); - this.symbolTablePanel = $window.find('#symbol-table-scrollable-div'); this.previewPanel = $window.find('#id-preview-data'); this.previewParent = this.previewPanel.parent(); @@ -822,7 +832,7 @@ define([ this.options.handler.call(this, this, state, settings); } if (state=='ok') { - !special && settings.updateRecents && this.checkRecent(nCurrentSymbol, settings.font); + !special && this.checkRecent(nCurrentSymbol, settings.font); !special && settings.updateRecents && this.updateRecents(); if (this.type) return; @@ -1050,7 +1060,7 @@ define([ this._handleInput('ok'); else { var settings = this.getPasteSymbol($(e.target).attr('id')); - settings.updateRecents && this.checkRecent(nCurrentSymbol, settings.font); + this.checkRecent(nCurrentSymbol, settings.font); settings.updateRecents && this.updateView(false, undefined, undefined, true); this.fireEvent('symbol:dblclick', this, 'ok', settings); } diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index 44d96d76d..49da71c50 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -2658,7 +2658,8 @@ define([ if (this.dlgSymbolTable && this.dlgSymbolTable.isVisible()) return; if (this.api) { - var me = this; + var me = this, + selected = me.api.asc_GetSelectedText(); me.dlgSymbolTable = new Common.Views.SymbolTableDialog({ api: me.api, lang: me.mode.lang, @@ -2666,6 +2667,8 @@ define([ type: 1, special: true, showShortcutKey: true, + font: selected && selected.length>0 ? this.api.get_TextProps().get_TextPr().get_FontFamily().get_Name() : undefined, + symbol: selected && selected.length>0 ? selected.charAt(0) : undefined, buttons: [{value: 'ok', caption: this.textInsert}, 'close'], handler: function(dlg, result, settings) { if (result == 'ok') { diff --git a/apps/presentationeditor/main/app/controller/Toolbar.js b/apps/presentationeditor/main/app/controller/Toolbar.js index 5892bd748..25b75df12 100644 --- a/apps/presentationeditor/main/app/controller/Toolbar.js +++ b/apps/presentationeditor/main/app/controller/Toolbar.js @@ -1866,12 +1866,15 @@ define([ onInsertSymbolClick: function() { if (this.api) { var me = this, + selected = me.api.asc_GetSelectedText(), win = new Common.Views.SymbolTableDialog({ api: me.api, lang: me.toolbar.mode.lang, type: 1, special: true, buttons: [{value: 'ok', caption: this.textInsert}, 'close'], + font: selected && selected.length>0 ? me.api.get_TextProps().get_TextPr().get_FontFamily().get_Name() : undefined, + symbol: selected && selected.length>0 ? selected.charAt(0) : undefined, handler: function(dlg, result, settings) { if (result == 'ok') { me.api.asc_insertSymbol(settings.font ? settings.font : me.api.get_TextProps().get_TextPr().get_FontFamily().get_Name(), settings.code, settings.special); diff --git a/apps/spreadsheeteditor/main/app/controller/Toolbar.js b/apps/spreadsheeteditor/main/app/controller/Toolbar.js index e416582c0..f96aecf6a 100644 --- a/apps/spreadsheeteditor/main/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/controller/Toolbar.js @@ -2846,12 +2846,15 @@ define([ onInsertSymbolClick: function() { if (this.api) { var me = this, + selected = me.api.asc_GetSelectedText(), win = new Common.Views.SymbolTableDialog({ api: me.api, lang: me.toolbar.mode.lang, type: 1, special: true, buttons: [{value: 'ok', caption: this.textInsert}, 'close'], + font: selected && selected.length>0 ? me.api.asc_getCellInfo().asc_getXfs().asc_getFontName() : undefined, + symbol: selected && selected.length>0 ? selected.charAt(0) : undefined, handler: function(dlg, result, settings) { if (result == 'ok') { me.api.asc_insertSymbol(settings.font ? settings.font : me.api.asc_getCellInfo().asc_getXfs().asc_getFontName(), settings.code, settings.special);