2016-04-01 13:17:09 +00:00
/ *
*
2019-01-17 13:05:03 +00:00
* ( c ) Copyright Ascensio System SIA 2010 - 2019
2016-04-01 13:17:09 +00:00
*
* 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
*
2019-01-17 13:00:34 +00:00
* You can contact Ascensio System SIA at 20 A - 12 Ernesta Birznieka - Upisha
* street , Riga , Latvia , EU , LV - 1050.
2016-04-01 13:17:09 +00:00
*
* 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
*
* /
2016-03-11 00:48:53 +00:00
/ * *
* Toolbar . js
*
* Created by Alexander Yuzhin on 3 / 31 / 14
2018-03-01 12:16:38 +00:00
* Copyright ( c ) 2018 Ascensio System SIA . All rights reserved .
2016-03-11 00:48:53 +00:00
*
* /
define ( [
'core' ,
'common/main/lib/component/Window' ,
'common/main/lib/view/CopyWarningDialog' ,
'common/main/lib/view/ImageFromUrlDialog' ,
2018-10-03 11:00:08 +00:00
'common/main/lib/view/SelectFileDlg' ,
2019-11-14 08:48:58 +00:00
'common/main/lib/view/SymbolTableDialog' ,
2020-10-15 11:09:23 +00:00
'common/main/lib/view/OptionsDialog' ,
2016-10-21 09:33:49 +00:00
'common/main/lib/util/define' ,
2016-03-11 00:48:53 +00:00
'spreadsheeteditor/main/app/view/Toolbar' ,
'spreadsheeteditor/main/app/collection/TableTemplates' ,
2017-06-30 14:49:58 +00:00
'spreadsheeteditor/main/app/controller/PivotTable' ,
2016-03-11 00:48:53 +00:00
'spreadsheeteditor/main/app/view/HyperlinkSettingsDialog' ,
'spreadsheeteditor/main/app/view/TableOptionsDialog' ,
'spreadsheeteditor/main/app/view/NamedRangeEditDlg' ,
'spreadsheeteditor/main/app/view/NamedRangePasteDlg' ,
2017-01-16 08:48:21 +00:00
'spreadsheeteditor/main/app/view/NameManagerDlg' ,
2018-06-29 07:55:05 +00:00
'spreadsheeteditor/main/app/view/FormatSettingsDialog' ,
2018-10-11 11:25:53 +00:00
'spreadsheeteditor/main/app/view/PageMarginsDialog' ,
2019-08-21 10:55:40 +00:00
'spreadsheeteditor/main/app/view/HeaderFooterDialog' ,
2020-03-17 12:06:40 +00:00
'spreadsheeteditor/main/app/view/PrintTitlesDialog' ,
2020-04-10 14:50:58 +00:00
'spreadsheeteditor/main/app/view/ScaleDialog' ,
2020-05-12 10:17:52 +00:00
'spreadsheeteditor/main/app/view/SlicerAddDialog' ,
2020-06-26 17:44:54 +00:00
'spreadsheeteditor/main/app/view/AdvancedSeparatorDialog'
2016-03-11 00:48:53 +00:00
] , function ( ) { 'use strict' ;
SSE . Controllers . Toolbar = Backbone . Controller . extend ( _ . extend ( {
models : [ ] ,
collections : [ ] ,
views : [
'Toolbar'
] ,
initialize : function ( ) {
var me = this ;
this . addListeners ( {
2017-04-27 15:40:27 +00:00
'Toolbar' : {
2019-09-02 09:52:14 +00:00
'change:compact' : this . onClickChangeCompact . bind ( me ) ,
2019-09-03 10:52:52 +00:00
'add:chart' : this . onSelectChart ,
2019-09-18 13:32:26 +00:00
'insert:textart' : this . onInsertTextart ,
2019-09-13 14:45:09 +00:00
'change:scalespn' : this . onClickChangeScaleInMenu . bind ( me ) ,
2020-09-17 13:29:48 +00:00
'click:customscale' : this . onScaleClick . bind ( me ) ,
2020-09-17 09:39:59 +00:00
'home:open' : this . onHomeOpen
2017-04-27 15:40:27 +00:00
} ,
'FileMenu' : {
'menu:hide' : me . onFileMenu . bind ( me , 'hide' ) ,
'menu:show' : me . onFileMenu . bind ( me , 'show' )
} ,
2016-03-11 00:48:53 +00:00
'Statusbar' : {
'sheet:changed' : _ . bind ( this . onApiSheetChanged , this )
} ,
2017-07-21 10:41:56 +00:00
'Common.Views.Header' : {
2018-03-21 11:28:28 +00:00
'toolbar:setcompact' : this . onChangeViewMode . bind ( this ) ,
2017-08-23 11:51:27 +00:00
'print' : function ( opts ) {
var _main = this . getApplication ( ) . getController ( 'Main' ) ;
_main . onPrint ( ) ;
} ,
2018-01-24 11:10:33 +00:00
'save' : function ( opts ) {
this . api . asc _Save ( ) ;
} ,
'undo' : this . onUndo ,
'redo' : this . onRedo ,
2017-07-21 10:41:56 +00:00
'downloadas' : function ( opts ) {
2017-07-21 14:55:27 +00:00
var _main = this . getApplication ( ) . getController ( 'Main' ) ;
var _file _type = _main . appOptions . spreadsheet . fileType ,
_format ;
if ( ! ! _file _type ) {
_format = Asc . c _oAscFileType [ _file _type . toUpperCase ( ) ] ;
}
var _supported = [
Asc . c _oAscFileType . XLSX ,
Asc . c _oAscFileType . ODS ,
2018-07-18 11:07:24 +00:00
Asc . c _oAscFileType . CSV ,
2019-02-21 13:10:37 +00:00
Asc . c _oAscFileType . PDFA ,
Asc . c _oAscFileType . XLTX ,
Asc . c _oAscFileType . OTS
2017-07-21 14:55:27 +00:00
] ;
if ( ! _format || _supported . indexOf ( _format ) < 0 )
_format = Asc . c _oAscFileType . PDF ;
2018-07-18 11:07:24 +00:00
if ( _format == Asc . c _oAscFileType . PDF || _format == Asc . c _oAscFileType . PDFA )
Common . NotificationCenter . trigger ( 'download:settings' , this . toolbar , _format ) ;
2018-04-05 11:29:37 +00:00
else
2019-07-24 08:36:13 +00:00
_main . api . asc _DownloadAs ( new Asc . asc _CDownloadOptions ( _format ) ) ;
2017-07-21 14:55:27 +00:00
} ,
2017-07-21 10:41:56 +00:00
'go:editor' : function ( ) {
Common . Gateway . requestEditRights ( ) ;
}
2019-05-31 14:48:14 +00:00
} ,
'DataTab' : {
2019-06-03 10:20:24 +00:00
'data:sort' : this . onSortType ,
'data:setfilter' : this . onAutoFilter ,
'data:clearfilter' : this . onClearFilter
2020-02-26 10:49:57 +00:00
} ,
'FormulaTab' : {
'function:namedrange' : this . onNamedRangeMenu ,
'function:namedrange-open' : this . onNamedRangeMenuOpen
2016-03-11 00:48:53 +00:00
}
} ) ;
2018-06-28 09:27:11 +00:00
Common . NotificationCenter . on ( 'page:settings' , _ . bind ( this . onApiSheetChanged , this ) ) ;
2019-03-04 13:02:57 +00:00
Common . NotificationCenter . on ( 'formula:settings' , _ . bind ( this . applyFormulaSettings , this ) ) ;
2018-06-28 09:27:11 +00:00
2016-03-11 00:48:53 +00:00
this . editMode = true ;
this . _isAddingShape = false ;
this . _state = {
2018-09-25 13:19:33 +00:00
activated : false ,
2016-03-11 00:48:53 +00:00
prstyle : undefined ,
clrtext : undefined ,
pralign : undefined ,
clrback : undefined ,
valign : undefined ,
can _undo : undefined ,
can _redo : undefined ,
bold : undefined ,
italic : undefined ,
underline : undefined ,
2017-12-05 13:58:01 +00:00
strikeout : undefined ,
subscript : undefined ,
superscript : undefined ,
2016-03-11 00:48:53 +00:00
wrap : undefined ,
merge : undefined ,
angle : undefined ,
controlsdisabled : {
rows : undefined ,
cols : undefined ,
cells _right : undefined ,
cells _down : undefined ,
filters : undefined
} ,
selection _type : undefined ,
2017-04-11 11:05:56 +00:00
filter : undefined ,
filterapplied : false ,
2016-03-11 00:48:53 +00:00
tablestylename : undefined ,
tablename : undefined ,
namedrange _locked : false ,
2016-11-01 12:42:46 +00:00
fontsize : undefined ,
2016-12-28 11:28:27 +00:00
multiselect : false ,
2017-01-12 14:14:51 +00:00
sparklines _disabled : false ,
2017-02-07 09:56:32 +00:00
numformatinfo : undefined ,
2017-01-17 12:58:20 +00:00
numformattype : undefined ,
2017-01-19 11:34:37 +00:00
numformat : undefined ,
2018-06-28 09:27:11 +00:00
langId : undefined ,
pgsize : [ 0 , 0 ] ,
pgmargins : undefined ,
2018-07-19 12:48:12 +00:00
pgorient : undefined ,
lock _doc : undefined
2016-03-11 00:48:53 +00:00
} ;
2019-08-21 14:08:21 +00:00
this . binding = { } ;
2016-03-11 00:48:53 +00:00
var checkInsertAutoshape = function ( e , action ) {
var cmp = $ ( e . target ) ,
cmp _sdk = cmp . closest ( '#editor_sdk' ) ,
btn _id = cmp . closest ( 'button' ) . attr ( 'id' ) ;
if ( btn _id === undefined )
btn _id = cmp . closest ( '.btn-group' ) . attr ( 'id' ) ;
if ( me . api && me . api . asc _isAddAutoshape ( ) ) {
if ( cmp _sdk . length <= 0 || action == 'cancel' ) {
if ( me . toolbar . btnInsertText . pressed && btn _id != me . toolbar . btnInsertText . id ||
me . toolbar . btnInsertShape . pressed && btn _id != me . toolbar . btnInsertShape . id ) {
me . _isAddingShape = false ;
me . _addAutoshape ( false ) ;
me . toolbar . btnInsertShape . toggle ( false , true ) ;
me . toolbar . btnInsertText . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} else if ( me . toolbar . btnInsertShape . pressed && btn _id == me . toolbar . btnInsertShape . id ) {
_ . defer ( function ( ) {
me . api . asc _endAddShape ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} , 100 ) ;
}
}
}
} ;
this . checkInsertAutoshape = function ( cmp ) {
checkInsertAutoshape ( { } , cmp . action ) ;
} ;
this . _addAutoshape = function ( isstart , type ) {
if ( this . api ) {
if ( isstart ) {
this . api . asc _startAddShape ( type ) ;
$ ( document . body ) . on ( 'mouseup' , checkInsertAutoshape ) ;
} else {
this . api . asc _endAddShape ( ) ;
$ ( document . body ) . off ( 'mouseup' , checkInsertAutoshape ) ;
}
}
} ;
this . onApiEndAddShape = function ( ) {
if ( this . toolbar . btnInsertShape . pressed ) this . toolbar . btnInsertShape . toggle ( false , true ) ;
if ( this . toolbar . btnInsertText . pressed ) this . toolbar . btnInsertText . toggle ( false , true ) ;
$ ( document . body ) . off ( 'mouseup' , checkInsertAutoshape ) ;
} ;
} ,
onLaunch : function ( ) {
// Create toolbar view
this . toolbar = this . createView ( 'Toolbar' ) ;
2017-04-27 15:40:27 +00:00
Common . NotificationCenter . on ( 'app:ready' , this . onAppReady . bind ( this ) ) ;
Common . NotificationCenter . on ( 'app:face' , this . onAppShowed . bind ( this ) ) ;
2016-03-11 00:48:53 +00:00
} ,
2018-05-15 14:32:10 +00:00
setMode : function ( mode ) {
this . mode = mode ;
this . toolbar . applyLayout ( mode ) ;
} ,
2017-04-28 14:28:35 +00:00
attachUIEvents : function ( toolbar ) {
2016-03-11 00:48:53 +00:00
var me = this ;
/ * *
* UI Events
* /
2017-04-27 15:40:27 +00:00
if ( me . appConfig . isEditDiagram ) {
2017-08-03 14:40:28 +00:00
toolbar . btnUndo . on ( 'click' , _ . bind ( this . onUndo , this ) ) ;
toolbar . btnRedo . on ( 'click' , _ . bind ( this . onRedo , this ) ) ;
toolbar . btnCopy . on ( 'click' , _ . bind ( this . onCopyPaste , this , true ) ) ;
toolbar . btnPaste . on ( 'click' , _ . bind ( this . onCopyPaste , this , false ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnInsertFormula . on ( 'click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnInsertFormula . menu . on ( 'item:click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnDecDecimal . on ( 'click' , _ . bind ( this . onDecrement , this ) ) ;
toolbar . btnIncDecimal . on ( 'click' , _ . bind ( this . onIncrement , this ) ) ;
toolbar . cmbNumberFormat . on ( 'selected' , _ . bind ( this . onNumberFormatSelect , this ) ) ;
toolbar . cmbNumberFormat . on ( 'show:before' , _ . bind ( this . onNumberFormatOpenBefore , this , true ) ) ;
if ( toolbar . cmbNumberFormat . cmpEl )
toolbar . cmbNumberFormat . cmpEl . on ( 'click' , '#id-toolbar-mnu-item-more-formats a' , _ . bind ( this . onNumberFormatSelect , this ) ) ;
toolbar . btnEditChart . on ( 'click' , _ . bind ( this . onEditChart , this ) ) ;
2020-10-02 15:33:07 +00:00
toolbar . btnEditChartData . on ( 'click' , _ . bind ( this . onEditChartData , this ) ) ;
2017-04-27 15:40:27 +00:00
} else
if ( me . appConfig . isEditMailMerge ) {
2017-08-03 14:40:28 +00:00
toolbar . btnUndo . on ( 'click' , _ . bind ( this . onUndo , this ) ) ;
toolbar . btnRedo . on ( 'click' , _ . bind ( this . onRedo , this ) ) ;
toolbar . btnCopy . on ( 'click' , _ . bind ( this . onCopyPaste , this , true ) ) ;
toolbar . btnPaste . on ( 'click' , _ . bind ( this . onCopyPaste , this , false ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnSearch . on ( 'click' , _ . bind ( this . onSearch , this ) ) ;
toolbar . btnSortDown . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Ascending ) ) ;
toolbar . btnSortUp . on ( 'click' , _ . bind ( this . onSortType , this , Asc . c _oAscSortOptions . Descending ) ) ;
toolbar . btnSetAutofilter . on ( 'click' , _ . bind ( this . onAutoFilter , this ) ) ;
toolbar . btnClearAutofilter . on ( 'click' , _ . bind ( this . onClearFilter , this ) ) ;
} else {
toolbar . btnPrint . on ( 'click' , _ . bind ( this . onPrint , this ) ) ;
2018-09-25 14:09:59 +00:00
toolbar . btnPrint . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'print:disabled' ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnSave . on ( 'click' , _ . bind ( this . onSave , this ) ) ;
2018-02-15 23:56:17 +00:00
toolbar . btnSave . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'save:disabled' ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnUndo . on ( 'click' , _ . bind ( this . onUndo , this ) ) ;
2018-02-15 23:56:17 +00:00
toolbar . btnUndo . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'undo:disabled' ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnRedo . on ( 'click' , _ . bind ( this . onRedo , this ) ) ;
2018-02-15 23:56:17 +00:00
toolbar . btnRedo . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'redo:disabled' ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnCopy . on ( 'click' , _ . bind ( this . onCopyPaste , this , true ) ) ;
toolbar . btnPaste . on ( 'click' , _ . bind ( this . onCopyPaste , this , false ) ) ;
toolbar . btnIncFontSize . on ( 'click' , _ . bind ( this . onIncreaseFontSize , this ) ) ;
toolbar . btnDecFontSize . on ( 'click' , _ . bind ( this . onDecreaseFontSize , this ) ) ;
toolbar . btnBold . on ( 'click' , _ . bind ( this . onBold , this ) ) ;
toolbar . btnItalic . on ( 'click' , _ . bind ( this . onItalic , this ) ) ;
toolbar . btnUnderline . on ( 'click' , _ . bind ( this . onUnderline , this ) ) ;
2017-12-05 13:58:01 +00:00
toolbar . btnStrikeout . on ( 'click' , _ . bind ( this . onStrikeout , this ) ) ;
toolbar . btnSubscript . on ( 'click' , _ . bind ( this . onSubscript , this ) ) ;
toolbar . btnSubscript . menu . on ( 'item:click' , _ . bind ( this . onSubscriptMenu , this ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnTextColor . on ( 'click' , _ . bind ( this . onTextColor , this ) ) ;
toolbar . btnBackColor . on ( 'click' , _ . bind ( this . onBackColor , this ) ) ;
toolbar . mnuTextColorPicker . on ( 'select' , _ . bind ( this . onTextColorSelect , this ) ) ;
toolbar . mnuBackColorPicker . on ( 'select' , _ . bind ( this . onBackColorSelect , this ) ) ;
toolbar . btnBorders . on ( 'click' , _ . bind ( this . onBorders , this ) ) ;
if ( toolbar . btnBorders . rendered ) {
toolbar . btnBorders . menu . on ( 'item:click' , _ . bind ( this . onBordersMenu , this ) ) ;
toolbar . mnuBorderWidth . on ( 'item:toggle' , _ . bind ( this . onBordersWidth , this ) ) ;
toolbar . mnuBorderColorPicker . on ( 'select' , _ . bind ( this . onBordersColor , this ) ) ;
}
2017-08-24 11:22:59 +00:00
toolbar . btnAlignLeft . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , AscCommon . align _Left ) ) ;
toolbar . btnAlignCenter . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , AscCommon . align _Center ) ) ;
toolbar . btnAlignRight . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , AscCommon . align _Right ) ) ;
toolbar . btnAlignJust . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , AscCommon . align _Justify ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnMerge . on ( 'click' , _ . bind ( this . onMergeCellsMenu , this , toolbar . btnMerge . menu , toolbar . btnMerge . menu . items [ 0 ] ) ) ;
toolbar . btnMerge . menu . on ( 'item:click' , _ . bind ( this . onMergeCellsMenu , this ) ) ;
2017-08-24 11:22:59 +00:00
toolbar . btnAlignTop . on ( 'click' , _ . bind ( this . onVerticalAlign , this , Asc . c _oAscVAlign . Top ) ) ;
toolbar . btnAlignMiddle . on ( 'click' , _ . bind ( this . onVerticalAlign , this , Asc . c _oAscVAlign . Center ) ) ;
toolbar . btnAlignBottom . on ( 'click' , _ . bind ( this . onVerticalAlign , this , Asc . c _oAscVAlign . Bottom ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnWrap . on ( 'click' , _ . bind ( this . onWrap , this ) ) ;
toolbar . btnTextOrient . menu . on ( 'item:click' , _ . bind ( this . onTextOrientationMenu , this ) ) ;
2019-06-13 11:28:26 +00:00
toolbar . btnInsertTable . on ( 'click' , _ . bind ( this . onBtnInsertTableClick , this ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnInsertImage . menu . on ( 'item:click' , _ . bind ( this . onInsertImageMenu , this ) ) ;
toolbar . btnInsertHyperlink . on ( 'click' , _ . bind ( this . onHyperlink , this ) ) ;
toolbar . btnInsertText . on ( 'click' , _ . bind ( this . onBtnInsertTextClick , this ) ) ;
toolbar . btnInsertShape . menu . on ( 'hide:after' , _ . bind ( this . onInsertShapeHide , this ) ) ;
toolbar . btnInsertEquation . on ( 'click' , _ . bind ( this . onInsertEquationClick , this ) ) ;
2019-11-14 08:48:58 +00:00
toolbar . btnInsertSymbol . on ( 'click' , _ . bind ( this . onInsertSymbolClick , this ) ) ;
2020-04-10 14:50:58 +00:00
toolbar . btnInsertSlicer . on ( 'click' , _ . bind ( this . onInsertSlicerClick , this ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . btnTableTemplate . menu . on ( 'show:after' , _ . bind ( this . onTableTplMenuOpen , this ) ) ;
toolbar . btnPercentStyle . on ( 'click' , _ . bind ( this . onNumberFormat , this ) ) ;
toolbar . btnCurrencyStyle . on ( 'click' , _ . bind ( this . onNumberFormat , this ) ) ;
toolbar . btnDecDecimal . on ( 'click' , _ . bind ( this . onDecrement , this ) ) ;
toolbar . btnIncDecimal . on ( 'click' , _ . bind ( this . onIncrement , this ) ) ;
toolbar . btnInsertFormula . on ( 'click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnInsertFormula . menu . on ( 'item:click' , _ . bind ( this . onInsertFormulaMenu , this ) ) ;
toolbar . btnNamedRange . menu . on ( 'item:click' , _ . bind ( this . onNamedRangeMenu , this ) ) ;
toolbar . btnNamedRange . menu . on ( 'show:after' , _ . bind ( this . onNamedRangeMenuOpen , this ) ) ;
toolbar . btnClearStyle . menu . on ( 'item:click' , _ . bind ( this . onClearStyleMenu , this ) ) ;
toolbar . btnAddCell . menu . on ( 'item:click' , _ . bind ( this . onCellInsertMenu , this ) ) ;
toolbar . btnCopyStyle . on ( 'toggle' , _ . bind ( this . onCopyStyleToggle , this ) ) ;
toolbar . btnDeleteCell . menu . on ( 'item:click' , _ . bind ( this . onCellDeleteMenu , this ) ) ;
toolbar . btnColorSchemas . menu . on ( 'item:click' , _ . bind ( this . onColorSchemaClick , this ) ) ;
2019-08-20 12:56:29 +00:00
toolbar . btnColorSchemas . menu . on ( 'show:after' , _ . bind ( this . onColorSchemaShow , this ) ) ;
2017-04-27 15:40:27 +00:00
toolbar . cmbFontName . on ( 'selected' , _ . bind ( this . onFontNameSelect , this ) ) ;
toolbar . cmbFontName . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
toolbar . cmbFontName . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
toolbar . cmbFontName . on ( 'combo:blur' , _ . bind ( this . onComboBlur , this ) ) ;
toolbar . cmbFontName . on ( 'combo:focusin' , _ . bind ( this . onComboOpen , this , false ) ) ;
toolbar . cmbFontSize . on ( 'selected' , _ . bind ( this . onFontSizeSelect , this ) ) ;
toolbar . cmbFontSize . on ( 'changed:before' , _ . bind ( this . onFontSizeChanged , this , true ) ) ;
toolbar . cmbFontSize . on ( 'changed:after' , _ . bind ( this . onFontSizeChanged , this , false ) ) ;
toolbar . cmbFontSize . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
toolbar . cmbFontSize . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
toolbar . cmbFontSize . on ( 'combo:blur' , _ . bind ( this . onComboBlur , this ) ) ;
toolbar . cmbFontSize . on ( 'combo:focusin' , _ . bind ( this . onComboOpen , this , false ) ) ;
toolbar . listStyles . on ( 'click' , _ . bind ( this . onListStyleSelect , this ) ) ;
toolbar . cmbNumberFormat . on ( 'selected' , _ . bind ( this . onNumberFormatSelect , this ) ) ;
toolbar . cmbNumberFormat . on ( 'show:before' , _ . bind ( this . onNumberFormatOpenBefore , this , true ) ) ;
if ( toolbar . cmbNumberFormat . cmpEl )
toolbar . cmbNumberFormat . cmpEl . on ( 'click' , '#id-toolbar-mnu-item-more-formats a' , _ . bind ( this . onNumberFormatSelect , this ) ) ;
toolbar . btnCurrencyStyle . menu . on ( 'item:click' , _ . bind ( this . onNumberFormatMenu , this ) ) ;
$ ( '#id-toolbar-menu-new-fontcolor' ) . on ( 'click' , _ . bind ( this . onNewTextColor , this ) ) ;
$ ( '#id-toolbar-menu-new-paracolor' ) . on ( 'click' , _ . bind ( this . onNewBackColor , this ) ) ;
$ ( '#id-toolbar-menu-new-bordercolor' ) . on ( 'click' , _ . bind ( this . onNewBorderColor , this ) ) ;
2018-06-28 09:27:11 +00:00
toolbar . btnPageOrient . menu . on ( 'item:click' , _ . bind ( this . onPageOrientSelect , this ) ) ;
toolbar . btnPageMargins . menu . on ( 'item:click' , _ . bind ( this . onPageMarginsSelect , this ) ) ;
toolbar . mnuPageSize . on ( 'item:click' , _ . bind ( this . onPageSizeClick , this ) ) ;
2019-10-15 12:07:03 +00:00
toolbar . mnuScale . on ( 'item:click' , _ . bind ( this . onScaleClick , this , 'scale' ) ) ;
toolbar . menuWidthScale . on ( 'item:click' , _ . bind ( this . onScaleClick , this , 'width' ) ) ;
toolbar . menuHeightScale . on ( 'item:click' , _ . bind ( this . onScaleClick , this , 'height' ) ) ;
2018-09-04 10:18:46 +00:00
toolbar . btnPrintArea . menu . on ( 'item:click' , _ . bind ( this . onPrintAreaClick , this ) ) ;
toolbar . btnPrintArea . menu . on ( 'show:after' , _ . bind ( this . onPrintAreaMenuOpen , this ) ) ;
2018-06-28 09:27:11 +00:00
toolbar . btnImgGroup . menu . on ( 'item:click' , _ . bind ( this . onImgGroupSelect , this ) ) ;
toolbar . btnImgBackward . menu . on ( 'item:click' , _ . bind ( this . onImgArrangeSelect , this ) ) ;
toolbar . btnImgForward . menu . on ( 'item:click' , _ . bind ( this . onImgArrangeSelect , this ) ) ;
toolbar . btnImgAlign . menu . on ( 'item:click' , _ . bind ( this . onImgAlignSelect , this ) ) ;
toolbar . btnImgForward . on ( 'click' , this . onImgArrangeSelect . bind ( this , 'forward' ) ) ;
toolbar . btnImgBackward . on ( 'click' , this . onImgArrangeSelect . bind ( this , 'backward' ) ) ;
2019-09-04 14:58:43 +00:00
toolbar . btnsEditHeader . forEach ( function ( button ) {
button . on ( 'click' , _ . bind ( me . onEditHeaderClick , me ) ) ;
} ) ;
2020-03-17 12:06:40 +00:00
toolbar . btnPrintTitles . on ( 'click' , _ . bind ( this . onPrintTitlesClick , this ) ) ;
2019-09-04 14:58:43 +00:00
2019-07-26 11:49:53 +00:00
Common . Gateway . on ( 'insertimage' , _ . bind ( this . insertImage , this ) ) ;
2017-04-27 15:40:27 +00:00
this . onSetupCopyStyleButton ( ) ;
}
2016-03-11 00:48:53 +00:00
} ,
setApi : function ( api ) {
this . api = api ;
2017-04-27 15:40:27 +00:00
var config = SSE . getController ( 'Main' ) . appOptions ;
2019-11-15 11:01:08 +00:00
if ( config . isEdit ) {
if ( ! config . isEditDiagram && ! config . isEditMailMerge ) {
this . api . asc _registerCallback ( 'asc_onSendThemeColors' , _ . bind ( this . onSendThemeColors , this ) ) ;
this . api . asc _registerCallback ( 'asc_onMathTypes' , _ . bind ( this . onApiMathTypes , this ) ) ;
this . api . asc _registerCallback ( 'asc_onContextMenu' , _ . bind ( this . onContextMenu , this ) ) ;
2020-05-13 14:20:58 +00:00
Common . NotificationCenter . on ( 'storage:image-load' , _ . bind ( this . openImageFromStorage , this ) ) ;
Common . NotificationCenter . on ( 'storage:image-insert' , _ . bind ( this . insertImageFromStorage , this ) ) ;
2019-11-15 11:01:08 +00:00
}
this . api . asc _registerCallback ( 'asc_onInitEditorStyles' , _ . bind ( this . onApiInitEditorStyles , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCoAuthoringDisconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
Common . NotificationCenter . on ( 'api:disconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockDefNameManager' , _ . bind ( this . onLockDefNameManager , this ) ) ;
this . api . asc _registerCallback ( 'asc_onZoomChanged' , _ . bind ( this . onApiZoomChange , this ) ) ;
Common . NotificationCenter . on ( 'fonts:change' , _ . bind ( this . onApiChangeFont , this ) ) ;
} else if ( config . isRestrictedEdit )
this . api . asc _registerCallback ( 'asc_onSelectionChanged' , _ . bind ( this . onApiSelectionChangedRestricted , this ) ) ;
2017-04-27 15:40:27 +00:00
2016-03-11 00:48:53 +00:00
} ,
2017-04-27 15:25:02 +00:00
// onNewDocument: function(btn, e) {
// this.api.asc_openNewDocument();
//
// Common.NotificationCenter.trigger('edit:complete', this.toolbar);
// Common.component.Analytics.trackEvent('ToolBar', 'New Document');
// },
//
// onOpenDocument: function(btn, e) {
// this.api.asc_loadDocumentFromDisk();
//
// Common.NotificationCenter.trigger('edit:complete', this.toolbar);
// Common.component.Analytics.trackEvent('ToolBar', 'Open Document');
// },
2016-03-11 00:48:53 +00:00
2019-02-01 10:13:44 +00:00
onApiChangeFont : function ( font ) {
2020-04-22 09:35:55 +00:00
! Common . Utils . ModalWindow . isVisible ( ) && this . toolbar . cmbFontName . onApiChangeFont ( font ) ;
2019-02-01 10:13:44 +00:00
} ,
2017-04-28 14:43:12 +00:00
onContextMenu : function ( ) {
2017-07-18 12:59:14 +00:00
this . toolbar . collapse ( ) ;
2017-04-28 14:43:12 +00:00
} ,
2016-03-11 00:48:53 +00:00
onPrint : function ( e ) {
2016-04-04 08:17:21 +00:00
Common . NotificationCenter . trigger ( 'print' , this . toolbar ) ;
2016-03-11 00:48:53 +00:00
} ,
onSave : function ( e ) {
if ( this . api ) {
var isModified = this . api . asc _isDocumentCanSave ( ) ;
2019-11-20 09:42:39 +00:00
var isSyncButton = this . toolbar . btnCollabChanges && this . toolbar . btnCollabChanges . cmpEl . hasClass ( 'notify' ) ;
2017-04-11 11:05:56 +00:00
if ( ! isModified && ! isSyncButton && ! this . toolbar . mode . forcesave )
2016-03-11 00:48:53 +00:00
return ;
this . api . asc _Save ( ) ;
}
// Common.NotificationCenter.trigger('edit:complete', this.toolbar);
Common . component . Analytics . trackEvent ( 'Save' ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Save' ) ;
} ,
2018-02-15 23:56:17 +00:00
onBtnChangeState : function ( prop ) {
if ( /\:disabled$/ . test ( prop ) ) {
var _is _disabled = arguments [ 2 ] ;
this . toolbar . fireEvent ( prop , [ _is _disabled ] ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onUndo : function ( btn , e ) {
if ( this . api )
this . api . asc _Undo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Undo' ) ;
} ,
onRedo : function ( btn , e ) {
if ( this . api )
this . api . asc _Redo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Redo' ) ;
} ,
onCopyPaste : function ( copy , e ) {
var me = this ;
if ( me . api ) {
2016-07-26 14:46:42 +00:00
var res = ( copy ) ? me . api . asc _Copy ( ) : me . api . asc _Paste ( ) ;
if ( ! res ) {
2016-03-11 00:48:53 +00:00
var value = Common . localStorage . getItem ( "sse-hide-copywarning" ) ;
if ( ! ( value && parseInt ( value ) == 1 ) ) {
( new Common . Views . CopyWarningDialog ( {
handler : function ( dontshow ) {
if ( dontshow ) Common . localStorage . setItem ( "sse-hide-copywarning" , 1 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
2016-07-26 14:46:42 +00:00
} else
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Copy Warning' ) ;
2016-03-11 00:48:53 +00:00
}
2016-07-26 14:46:42 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
2016-03-11 00:48:53 +00:00
} ,
onIncreaseFontSize : function ( e ) {
if ( this . api )
this . api . asc _increaseFontSize ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onDecreaseFontSize : function ( e ) {
if ( this . api )
this . api . asc _decreaseFontSize ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onBold : function ( btn , e ) {
this . _state . bold = undefined ;
if ( this . api )
this . api . asc _setCellBold ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Bold' ) ;
} ,
onItalic : function ( btn , e ) {
this . _state . italic = undefined ;
if ( this . api )
this . api . asc _setCellItalic ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Italic' ) ;
} ,
onUnderline : function ( btn , e ) {
this . _state . underline = undefined ;
if ( this . api )
this . api . asc _setCellUnderline ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Underline' ) ;
} ,
2017-12-05 13:58:01 +00:00
onStrikeout : function ( btn , e ) {
this . _state . strikeout = undefined ;
if ( this . api )
this . api . asc _setCellStrikeout ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Strikeout' ) ;
} ,
onSubscriptMenu : function ( menu , item ) {
2018-02-26 13:23:07 +00:00
var btnSubscript = this . toolbar . btnSubscript ;
2017-12-05 13:58:01 +00:00
if ( item . value == 'sub' ) {
this . _state . subscript = undefined ;
this . api . asc _setCellSubscript ( item . checked ) ;
} else {
this . _state . superscript = undefined ;
this . api . asc _setCellSuperscript ( item . checked ) ;
}
if ( item . checked ) {
2018-02-26 13:23:07 +00:00
btnSubscript . $icon . removeClass ( btnSubscript . options . icls ) . addClass ( item . options . icls ) ;
2017-12-05 13:58:01 +00:00
btnSubscript . options . icls = item . options . icls ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , ( item . value == 'sub' ) ? 'Subscript' : 'Superscript' ) ;
} ,
onSubscript : function ( btn , e ) {
var subscript = ( btn . options . icls == 'btn-subscript' ) ;
if ( subscript ) {
this . _state . subscript = undefined ;
this . api . asc _setCellSubscript ( btn . pressed ) ;
} else {
this . _state . superscript = undefined ;
this . api . asc _setCellSuperscript ( btn . pressed ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , ( subscript ) ? 'Subscript' : 'Superscript' ) ;
} ,
2016-03-11 00:48:53 +00:00
onTextColor : function ( ) {
this . toolbar . mnuTextColorPicker . trigger ( 'select' , this . toolbar . mnuTextColorPicker , this . toolbar . mnuTextColorPicker . currentColor , true ) ;
} ,
onBackColor : function ( ) {
this . toolbar . mnuBackColorPicker . trigger ( 'select' , this . toolbar . mnuBackColorPicker , this . toolbar . mnuBackColorPicker . currentColor , true ) ;
} ,
onTextColorSelect : function ( picker , color , fromBtn ) {
this . _state . clrtext _asccolor = this . _state . clrtext = undefined ;
var clr = ( typeof ( color ) == 'object' ) ? color . color : color ;
this . toolbar . btnTextColor . currentColor = color ;
$ ( '.btn-color-value-line' , this . toolbar . btnTextColor . cmpEl ) . css ( 'background-color' , '#' + clr ) ;
this . toolbar . mnuTextColorPicker . currentColor = color ;
if ( this . api ) {
this . toolbar . btnTextColor . ischanged = ( fromBtn !== true ) ;
this . api . asc _setCellTextColor ( Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
this . toolbar . btnTextColor . ischanged = false ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Text Color' ) ;
} ,
onBackColorSelect : function ( picker , color , fromBtn ) {
this . _state . clrshd _asccolor = this . _state . clrback = undefined ;
var clr = ( typeof ( color ) == 'object' ) ? color . color : color ;
this . toolbar . btnBackColor . currentColor = color ;
$ ( '.btn-color-value-line' , this . toolbar . btnBackColor . cmpEl ) . css ( 'background-color' , clr == 'transparent' ? 'transparent' : '#' + clr ) ;
this . toolbar . mnuBackColorPicker . currentColor = color ;
if ( this . api ) {
this . toolbar . btnBackColor . ischanged = ( fromBtn !== true ) ;
this . api . asc _setCellBackgroundColor ( color == 'transparent' ? null : Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
this . toolbar . btnBackColor . ischanged = false ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Background Color' ) ;
} ,
onNewTextColor : function ( picker , color ) {
this . toolbar . mnuTextColorPicker . addNewColor ( ) ;
} ,
onNewBackColor : function ( picker , color ) {
this . toolbar . mnuBackColorPicker . addNewColor ( ) ;
} ,
onNewBorderColor : function ( picker , color ) {
this . toolbar . btnBorders . menu . hide ( ) ;
this . toolbar . btnBorders . toggle ( false , true ) ;
this . toolbar . mnuBorderColorPicker . addNewColor ( ) ;
} ,
onBorders : function ( btn ) {
var menuItem ;
_ . each ( btn . menu . items , function ( item ) {
if ( btn . options . borderId == item . options . borderId ) {
menuItem = item ;
return false ;
}
} ) ;
if ( menuItem ) {
this . onBordersMenu ( btn . menu , menuItem ) ;
}
} ,
onBordersMenu : function ( menu , item ) {
var me = this ;
if ( me . api && ! _ . isUndefined ( item . options . borderId ) ) {
var btnBorders = me . toolbar . btnBorders ,
new _borders = [ ] ,
bordersWidth = btnBorders . options . borderswidth ,
bordersColor = btnBorders . options . borderscolor ;
2018-02-26 13:23:07 +00:00
if ( btnBorders . rendered ) {
btnBorders . $icon . removeClass ( btnBorders . options . icls ) . addClass ( item . options . icls ) ;
btnBorders . options . icls = item . options . icls ;
2016-03-11 00:48:53 +00:00
}
btnBorders . options . borderId = item . options . borderId ;
if ( item . options . borderId == 'inner' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . InnerV ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . InnerH ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId == 'all' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . InnerV ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . InnerH ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Left ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Top ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Right ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Bottom ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId == 'outer' ) {
2016-04-05 11:52:34 +00:00
new _borders [ Asc . c _oAscBorderOptions . Left ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Top ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Right ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
new _borders [ Asc . c _oAscBorderOptions . Bottom ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
2016-03-11 00:48:53 +00:00
} else if ( item . options . borderId != 'none' ) {
new _borders [ item . options . borderId ] = new Asc . asc _CBorder ( bordersWidth , bordersColor ) ;
}
me . api . asc _setCellBorders ( new _borders ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Borders' ) ;
}
} ,
onBordersWidth : function ( menu , item , state ) {
if ( state ) {
this . toolbar . btnBorders . options . borderswidth = item . value ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Border Width' ) ;
}
} ,
onBordersColor : function ( picker , color ) {
$ ( '#id-toolbar-mnu-item-border-color .menu-item-icon' ) . css ( 'border-color' , '#' + ( ( typeof ( color ) == 'object' ) ? color . color : color ) ) ;
this . toolbar . mnuBorderColor . onUnHoverItem ( ) ;
this . toolbar . btnBorders . options . borderscolor = Common . Utils . ThemeColor . getRgbColor ( color ) ;
this . toolbar . mnuBorderColorPicker . currentColor = color ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Border Color' ) ;
} ,
onHorizontalAlign : function ( type , btn , e ) {
this . _state . pralign = undefined ;
if ( this . api ) {
2017-08-24 11:22:59 +00:00
this . api . asc _setCellAlign ( ! btn . pressed ? null : type ) ;
this . toolbar . btnWrap . allowDepress = ! ( type == AscCommon . align _Justify ) ;
2016-03-11 00:48:53 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Horizontal align' ) ;
} ,
onVerticalAlign : function ( type , btn , e ) {
this . _state . valign = undefined ;
if ( this . api ) {
2017-08-24 11:22:59 +00:00
this . api . asc _setCellVertAlign ( ! btn . pressed ? Asc . c _oAscVAlign . Bottom : type ) ;
2016-03-11 00:48:53 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Vertical align' ) ;
} ,
onMergeCellsMenu : function ( menu , item ) {
var me = this ;
function doMergeCells ( how ) {
me . _state . merge = undefined ;
me . api . asc _mergeCells ( how ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge' ) ;
}
if ( me . api ) {
2020-05-14 09:16:27 +00:00
var merged = me . api . asc _getCellInfo ( ) . asc _getMerge ( ) ;
2017-04-11 11:05:56 +00:00
if ( ( merged !== Asc . c _oAscMergeOptions . Merge ) && me . api . asc _mergeCellsDataLost ( item . value ) ) {
2016-03-11 00:48:53 +00:00
Common . UI . warning ( {
msg : me . warnMergeLostData ,
buttons : [ 'yes' , 'no' ] ,
primary : 'yes' ,
callback : function ( btn ) {
if ( btn == 'yes' ) {
doMergeCells ( item . value ) ;
} else {
me . toolbar . btnMerge . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge' ) ;
}
}
} ) ;
} else {
doMergeCells ( item . value ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Merge cells' ) ;
} ,
onWrap : function ( btn , e ) {
this . _state . wrap = undefined ;
if ( this . api )
this . api . asc _setCellTextWrap ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Wrap' ) ;
} ,
onTextOrientationMenu : function ( menu , item ) {
2017-05-15 13:32:01 +00:00
var angle = 0 ;
2016-03-11 00:48:53 +00:00
2017-05-15 13:32:01 +00:00
switch ( item . value ) {
case 'countcw' : angle = 45 ; break ;
case 'clockwise' : angle = - 45 ; break ;
2020-05-28 10:17:21 +00:00
case 'vertical' : angle = 255 ; break ;
2017-05-15 13:32:01 +00:00
case 'rotateup' : angle = 90 ; break ;
case 'rotatedown' : angle = - 90 ; break ;
}
this . _state . angle = undefined ;
if ( this . api )
this . api . asc _setCellAngle ( angle ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Text orientation' ) ;
} ,
2019-06-13 11:28:26 +00:00
onBtnInsertTableClick : function ( btn , e ) {
if ( this . api )
this . _setTableFormat ( this . api . asc _getDefaultTableStyle ( ) ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Table' ) ;
} ,
2016-03-11 00:48:53 +00:00
onInsertImageMenu : function ( menu , item , e ) {
2019-09-11 13:21:12 +00:00
var me = this ;
2016-03-11 00:48:53 +00:00
if ( item . value === 'file' ) {
this . toolbar . fireEvent ( 'insertimage' , this . toolbar ) ;
if ( this . api )
this . api . asc _addImage ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
2018-10-03 11:00:08 +00:00
} else if ( item . value === 'url' ) {
2016-03-11 00:48:53 +00:00
( new Common . Views . ImageFromUrlDialog ( {
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
var checkUrl = value . replace ( /\s/g , '' ) ;
if ( ! _ . isEmpty ( checkUrl ) ) {
me . toolbar . fireEvent ( 'insertimage' , me . toolbar ) ;
me . api . asc _addImageDrawingObject ( checkUrl ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
} else {
Common . UI . warning ( {
msg : this . textEmptyImgUrl
} ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ) . show ( ) ;
2018-10-03 11:00:08 +00:00
} else if ( item . value === 'storage' ) {
2020-05-13 14:20:58 +00:00
Common . NotificationCenter . trigger ( 'storage:image-load' , 'add' ) ;
2019-07-26 11:49:53 +00:00
}
} ,
2020-05-13 14:20:58 +00:00
openImageFromStorage : function ( type ) {
var me = this ;
if ( this . toolbar . mode . canRequestInsertImage ) {
Common . Gateway . requestInsertImage ( type ) ;
} else {
( new Common . Views . SelectFileDlg ( {
fileChoiceUrl : this . toolbar . mode . fileChoiceUrl . replace ( "{fileExt}" , "" ) . replace ( "{documentType}" , "ImagesOnly" )
} ) ) . on ( 'selectfile' , function ( obj , file ) {
file && ( file . c = type ) ;
me . insertImage ( file ) ;
} ) . show ( ) ;
2019-07-26 11:49:53 +00:00
}
} ,
2020-05-13 14:20:58 +00:00
insertImageFromStorage : function ( data ) {
if ( data && data . url && ( ! data . c || data . c == 'add' ) ) {
2019-07-26 11:49:53 +00:00
this . toolbar . fireEvent ( 'insertimage' , this . toolbar ) ;
this . api . asc _addImageDrawingObject ( data . url , undefined , data . token ) ; // for loading from storage
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
2016-03-11 00:48:53 +00:00
}
} ,
2020-05-13 14:20:58 +00:00
insertImage : function ( data ) { // gateway
Common . NotificationCenter . trigger ( 'storage:image-insert' , data ) ;
} ,
2016-03-11 00:48:53 +00:00
onHyperlink : function ( btn ) {
var me = this ;
var win ,
props ;
if ( me . api ) {
var wc = me . api . asc _getWorksheetsCount ( ) ,
i = - 1 ,
items = [ ] ;
while ( ++ i < wc ) {
2020-03-16 10:30:51 +00:00
items . push ( { name : me . api . asc _getWorksheetName ( i ) , hidden : me . api . asc _isWorksheetHidden ( i ) } ) ;
2016-03-11 00:48:53 +00:00
}
var handlerDlg = function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
me . api . asc _insertHyperlink ( props ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ;
var cell = me . api . asc _getCellInfo ( ) ,
2020-05-14 08:39:04 +00:00
seltype = cell . asc _getSelectionType ( ) ;
2016-03-11 00:48:53 +00:00
props = cell . asc _getHyperlink ( ) ;
win = new SSE . Views . HyperlinkSettingsDialog ( {
api : me . api ,
2020-03-20 12:29:47 +00:00
appOptions : me . appOptions ,
2016-03-11 00:48:53 +00:00
handler : handlerDlg
} ) ;
win . show ( ) ;
win . setSettings ( {
sheets : items ,
2020-08-20 08:14:36 +00:00
ranges : me . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . All , true ) ,
2016-03-11 00:48:53 +00:00
currentSheet : me . api . asc _getWorksheetName ( me . api . asc _getActiveWorksheetIndex ( ) ) ,
props : props ,
text : cell . asc _getText ( ) ,
2020-05-14 08:50:34 +00:00
isLock : cell . asc _getLockText ( ) ,
2016-04-05 11:52:34 +00:00
allowInternal : ( seltype !== Asc . c _oAscSelectionType . RangeImage && seltype !== Asc . c _oAscSelectionType . RangeShape &&
seltype !== Asc . c _oAscSelectionType . RangeShapeText && seltype !== Asc . c _oAscSelectionType . RangeChart &&
2020-06-05 16:28:11 +00:00
seltype !== Asc . c _oAscSelectionType . RangeChartText && seltype !== Asc . c _oAscSelectionType . RangeSlicer )
2016-03-11 00:48:53 +00:00
} ) ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Hyperlink' ) ;
} ,
2016-12-16 08:37:57 +00:00
onEditChart : function ( btn ) {
2016-03-11 00:48:53 +00:00
if ( ! this . editMode ) return ;
var me = this , info = me . api . asc _getCellInfo ( ) ;
2020-05-14 08:39:04 +00:00
var selectType = info . asc _getSelectionType ( ) ;
if ( selectType !== Asc . c _oAscSelectionType . RangeImage ) {
2016-03-11 00:48:53 +00:00
var win , props ;
if ( me . api ) {
props = me . api . asc _getChartObject ( ) ;
2017-04-11 11:05:56 +00:00
var selectedObjects = me . api . asc _getGraphicObjectProps ( ) ,
imageSettings = null ;
for ( var i = 0 ; i < selectedObjects . length ; i ++ ) {
if ( selectedObjects [ i ] . asc _getObjectType ( ) == Asc . c _oAscTypeSelectElement . Image ) {
var elValue = selectedObjects [ i ] . asc _getObjectValue ( ) ;
if ( elValue . asc _getChartProperties ( ) )
imageSettings = elValue ;
}
}
2016-03-11 00:48:53 +00:00
if ( props ) {
2020-05-14 08:39:04 +00:00
var ischartedit = ( me . toolbar . mode . isEditDiagram || selectType === Asc . c _oAscSelectionType . RangeChart || selectType === Asc . c _oAscSelectionType . RangeChartText ) ;
2016-03-11 00:48:53 +00:00
( new SSE . Views . ChartSettingsDlg (
{
chartSettings : props ,
2017-04-11 11:05:56 +00:00
imageSettings : imageSettings ,
2020-10-09 11:20:31 +00:00
isDiagramMode : me . toolbar . mode . isEditDiagram ,
2016-09-14 13:34:08 +00:00
isChart : true ,
2016-03-11 00:48:53 +00:00
api : me . api ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
( ischartedit ) ? me . api . asc _editChartDrawingObject ( value . chartSettings ) : me . api . asc _addChartDrawingObject ( value . chartSettings ) ;
2017-04-11 11:05:56 +00:00
if ( value . imageSettings )
me . api . asc _setGraphicObjectProps ( value . imageSettings ) ;
2016-03-11 00:48:53 +00:00
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
}
}
} ,
2020-10-02 15:33:07 +00:00
onEditChartData : function ( btn ) {
if ( ! this . editMode ) return ;
var me = this ;
var props ;
if ( me . api ) {
props = me . api . asc _getChartObject ( ) ;
if ( props ) {
me . _isEditRanges = true ;
props . startEdit ( ) ;
var win = new SSE . Views . ChartDataDialog ( {
chartSettings : props ,
api : me . api ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
props . endEdit ( ) ;
me . _isEditRanges = false ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me ) ;
}
} ) . on ( 'close' , function ( ) {
me . _isEditRanges && props . cancelEdit ( ) ;
me . _isEditRanges = false ;
} ) ;
win . show ( ) ;
}
}
} ,
2019-09-02 09:52:14 +00:00
onSelectChart : function ( group , type ) {
if ( ! this . editMode ) return ;
2016-12-16 08:37:57 +00:00
var me = this ,
info = me . api . asc _getCellInfo ( ) ,
2020-05-14 08:39:04 +00:00
seltype = info . asc _getSelectionType ( ) ,
2016-12-16 08:37:57 +00:00
isSpark = ( group == 'menu-chart-group-sparkcolumn' || group == 'menu-chart-group-sparkline' || group == 'menu-chart-group-sparkwin' ) ;
2019-10-02 07:15:36 +00:00
if ( me . api ) {
2016-09-14 13:34:08 +00:00
var win , props ;
2019-09-02 09:52:14 +00:00
if ( isSpark && ( seltype == Asc . c _oAscSelectionType . RangeCells || seltype == Asc . c _oAscSelectionType . RangeCol ||
seltype == Asc . c _oAscSelectionType . RangeRow || seltype == Asc . c _oAscSelectionType . RangeMax ) ) {
2016-12-16 08:37:57 +00:00
var sparkLineInfo = info . asc _getSparklineInfo ( ) ;
if ( ! ! sparkLineInfo ) {
var props = new Asc . sparklineGroup ( ) ;
2019-09-02 09:52:14 +00:00
props . asc _setType ( type ) ;
2016-12-16 08:37:57 +00:00
this . api . asc _setSparklineGroup ( sparkLineInfo . asc _getId ( ) , props ) ;
2016-09-14 13:34:08 +00:00
} else {
2016-12-16 08:37:57 +00:00
// add sparkline
2016-09-14 13:34:08 +00:00
}
2016-12-16 08:37:57 +00:00
} else if ( ! isSpark ) {
2019-09-02 09:52:14 +00:00
var ischartedit = ( seltype == Asc . c _oAscSelectionType . RangeChart || seltype == Asc . c _oAscSelectionType . RangeChartText ) ;
2018-08-10 08:24:00 +00:00
props = me . api . asc _getChartObject ( true ) ; // don't lock chart object
2016-09-16 13:24:46 +00:00
if ( props ) {
2019-09-02 09:52:14 +00:00
( ischartedit ) ? props . changeType ( type ) : props . putType ( type ) ;
2017-04-18 13:16:03 +00:00
var range = props . getRange ( ) ,
2020-01-21 12:02:42 +00:00
isvalid = ( ! _ . isEmpty ( range ) ) ? me . api . asc _checkDataRange ( Asc . c _oAscSelectionDialogType . Chart , range , true , ! props . getInColumns ( ) , props . getType ( ) ) : Asc . c _oAscError . ID . No ;
2017-04-18 13:16:03 +00:00
if ( isvalid == Asc . c _oAscError . ID . No ) {
( ischartedit ) ? me . api . asc _editChartDrawingObject ( props ) : me . api . asc _addChartDrawingObject ( props ) ;
} else {
Common . UI . warning ( {
msg : ( isvalid == Asc . c _oAscError . ID . StockChartError ) ? me . errorStockChart : ( ( isvalid == Asc . c _oAscError . ID . MaxDataSeriesError ) ? me . errorMaxRows : me . txtInvalidRange ) ,
callback : function ( ) {
_ . defer ( function ( btn ) {
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} )
}
} ) ;
}
2016-09-14 13:34:08 +00:00
}
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-09-03 10:52:52 +00:00
onInsertTextart : function ( data ) {
if ( this . api ) {
this . toolbar . fireEvent ( 'inserttextart' , this . toolbar ) ;
this . api . asc _addTextArt ( data ) ;
if ( this . toolbar . btnInsertShape . pressed )
this . toolbar . btnInsertShape . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertTextArt ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Text Art' ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onBtnInsertTextClick : function ( btn , e ) {
if ( this . api )
this . _addAutoshape ( btn . pressed , 'textRect' ) ;
if ( this . toolbar . btnInsertShape . pressed )
this . toolbar . btnInsertShape . toggle ( false , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertShape ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Text' ) ;
} ,
onInsertShapeHide : function ( btn , e ) {
if ( this . toolbar . btnInsertShape . pressed && ! this . _isAddingShape ) {
this . toolbar . btnInsertShape . toggle ( false , true ) ;
}
this . _isAddingShape = false ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onSortType : function ( type , btn ) {
2017-02-06 14:12:59 +00:00
if ( this . api ) {
2020-06-05 16:28:11 +00:00
if ( this . api . asc _getCellInfo ( ) . asc _getSelectionType ( ) == Asc . c _oAscSelectionType . RangeSlicer ) {
var selectedObjects = this . api . asc _getGraphicObjectProps ( ) ;
for ( var i = 0 ; i < selectedObjects . length ; i ++ ) {
if ( selectedObjects [ i ] . asc _getObjectType ( ) == Asc . c _oAscTypeSelectElement . Image ) {
var elValue = selectedObjects [ i ] . asc _getObjectValue ( ) ;
if ( elValue . asc _getSlicerProperties ( ) ) {
elValue . asc _getSlicerProperties ( ) . asc _setSortOrder ( type == Asc . c _oAscSortOptions . Ascending ? Asc . ST _tabularSlicerCacheSortOrder . Ascending : Asc . ST _tabularSlicerCacheSortOrder . Descending ) ;
this . api . asc _setGraphicObjectProps ( elValue ) ;
break ;
2017-02-06 14:12:59 +00:00
}
2020-06-05 16:28:11 +00:00
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} else {
var res = this . api . asc _sortCellsRangeExpand ( ) ;
if ( res ) {
var config = {
width : 500 ,
title : this . txtSorting ,
msg : this . txtExpandSort ,
buttons : [ { caption : this . txtExpand , primary : true , value : 'expand' } ,
{ caption : this . txtSortSelected , primary : true , value : 'sort' } ,
'cancel' ] ,
callback : _ . bind ( function ( btn ) {
if ( btn == 'expand' || btn == 'sort' ) {
this . api . asc _sortColFilter ( type , '' , undefined , undefined , btn == 'expand' ) ;
}
} , this )
} ;
Common . UI . alert ( config ) ;
} else
this . api . asc _sortColFilter ( type , '' , undefined , undefined , res !== null ) ;
}
2017-02-06 14:12:59 +00:00
}
2016-03-11 00:48:53 +00:00
} ,
onSearch : function ( type , btn ) {
this . getApplication ( ) . getController ( 'LeftMenu' ) . showSearchDlg ( true ) ;
} ,
onAutoFilter : function ( btn ) {
var state = this . _state . filter ;
this . _state . filter = undefined ;
if ( this . api ) {
if ( this . _state . tablename || state )
2016-04-05 11:52:34 +00:00
this . api . asc _changeAutoFilter ( this . _state . tablename , Asc . c _oAscChangeFilterOptions . filter , ! state ) ;
2016-03-11 00:48:53 +00:00
else
this . api . asc _addAutoFilter ( ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Auto filter' ) ;
} ,
onClearFilter : function ( btn ) {
if ( this . api )
this . api . asc _clearFilter ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Clear filter' ) ;
} ,
onNumberFormat : function ( btn ) {
2016-08-24 08:35:32 +00:00
if ( this . api )
this . api . asc _setCellStyle ( btn . options . styleName ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
onNumberFormatMenu : function ( menu , item ) {
2017-04-11 11:05:56 +00:00
if ( this . api ) {
2019-06-28 14:41:18 +00:00
if ( item . value == - 1 ) {
// show more formats
2019-07-08 09:12:41 +00:00
if ( this . _state . numformatinfo && this . _state . numformatinfo . asc _getType ( ) == Asc . c _oAscNumFormatType . Accounting )
this . onCustomNumberFormat ( ) ;
else {
var value = this . api . asc _getLocale ( ) ;
( ! value ) && ( value = ( ( this . toolbar . mode . lang ) ? parseInt ( Common . util . LanguageInfo . getLocalLanguageCode ( this . toolbar . mode . lang ) ) : 0x0409 ) ) ;
var info = new Asc . asc _CFormatCellsInfo ( ) ;
info . asc _setType ( Asc . c _oAscNumFormatType . Accounting ) ;
info . asc _setSeparator ( false ) ;
info . asc _setSymbol ( value ) ;
var format = this . api . asc _getFormatCells ( info ) ;
this . onCustomNumberFormat ( ( format && format . length > 0 ) ? format [ 0 ] : undefined , info ) ;
}
2019-06-28 14:41:18 +00:00
} else {
var info = new Asc . asc _CFormatCellsInfo ( ) ;
info . asc _setType ( Asc . c _oAscNumFormatType . Accounting ) ;
info . asc _setSeparator ( false ) ;
info . asc _setSymbol ( item . value ) ;
var format = this . api . asc _getFormatCells ( info ) ;
if ( format && format . length > 0 )
this . api . asc _setCellFormat ( format [ 0 ] ) ;
}
2017-04-11 11:05:56 +00:00
}
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
2017-01-12 14:14:51 +00:00
onNumberFormatSelect : function ( combo , record ) {
2017-01-16 08:48:21 +00:00
if ( record ) {
if ( this . api )
this . api . asc _setCellFormat ( record . format ) ;
} else {
2017-01-17 13:40:18 +00:00
this . onCustomNumberFormat ( ) ;
2017-01-16 08:48:21 +00:00
}
2017-01-12 14:14:51 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
2019-07-08 09:12:41 +00:00
onCustomNumberFormat : function ( format , formatInfo ) {
2017-01-17 13:40:18 +00:00
var me = this ,
2017-06-01 13:48:33 +00:00
value = me . api . asc _getLocale ( ) ;
( ! value ) && ( value = ( ( me . toolbar . mode . lang ) ? parseInt ( Common . util . LanguageInfo . getLocalLanguageCode ( me . toolbar . mode . lang ) ) : 0x0409 ) ) ;
2017-01-17 13:40:18 +00:00
( new SSE . Views . FormatSettingsDialog ( {
api : me . api ,
handler : function ( result , settings ) {
if ( settings ) {
me . api . asc _setCellFormat ( settings . format ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
2019-07-08 09:12:41 +00:00
props : { format : format ? format : me . _state . numformat , formatInfo : formatInfo ? formatInfo : me . _state . numformatinfo , langId : value }
2017-01-17 13:40:18 +00:00
} ) ) . show ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Number Format' ) ;
} ,
2017-01-12 14:14:51 +00:00
onNumberFormatOpenBefore : function ( combo ) {
if ( this . api ) {
2017-06-01 13:48:33 +00:00
var me = this ,
value = me . api . asc _getLocale ( ) ;
( ! value ) && ( value = ( ( me . toolbar . mode . lang ) ? parseInt ( Common . util . LanguageInfo . getLocalLanguageCode ( me . toolbar . mode . lang ) ) : 0x0409 ) ) ;
2017-01-17 12:58:20 +00:00
if ( this . _state . langId !== value ) {
this . _state . langId = value ;
var info = new Asc . asc _CFormatCellsInfo ( ) ;
info . asc _setType ( Asc . c _oAscNumFormatType . None ) ;
info . asc _setSymbol ( this . _state . langId ) ;
var arr = this . api . asc _getFormatCells ( info ) ; // all formats
me . toolbar . numFormatData . forEach ( function ( item , index ) {
me . toolbar . numFormatData [ index ] . format = arr [ index ] ;
} ) ;
}
2017-01-12 14:14:51 +00:00
me . toolbar . numFormatData . forEach ( function ( item , index ) {
2017-01-17 10:15:36 +00:00
item . exampleval = me . api . asc _getLocaleExample ( item . format ) ;
2017-01-12 14:14:51 +00:00
} ) ;
me . toolbar . cmbNumberFormat . setData ( me . toolbar . numFormatData ) ;
me . toolbar . cmbNumberFormat . setValue ( me . _state . numformattype , me . toolbar . txtCustom ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onDecrement : function ( btn ) {
if ( this . api )
this . api . asc _decreaseCellDigitNumbers ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Decrement' ) ;
} ,
onIncrement : function ( btn ) {
if ( this . api )
this . api . asc _increaseCellDigitNumbers ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Increment' ) ;
} ,
onInsertFormulaMenu : function ( menu , item , e ) {
if ( this . api ) {
if ( item . value === 'more' ) {
var controller = this . getApplication ( ) . getController ( 'FormulaDialog' ) ;
if ( controller ) {
controller . showDialog ( ) ;
}
} else {
item . value = item . value || 'SUM' ;
2019-06-24 12:57:28 +00:00
this . toolbar . fireEvent ( 'function:apply' , [ { name : this . api . asc _getFormulaLocaleName ( item . value ) , origin : item . value } , true ] ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Insert formula' ) ;
}
}
} ,
onNamedRangeMenu : function ( menu , item , e ) {
if ( this . api ) {
var me = this ;
if ( item . value === 'paste' ) {
( new SSE . Views . NamedRangePasteDlg ( {
handler : function ( result , settings ) {
if ( result == 'ok' && settings ) {
2020-06-10 10:38:50 +00:00
me . api . asc _insertInCell ( settings . asc _getName ( true ) , ( settings . asc _getType ( ) === Asc . c _oAscDefNameType . table ) ? Asc . c _oAscPopUpSelectorType . Table : Asc . c _oAscPopUpSelectorType . Range , false ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Paste Named Range' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
2016-04-05 11:52:34 +00:00
ranges : me . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . WorksheetWorkbook ) // names only for current sheet and workbook
2016-03-11 00:48:53 +00:00
} ) ) . show ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Paste Named Range' ) ;
} else {
var wc = me . api . asc _getWorksheetsCount ( ) ,
i = - 1 ,
items = [ ] , sheetNames = [ ] ;
if ( item . value === 'new' ) {
if ( this . _state . namedrange _locked ) {
Common . NotificationCenter . trigger ( 'namedrange:locked' ) ;
return ;
}
while ( ++ i < wc ) {
if ( ! this . api . asc _isWorksheetHidden ( i ) ) {
items . push ( { displayValue : me . api . asc _getWorksheetName ( i ) , value : i } ) ;
}
}
( new SSE . Views . NamedRangeEditDlg ( {
api : me . api ,
handler : function ( result , settings ) {
if ( result == 'ok' && settings ) {
me . api . asc _setDefinedNames ( settings ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'New Named Range' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
sheets : items ,
props : me . api . asc _getDefaultDefinedName ( ) ,
isEdit : false
} ) ) . show ( ) ;
} else {
var cellEditor = this . getApplication ( ) . getController ( 'CellEditor' ) ;
while ( ++ i < wc ) {
if ( ! this . api . asc _isWorksheetHidden ( i ) ) {
sheetNames [ i ] = me . api . asc _getWorksheetName ( i ) ;
items . push ( { displayValue : sheetNames [ i ] , value : i } ) ;
}
}
( new SSE . Views . NameManagerDlg ( {
api : me . api ,
handler : function ( result ) {
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Name Manager' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ,
locked : me . _state . namedrange _locked ,
sheets : items ,
sheetNames : sheetNames ,
2016-04-05 11:52:34 +00:00
ranges : me . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . All ) ,
2016-03-11 00:48:53 +00:00
props : me . api . asc _getDefaultDefinedName ( ) ,
sort : cellEditor . rangeListSort
} ) ) . on ( 'close' , function ( win ) {
cellEditor . rangeListSort = win . getSettings ( ) ;
} ) . show ( ) ;
}
}
}
} ,
2020-02-26 10:49:57 +00:00
onNamedRangeMenuOpen : function ( menu ) {
if ( this . api && menu ) {
2016-04-05 11:52:34 +00:00
var names = this . api . asc _getDefinedNames ( Asc . c _oAscGetDefinedNamesList . WorksheetWorkbook ) ;
2020-02-26 10:49:57 +00:00
menu . items [ 2 ] . setDisabled ( names . length < 1 ) ;
2016-03-11 00:48:53 +00:00
}
} ,
onClearStyleMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _emptyCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Clear' ) ;
} ,
onCopyStyleToggle : function ( btn , state , e ) {
if ( this . api )
this . api . asc _formatPainter ( state ? 1 : 0 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
this . modeAlwaysSetStyle = state ;
} ,
onCellInsertMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _insertCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Cell insert' ) ;
} ,
onCellDeleteMenu : function ( menu , item , e ) {
if ( this . api )
this . api . asc _deleteCells ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Cell delete' ) ;
} ,
onColorSchemaClick : function ( menu , item ) {
if ( this . api ) {
2019-12-19 08:00:49 +00:00
this . api . asc _ChangeColorSchemeByIdx ( item . value ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Color Scheme' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-08-20 12:56:29 +00:00
onColorSchemaShow : function ( menu ) {
if ( this . api ) {
2019-12-19 08:00:49 +00:00
var value = this . api . asc _GetCurrentColorSchemeIndex ( ) ;
2019-08-20 12:56:29 +00:00
var item = _ . find ( menu . items , function ( item ) { return item . value == value ; } ) ;
( item ) ? item . setChecked ( true ) : menu . clearAll ( ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onComboBlur : function ( ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onFontNameSelect : function ( combo , record ) {
if ( this . api ) {
if ( record . isNewFont ) {
2020-04-22 09:35:55 +00:00
! Common . Utils . ModalWindow . isVisible ( ) &&
2016-03-11 00:48:53 +00:00
Common . UI . warning ( {
width : 500 ,
closable : false ,
msg : this . confirmAddFontName ,
buttons : [ 'yes' , 'no' ] ,
primary : 'yes' ,
callback : _ . bind ( function ( btn ) {
if ( btn == 'yes' ) {
this . api . asc _setCellFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
} else {
2020-05-15 07:42:00 +00:00
this . toolbar . cmbFontName . setValue ( this . api . asc _getCellInfo ( ) . asc _getXfs ( ) . asc _getFontName ( ) ) ;
2016-03-11 00:48:53 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} , this )
} ) ;
} else {
this . api . asc _setCellFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} ,
onComboOpen : function ( needfocus , combo ) {
_ . delay ( function ( ) {
var input = $ ( 'input' , combo . cmpEl ) . select ( ) ;
if ( needfocus ) input . focus ( ) ;
else if ( ! combo . isMenuOpen ( ) ) input . one ( 'mouseup' , function ( e ) { e . preventDefault ( ) ; } ) ;
} , 10 ) ;
} ,
onFontSizeSelect : function ( combo , record ) {
this . _state . fontsize = undefined ;
if ( this . api )
this . api . asc _setCellFontSize ( record . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onFontSizeChanged : function ( before , combo , record , e ) {
var value ,
me = this ;
if ( before ) {
var item = combo . store . findWhere ( {
displayValue : record . value
} ) ;
if ( ! item ) {
2020-03-31 13:49:33 +00:00
value = /^\+?(\d*(\.|,)?\d+)$|^\+?(\d+(\.|,)?\d*)$/ . exec ( record . value ) ;
2016-03-11 00:48:53 +00:00
if ( ! value ) {
value = this . _getApiTextSize ( ) ;
Common . UI . warning ( {
msg : this . textFontSizeErr ,
callback : function ( ) {
_ . defer ( function ( btn ) {
$ ( 'input' , combo . cmpEl ) . focus ( ) ;
} )
}
} ) ;
combo . setRawValue ( value ) ;
e . preventDefault ( ) ;
return false ;
}
}
} else {
2020-03-31 13:49:33 +00:00
value = Common . Utils . String . parseFloat ( record . value ) ;
2016-03-11 00:48:53 +00:00
value = value > 409 ? 409 :
value < 1 ? 1 : Math . floor ( ( value + 0.4 ) * 2 ) / 2 ;
combo . setRawValue ( value ) ;
this . _state . fontsize = undefined ;
if ( this . api )
this . api . asc _setCellFontSize ( value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
}
} ,
onListStyleSelect : function ( combo , record ) {
this . _state . prstyle = undefined ;
if ( this . api ) {
this . api . asc _setCellStyle ( record . get ( 'name' ) ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Style' ) ;
}
} ,
createDelayedElements : function ( ) {
var me = this ;
2016-08-24 14:46:45 +00:00
this . toolbar . createDelayedElements ( ) ;
2017-04-28 14:28:35 +00:00
this . attachUIEvents ( this . toolbar ) ;
2016-08-24 14:46:45 +00:00
2017-04-27 15:40:27 +00:00
if ( ! this . appConfig . isEditDiagram && ! this . appConfig . isEditMailMerge ) {
this . api . asc _registerCallback ( 'asc_onSheetsChanged' , _ . bind ( this . onApiSheetChanged , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUpdateSheetViewSettings' , _ . bind ( this . onApiSheetChanged , this ) ) ;
2017-04-28 12:24:57 +00:00
this . api . asc _registerCallback ( 'asc_onEndAddShape' , _ . bind ( this . onApiEndAddShape , this ) ) ;
2017-04-28 13:37:28 +00:00
this . api . asc _registerCallback ( 'asc_onEditorSelectionChanged' , _ . bind ( this . onApiEditorSelectionChanged , this ) ) ;
2018-07-19 12:48:12 +00:00
this . api . asc _registerCallback ( 'asc_onUpdateDocumentProps' , _ . bind ( this . onUpdateDocumentProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockDocumentProps' , _ . bind ( this . onApiLockDocumentProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnLockDocumentProps' , _ . bind ( this . onApiUnLockDocumentProps , this ) ) ;
2017-04-28 13:37:28 +00:00
}
if ( ! this . appConfig . isEditMailMerge ) {
this . applyFormulaSettings ( ) ;
2017-04-27 15:40:27 +00:00
}
2016-03-11 00:48:53 +00:00
this . api . asc _registerCallback ( 'asc_onShowChartDialog' , _ . bind ( this . onApiChartDblClick , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCanUndoChanged' , _ . bind ( this . onApiCanRevert , this , 'undo' ) ) ;
this . api . asc _registerCallback ( 'asc_onCanRedoChanged' , _ . bind ( this . onApiCanRevert , this , 'redo' ) ) ;
this . api . asc _registerCallback ( 'asc_onEditCell' , _ . bind ( this . onApiEditCell , this ) ) ;
this . api . asc _registerCallback ( 'asc_onStopFormatPainter' , _ . bind ( this . onApiStyleChange , this ) ) ;
2017-04-28 12:24:57 +00:00
this . api . asc _registerCallback ( 'asc_onSelectionChanged' , _ . bind ( this . onApiSelectionChanged , this ) ) ;
2016-03-11 00:48:53 +00:00
2020-08-14 13:58:41 +00:00
var shortcuts = {
2016-03-11 00:48:53 +00:00
'command+l,ctrl+l' : function ( e ) {
2017-10-19 10:14:12 +00:00
if ( me . editMode && ! me . _state . multiselect && me . appConfig . canModifyFilter ) {
2017-09-18 10:41:39 +00:00
var cellinfo = me . api . asc _getCellInfo ( ) ,
filterinfo = cellinfo . asc _getAutoFilterInfo ( ) ,
formattableinfo = cellinfo . asc _getFormatTableInfo ( ) ;
filterinfo = ( filterinfo ) ? filterinfo . asc _getIsAutoFilter ( ) : null ;
if ( filterinfo !== null && ! formattableinfo ) {
2019-06-10 11:50:12 +00:00
me . _setTableFormat ( me . api . asc _getDefaultTableStyle ( ) ) ;
2017-04-11 11:05:56 +00:00
}
2016-03-15 10:53:55 +00:00
}
2016-03-11 00:48:53 +00:00
return false ;
} ,
'command+shift+l,ctrl+shift+l' : function ( e ) {
2017-10-19 10:14:12 +00:00
if ( me . editMode && me . api && ! me . _state . multiselect && me . appConfig . canModifyFilter ) {
var state = me . _state . filter ;
me . _state . filter = undefined ;
2016-03-11 00:48:53 +00:00
if ( me . _state . tablename || state )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . filter , ! state ) ;
2016-03-11 00:48:53 +00:00
else
me . api . asc _addAutoFilter ( ) ;
}
return false ;
} ,
'command+s,ctrl+s' : function ( e ) {
me . onSave ( ) ;
e . preventDefault ( ) ;
e . stopPropagation ( ) ;
} ,
'command+k,ctrl+k' : function ( e ) {
2018-08-28 11:24:09 +00:00
if ( me . editMode && ! me . toolbar . mode . isEditMailMerge && ! me . toolbar . mode . isEditDiagram && ! me . api . isCellEdited && ! me . _state . multiselect && ! me . _state . inpivot &&
2020-02-05 12:31:45 +00:00
! me . getApplication ( ) . getController ( 'LeftMenu' ) . leftMenu . menuFile . isVisible ( ) ) {
var cellinfo = me . api . asc _getCellInfo ( ) ,
2020-05-14 08:39:04 +00:00
selectionType = cellinfo . asc _getSelectionType ( ) ;
2020-02-05 12:31:45 +00:00
if ( selectionType !== Asc . c _oAscSelectionType . RangeShapeText || me . api . asc _canAddShapeHyperlink ( ) !== false )
me . onHyperlink ( ) ;
}
2016-03-11 00:48:53 +00:00
e . preventDefault ( ) ;
2017-01-17 13:40:18 +00:00
} ,
'command+1,ctrl+1' : function ( e ) {
if ( me . editMode && ! me . toolbar . mode . isEditMailMerge && ! me . api . isCellEdited && ! me . toolbar . cmbNumberFormat . isDisabled ( ) ) {
me . onCustomNumberFormat ( ) ;
}
2020-05-07 16:42:27 +00:00
return false ;
} ,
'shift+f3' : function ( e ) {
if ( me . editMode && ! me . toolbar . btnInsertFormula . isDisabled ( ) ) {
var controller = me . getApplication ( ) . getController ( 'FormulaDialog' ) ;
if ( controller ) {
controller . showDialog ( ) ;
}
}
2020-05-08 17:18:53 +00:00
return false ;
2020-08-14 13:58:41 +00:00
}
} ;
2020-08-15 11:55:19 +00:00
shortcuts [ 'command+shift+=,ctrl+shift+=' + ( Common . Utils . isGecko ? ',command+shift+ff=,ctrl+shift+ff=' : '' ) ] = function ( e ) {
2020-05-08 17:18:53 +00:00
if ( me . editMode && ! me . toolbar . btnAddCell . isDisabled ( ) ) {
2020-08-13 12:03:53 +00:00
var cellinfo = me . api . asc _getCellInfo ( ) ,
selectionType = cellinfo . asc _getSelectionType ( ) ;
if ( selectionType === Asc . c _oAscSelectionType . RangeRow || selectionType === Asc . c _oAscSelectionType . RangeCol ) {
me . api . asc _insertCells ( selectionType === Asc . c _oAscSelectionType . RangeRow ? Asc . c _oAscInsertOptions . InsertRows : Asc . c _oAscInsertOptions . InsertColumns ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} else {
var items = me . toolbar . btnAddCell . menu . items ,
arr = [ ] ;
for ( var i = 0 ; i < 4 ; i ++ )
arr . push ( { caption : items [ i ] . caption , value : items [ i ] . value , disabled : items [ i ] . isDisabled ( ) } ) ;
2020-10-15 11:09:23 +00:00
( new Common . Views . OptionsDialog ( {
2020-08-13 12:03:53 +00:00
title : me . txtInsertCells ,
items : arr ,
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
me . api . asc _insertCells ( dlg . getSettings ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
2020-05-08 17:18:53 +00:00
}
2020-08-13 12:03:53 +00:00
} ) ) . show ( ) ;
}
2020-05-08 17:18:53 +00:00
}
return false ;
2020-08-14 13:58:41 +00:00
} ;
2020-08-15 11:55:19 +00:00
shortcuts [ 'command+shift+-,ctrl+shift+-' + ( Common . Utils . isGecko ? ',command+shift+ff-,ctrl+shift+ff-' : '' ) ] = function ( e ) {
2020-05-08 17:18:53 +00:00
if ( me . editMode && ! me . toolbar . btnDeleteCell . isDisabled ( ) ) {
2020-08-13 12:03:53 +00:00
var cellinfo = me . api . asc _getCellInfo ( ) ,
selectionType = cellinfo . asc _getSelectionType ( ) ;
if ( selectionType === Asc . c _oAscSelectionType . RangeRow || selectionType === Asc . c _oAscSelectionType . RangeCol ) {
me . api . asc _deleteCells ( selectionType === Asc . c _oAscSelectionType . RangeRow ? Asc . c _oAscDeleteOptions . DeleteRows : Asc . c _oAscDeleteOptions . DeleteColumns ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} else {
var items = me . toolbar . btnDeleteCell . menu . items ,
arr = [ ] ;
for ( var i = 0 ; i < 4 ; i ++ )
arr . push ( { caption : items [ i ] . caption , value : items [ i ] . value , disabled : items [ i ] . isDisabled ( ) } ) ;
2020-10-15 11:09:23 +00:00
( new Common . Views . OptionsDialog ( {
2020-08-13 12:03:53 +00:00
title : me . txtDeleteCells ,
items : arr ,
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
me . api . asc _deleteCells ( dlg . getSettings ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
2020-05-08 17:18:53 +00:00
}
2020-08-13 12:03:53 +00:00
} ) ) . show ( ) ;
}
2020-05-08 17:18:53 +00:00
}
2017-01-17 13:40:18 +00:00
return false ;
2020-08-14 13:58:41 +00:00
} ;
Common . util . Shortcuts . delegateShortcuts ( { shortcuts : shortcuts } ) ;
2016-03-11 00:48:53 +00:00
2017-04-28 12:24:57 +00:00
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
2016-03-11 00:48:53 +00:00
this . attachToControlEvents ( ) ;
this . onApiSheetChanged ( ) ;
Common . NotificationCenter . on ( 'cells:range' , _ . bind ( this . onCellsRange , this ) ) ;
} ,
onChangeViewMode : function ( item , compact ) {
2018-05-17 10:44:46 +00:00
this . toolbar . setFolded ( compact ) ;
2017-04-27 15:40:27 +00:00
this . toolbar . fireEvent ( 'view:compact' , [ this , compact ] ) ;
2016-03-11 00:48:53 +00:00
2017-04-27 15:40:27 +00:00
Common . localStorage . setBool ( 'sse-compact-toolbar' , compact ) ;
Common . NotificationCenter . trigger ( 'layout:changed' , 'toolbar' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2016-03-11 00:48:53 +00:00
2017-04-27 15:40:27 +00:00
onClickChangeCompact : function ( from ) {
if ( from != 'file' ) {
Common . Utils . asyncCall ( function ( ) {
this . onChangeViewMode ( null , ! this . toolbar . isCompact ( ) ) ;
} , this ) ;
2016-03-11 00:48:53 +00:00
}
} ,
fillTableTemplates : function ( ) {
2016-09-23 11:24:54 +00:00
if ( ! this . toolbar . btnTableTemplate . rendered ) return ;
2016-03-11 00:48:53 +00:00
2016-09-23 11:24:54 +00:00
var me = this ;
2016-03-11 00:48:53 +00:00
function createPicker ( element , menu ) {
var picker = new Common . UI . DataView ( {
el : element ,
parentMenu : menu ,
restoreHeight : 300 ,
style : 'max-height: 300px;' ,
store : me . getCollection ( 'TableTemplates' ) ,
2017-04-11 11:05:56 +00:00
itemTemplate : _ . template ( '<div class="item-template"><img src="<%= imageUrl %>" id="<%= id %>" style="width:61px;height:46px;"></div>' )
2016-03-11 00:48:53 +00:00
} ) ;
picker . on ( 'item:click' , function ( picker , item , record ) {
if ( me . api ) {
me . _state . tablestylename = null ;
2019-06-10 11:50:12 +00:00
me . _setTableFormat ( record ? record . get ( 'name' ) : me . api . asc _getDefaultTableStyle ( ) ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Table Templates' ) ;
}
} ) ;
if ( picker . scroller ) {
picker . scroller . update ( { alwaysVisibleY : true } ) ;
}
return picker ;
}
if ( _ . isUndefined ( this . toolbar . mnuTableTemplatePicker ) ) {
this . toolbar . mnuTableTemplatePicker = createPicker ( $ ( '#id-toolbar-menu-table-templates' ) , this . toolbar . btnTableTemplate . menu ) ;
}
// if (_.isUndefined(this.toolbar.mnuTableTemplatePickerShort)) {
// this.toolbar.mnuTableTemplatePickerShort = createPicker($('#id-toolbar-short-menu-table-templates'));
// }
} ,
onTableTplMenuOpen : function ( cmp ) {
2016-11-29 12:48:18 +00:00
this . onApiInitTableTemplates ( this . api . asc _getTablePictures ( this . api . asc _getCellInfo ( ) . asc _getFormatTableInfo ( ) ) ) ;
2016-03-11 00:48:53 +00:00
2016-11-29 12:48:18 +00:00
var scroller = this . toolbar . mnuTableTemplatePicker . scroller ;
2016-03-11 00:48:53 +00:00
if ( scroller ) {
scroller . update ( { alwaysVisibleY : true } ) ;
scroller . scrollTop ( 0 ) ;
}
2017-01-19 11:46:00 +00:00
var val = this . toolbar . mnuTableTemplatePicker . store . findWhere ( { name : this . _state . tablestylename } ) ;
if ( val )
this . toolbar . mnuTableTemplatePicker . selectRecord ( val ) ;
else
2017-01-19 12:08:55 +00:00
this . toolbar . mnuTableTemplatePicker . deselectAll ( ) ;
2016-03-11 00:48:53 +00:00
} ,
2016-11-29 12:48:18 +00:00
onSendThemeColors : function ( ) {
// get new table templates
if ( this . toolbar . btnTableTemplate . rendered && this . toolbar . btnTableTemplate . cmpEl . hasClass ( 'open' ) )
this . onTableTplMenuOpen ( ) ;
} ,
2016-03-11 00:48:53 +00:00
onApiInitTableTemplates : function ( images ) {
2019-09-19 10:31:23 +00:00
var me = this ;
2016-03-11 00:48:53 +00:00
var store = this . getCollection ( 'TableTemplates' ) ;
if ( store ) {
var templates = [ ] ;
_ . each ( images , function ( item ) {
2019-09-19 10:31:23 +00:00
var tip = item . asc _getDisplayName ( ) ;
if ( item . asc _getType ( ) == 0 ) {
var arr = tip . split ( ' ' ) ,
last = arr . pop ( ) ;
arr = 'txtTable_' + arr . join ( '' ) ;
tip = me [ arr ] ? me [ arr ] + ' ' + last : tip ;
}
2016-03-11 00:48:53 +00:00
templates . push ( {
name : item . asc _getName ( ) ,
caption : item . asc _getDisplayName ( ) ,
type : item . asc _getType ( ) ,
imageUrl : item . asc _getImage ( ) ,
allowSelected : true ,
2016-11-29 12:01:29 +00:00
selected : false ,
2019-09-19 10:31:23 +00:00
tip : tip
2016-03-11 00:48:53 +00:00
} ) ;
} ) ;
2019-08-30 13:24:15 +00:00
store . reset ( templates ) ;
2016-03-11 00:48:53 +00:00
}
this . fillTableTemplates ( ) ;
} ,
onApiInitEditorStyles : function ( styles ) {
window . styles _loaded = false ;
var self = this ,
listStyles = self . toolbar . listStyles ;
if ( ! listStyles ) {
self . styles = styles ;
return ;
}
2017-06-27 09:52:29 +00:00
var mainController = this . getApplication ( ) . getController ( 'Main' ) ;
2020-09-16 13:40:09 +00:00
var count = listStyles . menuPicker . store . length ;
2020-09-16 20:30:12 +00:00
var rec = listStyles . menuPicker . getSelectedRec ( ) ;
2020-09-16 13:40:09 +00:00
if ( count > 0 && count == styles . length ) {
var data = listStyles . menuPicker . dataViewItems ;
data && _ . each ( styles , function ( style , index ) {
var img = style . asc _getImage ( ) ;
data [ index ] . model . set ( 'imageUrl' , img , { silent : true } ) ;
data [ index ] . model . set ( {
name : style . asc _getName ( ) ,
tip : mainController . translationTable [ style . get _Name ( ) ] || style . get _Name ( )
} ) ;
$ ( data [ index ] . el ) . find ( 'img' ) . attr ( 'src' , img ) ;
2016-03-11 00:48:53 +00:00
} ) ;
2020-09-16 13:40:09 +00:00
} else {
var arr = [ ] ;
_ . each ( styles , function ( style ) {
arr . push ( {
imageUrl : style . asc _getImage ( ) ,
name : style . asc _getName ( ) ,
tip : mainController . translationTable [ style . get _Name ( ) ] || style . get _Name ( ) ,
uid : Common . UI . getId ( )
} ) ;
} ) ;
listStyles . menuPicker . store . reset ( arr ) ;
}
2016-03-11 00:48:53 +00:00
if ( listStyles . menuPicker . store . length > 0 && listStyles . rendered ) {
2020-09-16 20:30:12 +00:00
rec = rec ? listStyles . menuPicker . store . findWhere ( { name : rec . get ( 'name' ) } ) : null ;
2020-09-16 13:40:09 +00:00
listStyles . fillComboView ( rec ? rec : listStyles . menuPicker . store . at ( 0 ) , true , true ) ;
2016-03-11 00:48:53 +00:00
}
window . styles _loaded = true ;
} ,
2020-09-17 13:29:48 +00:00
onHomeOpen : function ( ) {
var listStyles = this . toolbar . listStyles ;
if ( listStyles && listStyles . needFillComboView && listStyles . menuPicker . store . length > 0 && listStyles . rendered ) {
var styleRec ;
if ( this . _state . prstyle ) styleRec = listStyles . menuPicker . store . findWhere ( { name : this . _state . prstyle } ) ;
listStyles . fillComboView ( ( styleRec ) ? styleRec : listStyles . menuPicker . store . at ( 0 ) , true ) ;
}
} ,
2018-10-25 13:19:29 +00:00
onApiCoAuthoringDisconnect : function ( enableDownload ) {
this . toolbar . setMode ( { isDisconnected : true , enableDownload : ! ! enableDownload } ) ;
2016-03-11 00:48:53 +00:00
this . editMode = false ;
} ,
onApiChartDblClick : function ( ) {
2016-12-16 08:37:57 +00:00
this . onEditChart ( this . btnInsertChart ) ;
2016-03-11 00:48:53 +00:00
} ,
onApiCanRevert : function ( which , can ) {
if ( which == 'undo' ) {
if ( this . _state . can _undo !== can ) {
this . toolbar . btnUndo . setDisabled ( ! can ) ;
this . _state . can _undo = can ;
}
} else {
if ( this . _state . can _redo !== can ) {
this . toolbar . btnRedo . setDisabled ( ! can ) ;
this . _state . can _redo = can ;
}
}
} ,
setDisabledComponents : function ( components , disable ) {
_ . each ( [ ] . concat ( components ) , function ( component ) {
if ( component . isDisabled ( ) !== disable ) component . setDisabled ( disable )
} ) ;
} ,
onApiEditCell : function ( state ) {
2019-06-06 08:27:17 +00:00
if ( $ ( '.asc-window.enable-key-events:visible' ) . length > 0 ) return ;
2019-05-28 13:34:57 +00:00
2016-03-11 00:48:53 +00:00
var toolbar = this . toolbar ;
if ( toolbar . mode . isEditDiagram || toolbar . mode . isEditMailMerge ) {
2016-04-05 11:52:34 +00:00
is _cell _edited = ( state == Asc . c _oAscCellEditorState . editStart ) ;
2020-10-02 15:33:07 +00:00
toolbar . lockToolbar ( SSE . enumLock . editCell , state == Asc . c _oAscCellEditorState . editStart , { array : [ toolbar . btnDecDecimal , toolbar . btnIncDecimal , toolbar . cmbNumberFormat , toolbar . btnEditChartData ] } ) ;
2016-03-11 00:48:53 +00:00
} else
2016-04-05 11:52:34 +00:00
if ( state == Asc . c _oAscCellEditorState . editStart || state == Asc . c _oAscCellEditorState . editEnd ) {
toolbar . lockToolbar ( SSE . enumLock . editCell , state == Asc . c _oAscCellEditorState . editStart , {
2016-03-11 00:48:53 +00:00
array : [
toolbar . btnClearStyle . menu . items [ 1 ] ,
toolbar . btnClearStyle . menu . items [ 2 ] ,
toolbar . btnClearStyle . menu . items [ 3 ] ,
toolbar . btnClearStyle . menu . items [ 4 ] ,
toolbar . btnNamedRange . menu . items [ 0 ] ,
toolbar . btnNamedRange . menu . items [ 1 ]
2020-02-26 10:49:57 +00:00
] . concat ( toolbar . itemsNamedRange ) ,
2016-03-11 00:48:53 +00:00
merge : true ,
clear : [ SSE . enumLock . editFormula , SSE . enumLock . editText ]
} ) ;
2016-04-05 11:52:34 +00:00
var is _cell _edited = ( state == Asc . c _oAscCellEditorState . editStart ) ;
2017-01-17 13:40:18 +00:00
( is _cell _edited ) ? Common . util . Shortcuts . suspendEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h, command+1, ctrl+1' ) :
Common . util . Shortcuts . resumeEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h, command+1, ctrl+1' ) ;
2016-03-11 00:48:53 +00:00
if ( is _cell _edited ) {
toolbar . listStyles . suspendEvents ( ) ;
toolbar . listStyles . menuPicker . selectRecord ( null ) ;
toolbar . listStyles . resumeEvents ( ) ;
this . _state . prstyle = undefined ;
}
} else {
2016-04-05 11:52:34 +00:00
if ( state == Asc . c _oAscCellEditorState . editText ) var is _text = true , is _formula = false ; else
if ( state == Asc . c _oAscCellEditorState . editFormula ) is _text = ! ( is _formula = true ) ; else
if ( state == Asc . c _oAscCellEditorState . editEmptyCell ) is _text = is _formula = false ;
2016-03-11 00:48:53 +00:00
toolbar . lockToolbar ( SSE . enumLock . editFormula , is _formula ,
{ array : [ toolbar . cmbFontName , toolbar . cmbFontSize , toolbar . btnIncFontSize , toolbar . btnDecFontSize ,
2017-12-05 13:58:01 +00:00
toolbar . btnBold , toolbar . btnItalic , toolbar . btnUnderline , toolbar . btnStrikeout , toolbar . btnSubscript , toolbar . btnTextColor ] } ) ;
2019-06-24 12:57:28 +00:00
toolbar . lockToolbar ( SSE . enumLock . editText , is _text , { array : [ toolbar . btnInsertFormula ] . concat ( toolbar . btnsFormula ) } ) ;
2016-03-11 00:48:53 +00:00
}
this . _state . coauthdisable = undefined ;
this . _state . selection _type = undefined ;
this . checkInsertAutoshape ( { action : 'cancel' } ) ;
} ,
2018-03-21 11:28:28 +00:00
onApiZoomChange : function ( zf , type ) { } ,
2016-03-11 00:48:53 +00:00
2018-07-19 12:48:12 +00:00
2018-06-28 09:27:11 +00:00
onApiSheetChanged : function ( ) {
2018-07-20 12:07:14 +00:00
if ( ! this . toolbar . mode || ! this . toolbar . mode . isEdit || this . toolbar . mode . isEditDiagram || this . toolbar . mode . isEditMailMerge ) return ;
2018-06-28 09:27:11 +00:00
2018-07-19 12:48:12 +00:00
var currentSheet = this . api . asc _getActiveWorksheetIndex ( ) ,
props = this . api . asc _getPageOptions ( currentSheet ) ,
2018-06-28 09:27:11 +00:00
opt = props . asc _getPageSetup ( ) ;
this . onApiPageOrient ( opt . asc _getOrientation ( ) ) ;
this . onApiPageSize ( opt . asc _getWidth ( ) , opt . asc _getHeight ( ) ) ;
this . onApiPageMargins ( props . asc _getPageMargins ( ) ) ;
2019-09-12 07:15:07 +00:00
this . onChangeScaleSettings ( opt . asc _getFitToWidth ( ) , opt . asc _getFitToHeight ( ) , opt . asc _getScale ( ) ) ;
2018-07-19 12:48:12 +00:00
this . api . asc _isLayoutLocked ( currentSheet ) ? this . onApiLockDocumentProps ( currentSheet ) : this . onApiUnLockDocumentProps ( currentSheet ) ;
2018-09-13 12:54:29 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . printAreaLock , this . api . asc _isPrintAreaLocked ( currentSheet ) , { array : [ this . toolbar . btnPrintArea ] } ) ;
2018-07-19 12:48:12 +00:00
} ,
onUpdateDocumentProps : function ( nIndex ) {
if ( nIndex == this . api . asc _getActiveWorksheetIndex ( ) )
this . onApiSheetChanged ( ) ;
2018-06-28 09:27:11 +00:00
} ,
onApiPageSize : function ( w , h ) {
if ( this . _state . pgorient === undefined ) return ;
2018-08-10 10:46:19 +00:00
if ( Math . abs ( this . _state . pgsize [ 0 ] - w ) > 0.1 ||
Math . abs ( this . _state . pgsize [ 1 ] - h ) > 0.1 ) {
2018-06-28 09:27:11 +00:00
this . _state . pgsize = [ w , h ] ;
if ( this . toolbar . mnuPageSize ) {
this . toolbar . mnuPageSize . clearAll ( ) ;
_ . each ( this . toolbar . mnuPageSize . items , function ( item ) {
if ( item . value && typeof ( item . value ) == 'object' &&
2018-08-10 10:46:19 +00:00
Math . abs ( item . value [ 0 ] - w ) < 0.1 && Math . abs ( item . value [ 1 ] - h ) < 0.1 ) {
2018-06-28 09:27:11 +00:00
item . setChecked ( true ) ;
return false ;
}
} , this ) ;
}
}
} ,
onApiPageMargins : function ( props ) {
if ( props ) {
var left = props . asc _getLeft ( ) ,
top = props . asc _getTop ( ) ,
right = props . asc _getRight ( ) ,
bottom = props . asc _getBottom ( ) ;
2018-08-10 10:46:19 +00:00
if ( ! this . _state . pgmargins || Math . abs ( this . _state . pgmargins [ 0 ] - top ) > 0.1 ||
Math . abs ( this . _state . pgmargins [ 1 ] - left ) > 0.1 || Math . abs ( this . _state . pgmargins [ 2 ] - bottom ) > 0.1 ||
Math . abs ( this . _state . pgmargins [ 3 ] - right ) > 0.1 ) {
2018-06-28 09:27:11 +00:00
this . _state . pgmargins = [ top , left , bottom , right ] ;
if ( this . toolbar . btnPageMargins . menu ) {
this . toolbar . btnPageMargins . menu . clearAll ( ) ;
_ . each ( this . toolbar . btnPageMargins . menu . items , function ( item ) {
if ( item . value && typeof ( item . value ) == 'object' &&
2018-08-10 10:46:19 +00:00
Math . abs ( item . value [ 0 ] - top ) < 0.1 && Math . abs ( item . value [ 1 ] - left ) < 0.1 &&
Math . abs ( item . value [ 2 ] - bottom ) < 0.1 && Math . abs ( item . value [ 3 ] - right ) < 0.1 ) {
2018-06-28 09:27:11 +00:00
item . setChecked ( true ) ;
return false ;
}
} , this ) ;
}
}
}
} ,
onApiPageOrient : function ( orient ) {
if ( this . _state . pgorient !== orient ) {
2018-06-28 12:42:01 +00:00
this . toolbar . btnPageOrient . menu . items [ orient == Asc . c _oAscPageOrientation . PagePortrait ? 0 : 1 ] . setChecked ( true ) ;
2018-06-28 09:27:11 +00:00
this . _state . pgorient = orient ;
}
} ,
2016-03-11 00:48:53 +00:00
2019-09-12 07:15:07 +00:00
onChangeScaleSettings : function ( width , height , scale ) {
if ( this . toolbar . btnScale . menu ) {
if ( width !== undefined ) {
2019-10-15 12:07:03 +00:00
var isWidth = false ,
isHeight = false ;
var width = width || 0 ,
height = height || 0 ;
if ( scale !== undefined ) {
this . toolbar . setValueCustomScale ( scale ) ;
2019-09-12 07:15:07 +00:00
} else {
2019-10-15 12:07:03 +00:00
this . toolbar . setValueCustomScale ( this . api . asc _getPageOptions ( ) . asc _getPageSetup ( ) . asc _getScale ( ) ) ;
2019-09-12 07:15:07 +00:00
}
2019-10-15 12:07:03 +00:00
this . toolbar . menuWidthScale . clearAll ( ) ;
this . toolbar . menuWidthScale . items . forEach ( function ( item ) {
if ( item . value === width ) {
item . setChecked ( true ) ;
isWidth = true ;
return false ;
}
} ) ;
if ( ! isWidth ) {
this . toolbar . menuWidthScale . items [ 11 ] . setChecked ( true ) ;
2019-09-12 07:15:07 +00:00
}
2019-10-15 12:07:03 +00:00
this . toolbar . menuHeightScale . clearAll ( ) ;
this . toolbar . menuHeightScale . items . forEach ( function ( item ) {
if ( item . value === height ) {
item . setChecked ( true ) ;
isHeight = true ;
return false ;
}
} ) ;
if ( ! isHeight ) {
this . toolbar . menuHeightScale . items [ 11 ] . setChecked ( true ) ;
}
if ( this . toolbar . btnCustomScaleUp && this . toolbar . btnCustomScaleDown ) {
this . toolbar . btnCustomScaleUp . setDisabled ( ! ( ! width && ! height ) ) ;
this . toolbar . btnCustomScaleDown . setDisabled ( ! ( ! width && ! height ) ) ;
2019-10-21 14:43:34 +00:00
this . toolbar . mnuCustomScale . setDisabled ( ! ( ! width && ! height ) ) ;
2019-10-15 12:07:03 +00:00
}
this . _state . scaleWidth = width ;
this . _state . scaleHeight = height ;
this . _state . scale = scale ;
} else {
if ( this . toolbar . btnCustomScaleUp && this . toolbar . btnCustomScaleDown ) {
this . toolbar . btnCustomScaleUp . setDisabled ( ! ( ! this . _state . scaleWidth && ! this . _state . scaleHeight ) ) ;
this . toolbar . btnCustomScaleDown . setDisabled ( ! ( ! this . _state . scaleWidth && ! this . _state . scaleHeight ) ) ;
2019-10-21 14:43:34 +00:00
this . toolbar . mnuCustomScale . setDisabled ( ! ( ! this . _state . scaleWidth && ! this . _state . scaleHeight ) ) ;
2019-10-15 12:07:03 +00:00
}
}
2019-09-12 07:15:07 +00:00
}
} ,
2018-07-19 12:48:12 +00:00
onApiLockDocumentProps : function ( nIndex ) {
if ( this . _state . lock _doc !== true && nIndex == this . api . asc _getActiveWorksheetIndex ( ) ) {
2020-03-17 12:06:40 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . docPropsLock , true , { array : [ this . toolbar . btnPageSize , this . toolbar . btnPageMargins , this . toolbar . btnPageOrient , this . toolbar . btnScale , this . toolbar . btnPrintTitles ] } ) ;
2018-07-19 12:48:12 +00:00
this . _state . lock _doc = true ;
}
} ,
onApiUnLockDocumentProps : function ( nIndex ) {
if ( this . _state . lock _doc !== false && nIndex == this . api . asc _getActiveWorksheetIndex ( ) ) {
2020-03-17 12:06:40 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . docPropsLock , false , { array : [ this . toolbar . btnPageSize , this . toolbar . btnPageMargins , this . toolbar . btnPageOrient , this . toolbar . btnScale , this . toolbar . btnPrintTitles ] } ) ;
2018-07-19 12:48:12 +00:00
this . _state . lock _doc = false ;
}
} ,
2016-03-11 00:48:53 +00:00
onApiEditorSelectionChanged : function ( fontobj ) {
2019-06-06 08:27:17 +00:00
if ( ! this . editMode || $ ( '.asc-window.enable-key-events:visible' ) . length > 0 ) return ;
2016-03-11 00:48:53 +00:00
var toolbar = this . toolbar ,
val ;
/* read font name */
2020-05-15 08:32:21 +00:00
var fontparam = fontobj . asc _getFontName ( ) ;
2016-03-11 00:48:53 +00:00
if ( fontparam != toolbar . cmbFontName . getValue ( ) ) {
Common . NotificationCenter . trigger ( 'fonts:change' , fontobj ) ;
}
/* read font params */
if ( ! toolbar . mode . isEditMailMerge && ! toolbar . mode . isEditDiagram ) {
2020-05-15 08:32:21 +00:00
val = fontobj . asc _getFontBold ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . bold !== val ) {
toolbar . btnBold . toggle ( val === true , true ) ;
this . _state . bold = val ;
}
2020-05-15 08:32:21 +00:00
val = fontobj . asc _getFontItalic ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . italic !== val ) {
toolbar . btnItalic . toggle ( val === true , true ) ;
this . _state . italic = val ;
}
2020-05-15 08:32:21 +00:00
val = fontobj . asc _getFontUnderline ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . underline !== val ) {
toolbar . btnUnderline . toggle ( val === true , true ) ;
this . _state . underline = val ;
}
2020-05-15 08:32:21 +00:00
val = fontobj . asc _getFontStrikeout ( ) ;
2017-12-05 13:58:01 +00:00
if ( this . _state . strikeout !== val ) {
toolbar . btnStrikeout . toggle ( val === true , true ) ;
this . _state . strikeout = val ;
}
2020-05-15 08:32:21 +00:00
var subsc = fontobj . asc _getFontSubscript ( ) ,
supersc = fontobj . asc _getFontSuperscript ( ) ;
2017-12-05 13:58:01 +00:00
if ( this . _state . subscript !== subsc || this . _state . superscript !== supersc ) {
2018-01-10 13:08:42 +00:00
var index = ( supersc ) ? 0 : ( subsc ? 1 : - 1 ) ,
2017-12-05 13:58:01 +00:00
btnSubscript = toolbar . btnSubscript ;
btnSubscript . toggle ( index > - 1 , true ) ;
if ( index < 0 ) {
2018-01-15 14:47:46 +00:00
btnSubscript . menu . clearAll ( ) ;
2017-12-05 13:58:01 +00:00
} else {
btnSubscript . menu . items [ index ] . setChecked ( true ) ;
2018-02-26 13:23:07 +00:00
if ( btnSubscript . rendered && btnSubscript . $icon ) {
btnSubscript . $icon . removeClass ( btnSubscript . options . icls ) ;
btnSubscript . options . icls = btnSubscript . menu . items [ index ] . options . icls ;
btnSubscript . $icon . addClass ( btnSubscript . options . icls ) ;
2017-12-05 13:58:01 +00:00
}
}
this . _state . subscript = subsc ;
this . _state . superscript = supersc ;
}
2016-03-11 00:48:53 +00:00
}
/* read font size */
2020-05-15 08:32:21 +00:00
var str _size = fontobj . asc _getFontSize ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . fontsize !== str _size ) {
toolbar . cmbFontSize . setValue ( ( str _size !== undefined ) ? str _size : '' ) ;
this . _state . fontsize = str _size ;
}
/* read font color */
var clr ,
color ,
fontColorPicker = this . toolbar . mnuTextColorPicker ;
if ( ! toolbar . btnTextColor . ischanged && ! fontColorPicker . isDummy ) {
2020-05-15 08:32:21 +00:00
color = fontobj . asc _getFontColor ( ) ;
2016-03-11 00:48:53 +00:00
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
}
var type1 = typeof ( clr ) ,
type2 = typeof ( this . _state . clrtext ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrtext . effectValue || this . _state . clrtext . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrtext !== undefined && this . _state . clrtext . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
fontColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) fontColorPicker . clearSelection ( ) ;
} else {
fontColorPicker . select ( clr , true ) ;
}
this . _state . clrtext = clr ;
}
this . _state . clrtext _asccolor = color ;
}
} ,
onApiSelectionChanged : function ( info ) {
2019-06-06 08:27:17 +00:00
if ( ! this . editMode || $ ( '.asc-window.enable-key-events:visible' ) . length > 0 ) return ;
2017-04-28 12:24:57 +00:00
if ( this . toolbar . mode . isEditDiagram )
2017-04-28 13:37:28 +00:00
return this . onApiSelectionChanged _DiagramEditor ( info ) ; else
if ( this . toolbar . mode . isEditMailMerge )
return this . onApiSelectionChanged _MailMergeEditor ( info ) ;
2016-03-11 00:48:53 +00:00
2020-05-14 08:39:04 +00:00
var selectionType = info . asc _getSelectionType ( ) ,
2019-10-04 13:17:05 +00:00
coauth _disable = ( ! this . toolbar . mode . isEditMailMerge && ! this . toolbar . mode . isEditDiagram ) ? ( info . asc _getLocked ( ) === true || info . asc _getLockedTable ( ) === true || info . asc _getLockedPivotTable ( ) === true ) : false ,
2016-11-07 13:00:11 +00:00
editOptionsDisabled = this . _disableEditOptions ( selectionType , coauth _disable ) ,
me = this ,
2016-03-11 00:48:53 +00:00
toolbar = this . toolbar ,
2020-05-15 10:52:52 +00:00
xfs = info . asc _getXfs ( ) ,
2016-03-11 00:48:53 +00:00
val , need _disable = false ;
/* read font name */
2020-05-15 10:52:52 +00:00
var fontparam = xfs . asc _getFontName ( ) ;
2017-04-28 12:24:57 +00:00
if ( fontparam != toolbar . cmbFontName . getValue ( ) ) {
2020-05-15 10:52:52 +00:00
Common . NotificationCenter . trigger ( 'fonts:change' , xfs ) ;
2016-03-11 00:48:53 +00:00
}
2016-11-07 13:00:11 +00:00
/* read font size */
2020-05-15 10:52:52 +00:00
var str _size = xfs . asc _getFontSize ( ) ;
2017-04-28 12:24:57 +00:00
if ( this . _state . fontsize !== str _size ) {
toolbar . cmbFontSize . setValue ( ( str _size !== undefined ) ? str _size : '' ) ;
this . _state . fontsize = str _size ;
2016-11-07 13:00:11 +00:00
}
2020-05-15 07:42:00 +00:00
toolbar . lockToolbar ( SSE . enumLock . cantHyperlink , ( selectionType === Asc . c _oAscSelectionType . RangeShapeText ) && ( this . api . asc _canAddShapeHyperlink ( ) === false ) , { array : [ toolbar . btnInsertHyperlink ] } ) ;
2016-11-23 13:38:30 +00:00
2017-05-11 07:39:58 +00:00
/ *
2016-12-28 11:28:27 +00:00
need _disable = selectionType != Asc . c _oAscSelectionType . RangeCells && selectionType != Asc . c _oAscSelectionType . RangeCol &&
2017-04-28 12:24:57 +00:00
selectionType != Asc . c _oAscSelectionType . RangeRow && selectionType != Asc . c _oAscSelectionType . RangeMax ;
2016-12-28 11:28:27 +00:00
if ( this . _state . sparklines _disabled !== need _disable ) {
2017-04-28 12:22:37 +00:00
this . _state . sparklines _disabled = need _disable ;
2016-12-28 11:28:27 +00:00
var len = toolbar . mnuInsertChartPicker . store . length ;
2017-04-28 12:24:57 +00:00
for ( var i = 0 ; i < 3 ; i ++ ) {
2016-12-28 11:28:27 +00:00
toolbar . mnuInsertChartPicker . store . at ( len - i - 1 ) . set ( { disabled : need _disable } ) ;
}
}
2017-05-11 07:39:58 +00:00
* /
2016-12-28 11:28:27 +00:00
2020-05-15 07:42:00 +00:00
need _disable = ( selectionType === Asc . c _oAscSelectionType . RangeCells || selectionType === Asc . c _oAscSelectionType . RangeCol ||
selectionType === Asc . c _oAscSelectionType . RangeRow || selectionType === Asc . c _oAscSelectionType . RangeMax ) ;
2018-06-28 09:27:11 +00:00
toolbar . lockToolbar ( SSE . enumLock . selRange , need _disable , { array : [ toolbar . btnImgAlign , toolbar . btnImgBackward , toolbar . btnImgForward , toolbar . btnImgGroup ] } ) ;
2018-06-28 12:42:01 +00:00
var cangroup = this . api . asc _canGroupGraphicsObjects ( ) ,
canungroup = this . api . asc _canUnGroupGraphicsObjects ( ) ;
toolbar . lockToolbar ( SSE . enumLock . cantGroupUngroup , ! cangroup && ! canungroup , { array : [ toolbar . btnImgGroup ] } ) ;
toolbar . btnImgGroup . menu . items [ 0 ] . setDisabled ( ! cangroup ) ;
toolbar . btnImgGroup . menu . items [ 1 ] . setDisabled ( ! canungroup ) ;
toolbar . lockToolbar ( SSE . enumLock . cantGroup , ! cangroup , { array : [ toolbar . btnImgAlign ] } ) ;
2018-06-28 09:27:11 +00:00
2019-02-14 14:50:36 +00:00
var objcount = this . api . asc _getSelectedDrawingObjectsCount ( ) ;
toolbar . btnImgAlign . menu . items [ 7 ] . setDisabled ( objcount < 3 ) ;
toolbar . btnImgAlign . menu . items [ 8 ] . setDisabled ( objcount < 3 ) ;
2016-11-07 13:00:11 +00:00
if ( editOptionsDisabled ) return ;
2016-03-11 00:48:53 +00:00
/* read font params */
if ( ! toolbar . mode . isEditMailMerge && ! toolbar . mode . isEditDiagram ) {
2020-05-15 10:52:52 +00:00
val = xfs . asc _getFontBold ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . bold !== val ) {
toolbar . btnBold . toggle ( val === true , true ) ;
this . _state . bold = val ;
}
2020-05-15 10:52:52 +00:00
val = xfs . asc _getFontItalic ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . italic !== val ) {
toolbar . btnItalic . toggle ( val === true , true ) ;
this . _state . italic = val ;
}
2020-05-15 10:52:52 +00:00
val = xfs . asc _getFontUnderline ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . underline !== val ) {
toolbar . btnUnderline . toggle ( val === true , true ) ;
this . _state . underline = val ;
}
2020-05-15 10:52:52 +00:00
val = xfs . asc _getFontStrikeout ( ) ;
2017-12-05 13:58:01 +00:00
if ( this . _state . strikeout !== val ) {
toolbar . btnStrikeout . toggle ( val === true , true ) ;
this . _state . strikeout = val ;
}
2020-05-15 10:52:52 +00:00
var subsc = xfs . asc _getFontSubscript ( ) ,
supersc = xfs . asc _getFontSuperscript ( ) ;
2017-12-05 13:58:01 +00:00
if ( this . _state . subscript !== subsc || this . _state . superscript !== supersc ) {
2018-01-10 13:08:42 +00:00
var index = ( supersc ) ? 0 : ( subsc ? 1 : - 1 ) ,
2017-12-05 13:58:01 +00:00
btnSubscript = toolbar . btnSubscript ;
btnSubscript . toggle ( index > - 1 , true ) ;
if ( index < 0 ) {
2018-01-15 14:47:46 +00:00
btnSubscript . menu . clearAll ( ) ;
2017-12-05 13:58:01 +00:00
} else {
btnSubscript . menu . items [ index ] . setChecked ( true ) ;
2018-02-26 13:23:07 +00:00
if ( btnSubscript . rendered ) {
btnSubscript . $icon . removeClass ( btnSubscript . options . icls ) ;
btnSubscript . options . icls = btnSubscript . menu . items [ index ] . options . icls ;
btnSubscript . $icon . addClass ( btnSubscript . options . icls ) ;
2017-12-05 13:58:01 +00:00
}
}
this . _state . subscript = subsc ;
this . _state . superscript = supersc ;
}
2016-03-11 00:48:53 +00:00
}
/* read font color */
var clr ,
color ,
fontColorPicker = this . toolbar . mnuTextColorPicker ,
paragraphColorPicker = this . toolbar . mnuBackColorPicker ;
if ( ! toolbar . btnTextColor . ischanged && ! fontColorPicker . isDummy ) {
2020-05-15 10:52:52 +00:00
color = xfs . asc _getFontColor ( ) ;
2016-03-11 00:48:53 +00:00
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
}
var type1 = typeof ( clr ) ,
type2 = typeof ( this . _state . clrtext ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrtext . effectValue || this . _state . clrtext . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrtext !== undefined && this . _state . clrtext . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
fontColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) fontColorPicker . clearSelection ( ) ;
} else {
fontColorPicker . select ( clr , true ) ;
}
this . _state . clrtext = clr ;
}
this . _state . clrtext _asccolor = color ;
}
/* read cell background color */
if ( ! toolbar . btnBackColor . ischanged && ! paragraphColorPicker . isDummy ) {
2020-05-15 10:52:52 +00:00
color = xfs . asc _getFillColor ( ) ;
2016-03-11 00:48:53 +00:00
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } ;
} else {
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
} else {
clr = 'transparent' ;
}
type1 = typeof ( clr ) ;
type2 = typeof ( this . _state . clrback ) ;
if ( ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrback . effectValue || this . _state . clrback . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrback !== undefined && this . _state . clrback . indexOf ( clr ) < 0 ) ) {
if ( _ . isObject ( clr ) ) {
var isselected = false ;
for ( i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
paragraphColorPicker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) paragraphColorPicker . clearSelection ( ) ;
} else {
paragraphColorPicker . select ( clr , true ) ;
}
this . _state . clrback = clr ;
}
this . _state . clrshd _asccolor = color ;
}
2017-08-29 12:43:16 +00:00
var in _chart = ( selectionType == Asc . c _oAscSelectionType . RangeChart || selectionType == Asc . c _oAscSelectionType . RangeChartText ) ;
if ( in _chart !== this . _state . in _chart ) {
toolbar . btnInsertChart . updateHint ( in _chart ? toolbar . tipChangeChart : toolbar . tipInsertChart ) ;
this . _state . in _chart = in _chart ;
}
if ( in _chart ) return ;
2016-03-11 00:48:53 +00:00
if ( ! toolbar . mode . isEditDiagram )
{
// (coauth_disable !== toolbar.btnClearStyle.isDisabled()) && toolbar.btnClearStyle.setDisabled(coauth_disable);
// (coauth_disable !== toolbar.btnCopyStyle.isDisabled()) && toolbar.btnCopyStyle.setDisabled(coauth_disable);
2016-03-29 14:35:28 +00:00
var filterInfo = info . asc _getAutoFilterInfo ( ) ,
formatTableInfo = info . asc _getFormatTableInfo ( ) ;
2016-03-11 00:48:53 +00:00
if ( ! toolbar . mode . isEditMailMerge ) {
/* read cell horizontal align */
2020-05-15 10:52:52 +00:00
fontparam = xfs . asc _getHorAlign ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . pralign !== fontparam ) {
this . _state . pralign = fontparam ;
var index = - 1 , align ;
switch ( fontparam ) {
2017-08-24 11:22:59 +00:00
case AscCommon . align _Left : index = 0 ; align = 'btn-align-left' ; break ;
case AscCommon . align _Center : index = 1 ; align = 'btn-align-center' ; break ;
case AscCommon . align _Right : index = 2 ; align = 'btn-align-right' ; break ;
case AscCommon . align _Justify : index = 3 ; align = 'btn-align-just' ; break ;
2016-03-11 00:48:53 +00:00
default : index = - 255 ; align = 'btn-align-left' ; break ;
}
if ( ! ( index < 0 ) ) {
toolbar . btnAlignRight . toggle ( index === 2 , true ) ;
toolbar . btnAlignLeft . toggle ( index === 0 , true ) ;
toolbar . btnAlignCenter . toggle ( index === 1 , true ) ;
toolbar . btnAlignJust . toggle ( index === 3 , true ) ;
} else if ( index == - 255 ) {
toolbar . btnAlignRight . toggle ( false , true ) ;
toolbar . btnAlignLeft . toggle ( false , true ) ;
toolbar . btnAlignCenter . toggle ( false , true ) ;
toolbar . btnAlignJust . toggle ( false , true ) ;
}
}
2020-05-14 09:56:09 +00:00
need _disable = ( fontparam == AscCommon . align _Justify || selectionType == Asc . c _oAscSelectionType . RangeShapeText || selectionType == Asc . c _oAscSelectionType . RangeShape ) ;
2017-05-15 13:32:01 +00:00
toolbar . btnTextOrient . menu . items [ 1 ] . setDisabled ( need _disable ) ;
toolbar . btnTextOrient . menu . items [ 2 ] . setDisabled ( need _disable ) ;
2020-05-28 10:17:21 +00:00
toolbar . btnTextOrient . menu . items [ 3 ] . setDisabled ( need _disable ) ;
2017-05-15 13:32:01 +00:00
2016-03-11 00:48:53 +00:00
/* read cell vertical align */
2020-05-15 10:52:52 +00:00
fontparam = xfs . asc _getVertAlign ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . valign !== fontparam ) {
this . _state . valign = fontparam ;
index = - 1 ; align = '' ;
switch ( fontparam ) {
2017-08-24 11:22:59 +00:00
case Asc . c _oAscVAlign . Top : index = 0 ; align = 'btn-valign-top' ; break ;
case Asc . c _oAscVAlign . Center : index = 1 ; align = 'btn-valign-middle' ; break ;
case Asc . c _oAscVAlign . Bottom : index = 2 ; align = 'btn-valign-bottom' ; break ;
2016-03-11 00:48:53 +00:00
}
2020-05-13 17:47:56 +00:00
toolbar . btnAlignTop . toggle ( index === 0 , true ) ;
toolbar . btnAlignMiddle . toggle ( index === 1 , true ) ;
toolbar . btnAlignBottom . toggle ( index === 2 , true ) ;
2016-03-11 00:48:53 +00:00
}
2016-03-29 14:35:28 +00:00
need _disable = this . _state . controlsdisabled . filters || formatTableInfo !== null || filterInfo && filterInfo . asc _getIsAutoFilter ( ) === null ;
2016-03-11 00:48:53 +00:00
// (need_disable !== toolbar.btnMerge.isDisabled()) && toolbar.btnMerge.setDisabled(need_disable);
2019-06-13 11:28:26 +00:00
toolbar . lockToolbar ( SSE . enumLock . ruleMerge , need _disable , { array : [ toolbar . btnMerge , toolbar . btnInsertTable ] } ) ;
2016-03-11 00:48:53 +00:00
2020-05-14 09:16:27 +00:00
val = info . asc _getMerge ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . merge !== val ) {
2017-04-11 11:05:56 +00:00
toolbar . btnMerge . toggle ( val === Asc . c _oAscMergeOptions . Merge , true ) ;
2016-03-11 00:48:53 +00:00
this . _state . merge = val ;
}
/* read cell text wrapping */
if ( ! toolbar . btnWrap . isDisabled ( ) ) {
2020-05-15 10:52:52 +00:00
val = xfs . asc _getWrapText ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . wrap !== val ) {
toolbar . btnWrap . toggle ( val === true , true ) ;
this . _state . wrap = val ;
}
}
}
val = ( filterInfo ) ? filterInfo . asc _getIsAutoFilter ( ) : null ;
if ( this . _state . filter !== val ) {
2019-06-11 11:27:25 +00:00
toolbar . btnsSetAutofilter . toggle ( val === true , true ) ;
2016-03-11 00:48:53 +00:00
this . _state . filter = val ;
}
need _disable = this . _state . controlsdisabled . filters || ( val === null ) ;
toolbar . lockToolbar ( SSE . enumLock . ruleFilter , need _disable ,
2020-06-05 16:28:11 +00:00
{ array : toolbar . btnsSetAutofilter . concat ( toolbar . btnCustomSort , toolbar . btnTableTemplate , toolbar . btnInsertTable , toolbar . btnRemoveDuplicates ) } ) ;
2020-09-16 19:44:15 +00:00
toolbar . lockToolbar ( SSE . enumLock . tableHasSlicer , filterInfo && filterInfo . asc _getIsSlicerAdded ( ) , { array : toolbar . btnsSetAutofilter } ) ;
2020-06-05 16:28:11 +00:00
need _disable = ( selectionType !== Asc . c _oAscSelectionType . RangeSlicer ) && ( this . _state . controlsdisabled . filters || ( val === null ) ) ;
toolbar . lockToolbar ( SSE . enumLock . cantSort , need _disable , { array : toolbar . btnsSortDown . concat ( toolbar . btnsSortUp ) } ) ;
2016-03-11 00:48:53 +00:00
2016-03-29 14:35:28 +00:00
val = ( formatTableInfo ) ? formatTableInfo . asc _getTableStyleName ( ) : null ;
2016-03-11 00:48:53 +00:00
if ( this . _state . tablestylename !== val && this . toolbar . mnuTableTemplatePicker ) {
val = this . toolbar . mnuTableTemplatePicker . store . findWhere ( { name : val } ) ;
if ( val ) {
this . toolbar . mnuTableTemplatePicker . selectRecord ( val ) ;
this . _state . tablestylename = val . get ( 'name' ) ;
} else {
toolbar . mnuTableTemplatePicker . deselectAll ( ) ;
this . _state . tablestylename = null ;
}
}
need _disable = this . _state . controlsdisabled . filters || ! filterInfo || ( filterInfo . asc _getIsApplyAutoFilter ( ) !== true ) ;
2019-06-03 10:20:24 +00:00
toolbar . lockToolbar ( SSE . enumLock . ruleDelFilter , need _disable , { array : toolbar . btnsClearAutofilter } ) ;
2017-04-11 11:05:56 +00:00
var old _name = this . _state . tablename ;
this . _state . tablename = ( formatTableInfo ) ? formatTableInfo . asc _getTableName ( ) : undefined ;
var old _applied = this . _state . filterapplied ;
this . _state . filterapplied = this . _state . filter && filterInfo . asc _getIsApplyAutoFilter ( ) ;
if ( this . _state . tablename !== old _name || this . _state . filterapplied !== old _applied )
this . getApplication ( ) . getController ( 'Statusbar' ) . onApiFilterInfo ( ! need _disable ) ;
2016-11-01 12:42:46 +00:00
2020-05-14 08:45:23 +00:00
this . _state . multiselect = info . asc _getMultiselect ( ) ;
2019-06-13 11:28:26 +00:00
toolbar . lockToolbar ( SSE . enumLock . multiselect , this . _state . multiselect , { array : [ toolbar . btnTableTemplate , toolbar . btnInsertHyperlink , toolbar . btnInsertTable ] } ) ;
2017-06-21 09:47:22 +00:00
2018-02-21 08:51:36 +00:00
this . _state . inpivot = ! ! info . asc _getPivotTableInfo ( ) ;
2020-06-10 08:30:08 +00:00
toolbar . lockToolbar ( SSE . enumLock . editPivot , this . _state . inpivot , { array : toolbar . btnsSetAutofilter . concat ( toolbar . btnCustomSort ,
2020-04-08 08:51:55 +00:00
toolbar . btnMerge , toolbar . btnInsertHyperlink , toolbar . btnInsertTable , toolbar . btnRemoveDuplicates ) } ) ;
2020-07-22 12:25:07 +00:00
toolbar . lockToolbar ( SSE . enumLock . noSlicerSource , ! ( formatTableInfo ) , { array : [ toolbar . btnInsertSlicer ] } ) ;
2017-10-19 10:14:12 +00:00
need _disable = ! this . appConfig . canModifyFilter ;
2020-04-08 08:51:55 +00:00
toolbar . lockToolbar ( SSE . enumLock . cantModifyFilter , need _disable , { array : toolbar . btnsSetAutofilter . concat ( toolbar . btnsSortDown , toolbar . btnsSortUp , toolbar . btnCustomSort , toolbar . btnTableTemplate ,
toolbar . btnClearStyle . menu . items [ 0 ] , toolbar . btnClearStyle . menu . items [ 2 ] , toolbar . btnInsertTable , toolbar . btnRemoveDuplicates ) } ) ;
2017-10-19 10:14:12 +00:00
2016-03-11 00:48:53 +00:00
}
2020-05-15 10:52:52 +00:00
val = xfs . asc _getNumFormatInfo ( ) ;
2017-01-20 10:34:52 +00:00
if ( val ) {
2020-05-15 10:52:52 +00:00
this . _state . numformat = xfs . asc _getNumFormat ( ) ;
2017-02-07 09:56:32 +00:00
this . _state . numformatinfo = val ;
2017-01-20 10:34:52 +00:00
val = val . asc _getType ( ) ;
if ( this . _state . numformattype !== val ) {
toolbar . cmbNumberFormat . setValue ( val , toolbar . txtCustom ) ;
this . _state . numformattype = val ;
}
2017-01-12 14:14:51 +00:00
}
2016-03-11 00:48:53 +00:00
2020-05-15 10:52:52 +00:00
val = xfs . asc _getAngle ( ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . angle !== val ) {
2017-11-13 08:41:32 +00:00
toolbar . btnTextOrient . menu . clearAll ( ) ;
2016-03-11 00:48:53 +00:00
switch ( val ) {
case 45 : toolbar . btnTextOrient . menu . items [ 1 ] . setChecked ( true , true ) ; break ;
case - 45 : toolbar . btnTextOrient . menu . items [ 2 ] . setChecked ( true , true ) ; break ;
2020-05-28 10:17:21 +00:00
case 255 : toolbar . btnTextOrient . menu . items [ 3 ] . setChecked ( true , true ) ; break ;
case 90 : toolbar . btnTextOrient . menu . items [ 4 ] . setChecked ( true , true ) ; break ;
case - 90 : toolbar . btnTextOrient . menu . items [ 5 ] . setChecked ( true , true ) ; break ;
2020-05-13 17:47:56 +00:00
case 0 : toolbar . btnTextOrient . menu . items [ 0 ] . setChecked ( true , true ) ; break ;
2016-03-11 00:48:53 +00:00
}
this . _state . angle = val ;
}
val = info . asc _getStyleName ( ) ;
if ( this . _state . prstyle != val && ! this . toolbar . listStyles . isDisabled ( ) ) {
var listStyle = this . toolbar . listStyles ,
listStylesVisible = ( listStyle . rendered ) ;
if ( listStylesVisible ) {
listStyle . suspendEvents ( ) ;
var styleRec = listStyle . menuPicker . store . findWhere ( {
name : val
} ) ;
this . _state . prstyle = ( listStyle . menuPicker . store . length > 0 ) ? val : undefined ;
listStyle . menuPicker . selectRecord ( styleRec ) ;
listStyle . resumeEvents ( ) ;
}
}
2016-04-05 11:52:34 +00:00
val = ( selectionType == Asc . c _oAscSelectionType . RangeRow ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . controlsdisabled . rows !== val ) {
this . _state . controlsdisabled . rows = val ;
toolbar . btnAddCell . menu . items [ 3 ] . setDisabled ( val ) ;
toolbar . btnDeleteCell . menu . items [ 3 ] . setDisabled ( val ) ;
}
2016-04-05 11:52:34 +00:00
val = ( selectionType == Asc . c _oAscSelectionType . RangeCol ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . controlsdisabled . cols !== val ) {
this . _state . controlsdisabled . cols = val ;
toolbar . btnAddCell . menu . items [ 2 ] . setDisabled ( val ) ;
toolbar . btnDeleteCell . menu . items [ 2 ] . setDisabled ( val ) ;
}
val = filterInfo && filterInfo . asc _getIsApplyAutoFilter ( ) ;
if ( this . _state . controlsdisabled . cells _right !== ( this . _state . controlsdisabled . rows || val ) ) {
this . _state . controlsdisabled . cells _right = ( this . _state . controlsdisabled . rows || val ) ;
toolbar . btnAddCell . menu . items [ 0 ] . setDisabled ( this . _state . controlsdisabled . cells _right ) ;
toolbar . btnDeleteCell . menu . items [ 0 ] . setDisabled ( this . _state . controlsdisabled . cells _right ) ;
}
if ( this . _state . controlsdisabled . cells _down !== ( this . _state . controlsdisabled . cols || val ) ) {
this . _state . controlsdisabled . cells _down = ( this . _state . controlsdisabled . cols || val ) ;
toolbar . btnAddCell . menu . items [ 1 ] . setDisabled ( this . _state . controlsdisabled . cells _down ) ;
toolbar . btnDeleteCell . menu . items [ 1 ] . setDisabled ( this . _state . controlsdisabled . cells _down ) ;
}
2017-06-28 11:20:49 +00:00
2019-11-01 08:42:43 +00:00
toolbar . lockToolbar ( SSE . enumLock . commentLock , ( selectionType == Asc . c _oAscSelectionType . RangeCells ) && ( info . asc _getComments ( ) . length > 0 || info . asc _getLocked ( ) ) ||
this . toolbar . mode . compatibleFeatures && ( selectionType != Asc . c _oAscSelectionType . RangeCells ) ,
2017-06-30 11:33:31 +00:00
{ array : this . btnsComment } ) ;
2019-07-25 08:32:14 +00:00
2019-09-04 14:58:43 +00:00
toolbar . lockToolbar ( SSE . enumLock . headerLock , info . asc _getLockedHeaderFooter ( ) , { array : this . toolbar . btnsEditHeader } ) ;
2016-03-11 00:48:53 +00:00
} ,
2019-11-15 11:01:08 +00:00
onApiSelectionChangedRestricted : function ( info ) {
2020-05-14 08:39:04 +00:00
var selectionType = info . asc _getSelectionType ( ) ;
2019-11-15 11:01:08 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . commentLock , ( selectionType == Asc . c _oAscSelectionType . RangeCells ) && ( info . asc _getComments ( ) . length > 0 || info . asc _getLocked ( ) ) ||
this . appConfig && this . appConfig . compatibleFeatures && ( selectionType != Asc . c _oAscSelectionType . RangeCells ) ,
{ array : this . btnsComment } ) ;
} ,
2017-04-28 12:24:57 +00:00
onApiSelectionChanged _DiagramEditor : function ( info ) {
if ( ! this . editMode || this . api . isCellEdited || this . api . isRangeSelection ) return ;
var me = this ;
var _disableEditOptions = function ( seltype , coauth _disable ) {
var is _chart _text = seltype == Asc . c _oAscSelectionType . RangeChartText ,
is _chart = seltype == Asc . c _oAscSelectionType . RangeChart ,
is _shape _text = seltype == Asc . c _oAscSelectionType . RangeShapeText ,
is _shape = seltype == Asc . c _oAscSelectionType . RangeShape ,
2020-06-05 16:28:11 +00:00
is _image = seltype == Asc . c _oAscSelectionType . RangeImage || seltype == Asc . c _oAscSelectionType . RangeSlicer ,
2017-04-28 12:24:57 +00:00
is _mode _2 = is _shape _text || is _shape || is _chart _text || is _chart ,
is _objLocked = false ;
if ( ! ( is _mode _2 || is _image ) &&
me . _state . selection _type === seltype &&
me . _state . coauthdisable === coauth _disable )
return ( seltype === Asc . c _oAscSelectionType . RangeImage ) ;
if ( is _mode _2 ) {
var selectedObjects = me . api . asc _getGraphicObjectProps ( ) ;
is _objLocked = selectedObjects . some ( function ( object ) {
return object . asc _getObjectType ( ) == Asc . c _oAscTypeSelectElement . Image && object . asc _getObjectValue ( ) . asc _getLocked ( ) ;
} ) ;
}
var _set = SSE . enumLock ;
var type = seltype ;
switch ( seltype ) {
2020-06-05 16:28:11 +00:00
case Asc . c _oAscSelectionType . RangeSlicer :
2017-04-28 12:24:57 +00:00
case Asc . c _oAscSelectionType . RangeImage : type = _set . selImage ; break ;
case Asc . c _oAscSelectionType . RangeShape : type = _set . selShape ; break ;
case Asc . c _oAscSelectionType . RangeShapeText : type = _set . selShapeText ; break ;
case Asc . c _oAscSelectionType . RangeChart : type = _set . selChart ; break ;
case Asc . c _oAscSelectionType . RangeChartText : type = _set . selChartText ; break ;
}
me . toolbar . lockToolbar ( type , type != seltype , {
clear : [ _set . selImage , _set . selChart , _set . selChartText , _set . selShape , _set . selShapeText , _set . coAuth ]
} ) ;
me . toolbar . lockToolbar ( SSE . enumLock . coAuthText , is _objLocked ) ;
return is _image ;
} ;
2020-05-14 08:39:04 +00:00
var selectionType = info . asc _getSelectionType ( ) ,
2020-05-15 10:52:52 +00:00
xfs = info . asc _getXfs ( ) ,
2017-04-28 12:24:57 +00:00
coauth _disable = false ;
if ( _disableEditOptions ( selectionType , coauth _disable ) ) return ;
2020-10-02 15:33:07 +00:00
var need _disable = ( selectionType === Asc . c _oAscSelectionType . RangeCells || selectionType === Asc . c _oAscSelectionType . RangeCol ||
selectionType === Asc . c _oAscSelectionType . RangeRow || selectionType === Asc . c _oAscSelectionType . RangeMax ) ;
this . toolbar . lockToolbar ( SSE . enumLock . selRange , need _disable , { array : [ this . toolbar . btnEditChartData ] } ) ;
2017-04-28 12:24:57 +00:00
if ( selectionType == Asc . c _oAscSelectionType . RangeChart || selectionType == Asc . c _oAscSelectionType . RangeChartText )
return ;
2020-05-15 10:52:52 +00:00
var val = xfs . asc _getNumFormatInfo ( ) ;
2017-04-28 12:24:57 +00:00
if ( val ) {
2020-05-15 10:52:52 +00:00
this . _state . numformat = xfs . asc _getNumFormat ( ) ;
2017-04-28 12:24:57 +00:00
this . _state . numformatinfo = val ;
val = val . asc _getType ( ) ;
if ( this . _state . numformattype !== val ) {
me . toolbar . cmbNumberFormat . setValue ( val , me . toolbar . txtCustom ) ;
this . _state . numformattype = val ;
}
}
} ,
2017-04-28 13:37:28 +00:00
onApiSelectionChanged _MailMergeEditor : function ( info ) {
if ( ! this . editMode || this . api . isCellEdited || this . api . isRangeSelection ) return ;
var me = this ;
var _disableEditOptions = function ( seltype , coauth _disable ) {
var is _chart _text = seltype == Asc . c _oAscSelectionType . RangeChartText ,
is _chart = seltype == Asc . c _oAscSelectionType . RangeChart ,
is _shape _text = seltype == Asc . c _oAscSelectionType . RangeShapeText ,
is _shape = seltype == Asc . c _oAscSelectionType . RangeShape ,
2020-06-05 16:28:11 +00:00
is _image = seltype == Asc . c _oAscSelectionType . RangeImage || seltype == Asc . c _oAscSelectionType . RangeSlicer ,
2017-04-28 13:37:28 +00:00
is _mode _2 = is _shape _text || is _shape || is _chart _text || is _chart ,
is _objLocked = false ;
if ( ! ( is _mode _2 || is _image ) &&
me . _state . selection _type === seltype &&
me . _state . coauthdisable === coauth _disable )
return seltype === Asc . c _oAscSelectionType . RangeImage ;
if ( is _mode _2 ) {
var selectedObjects = me . api . asc _getGraphicObjectProps ( ) ;
is _objLocked = selectedObjects . some ( function ( object ) {
return object . asc _getObjectType ( ) == Asc . c _oAscTypeSelectElement . Image && object . asc _getObjectValue ( ) . asc _getLocked ( ) ;
} ) ;
}
me . toolbar . lockToolbar ( SSE . enumLock . coAuthText , is _objLocked ) ;
return is _image ;
} ;
2020-05-14 08:39:04 +00:00
var selectionType = info . asc _getSelectionType ( ) ,
2017-04-28 13:37:28 +00:00
coauth _disable = false ,
editOptionsDisabled = _disableEditOptions ( selectionType , coauth _disable ) ,
val , need _disable = false ;
if ( editOptionsDisabled ) return ;
if ( selectionType == Asc . c _oAscSelectionType . RangeChart || selectionType == Asc . c _oAscSelectionType . RangeChartText )
return ;
if ( ! me . toolbar . mode . isEditDiagram ) {
var filterInfo = info . asc _getAutoFilterInfo ( ) ;
val = filterInfo ? filterInfo . asc _getIsAutoFilter ( ) : null ;
if ( this . _state . filter !== val ) {
me . toolbar . btnSetAutofilter . toggle ( val === true , true ) ;
this . _state . filter = val ;
}
need _disable = this . _state . controlsdisabled . filters || ( val === null ) ;
me . toolbar . lockToolbar ( SSE . enumLock . ruleFilter , need _disable ,
2019-06-03 10:20:24 +00:00
{ array : [ me . toolbar . btnSetAutofilter , me . toolbar . btnSortDown , me . toolbar . btnSortUp ] } ) ;
2017-04-28 13:37:28 +00:00
need _disable = this . _state . controlsdisabled . filters || ! filterInfo || ( filterInfo . asc _getIsApplyAutoFilter ( ) !== true ) ;
2019-06-03 10:20:24 +00:00
me . toolbar . lockToolbar ( SSE . enumLock . ruleDelFilter , need _disable , { array : [ me . toolbar . btnClearAutofilter ] } ) ;
2017-04-28 13:37:28 +00:00
}
} ,
2016-03-11 00:48:53 +00:00
onApiStyleChange : function ( ) {
this . toolbar . btnCopyStyle . toggle ( false , true ) ;
this . modeAlwaysSetStyle = false ;
} ,
updateThemeColors : function ( ) {
var updateColors = function ( picker , defaultColor ) {
if ( picker ) {
var clr ;
var effectcolors = Common . Utils . ThemeColor . getEffectColors ( ) ;
for ( var i = 0 ; i < effectcolors . length ; i ++ ) {
if ( typeof ( picker . currentColor ) == 'object' &&
clr === undefined &&
picker . currentColor . effectId == effectcolors [ i ] . effectId )
clr = effectcolors [ i ] ;
}
picker . updateColors ( effectcolors , Common . Utils . ThemeColor . getStandartColors ( ) ) ;
if ( picker . currentColor === undefined ) {
picker . currentColor = defaultColor ;
} else if ( clr !== undefined ) {
picker . currentColor = clr ;
}
}
} ;
updateColors ( this . toolbar . mnuTextColorPicker , Common . Utils . ThemeColor . getStandartColors ( ) [ 1 ] ) ;
if ( this . toolbar . btnTextColor . currentColor === undefined ) {
this . toolbar . btnTextColor . currentColor = Common . Utils . ThemeColor . getStandartColors ( ) [ 1 ] ;
} else
this . toolbar . btnTextColor . currentColor = this . toolbar . mnuTextColorPicker . currentColor . color || this . toolbar . mnuTextColorPicker . currentColor ;
$ ( '.btn-color-value-line' , this . toolbar . btnTextColor . cmpEl ) . css ( 'background-color' , '#' + this . toolbar . btnTextColor . currentColor ) ;
updateColors ( this . toolbar . mnuBackColorPicker , Common . Utils . ThemeColor . getStandartColors ( ) [ 3 ] ) ;
if ( this . toolbar . btnBackColor . currentColor === undefined ) {
this . toolbar . btnBackColor . currentColor = Common . Utils . ThemeColor . getStandartColors ( ) [ 3 ] ;
} else
this . toolbar . btnBackColor . currentColor = this . toolbar . mnuBackColorPicker . currentColor . color || this . toolbar . mnuBackColorPicker . currentColor ;
$ ( '.btn-color-value-line' , this . toolbar . btnBackColor . cmpEl ) . css ( 'background-color' , this . toolbar . btnBackColor . currentColor == 'transparent' ? 'transparent' : '#' + this . toolbar . btnBackColor . currentColor ) ;
if ( this . _state . clrtext _asccolor !== undefined || this . _state . clrshd _asccolor !== undefined ) {
this . _state . clrtext = undefined ;
this . _state . clrback = undefined ;
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
2017-04-28 12:24:57 +00:00
}
2016-03-11 00:48:53 +00:00
this . _state . clrtext _asccolor = undefined ;
this . _state . clrshd _asccolor = undefined ;
2016-09-01 14:45:04 +00:00
if ( this . toolbar . mnuBorderColorPicker ) {
updateColors ( this . toolbar . mnuBorderColorPicker , Common . Utils . ThemeColor . getEffectColors ( ) [ 1 ] ) ;
this . toolbar . btnBorders . options . borderscolor = this . toolbar . mnuBorderColorPicker . currentColor . color || this . toolbar . mnuBorderColorPicker . currentColor ;
$ ( '#id-toolbar-mnu-item-border-color .menu-item-icon' ) . css ( 'border-color' , '#' + this . toolbar . btnBorders . options . borderscolor ) ;
}
2016-03-11 00:48:53 +00:00
} ,
hideElements : function ( opts ) {
if ( ! _ . isUndefined ( opts . compact ) ) {
this . onChangeViewMode ( opts . compact ) ;
}
if ( ! _ . isUndefined ( opts . formula ) ) {
var cellEditor = this . getApplication ( ) . getController ( 'CellEditor' ) . getView ( 'CellEditor' ) ;
cellEditor && cellEditor . setVisible ( ! opts . formula ) ;
Common . NotificationCenter . trigger ( 'layout:changed' , 'celleditor' , opts . formula ? 'hidden' : 'showed' ) ;
}
if ( ! _ . isUndefined ( opts . headings ) ) {
if ( this . api ) {
2016-12-14 12:23:53 +00:00
this . api . asc _setDisplayHeadings ( ! opts . headings ) ;
2016-03-11 00:48:53 +00:00
}
}
if ( ! _ . isUndefined ( opts . gridlines ) ) {
if ( this . api ) {
2016-12-14 12:23:53 +00:00
this . api . asc _setDisplayGridlines ( ! opts . gridlines ) ;
2016-03-11 00:48:53 +00:00
}
}
2016-11-18 12:36:48 +00:00
if ( ! _ . isUndefined ( opts . freezepanes ) ) {
if ( this . api ) {
this . api . asc _freezePane ( ) ;
}
}
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-08-20 11:05:13 +00:00
onApiAutoShapes : function ( ) {
var me = this ;
var onShowBefore = function ( menu ) {
me . fillAutoShapes ( ) ;
menu . off ( 'show:before' , onShowBefore ) ;
} ;
me . toolbar . btnInsertShape . menu . on ( 'show:before' , onShowBefore ) ;
} ,
2016-03-11 00:48:53 +00:00
fillAutoShapes : function ( ) {
var me = this ,
shapesStore = this . getApplication ( ) . getCollection ( 'ShapeGroups' ) ;
2019-08-20 08:05:52 +00:00
var onShowAfter = function ( menu ) {
for ( var i = 0 ; i < shapesStore . length ; i ++ ) {
var shapePicker = new Common . UI . DataViewSimple ( {
2019-08-20 11:05:13 +00:00
el : $ ( '#id-toolbar-menu-shapegroup' + i , menu . items [ i ] . $el ) ,
2019-08-20 08:05:52 +00:00
store : shapesStore . at ( i ) . get ( 'groupStore' ) ,
parentMenu : menu . items [ i ] . menu ,
itemTemplate : _ . template ( '<div class="item-shape" id="<%= id %>"><svg width="20" height="20" class=\"icon\"><use xlink:href=\"#svg-icon-<%= data.shapeType %>\"></use></svg></div>' )
} ) ;
shapePicker . on ( 'item:click' , function ( picker , item , record , e ) {
if ( me . api ) {
if ( record ) {
me . _addAutoshape ( true , record . get ( 'data' ) . shapeType ) ;
me . _isAddingShape = true ;
}
if ( me . toolbar . btnInsertText . pressed ) {
me . toolbar . btnInsertText . toggle ( false , true ) ;
}
if ( e . type !== 'click' )
me . toolbar . btnInsertShape . menu . hide ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar , me . toolbar . btnInsertShape ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Shape' ) ;
}
} ) ;
}
menu . off ( 'show:after' , onShowAfter ) ;
} ;
2019-08-20 11:05:13 +00:00
me . toolbar . btnInsertShape . menu . on ( 'show:after' , onShowAfter ) ;
2019-08-20 08:05:52 +00:00
2016-03-11 00:48:53 +00:00
for ( var i = 0 ; i < shapesStore . length ; i ++ ) {
var shapeGroup = shapesStore . at ( i ) ;
var menuItem = new Common . UI . MenuItem ( {
caption : shapeGroup . get ( 'groupName' ) ,
menu : new Common . UI . Menu ( {
menuAlign : 'tl-tr' ,
items : [
{ template : _ . template ( '<div id="id-toolbar-menu-shapegroup' + i + '" class="menu-shape" style="width: ' + ( shapeGroup . get ( 'groupWidth' ) - 8 ) + 'px; margin-left: 5px;"></div>' ) }
]
} )
} ) ;
me . toolbar . btnInsertShape . menu . addItem ( menuItem ) ;
}
} ,
2016-10-21 09:33:49 +00:00
fillEquations : function ( ) {
2016-10-24 10:58:34 +00:00
if ( ! this . toolbar . btnInsertEquation . rendered || this . toolbar . btnInsertEquation . menu . items . length > 0 ) return ;
2016-10-21 09:33:49 +00:00
var me = this , equationsStore = this . getApplication ( ) . getCollection ( 'EquationGroups' ) ;
me . toolbar . btnInsertEquation . menu . removeAll ( ) ;
2019-08-15 14:09:26 +00:00
var onShowAfter = function ( menu ) {
for ( var i = 0 ; i < equationsStore . length ; ++ i ) {
var equationPicker = new Common . UI . DataViewSimple ( {
el : $ ( '#id-toolbar-menu-equationgroup' + i ) ,
parentMenu : menu . items [ i ] . menu ,
store : equationsStore . at ( i ) . get ( 'groupStore' ) ,
scrollAlwaysVisible : true ,
itemTemplate : _ . template ( '<div class="item-equation" ' +
'style="background-position:<%= posX %>px <%= posY %>px;" >' +
'<div style="width:<%= width %>px;height:<%= height %>px;" id="<%= id %>"></div>' +
'</div>' )
} ) ;
equationPicker . on ( 'item:click' , function ( picker , item , record , e ) {
if ( me . api ) {
if ( record )
me . api . asc _AddMath ( record . get ( 'data' ) . equationType ) ;
if ( me . toolbar . btnInsertText . pressed ) {
me . toolbar . btnInsertText . toggle ( false , true ) ;
}
if ( me . toolbar . btnInsertShape . pressed ) {
me . toolbar . btnInsertShape . toggle ( false , true ) ;
}
if ( e . type !== 'click' )
me . toolbar . btnInsertEquation . menu . hide ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar , me . toolbar . btnInsertEquation ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Equation' ) ;
}
} ) ;
}
2019-08-20 08:05:52 +00:00
menu . off ( 'show:after' , onShowAfter ) ;
2019-08-15 14:09:26 +00:00
} ;
me . toolbar . btnInsertEquation . menu . on ( 'show:after' , onShowAfter ) ;
2016-10-21 09:33:49 +00:00
for ( var i = 0 ; i < equationsStore . length ; ++ i ) {
var equationGroup = equationsStore . at ( i ) ;
var menuItem = new Common . UI . MenuItem ( {
caption : equationGroup . get ( 'groupName' ) ,
menu : new Common . UI . Menu ( {
menuAlign : 'tl-tr' ,
items : [
{ template : _ . template ( '<div id="id-toolbar-menu-equationgroup' + i +
'" class="menu-shape" style="width:' + ( equationGroup . get ( 'groupWidth' ) + 8 ) + 'px; ' +
equationGroup . get ( 'groupHeight' ) + 'margin-left:5px;"></div>' ) }
]
} )
} ) ;
me . toolbar . btnInsertEquation . menu . addItem ( menuItem ) ;
}
} ,
onInsertEquationClick : function ( ) {
2016-10-25 10:48:31 +00:00
if ( this . api ) {
2016-10-21 09:33:49 +00:00
this . api . asc _AddMath ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Equation' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertEquation ) ;
} ,
2019-11-14 08:48:58 +00:00
onInsertSymbolClick : function ( ) {
if ( this . api ) {
var me = this ,
2020-10-05 14:32:18 +00:00
selected = me . api . asc _GetSelectedText ( ) ,
2019-11-14 08:48:58 +00:00
win = new Common . Views . SymbolTableDialog ( {
api : me . api ,
lang : me . toolbar . mode . lang ,
type : 1 ,
2020-04-02 13:14:45 +00:00
special : true ,
2019-11-14 08:48:58 +00:00
buttons : [ { value : 'ok' , caption : this . textInsert } , 'close' ] ,
2020-10-05 14:32:18 +00:00
font : selected && selected . length > 0 ? me . api . asc _getCellInfo ( ) . asc _getXfs ( ) . asc _getFontName ( ) : undefined ,
symbol : selected && selected . length > 0 ? selected . charAt ( 0 ) : undefined ,
2019-11-14 08:48:58 +00:00
handler : function ( dlg , result , settings ) {
if ( result == 'ok' ) {
2020-08-27 15:54:14 +00:00
me . api . asc _insertSymbol ( settings . font ? settings . font : me . api . asc _getCellInfo ( ) . asc _getXfs ( ) . asc _getFontName ( ) , settings . code , settings . special ) ;
2019-11-14 08:48:58 +00:00
} else
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ;
win . show ( ) ;
2019-11-15 13:57:55 +00:00
win . on ( 'symbol:dblclick' , function ( cmp , result , settings ) {
2020-08-27 15:54:14 +00:00
me . api . asc _insertSymbol ( settings . font ? settings . font : me . api . asc _getCellInfo ( ) . asc _getXfs ( ) . asc _getFontName ( ) , settings . code , settings . special ) ;
2019-11-14 08:48:58 +00:00
} ) ;
}
} ,
2020-04-10 14:50:58 +00:00
onInsertSlicerClick : function ( ) {
var me = this ,
props = me . api . asc _beforeInsertSlicer ( ) ;
if ( props ) {
( new SSE . Views . SlicerAddDialog ( {
props : props ,
handler : function ( result , settings ) {
2020-05-28 15:09:35 +00:00
if ( me && me . api && result == 'ok' ) {
2020-04-10 14:50:58 +00:00
me . api . asc _insertSlicer ( settings ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
} ,
2019-08-15 14:09:26 +00:00
onApiMathTypes : function ( equation ) {
this . _equationTemp = equation ;
var me = this ;
var onShowBefore = function ( menu ) {
me . onMathTypes ( me . _equationTemp ) ;
me . toolbar . btnInsertEquation . menu . off ( 'show:before' , onShowBefore ) ;
} ;
me . toolbar . btnInsertEquation . menu . on ( 'show:before' , onShowBefore ) ;
} ,
2016-10-21 09:33:49 +00:00
onMathTypes : function ( equation ) {
var equationgrouparray = [ ] ,
equationsStore = this . getCollection ( 'EquationGroups' ) ;
equationsStore . reset ( ) ;
// equations groups
var c _oAscMathMainTypeStrings = { } ;
// [translate, count cells, scroll]
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Symbol ] = [ this . textSymbols , 11 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Fraction ] = [ this . textFraction , 4 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Script ] = [ this . textScript , 4 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Radical ] = [ this . textRadical , 4 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Integral ] = [ this . textIntegral , 3 , true ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . LargeOperator ] = [ this . textLargeOperator , 5 , true ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Bracket ] = [ this . textBracket , 4 , true ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Function ] = [ this . textFunction , 3 , true ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Accent ] = [ this . textAccent , 4 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . LimitLog ] = [ this . textLimitAndLog , 3 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Operator ] = [ this . textOperator , 4 ] ;
c _oAscMathMainTypeStrings [ Common . define . c _oAscMathMainType . Matrix ] = [ this . textMatrix , 4 , true ] ;
// equations sub groups
// equations types
var translationTable = { } , name = '' , translate = '' ;
for ( name in Common . define . c _oAscMathType ) {
if ( Common . define . c _oAscMathType . hasOwnProperty ( name ) ) {
var arr = name . split ( '_' ) ;
if ( arr . length == 2 && arr [ 0 ] == 'Symbol' ) {
translate = 'txt' + arr [ 0 ] + '_' + arr [ 1 ] . toLocaleLowerCase ( ) ;
} else
translate = 'txt' + name ;
translationTable [ Common . define . c _oAscMathType [ name ] ] = this [ translate ] ;
}
}
2019-08-15 14:09:26 +00:00
var i , id = 0 , count = 0 , length = 0 , width = 0 , height = 0 , store = null , list = null , eqStore = null , eq = null , data ;
2016-10-21 09:33:49 +00:00
if ( equation ) {
2019-08-15 14:09:26 +00:00
data = equation . get _Data ( ) ;
count = data . length ;
2016-10-21 09:33:49 +00:00
if ( count ) {
for ( var j = 0 ; j < count ; ++ j ) {
2019-08-15 14:09:26 +00:00
var group = data [ j ] ;
id = group . get _Id ( ) ;
width = group . get _W ( ) ;
height = group . get _H ( ) ;
2016-10-21 09:33:49 +00:00
store = new Backbone . Collection ( [ ] , {
model : SSE . Models . EquationModel
} ) ;
if ( store ) {
2019-08-15 14:09:26 +00:00
var allItemsCount = 0 , itemsCount = 0 , ids = 0 , arr = [ ] ;
length = group . get _Data ( ) . length ;
2016-10-21 09:33:49 +00:00
for ( i = 0 ; i < length ; ++ i ) {
2019-08-15 14:09:26 +00:00
eqStore = group . get _Data ( ) [ i ] ;
2016-10-21 09:33:49 +00:00
itemsCount = eqStore . get _Data ( ) . length ;
for ( var p = 0 ; p < itemsCount ; ++ p ) {
eq = eqStore . get _Data ( ) [ p ] ;
ids = eq . get _Id ( ) ;
translate = '' ;
if ( translationTable . hasOwnProperty ( ids ) ) {
translate = translationTable [ ids ] ;
}
2019-08-15 14:09:26 +00:00
arr . push ( {
2016-10-21 09:33:49 +00:00
data : { equationType : ids } ,
tip : translate ,
allowSelected : true ,
selected : false ,
width : eqStore . get _W ( ) ,
height : eqStore . get _H ( ) ,
posX : - eq . get _X ( ) ,
posY : - eq . get _Y ( )
} ) ;
}
allItemsCount += itemsCount ;
}
2019-08-15 14:09:26 +00:00
store . add ( arr ) ;
2016-10-21 09:33:49 +00:00
width = c _oAscMathMainTypeStrings [ id ] [ 1 ] * ( width + 10 ) ; // 4px margin + 4px margin + 1px border + 1px border
var normHeight = parseInt ( 370 / ( height + 10 ) ) * ( height + 10 ) ;
equationgrouparray . push ( {
groupName : c _oAscMathMainTypeStrings [ id ] [ 0 ] ,
groupStore : store ,
groupWidth : width ,
groupHeight : c _oAscMathMainTypeStrings [ id ] [ 2 ] ? ' height:' + normHeight + 'px!important; ' : ''
} ) ;
}
}
equationsStore . add ( equationgrouparray ) ;
this . fillEquations ( ) ;
}
}
} ,
2016-03-11 00:48:53 +00:00
attachToControlEvents : function ( ) {
// this.control({
// 'menu[action=table-templates]':{
// select: this._onMenuTableTemplate,
// itemmouseenter: function(obj, record, item, index, event, eOpts) {
// if (obj.tooltip) obj.tooltip.close();
// obj.tooltip = Ext.create('Ext.tip.ToolTip', {
// closeAction : 'destroy',
// dismissDelay : 2000,
// html : record.get('caption')
// });
// var xy = event.getXY();
// obj.tooltip.showAt([xy[0]+10,xy[1]+10]);
// },
// itemmouseleave: function(obj, record, item, index, e, eOpts) {
// if (obj.tooltip) obj.tooltip.close();
// },
// hide: function() {
// this.getToolbar().fireEvent('editcomplete', this.getToolbar());
// }
// },
// 'menu[action=number-format]': {
// click: this._handleNumberFormatMenu
// }
// });
} ,
_disableEditOptions : function ( seltype , coauth _disable ) {
if ( this . api . isCellEdited ) return true ;
if ( this . api . isRangeSelection ) return true ;
var toolbar = this . toolbar ,
2016-04-05 11:52:34 +00:00
is _chart _text = seltype == Asc . c _oAscSelectionType . RangeChartText ,
is _chart = seltype == Asc . c _oAscSelectionType . RangeChart ,
is _shape _text = seltype == Asc . c _oAscSelectionType . RangeShapeText ,
is _shape = seltype == Asc . c _oAscSelectionType . RangeShape ,
is _image = seltype == Asc . c _oAscSelectionType . RangeImage ,
2020-06-05 16:28:11 +00:00
is _slicer = seltype == Asc . c _oAscSelectionType . RangeSlicer ,
is _mode _2 = is _shape _text || is _shape || is _chart _text || is _chart || is _slicer ,
2016-11-24 08:36:52 +00:00
is _objLocked = false ;
if ( ! ( is _mode _2 || is _image ) && this . _state . selection _type === seltype && this . _state . coauthdisable === coauth _disable ) return ( seltype === Asc . c _oAscSelectionType . RangeImage ) ;
if ( is _mode _2 ) {
var SelectedObjects = this . api . asc _getGraphicObjectProps ( ) ;
for ( var i = 0 ; i < SelectedObjects . length ; ++ i )
{
if ( SelectedObjects [ i ] . asc _getObjectType ( ) == Asc . c _oAscTypeSelectElement . Image )
is _objLocked = is _objLocked || SelectedObjects [ i ] . asc _getObjectValue ( ) . asc _getLocked ( ) ;
}
}
2016-03-11 00:48:53 +00:00
if ( coauth _disable ) {
toolbar . lockToolbar ( SSE . enumLock . coAuth , coauth _disable ) ;
} else {
var _set = SSE . enumLock ;
var type = seltype ;
switch ( seltype ) {
2016-04-05 11:52:34 +00:00
case Asc . c _oAscSelectionType . RangeImage : type = _set . selImage ; break ;
case Asc . c _oAscSelectionType . RangeShape : type = _set . selShape ; break ;
case Asc . c _oAscSelectionType . RangeShapeText : type = _set . selShapeText ; break ;
case Asc . c _oAscSelectionType . RangeChart : type = _set . selChart ; break ;
case Asc . c _oAscSelectionType . RangeChartText : type = _set . selChartText ; break ;
2020-06-05 16:28:11 +00:00
case Asc . c _oAscSelectionType . RangeSlicer : type = _set . selSlicer ; break ;
2016-03-11 00:48:53 +00:00
}
2017-04-27 15:40:27 +00:00
if ( ! this . appConfig . isEditDiagram && ! this . appConfig . isEditMailMerge )
toolbar . lockToolbar ( type , type != seltype , {
array : [
toolbar . btnClearStyle . menu . items [ 1 ] ,
toolbar . btnClearStyle . menu . items [ 2 ] ,
toolbar . btnClearStyle . menu . items [ 3 ] ,
2019-05-31 13:14:42 +00:00
toolbar . btnClearStyle . menu . items [ 4 ]
2017-06-30 11:33:31 +00:00
] ,
2017-04-27 15:40:27 +00:00
merge : true ,
2020-06-05 16:28:11 +00:00
clear : [ _set . selImage , _set . selChart , _set . selChartText , _set . selShape , _set . selShapeText , _set . selSlicer , _set . coAuth ]
2017-04-27 15:40:27 +00:00
} ) ;
2016-11-24 08:36:52 +00:00
toolbar . lockToolbar ( SSE . enumLock . coAuthText , is _objLocked ) ;
2016-12-28 11:54:48 +00:00
toolbar . lockToolbar ( SSE . enumLock . coAuthText , is _objLocked && ( seltype == Asc . c _oAscSelectionType . RangeChart || seltype == Asc . c _oAscSelectionType . RangeChartText ) , { array : [ toolbar . btnInsertChart ] } ) ;
2016-03-11 00:48:53 +00:00
}
this . _state . controlsdisabled . filters = is _image || is _mode _2 || coauth _disable ;
if ( is _image || is _mode _2 || coauth _disable ) {
2017-04-27 15:40:27 +00:00
if ( toolbar . listStyles ) {
toolbar . listStyles . suspendEvents ( ) ;
toolbar . listStyles . menuPicker . selectRecord ( null ) ;
toolbar . listStyles . resumeEvents ( ) ;
}
2016-03-11 00:48:53 +00:00
this . _state . prstyle = undefined ;
}
this . _state . selection _type = seltype ;
this . _state . coauthdisable = coauth _disable ; // need to redisable coAuthControls
return is _image ;
} ,
_getApiTextSize : function ( ) {
var cellInfo = this . api . asc _getCellInfo ( ) ;
2020-05-15 08:32:21 +00:00
return cellInfo ? cellInfo . asc _getXfs ( ) . asc _getFontSize ( ) : 12 ;
2016-03-11 00:48:53 +00:00
} ,
_setTableFormat : function ( fmtname ) {
var me = this ;
if ( me . api . isRangeSelection !== true ) {
2016-10-05 15:53:56 +00:00
if ( ! me . api . asc _getCellInfo ( ) . asc _getFormatTableInfo ( ) ) {
2016-03-11 00:48:53 +00:00
var handlerDlg = function ( dlg , result ) {
if ( result == 'ok' ) {
me . _state . filter = undefined ;
2016-04-05 11:52:34 +00:00
me . api . asc _setSelectionDialogMode ( Asc . c _oAscSelectionDialogType . None ) ;
2016-03-11 00:48:53 +00:00
if ( me . _state . tablename )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . style , fmtname ) ;
2017-04-11 11:05:56 +00:00
else {
var settings = dlg . getSettings ( ) ;
if ( settings . selectionType == Asc . c _oAscSelectionType . RangeMax || settings . selectionType == Asc . c _oAscSelectionType . RangeRow ||
settings . selectionType == Asc . c _oAscSelectionType . RangeCol )
Common . UI . warning ( {
title : me . textLongOperation ,
msg : me . warnLongOperation ,
buttons : [ 'ok' , 'cancel' ] ,
callback : function ( btn ) {
if ( btn == 'ok' )
2018-06-14 13:40:27 +00:00
setTimeout ( function ( ) {
me . toolbar . fireEvent ( 'inserttable' , me . toolbar ) ;
me . api . asc _addAutoFilter ( fmtname , settings . range ) ;
} , 1 ) ;
2017-04-11 11:05:56 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ;
2018-06-14 13:40:27 +00:00
else {
me . toolbar . fireEvent ( 'inserttable' , me . toolbar ) ;
2017-04-11 11:05:56 +00:00
me . api . asc _addAutoFilter ( fmtname , settings . range ) ;
2018-06-14 13:40:27 +00:00
}
2017-04-11 11:05:56 +00:00
}
2016-03-11 00:48:53 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ;
var win = new SSE . Views . TableOptionsDialog ( {
handler : handlerDlg
} ) ;
win . show ( ) ;
win . setSettings ( {
2017-04-11 11:05:56 +00:00
api : me . api ,
2020-05-14 08:39:04 +00:00
selectionType : me . api . asc _getCellInfo ( ) . asc _getSelectionType ( )
2016-03-11 00:48:53 +00:00
} ) ;
} else {
me . _state . filter = undefined ;
if ( me . _state . tablename )
2016-04-05 11:52:34 +00:00
me . api . asc _changeAutoFilter ( me . _state . tablename , Asc . c _oAscChangeFilterOptions . style , fmtname ) ;
2017-04-11 11:05:56 +00:00
else {
2020-05-14 08:39:04 +00:00
var selectionType = me . api . asc _getCellInfo ( ) . asc _getSelectionType ( ) ;
2017-04-11 11:05:56 +00:00
if ( selectionType == Asc . c _oAscSelectionType . RangeMax || selectionType == Asc . c _oAscSelectionType . RangeRow ||
selectionType == Asc . c _oAscSelectionType . RangeCol )
Common . UI . warning ( {
title : me . textLongOperation ,
msg : me . warnLongOperation ,
buttons : [ 'ok' , 'cancel' ] ,
callback : function ( btn ) {
if ( btn == 'ok' )
2018-06-14 13:40:27 +00:00
setTimeout ( function ( ) {
me . toolbar . fireEvent ( 'inserttable' , me . toolbar ) ;
me . api . asc _addAutoFilter ( fmtname ) ;
} , 1 ) ;
2017-04-11 11:05:56 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ;
2018-06-14 13:40:27 +00:00
else {
me . toolbar . fireEvent ( 'inserttable' , me . toolbar ) ;
2017-04-11 11:05:56 +00:00
me . api . asc _addAutoFilter ( fmtname ) ;
2018-06-14 13:40:27 +00:00
}
2017-04-11 11:05:56 +00:00
}
2016-03-11 00:48:53 +00:00
}
}
} ,
onHideMenus : function ( e ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , { restorefocus : true } ) ;
} ,
onSetupCopyStyleButton : function ( ) {
this . modeAlwaysSetStyle = false ;
var me = this ;
Common . NotificationCenter . on ( {
2020-06-03 10:10:31 +00:00
'edit:complete' : function ( cmp ) {
if ( me . api && me . modeAlwaysSetStyle && cmp !== 'tab' ) {
2019-02-19 12:47:50 +00:00
me . api . asc _formatPainter ( AscCommon . c _oAscFormatPainterState . kOff ) ;
2016-03-11 00:48:53 +00:00
me . toolbar . btnCopyStyle . toggle ( false , true ) ;
me . modeAlwaysSetStyle = false ;
}
}
} ) ;
$ ( me . toolbar . btnCopyStyle . cmpEl ) . dblclick ( function ( ) {
if ( me . api ) {
me . modeAlwaysSetStyle = true ;
me . toolbar . btnCopyStyle . toggle ( true , true ) ;
2019-02-19 12:47:50 +00:00
me . api . asc _formatPainter ( AscCommon . c _oAscFormatPainterState . kMultiple ) ;
2016-03-11 00:48:53 +00:00
}
} ) ;
} ,
onCellsRange : function ( status ) {
2016-04-05 11:52:34 +00:00
this . api . isRangeSelection = ( status != Asc . c _oAscSelectionDialogType . None ) ;
this . onApiEditCell ( this . api . isRangeSelection ? Asc . c _oAscCellEditorState . editStart : Asc . c _oAscCellEditorState . editEnd ) ;
2016-03-11 00:48:53 +00:00
var toolbar = this . toolbar ;
2018-06-28 09:27:11 +00:00
toolbar . lockToolbar ( SSE . enumLock . selRangeEdit , this . api . isRangeSelection ) ;
2016-03-11 00:48:53 +00:00
this . setDisabledComponents ( [ toolbar . btnUndo ] , this . api . isRangeSelection || ! this . api . asc _getCanUndo ( ) ) ;
this . setDisabledComponents ( [ toolbar . btnRedo ] , this . api . isRangeSelection || ! this . api . asc _getCanRedo ( ) ) ;
this . onApiSelectionChanged ( this . api . asc _getCellInfo ( ) ) ;
} ,
onLockDefNameManager : function ( state ) {
2016-04-05 11:52:34 +00:00
this . _state . namedrange _locked = ( state == Asc . c _oAscDefinedNameReason . LockDefNameManager ) ;
2018-09-13 12:54:29 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . printAreaLock , this . api . asc _isPrintAreaLocked ( this . api . asc _getActiveWorksheetIndex ( ) ) , { array : [ this . toolbar . btnPrintArea ] } ) ;
this . toolbar . lockToolbar ( SSE . enumLock . namedRangeLock , this . _state . namedrange _locked , { array : [ this . toolbar . btnPrintArea . menu . items [ 0 ] , this . toolbar . btnPrintArea . menu . items [ 2 ] ] } ) ;
2016-03-11 00:48:53 +00:00
} ,
2018-09-25 13:19:33 +00:00
activateControls : function ( ) {
this . toolbar . lockToolbar ( SSE . enumLock . disableOnStart , false , { array : [ this . toolbar . btnPrint ] } ) ;
this . _state . activated = true ;
2016-03-11 00:48:53 +00:00
} ,
2017-11-28 11:25:08 +00:00
DisableToolbar : function ( disable , viewMode ) {
if ( viewMode !== undefined ) this . editMode = ! viewMode ;
disable = disable || ! this . editMode ;
2016-03-11 00:48:53 +00:00
var mask = $ ( '.toolbar-mask' ) ;
if ( disable && mask . length > 0 || ! disable && mask . length == 0 ) return ;
var toolbar = this . toolbar ;
toolbar . $el . find ( '.toolbar' ) . toggleClass ( 'masked' , disable ) ;
2018-03-21 11:28:28 +00:00
this . toolbar . lockToolbar ( SSE . enumLock . menuFileOpen , disable ) ;
2016-03-11 00:48:53 +00:00
if ( disable ) {
2017-06-15 13:18:40 +00:00
mask = $ ( "<div class='toolbar-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar' ) ) ;
2017-01-17 13:40:18 +00:00
Common . util . Shortcuts . suspendEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h, command+1, ctrl+1' ) ;
2016-03-11 00:48:53 +00:00
} else {
mask . remove ( ) ;
2017-01-17 13:40:18 +00:00
Common . util . Shortcuts . resumeEvents ( 'command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h, command+1, ctrl+1' ) ;
2016-03-11 00:48:53 +00:00
}
} ,
applyFormulaSettings : function ( ) {
2018-05-15 14:32:10 +00:00
if ( this . toolbar . btnInsertFormula && this . toolbar . btnInsertFormula . rendered ) {
2017-06-14 11:53:29 +00:00
var formulas = this . toolbar . btnInsertFormula . menu . items ;
for ( var i = 0 ; i < Math . min ( 4 , formulas . length ) ; i ++ ) {
formulas [ i ] . setCaption ( this . api . asc _getFormulaLocaleName ( formulas [ i ] . value ) ) ;
}
2016-03-11 00:48:53 +00:00
}
} ,
2017-04-27 15:40:27 +00:00
onAppShowed : function ( config ) {
var me = this ;
me . appConfig = config ;
var compactview = ! config . isEdit ;
2017-05-01 11:29:38 +00:00
if ( config . isEdit && ! config . isEditDiagram && ! config . isEditMailMerge ) {
2017-04-27 15:40:27 +00:00
if ( Common . localStorage . itemExists ( "sse-compact-toolbar" ) ) {
compactview = Common . localStorage . getBool ( "sse-compact-toolbar" ) ;
} else
if ( config . customization && config . customization . compactToolbar )
compactview = true ;
}
2019-10-29 08:30:08 +00:00
me . toolbar . render ( _ . extend ( { isCompactView : compactview } , config ) ) ;
2019-11-15 11:01:08 +00:00
if ( ! config . isEditDiagram && ! config . isEditMailMerge ) {
var tab = { action : 'review' , caption : me . toolbar . textTabCollaboration } ;
var $panel = me . getApplication ( ) . getController ( 'Common.Controllers.ReviewChanges' ) . createToolbarPanel ( ) ;
if ( $panel )
me . toolbar . addTab ( tab , $panel , 6 ) ;
}
2019-10-29 08:30:08 +00:00
if ( config . isEdit ) {
me . toolbar . setMode ( config ) ;
2017-10-27 13:03:03 +00:00
2019-10-29 08:30:08 +00:00
me . toolbar . btnSave && me . toolbar . btnSave . on ( 'disabled' , _ . bind ( me . onBtnChangeState , me , 'save:disabled' ) ) ;
me . toolbar . btnUndo && me . toolbar . btnUndo . on ( 'disabled' , _ . bind ( me . onBtnChangeState , me , 'undo:disabled' ) ) ;
me . toolbar . btnRedo && me . toolbar . btnRedo . on ( 'disabled' , _ . bind ( me . onBtnChangeState , me , 'redo:disabled' ) ) ;
me . toolbar . btnPrint && me . toolbar . btnPrint . on ( 'disabled' , _ . bind ( me . onBtnChangeState , me , 'print:disabled' ) ) ;
me . toolbar . setApi ( me . api ) ;
2017-11-17 14:35:40 +00:00
2019-10-29 08:30:08 +00:00
if ( ! config . isEditDiagram && ! config . isEditMailMerge ) {
var datatab = me . getApplication ( ) . getController ( 'DataTab' ) ;
datatab . setApi ( me . api ) . setConfig ( { toolbar : me } ) ;
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
datatab = datatab . getView ( 'DataTab' ) ;
Array . prototype . push . apply ( me . toolbar . lockControls , datatab . getButtons ( ) ) ;
me . toolbar . btnsSortDown = datatab . getButtons ( 'sort-down' ) ;
me . toolbar . btnsSortUp = datatab . getButtons ( 'sort-up' ) ;
me . toolbar . btnsSetAutofilter = datatab . getButtons ( 'set-filter' ) ;
me . toolbar . btnsClearAutofilter = datatab . getButtons ( 'clear-filter' ) ;
2019-11-27 08:45:21 +00:00
me . toolbar . btnCustomSort = datatab . getButtons ( 'sort-custom' ) ;
2020-04-08 08:51:55 +00:00
me . toolbar . btnRemoveDuplicates = datatab . getButtons ( 'rem-duplicates' ) ;
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
var formulatab = me . getApplication ( ) . getController ( 'FormulaDialog' ) ;
formulatab . setConfig ( { toolbar : me } ) ;
formulatab = formulatab . getView ( 'FormulaTab' ) ;
me . toolbar . btnsFormula = formulatab . getButtons ( 'formula' ) ;
2020-02-26 10:49:57 +00:00
var namedRange = formulatab . getButtons ( 'range' ) ;
me . toolbar . itemsNamedRange = ( namedRange && namedRange . menu && namedRange . menu . items ) ? [ namedRange . menu . items [ 0 ] , namedRange . menu . items [ 1 ] ] : [ ] ;
2019-10-29 08:30:08 +00:00
Array . prototype . push . apply ( me . toolbar . lockControls , formulatab . getButtons ( ) ) ;
2020-03-20 14:58:03 +00:00
if ( config . canFeaturePivot ) {
2019-12-06 12:28:39 +00:00
tab = { action : 'pivot' , caption : me . textPivot } ;
var pivottab = me . getApplication ( ) . getController ( 'PivotTable' ) ;
2020-09-23 18:15:45 +00:00
pivottab . setApi ( me . api ) . setConfig ( { toolbar : me } ) ;
2019-12-06 12:28:39 +00:00
$panel = pivottab . createToolbarPanel ( ) ;
2019-10-29 08:30:08 +00:00
if ( $panel ) {
me . toolbar . addTab ( tab , $panel , 5 ) ;
me . toolbar . setVisible ( 'pivot' , true ) ;
2019-12-06 12:28:39 +00:00
Array . prototype . push . apply ( me . toolbar . lockControls , pivottab . getView ( 'PivotTable' ) . getButtons ( ) ) ;
2019-09-25 09:50:58 +00:00
}
2019-10-29 08:30:08 +00:00
}
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
if ( ! ( config . customization && config . customization . compactHeader ) ) {
// hide 'print' and 'save' buttons group and next separator
me . toolbar . btnPrint . $el . parents ( '.group' ) . hide ( ) . next ( ) . hide ( ) ;
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
// hide 'undo' and 'redo' buttons and get container
var $box = me . toolbar . btnUndo . $el . hide ( ) . next ( ) . hide ( ) . parent ( ) ;
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
// move 'paste' button to the container instead of 'undo' and 'redo'
me . toolbar . btnPaste . $el . detach ( ) . appendTo ( $box ) ;
me . toolbar . btnCopy . $el . removeClass ( 'split' ) ;
}
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
if ( config . isDesktopApp ) {
if ( config . canProtect ) {
2019-11-15 11:01:08 +00:00
var tab = { action : 'protect' , caption : me . toolbar . textTabProtect } ;
var $panel = me . getApplication ( ) . getController ( 'Common.Controllers.Protection' ) . createToolbarPanel ( ) ;
2019-10-29 08:30:08 +00:00
if ( $panel )
me . toolbar . addTab ( tab , $panel , 7 ) ;
2017-11-28 14:35:51 +00:00
}
}
2020-07-09 11:53:22 +00:00
var viewtab = me . getApplication ( ) . getController ( 'ViewTab' ) ;
2020-07-10 12:42:39 +00:00
viewtab . setApi ( me . api ) . setConfig ( { toolbar : me , mode : config } ) ;
2020-07-10 13:19:07 +00:00
Array . prototype . push . apply ( me . toolbar . lockControls , viewtab . getView ( 'ViewTab' ) . getButtons ( ) ) ;
2019-09-25 09:50:58 +00:00
}
2019-10-29 08:30:08 +00:00
}
2017-04-27 15:40:27 +00:00
} ,
onAppReady : function ( config ) {
var me = this ;
2018-05-16 14:41:47 +00:00
me . appOptions = config ;
2017-04-27 15:40:27 +00:00
2017-06-28 11:20:49 +00:00
this . btnsComment = [ ] ;
2017-06-15 13:18:40 +00:00
if ( config . canCoAuthoring && config . canComments ) {
2017-06-28 11:20:49 +00:00
var _set = SSE . enumLock ;
2019-11-21 16:15:47 +00:00
this . btnsComment = Common . Utils . injectButtons ( this . toolbar . $el . find ( '.slot-comment' ) , 'tlbtn-addcomment-' , 'toolbar__icon btn-menu-comments' , this . toolbar . capBtnComment , [ _set . lostConnect , _set . commentLock , _set . editCell ] ) ;
2017-04-27 15:40:27 +00:00
2017-06-28 11:20:49 +00:00
if ( this . btnsComment . length ) {
2017-04-27 15:40:27 +00:00
var _comments = SSE . getController ( 'Common.Controllers.Comments' ) . getView ( ) ;
2017-06-28 11:20:49 +00:00
Array . prototype . push . apply ( me . toolbar . lockControls , this . btnsComment ) ;
this . btnsComment . forEach ( function ( btn ) {
2017-08-02 13:47:40 +00:00
btn . updateHint ( _comments . textHintAddComment ) ;
2017-04-27 15:40:27 +00:00
btn . on ( 'click' , function ( btn , e ) {
2020-05-14 08:39:04 +00:00
Common . NotificationCenter . trigger ( 'app:comment:add' , 'toolbar' , me . api . asc _getCellInfo ( ) . asc _getSelectionType ( ) != Asc . c _oAscSelectionType . RangeCells ) ;
2017-04-27 15:40:27 +00:00
} ) ;
2019-11-06 14:22:12 +00:00
if ( btn . cmpEl . closest ( '#review-changes-panel' ) . length > 0 )
btn . setCaption ( me . toolbar . capBtnAddComment ) ;
2017-04-27 15:40:27 +00:00
} , this ) ;
}
}
Common . Utils . asyncCall ( function ( ) {
if ( config . isEdit ) {
me . toolbar . onAppReady ( config ) ;
}
} ) ;
} ,
onFileMenu : function ( opts ) {
2018-05-18 09:59:01 +00:00
if ( opts == 'show' ) {
if ( ! this . toolbar . isTabActive ( 'file' ) )
this . toolbar . setTab ( 'file' ) ;
} else {
2018-05-16 14:41:47 +00:00
if ( this . toolbar . isTabActive ( 'file' ) )
this . toolbar . setTab ( ) ;
}
2017-04-27 15:40:27 +00:00
} ,
2018-06-28 09:27:11 +00:00
onPageSizeClick : function ( menu , item , state ) {
if ( this . api && state ) {
this . _state . pgsize = [ 0 , 0 ] ;
2018-07-17 08:41:25 +00:00
this . api . asc _changeDocSize ( item . value [ 0 ] , item . value [ 1 ] , this . api . asc _getActiveWorksheetIndex ( ) ) ;
2018-06-28 09:27:11 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Size' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onPageMarginsSelect : function ( menu , item ) {
if ( this . api ) {
this . _state . pgmargins = undefined ;
if ( item . value !== 'advanced' ) {
2018-07-17 08:41:25 +00:00
this . api . asc _changePageMargins ( item . value [ 1 ] , item . value [ 3 ] , item . value [ 0 ] , item . value [ 2 ] , this . api . asc _getActiveWorksheetIndex ( ) ) ;
2018-06-28 09:27:11 +00:00
} else {
2018-06-29 07:55:05 +00:00
var win , props ,
me = this ;
win = new SSE . Views . PageMarginsDialog ( {
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
var mnu = me . toolbar . btnPageMargins . menu . items [ 0 ] ;
mnu . setVisible ( true ) ;
mnu . setChecked ( true ) ;
mnu . options . value = mnu . value = [ props . asc _getTop ( ) , props . asc _getLeft ( ) , props . asc _getBottom ( ) , props . asc _getRight ( ) ] ;
$ ( mnu . el ) . html ( mnu . template ( { id : Common . UI . getId ( ) , caption : mnu . caption , options : mnu . options } ) ) ;
Common . localStorage . setItem ( "sse-pgmargins-top" , props . asc _getTop ( ) ) ;
Common . localStorage . setItem ( "sse-pgmargins-left" , props . asc _getLeft ( ) ) ;
Common . localStorage . setItem ( "sse-pgmargins-bottom" , props . asc _getBottom ( ) ) ;
Common . localStorage . setItem ( "sse-pgmargins-right" , props . asc _getRight ( ) ) ;
2018-07-17 08:41:25 +00:00
me . api . asc _changePageMargins ( props . asc _getLeft ( ) , props . asc _getRight ( ) , props . asc _getTop ( ) , props . asc _getBottom ( ) , me . api . asc _getActiveWorksheetIndex ( ) ) ;
2018-06-29 07:55:05 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _getPageOptions ( me . api . asc _getActiveWorksheetIndex ( ) ) ) ;
2018-06-28 09:27:11 +00:00
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Margins' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onPageOrientSelect : function ( menu , item ) {
this . _state . pgorient = undefined ;
if ( this . api && item . checked ) {
2018-07-17 10:10:23 +00:00
this . api . asc _changePageOrient ( item . value == Asc . c _oAscPageOrientation . PagePortrait , this . api . asc _getActiveWorksheetIndex ( ) ) ;
2018-06-28 09:27:11 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Orientation' ) ;
} ,
onImgGroupSelect : function ( menu , item ) {
if ( this . api )
this . api [ ( item . value == 'grouping' ) ? 'asc_groupGraphicsObjects' : 'asc_unGroupGraphicsObjects' ] ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Objects Group' ) ;
} ,
onImgArrangeSelect : function ( menu , item ) {
if ( this . api ) {
if ( menu == 'forward' )
this . api . asc _setSelectedDrawingObjectLayer ( Asc . c _oAscDrawingLayerType . BringForward ) ;
else if ( menu == 'backward' )
this . api . asc _setSelectedDrawingObjectLayer ( Asc . c _oAscDrawingLayerType . SendBackward ) ;
else
this . api . asc _setSelectedDrawingObjectLayer ( item . value ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Objects Arrange' ) ;
} ,
onImgAlignSelect : function ( menu , item ) {
2019-02-14 14:50:36 +00:00
if ( this . api ) {
if ( item . value > - 1 && item . value < 6 ) {
this . api . asc _setSelectedDrawingObjectAlign ( item . value ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Objects Align' ) ;
} else if ( item . value == 6 ) {
this . api . asc _DistributeSelectedDrawingObjectHor ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Distribute' ) ;
} else if ( item . value == 7 ) {
this . api . asc _DistributeSelectedDrawingObjectVer ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Distribute' ) ;
}
}
2018-06-28 09:27:11 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2018-09-04 10:18:46 +00:00
onPrintAreaClick : function ( menu , item ) {
if ( this . api ) {
this . api . asc _ChangePrintArea ( item . value ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Print Area' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onPrintAreaMenuOpen : function ( ) {
if ( this . api )
this . toolbar . btnPrintArea . menu . items [ 2 ] . setVisible ( this . api . asc _CanAddPrintArea ( ) ) ;
} ,
2019-01-23 12:29:51 +00:00
onEditHeaderClick : function ( btn ) {
2018-10-11 11:25:53 +00:00
var me = this ;
if ( _ . isUndefined ( me . fontStore ) ) {
me . fontStore = new Common . Collections . Fonts ( ) ;
var fonts = me . toolbar . cmbFontName . store . toJSON ( ) ;
var arr = [ ] ;
_ . each ( fonts , function ( font , index ) {
if ( ! font . cloneid ) {
arr . push ( _ . clone ( font ) ) ;
}
} ) ;
me . fontStore . add ( arr ) ;
}
var win = new SSE . Views . HeaderFooterDialog ( {
api : me . api ,
fontStore : me . fontStore ,
handler : function ( dlg , result ) {
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
}
} ) ;
win . show ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-09-13 14:45:09 +00:00
onClickChangeScaleInMenu : function ( type , curScale ) {
2019-09-12 07:15:07 +00:00
if ( this . api ) {
2019-09-13 14:45:09 +00:00
var scale ;
if ( type === 'up' ) {
if ( curScale % 5 > 0.001 ) {
scale = Math . ceil ( curScale / 5 ) * 5 ;
} else {
scale = curScale + 5 ;
}
} else {
if ( curScale % 5 > 0.001 ) {
scale = Math . floor ( curScale / 5 ) * 5 ;
} else {
scale = curScale - 5 ;
}
}
if ( scale > 400 ) {
scale = 400 ;
} else if ( scale < 10 ) {
scale = 10 ;
}
2019-09-12 07:15:07 +00:00
this . onChangeScaleSettings ( 0 , 0 , scale ) ;
}
} ,
2019-10-15 12:07:03 +00:00
onScaleClick : function ( type , menu , item , event , scale ) {
2019-08-21 10:55:40 +00:00
var me = this ;
2019-09-12 07:15:07 +00:00
if ( me . api ) {
2019-10-15 12:07:03 +00:00
if ( type === 'width' && item . value !== 'more' ) {
if ( me . _state . scaleHeight === undefined || me . _state . scaleHeight === null ) {
me . _state . scaleHeight = 0 ;
}
me . api . asc _SetPrintScale ( item . value , me . _state . scaleHeight , 100 ) ;
me . onChangeScaleSettings ( item . value , me . _state . scaleHeight , 100 ) ;
} else if ( type === 'height' && item . value !== 'more' ) {
if ( me . _state . scaleWidth === undefined || me . _state . scaleWidth === null ) {
me . _state . scaleWidth = 0 ;
}
me . api . asc _SetPrintScale ( me . _state . scaleWidth , item . value , 100 ) ;
me . onChangeScaleSettings ( me . _state . scaleWidth , item . value , 100 ) ;
} else if ( type === 'scale' && scale !== undefined ) {
2019-09-13 14:45:09 +00:00
me . api . asc _SetPrintScale ( 0 , 0 , scale ) ;
2019-10-15 12:07:03 +00:00
} else if ( item . value === 'custom' || item . value === 'more' ) {
var win = new SSE . Views . ScaleDialog ( {
api : me . api ,
props : null ,
handler : function ( dlg , result ) {
if ( dlg == 'ok' ) {
if ( me . api && result ) {
me . api . asc _SetPrintScale ( result . width , result . height , result . scale ) ;
me . onChangeScaleSettings ( result . width , result . height , result . scale ) ;
2019-09-12 07:15:07 +00:00
}
2019-10-15 12:07:03 +00:00
} else {
me . onChangeScaleSettings ( me . _state . scaleWidth , me . _state . scaleHeight , me . _state . scale ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
}
} ) ;
win . show ( ) ;
2019-08-21 10:55:40 +00:00
}
2019-09-12 07:15:07 +00:00
}
2018-10-11 11:25:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2020-03-17 12:06:40 +00:00
onPrintTitlesClick : function ( btn ) {
if ( this . api ) {
var win , props ,
me = this ;
win = new SSE . Views . PrintTitlesDialog ( {
api : me . api ,
2020-03-17 15:03:42 +00:00
sheet : me . api . asc _getActiveWorksheetIndex ( ) ,
2020-03-17 12:06:40 +00:00
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
2020-03-17 12:24:23 +00:00
me . api . asc _changePrintTitles ( props . width , props . height , me . api . asc _getActiveWorksheetIndex ( ) ) ;
2020-03-17 12:06:40 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Print Titles' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2016-03-11 00:48:53 +00:00
textEmptyImgUrl : 'You need to specify image URL.' ,
warnMergeLostData : 'Operation can destroy data in the selected cells.<br>Continue?' ,
textWarning : 'Warning' ,
textFontSizeErr : 'The entered value is incorrect.<br>Please enter a numeric value between 1 and 409' ,
2016-10-21 09:33:49 +00:00
confirmAddFontName : 'The font you are going to save is not available on the current device.<br>The text style will be displayed using one of the device fonts, the saved font will be used when it is available.<br>Do you want to continue?' ,
textSymbols : 'Symbols' ,
textFraction : 'Fraction' ,
textScript : 'Script' ,
textRadical : 'Radical' ,
textIntegral : 'Integral' ,
textLargeOperator : 'Large Operator' ,
textBracket : 'Bracket' ,
textFunction : 'Function' ,
textAccent : 'Accent' ,
textLimitAndLog : 'Limit And Log' ,
textOperator : 'Operator' ,
textMatrix : 'Matrix' ,
txtSymbol _pm : 'Plus Minus' ,
txtSymbol _infinity : 'Infinity' ,
txtSymbol _equals : 'Equal' ,
txtSymbol _neq : 'Not Equal To' ,
txtSymbol _about : 'Approximately' ,
txtSymbol _times : 'Multiplication Sign' ,
txtSymbol _div : 'Division Sign' ,
txtSymbol _factorial : 'Factorial' ,
txtSymbol _propto : 'Proportional To' ,
txtSymbol _less : 'Less Than' ,
txtSymbol _ll : 'Much Less Than' ,
txtSymbol _greater : 'Greater Than' ,
txtSymbol _gg : 'Much Greater Than' ,
txtSymbol _leq : 'Less Than or Equal To' ,
txtSymbol _geq : 'Greater Than or Equal To' ,
txtSymbol _mp : 'Minus Plus' ,
txtSymbol _cong : 'Approximately Equal To' ,
txtSymbol _approx : 'Almost Equal To' ,
txtSymbol _equiv : 'Identical To' ,
txtSymbol _forall : 'For All' ,
txtSymbol _additional : 'Complement' ,
txtSymbol _partial : 'Partial Differential' ,
txtSymbol _sqrt : 'Radical Sign' ,
txtSymbol _cbrt : 'Cube Root' ,
txtSymbol _qdrt : 'Fourth Root' ,
txtSymbol _cup : 'Union' ,
txtSymbol _cap : 'Intersection' ,
txtSymbol _emptyset : 'Empty Set' ,
txtSymbol _percent : 'Percentage' ,
txtSymbol _degree : 'Degrees' ,
txtSymbol _fahrenheit : 'Degrees Fahrenheit' ,
txtSymbol _celsius : 'Degrees Celsius' ,
txtSymbol _inc : 'Increment' ,
txtSymbol _nabla : 'Nabla' ,
txtSymbol _exists : 'There Exist' ,
txtSymbol _notexists : 'There Does Not Exist' ,
txtSymbol _in : 'Element Of' ,
txtSymbol _ni : 'Contains as Member' ,
txtSymbol _leftarrow : 'Left Arrow' ,
txtSymbol _uparrow : 'Up Arrow' ,
txtSymbol _rightarrow : 'Right Arrow' ,
txtSymbol _downarrow : 'Down Arrow' ,
txtSymbol _leftrightarrow : 'Left-Right Arrow' ,
txtSymbol _therefore : 'Therefore' ,
txtSymbol _plus : 'Plus' ,
txtSymbol _minus : 'Minus' ,
txtSymbol _not : 'Not Sign' ,
txtSymbol _ast : 'Asterisk Operator' ,
txtSymbol _bullet : 'Bulet Operator' ,
txtSymbol _vdots : 'Vertical Ellipsis' ,
txtSymbol _cdots : 'Midline Horizontal Ellipsis' ,
txtSymbol _rddots : 'Up Right Diagonal Ellipsis' ,
txtSymbol _ddots : 'Down Right Diagonal Ellipsis' ,
txtSymbol _aleph : 'Alef' ,
txtSymbol _beth : 'Bet' ,
txtSymbol _qed : 'End of Proof' ,
txtSymbol _alpha : 'Alpha' ,
txtSymbol _beta : 'Beta' ,
txtSymbol _gamma : 'Gamma' ,
txtSymbol _delta : 'Delta' ,
txtSymbol _varepsilon : 'Epsilon Variant' ,
txtSymbol _epsilon : 'Epsilon' ,
txtSymbol _zeta : 'Zeta' ,
txtSymbol _eta : 'Eta' ,
txtSymbol _theta : 'Theta' ,
txtSymbol _vartheta : 'Theta Variant' ,
txtSymbol _iota : 'Iota' ,
txtSymbol _kappa : 'Kappa' ,
txtSymbol _lambda : 'Lambda' ,
txtSymbol _mu : 'Mu' ,
txtSymbol _nu : 'Nu' ,
txtSymbol _xsi : 'Xi' ,
txtSymbol _o : 'Omicron' ,
txtSymbol _pi : 'Pi' ,
txtSymbol _varpi : 'Pi Variant' ,
txtSymbol _rho : 'Rho' ,
txtSymbol _varrho : 'Rho Variant' ,
txtSymbol _sigma : 'Sigma' ,
txtSymbol _varsigma : 'Sigma Variant' ,
txtSymbol _tau : 'Tau' ,
txtSymbol _upsilon : 'Upsilon' ,
txtSymbol _varphi : 'Phi Variant' ,
txtSymbol _phi : 'Phi' ,
txtSymbol _chi : 'Chi' ,
txtSymbol _psi : 'Psi' ,
txtSymbol _omega : 'Omega' ,
txtFractionVertical : 'Stacked Fraction' ,
txtFractionDiagonal : 'Skewed Fraction' ,
txtFractionHorizontal : 'Linear Fraction' ,
txtFractionSmall : 'Small Fraction' ,
txtFractionDifferential _1 : 'Differential' ,
txtFractionDifferential _2 : 'Differential' ,
txtFractionDifferential _3 : 'Differential' ,
txtFractionDifferential _4 : 'Differential' ,
txtFractionPi _2 : 'Pi Over 2' ,
txtScriptSup : 'Superscript' ,
txtScriptSub : 'Subscript' ,
txtScriptSubSup : 'Subscript-Superscript' ,
txtScriptSubSupLeft : 'Left Subscript-Superscript' ,
txtScriptCustom _1 : 'Script' ,
txtScriptCustom _2 : 'Script' ,
txtScriptCustom _3 : 'Script' ,
txtScriptCustom _4 : 'Script' ,
txtRadicalSqrt : 'Square Root' ,
txtRadicalRoot _n : 'Radical With Degree' ,
txtRadicalRoot _2 : 'Square Root With Degree' ,
txtRadicalRoot _3 : 'Cubic Root' ,
txtRadicalCustom _1 : 'Radical' ,
txtRadicalCustom _2 : 'Radical' ,
txtIntegral : 'Integral' ,
txtIntegralSubSup : 'Integral' ,
txtIntegralCenterSubSup : 'Integral' ,
txtIntegralDouble : 'Double Integral' ,
txtIntegralDoubleSubSup : 'Double Integral' ,
txtIntegralDoubleCenterSubSup : 'Double Integral' ,
txtIntegralTriple : 'Triple Integral' ,
txtIntegralTripleSubSup : 'Triple Integral' ,
txtIntegralTripleCenterSubSup : 'Triple Integral' ,
txtIntegralOriented : 'Contour Integral' ,
txtIntegralOrientedSubSup : 'Contour Integral' ,
txtIntegralOrientedCenterSubSup : 'Contour Integral' ,
txtIntegralOrientedDouble : 'Surface Integral' ,
txtIntegralOrientedDoubleSubSup : 'Surface Integral' ,
txtIntegralOrientedDoubleCenterSubSup : 'Surface Integral' ,
txtIntegralOrientedTriple : 'Volume Integral' ,
txtIntegralOrientedTripleSubSup : 'Volume Integral' ,
txtIntegralOrientedTripleCenterSubSup : 'Volume Integral' ,
txtIntegral _dx : 'Differential x' ,
txtIntegral _dy : 'Differential y' ,
txtIntegral _dtheta : 'Differential theta' ,
txtLargeOperator _Sum : 'Summation' ,
txtLargeOperator _Sum _CenterSubSup : 'Summation' ,
txtLargeOperator _Sum _SubSup : 'Summation' ,
txtLargeOperator _Sum _CenterSub : 'Summation' ,
txtLargeOperator _Sum _Sub : 'Summation' ,
txtLargeOperator _Prod : 'Product' ,
txtLargeOperator _Prod _CenterSubSup : 'Product' ,
txtLargeOperator _Prod _SubSup : 'Product' ,
txtLargeOperator _Prod _CenterSub : 'Product' ,
txtLargeOperator _Prod _Sub : 'Product' ,
txtLargeOperator _CoProd : 'Co-Product' ,
txtLargeOperator _CoProd _CenterSubSup : 'Co-Product' ,
txtLargeOperator _CoProd _SubSup : 'Co-Product' ,
txtLargeOperator _CoProd _CenterSub : 'Co-Product' ,
txtLargeOperator _CoProd _Sub : 'Co-Product' ,
txtLargeOperator _Union : 'Union' ,
txtLargeOperator _Union _CenterSubSup : 'Union' ,
txtLargeOperator _Union _SubSup : 'Union' ,
txtLargeOperator _Union _CenterSub : 'Union' ,
txtLargeOperator _Union _Sub : 'Union' ,
txtLargeOperator _Intersection : 'Intersection' ,
txtLargeOperator _Intersection _CenterSubSup : 'Intersection' ,
txtLargeOperator _Intersection _SubSup : 'Intersection' ,
txtLargeOperator _Intersection _CenterSub : 'Intersection' ,
txtLargeOperator _Intersection _Sub : 'Intersection' ,
txtLargeOperator _Disjunction : 'Vee' ,
txtLargeOperator _Disjunction _CenterSubSup : 'Vee' ,
txtLargeOperator _Disjunction _SubSup : 'Vee' ,
txtLargeOperator _Disjunction _CenterSub : 'Vee' ,
txtLargeOperator _Disjunction _Sub : 'Vee' ,
txtLargeOperator _Conjunction : 'Wedge' ,
txtLargeOperator _Conjunction _CenterSubSup : 'Wedge' ,
txtLargeOperator _Conjunction _SubSup : 'Wedge' ,
txtLargeOperator _Conjunction _CenterSub : 'Wedge' ,
txtLargeOperator _Conjunction _Sub : 'Wedge' ,
txtLargeOperator _Custom _1 : 'Summation' ,
txtLargeOperator _Custom _2 : 'Summation' ,
txtLargeOperator _Custom _3 : 'Summation' ,
txtLargeOperator _Custom _4 : 'Product' ,
txtLargeOperator _Custom _5 : 'Union' ,
txtBracket _Round : 'Brackets' ,
txtBracket _Square : 'Brackets' ,
txtBracket _Curve : 'Brackets' ,
txtBracket _Angle : 'Brackets' ,
txtBracket _LowLim : 'Brackets' ,
txtBracket _UppLim : 'Brackets' ,
txtBracket _Line : 'Brackets' ,
txtBracket _LineDouble : 'Brackets' ,
txtBracket _Square _OpenOpen : 'Brackets' ,
txtBracket _Square _CloseClose : 'Brackets' ,
txtBracket _Square _CloseOpen : 'Brackets' ,
txtBracket _SquareDouble : 'Brackets' ,
txtBracket _Round _Delimiter _2 : 'Brackets with Separators' ,
txtBracket _Curve _Delimiter _2 : 'Brackets with Separators' ,
txtBracket _Angle _Delimiter _2 : 'Brackets with Separators' ,
txtBracket _Angle _Delimiter _3 : 'Brackets with Separators' ,
txtBracket _Round _OpenNone : 'Single Bracket' ,
txtBracket _Round _NoneOpen : 'Single Bracket' ,
txtBracket _Square _OpenNone : 'Single Bracket' ,
txtBracket _Square _NoneOpen : 'Single Bracket' ,
txtBracket _Curve _OpenNone : 'Single Bracket' ,
txtBracket _Curve _NoneOpen : 'Single Bracket' ,
txtBracket _Angle _OpenNone : 'Single Bracket' ,
txtBracket _Angle _NoneOpen : 'Single Bracket' ,
txtBracket _LowLim _OpenNone : 'Single Bracket' ,
txtBracket _LowLim _NoneNone : 'Single Bracket' ,
txtBracket _UppLim _OpenNone : 'Single Bracket' ,
txtBracket _UppLim _NoneOpen : 'Single Bracket' ,
txtBracket _Line _OpenNone : 'Single Bracket' ,
txtBracket _Line _NoneOpen : 'Single Bracket' ,
txtBracket _LineDouble _OpenNone : 'Single Bracket' ,
txtBracket _LineDouble _NoneOpen : 'Single Bracket' ,
txtBracket _SquareDouble _OpenNone : 'Single Bracket' ,
txtBracket _SquareDouble _NoneOpen : 'Single Bracket' ,
txtBracket _Custom _1 : 'Case (Two Conditions)' ,
txtBracket _Custom _2 : 'Cases (Three Conditions)' ,
txtBracket _Custom _3 : 'Stack Object' ,
txtBracket _Custom _4 : 'Stack Object' ,
txtBracket _Custom _5 : 'Cases Example' ,
txtBracket _Custom _6 : 'Binomial Coefficient' ,
txtBracket _Custom _7 : 'Binomial Coefficient' ,
txtFunction _Sin : 'Sine Function' ,
txtFunction _Cos : 'Cosine Function' ,
txtFunction _Tan : 'Tangent Function' ,
txtFunction _Csc : 'Cosecant Function' ,
txtFunction _Sec : 'Secant Function' ,
txtFunction _Cot : 'Cotangent Function' ,
txtFunction _1 _Sin : 'Inverse Sine Function' ,
txtFunction _1 _Cos : 'Inverse Cosine Function' ,
txtFunction _1 _Tan : 'Inverse Tangent Function' ,
txtFunction _1 _Csc : 'Inverse Cosecant Function' ,
txtFunction _1 _Sec : 'Inverse Secant Function' ,
txtFunction _1 _Cot : 'Inverse Cotangent Function' ,
txtFunction _Sinh : 'Hyperbolic Sine Function' ,
txtFunction _Cosh : 'Hyperbolic Cosine Function' ,
txtFunction _Tanh : 'Hyperbolic Tangent Function' ,
txtFunction _Csch : 'Hyperbolic Cosecant Function' ,
txtFunction _Sech : 'Hyperbolic Secant Function' ,
txtFunction _Coth : 'Hyperbolic Cotangent Function' ,
txtFunction _1 _Sinh : 'Hyperbolic Inverse Sine Function' ,
txtFunction _1 _Cosh : 'Hyperbolic Inverse Cosine Function' ,
txtFunction _1 _Tanh : 'Hyperbolic Inverse Tangent Function' ,
txtFunction _1 _Csch : 'Hyperbolic Inverse Cosecant Function' ,
txtFunction _1 _Sech : 'Hyperbolic Inverse Secant Function' ,
txtFunction _1 _Coth : 'Hyperbolic Inverse Cotangent Function' ,
txtFunction _Custom _1 : 'Sine theta' ,
txtFunction _Custom _2 : 'Cos 2x' ,
txtFunction _Custom _3 : 'Tangent formula' ,
txtAccent _Dot : 'Dot' ,
txtAccent _DDot : 'Double Dot' ,
txtAccent _DDDot : 'Triple Dot' ,
txtAccent _Hat : 'Hat' ,
txtAccent _Check : 'Check' ,
txtAccent _Accent : 'Acute' ,
txtAccent _Grave : 'Grave' ,
txtAccent _Smile : 'Breve' ,
txtAccent _Tilde : 'Tilde' ,
txtAccent _Bar : 'Bar' ,
txtAccent _DoubleBar : 'Double Overbar' ,
txtAccent _CurveBracketTop : 'Overbrace' ,
txtAccent _CurveBracketBot : 'Underbrace' ,
txtAccent _GroupTop : 'Grouping Character Above' ,
txtAccent _GroupBot : 'Grouping Character Below' ,
txtAccent _ArrowL : 'Leftwards Arrow Above' ,
txtAccent _ArrowR : 'Rightwards Arrow Above' ,
txtAccent _ArrowD : 'Right-Left Arrow Above' ,
txtAccent _HarpoonL : 'Leftwards Harpoon Above' ,
txtAccent _HarpoonR : 'Rightwards Harpoon Above' ,
txtAccent _BorderBox : 'Boxed Formula (With Placeholder)' ,
txtAccent _BorderBoxCustom : 'Boxed Formula (Example)' ,
txtAccent _BarTop : 'Overbar' ,
txtAccent _BarBot : 'Underbar' ,
txtAccent _Custom _1 : 'Vector A' ,
txtAccent _Custom _2 : 'ABC With Overbar' ,
txtAccent _Custom _3 : 'x XOR y With Overbar' ,
txtLimitLog _LogBase : 'Logarithm' ,
txtLimitLog _Log : 'Logarithm' ,
txtLimitLog _Lim : 'Limit' ,
txtLimitLog _Min : 'Minimum' ,
txtLimitLog _Max : 'Maximum' ,
txtLimitLog _Ln : 'Natural Logarithm' ,
txtLimitLog _Custom _1 : 'Limit Example' ,
txtLimitLog _Custom _2 : 'Maximum Example' ,
txtOperator _ColonEquals : 'Colon Equal' ,
txtOperator _EqualsEquals : 'Equal Equal' ,
txtOperator _PlusEquals : 'Plus Equal' ,
txtOperator _MinusEquals : 'Minus Equal' ,
txtOperator _Definition : 'Equal to By Definition' ,
txtOperator _UnitOfMeasure : 'Measured By' ,
txtOperator _DeltaEquals : 'Delta Equal To' ,
txtOperator _ArrowL _Top : 'Leftwards Arrow Above' ,
txtOperator _ArrowR _Top : 'Rightwards Arrow Above' ,
txtOperator _ArrowL _Bot : 'Leftwards Arrow Below' ,
txtOperator _ArrowR _Bot : 'Rightwards Arrow Below' ,
txtOperator _DoubleArrowL _Top : 'Leftwards Arrow Above' ,
txtOperator _DoubleArrowR _Top : 'Rightwards Arrow Above' ,
txtOperator _DoubleArrowL _Bot : 'Leftwards Arrow Below' ,
txtOperator _DoubleArrowR _Bot : 'Rightwards Arrow Below' ,
txtOperator _ArrowD _Top : 'Right-Left Arrow Above' ,
txtOperator _ArrowD _Bot : 'Right-Left Arrow Above' ,
txtOperator _DoubleArrowD _Top : 'Right-Left Arrow Below' ,
txtOperator _DoubleArrowD _Bot : 'Right-Left Arrow Below' ,
txtOperator _Custom _1 : 'Yileds' ,
txtOperator _Custom _2 : 'Delta Yields' ,
txtMatrix _1 _2 : '1x2 Empty Matrix' ,
txtMatrix _2 _1 : '2x1 Empty Matrix' ,
txtMatrix _1 _3 : '1x3 Empty Matrix' ,
txtMatrix _3 _1 : '3x1 Empty Matrix' ,
txtMatrix _2 _2 : '2x2 Empty Matrix' ,
txtMatrix _2 _3 : '2x3 Empty Matrix' ,
txtMatrix _3 _2 : '3x2 Empty Matrix' ,
txtMatrix _3 _3 : '3x3 Empty Matrix' ,
txtMatrix _Dots _Center : 'Midline Dots' ,
txtMatrix _Dots _Baseline : 'Baseline Dots' ,
txtMatrix _Dots _Vertical : 'Vertical Dots' ,
txtMatrix _Dots _Diagonal : 'Diagonal Dots' ,
txtMatrix _Identity _2 : '2x2 Identity Matrix' ,
txtMatrix _Identity _2 _NoZeros : '3x3 Identity Matrix' ,
txtMatrix _Identity _3 : '3x3 Identity Matrix' ,
txtMatrix _Identity _3 _NoZeros : '3x3 Identity Matrix' ,
txtMatrix _2 _2 _RoundBracket : 'Empty Matrix with Brackets' ,
txtMatrix _2 _2 _SquareBracket : 'Empty Matrix with Brackets' ,
txtMatrix _2 _2 _LineBracket : 'Empty Matrix with Brackets' ,
txtMatrix _2 _2 _DLineBracket : 'Empty Matrix with Brackets' ,
txtMatrix _Flat _Round : 'Sparse Matrix' ,
2017-02-06 14:12:59 +00:00
txtMatrix _Flat _Square : 'Sparse Matrix' ,
txtExpandSort : 'The data next to the selection will not be sorted. Do you want to expand the selection to include the adjacent data or continue with sorting the currently selected cells only?' ,
txtExpand : 'Expand and sort' ,
txtSorting : 'Sorting' ,
2017-04-11 11:05:56 +00:00
txtSortSelected : 'Sort selected' ,
textLongOperation : 'Long operation' ,
2017-04-18 13:16:03 +00:00
warnLongOperation : 'The operation you are about to perform might take rather much time to complete.<br>Are you sure you want to continue?' ,
txtInvalidRange : 'ERROR! Invalid cells range' ,
errorMaxRows : 'ERROR! The maximum number of data series per chart is 255.' ,
2017-06-30 14:49:58 +00:00
errorStockChart : 'Incorrect row order. To build a stock chart place the data on the sheet in the following order:<br> opening price, max price, min price, closing price.' ,
2019-09-19 10:31:23 +00:00
textPivot : 'Pivot Table' ,
txtTable _TableStyleMedium : 'Table Style Medium' ,
txtTable _TableStyleDark : 'Table Style Dark' ,
2019-11-14 08:48:58 +00:00
txtTable _TableStyleLight : 'Table Style Light' ,
2020-05-08 17:18:53 +00:00
textInsert : 'Insert' ,
txtInsertCells : 'Insert Cells' ,
txtDeleteCells : 'Delete Cells'
2017-02-06 14:12:59 +00:00
2016-03-11 00:48:53 +00:00
} , SSE . Controllers . Toolbar || { } ) ) ;
} ) ;