From 9e75d89bb2d26118faf6142ca5c6140e42a5dbb6 Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Wed, 16 Feb 2022 22:08:04 +0300 Subject: [PATCH] [PE] Chart styles loading optimization --- .../main/app/view/ChartSettings.js | 86 ++++++++++++------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/apps/presentationeditor/main/app/view/ChartSettings.js b/apps/presentationeditor/main/app/view/ChartSettings.js index d99b1e1e0..bb7c36b7e 100644 --- a/apps/presentationeditor/main/app/view/ChartSettings.js +++ b/apps/presentationeditor/main/app/view/ChartSettings.js @@ -97,6 +97,7 @@ define([ this.api = api; if (this.api) { this.api.asc_registerCallback('asc_onUpdateChartStyles', _.bind(this._onUpdateChartStyles, this)); + this.api.asc_registerCallback('asc_onAddChartStylesPreview', _.bind(this.onAddChartStylesPreview, this)); } return this; }, @@ -133,7 +134,7 @@ define([ this.btnChartType.setIconCls('svgicon'); this.ShowCombinedProps(type); !(type===null || type==Asc.c_oAscChartTypeSettings.comboBarLine || type==Asc.c_oAscChartTypeSettings.comboBarLineSecondary || - type==Asc.c_oAscChartTypeSettings.comboAreaBar || type==Asc.c_oAscChartTypeSettings.comboCustom) && this.updateChartStyles(this.api.asc_getChartPreviews(type)); + type==Asc.c_oAscChartTypeSettings.comboAreaBar || type==Asc.c_oAscChartTypeSettings.comboCustom) && this.updateChartStyles(this.api.asc_getChartPreviews(type, undefined, true)); this._state.ChartType = type; } } @@ -148,18 +149,9 @@ define([ } else { value = props.getStyle(); if (this._state.ChartStyle !== value || this._isChartStylesChanged) { - this.cmbChartStyle.suspendEvents(); - var rec = this.cmbChartStyle.menuPicker.store.findWhere({data: value}); - this.cmbChartStyle.menuPicker.selectRecord(rec); - this.cmbChartStyle.resumeEvents(); - - if (this._isChartStylesChanged) { - if (rec) - this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec(), true); - else - this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.store.at(0), true); - } this._state.ChartStyle = value; + var arr = this.selectCurrentChartStyle(); + this._isChartStylesChanged && this.api.asc_generateChartPreviews(this._state.ChartType, arr); } } this._isChartStylesChanged = false; @@ -368,11 +360,52 @@ define([ this.fireEvent('editcomplete', this); }, + selectCurrentChartStyle: function() { + if (!this.cmbChartStyle) return; + + this.cmbChartStyle.suspendEvents(); + var rec = this.cmbChartStyle.menuPicker.store.findWhere({data: this._state.ChartStyle}); + this.cmbChartStyle.menuPicker.selectRecord(rec); + this.cmbChartStyle.resumeEvents(); + + if (this._isChartStylesChanged) { + var currentRecords; + if (rec) + currentRecords = this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.getSelectedRec(), true); + else + currentRecords = this.cmbChartStyle.fillComboView(this.cmbChartStyle.menuPicker.store.at(0), true); + if (currentRecords && currentRecords.length>0) { + var arr = []; + _.each(currentRecords, function(style, index){ + arr.push(style.get('data')); + }); + return arr; + } + } + }, + + onAddChartStylesPreview: function(styles){ + var me = this; + if (styles && styles.length>0){ + var stylesStore = this.cmbChartStyle.menuPicker.store; + if (stylesStore) { + _.each(styles, function(item, index){ + var rec = stylesStore.findWhere({ + data: item.asc_getName() + }); + rec && rec.set('imageUrl', item.asc_getImage()); + }); + } + } + }, + _onUpdateChartStyles: function() { if (this.api && this._state.ChartType!==null && this._state.ChartType>-1 && !(this._state.ChartType==Asc.c_oAscChartTypeSettings.comboBarLine || this._state.ChartType==Asc.c_oAscChartTypeSettings.comboBarLineSecondary || - this._state.ChartType==Asc.c_oAscChartTypeSettings.comboAreaBar || this._state.ChartType==Asc.c_oAscChartTypeSettings.comboCustom)) - this.updateChartStyles(this.api.asc_getChartPreviews(this._state.ChartType)); + this._state.ChartType==Asc.c_oAscChartTypeSettings.comboAreaBar || this._state.ChartType==Asc.c_oAscChartTypeSettings.comboCustom)) { + this.updateChartStyles(this.api.asc_getChartPreviews(this._state.ChartType, undefined, true)); + this.api.asc_generateChartPreviews(this._state.ChartType, this.selectCurrentChartStyle()); + } }, updateChartStyles: function(styles) { @@ -406,24 +439,15 @@ define([ if (styles && styles.length>0){ var stylesStore = this.cmbChartStyle.menuPicker.store; if (stylesStore) { - var count = stylesStore.length; - if (count>0 && count==styles.length) { - var data = stylesStore.models; - _.each(styles, function(style, index){ - data[index].set('imageUrl', style.asc_getImage()); + var stylearray = []; + _.each(styles, function(item, index){ + stylearray.push({ + imageUrl: item.asc_getImage(), + data : item.asc_getName(), + tip : me.textStyle + ' ' + item.asc_getName() }); - } else { - var stylearray = [], - selectedIdx = -1; - _.each(styles, function(item, index){ - stylearray.push({ - imageUrl: item.asc_getImage(), - data : item.asc_getName(), - tip : me.textStyle + ' ' + item.asc_getName() - }); - }); - stylesStore.reset(stylearray, {silent: false}); - } + }); + stylesStore.reset(stylearray, {silent: false}); } } else { this.cmbChartStyle.menuPicker.store.reset();