import {action, observable, computed} from 'mobx'; export class storeChartSettings { // Style @observable chartStyles; @action updateChartStyles (styles) { this.chartStyles = styles; } @computed get styles () { const widthContainer = document.querySelector(".page-content").clientWidth; const columns = parseInt(widthContainer / 70); // magic let row = -1; const styles = []; this.chartStyles.forEach((style, index) => { if (0 == index % columns) { styles.push([]); row++ } styles[row].push(style); }); return styles; } @computed get types () { const types = [ { type: Asc.c_oAscChartTypeSettings.barNormal, thumb: 'chart-03.png'}, { type: Asc.c_oAscChartTypeSettings.barStacked, thumb: 'chart-02.png'}, { type: Asc.c_oAscChartTypeSettings.barStackedPer, thumb: 'chart-01.png'}, { type: Asc.c_oAscChartTypeSettings.lineNormal, thumb: 'chart-06.png'}, { type: Asc.c_oAscChartTypeSettings.lineStacked, thumb: 'chart-05.png'}, { type: Asc.c_oAscChartTypeSettings.lineStackedPer, thumb: 'chart-04.png'}, { type: Asc.c_oAscChartTypeSettings.hBarNormal, thumb: 'chart-09.png'}, { type: Asc.c_oAscChartTypeSettings.hBarStacked, thumb: 'chart-08.png'}, { type: Asc.c_oAscChartTypeSettings.hBarStackedPer, thumb: 'chart-07.png'}, { type: Asc.c_oAscChartTypeSettings.areaNormal, thumb: 'chart-12.png'}, { type: Asc.c_oAscChartTypeSettings.areaStacked, thumb: 'chart-11.png'}, { type: Asc.c_oAscChartTypeSettings.areaStackedPer, thumb: 'chart-10.png'}, { type: Asc.c_oAscChartTypeSettings.pie, thumb: 'chart-13.png'}, { type: Asc.c_oAscChartTypeSettings.doughnut, thumb: 'chart-14.png'}, { type: Asc.c_oAscChartTypeSettings.pie3d, thumb: 'chart-22.png'}, { type: Asc.c_oAscChartTypeSettings.scatter, thumb: 'chart-15.png'}, { type: Asc.c_oAscChartTypeSettings.stock, thumb: 'chart-16.png'}, { type: Asc.c_oAscChartTypeSettings.line3d, thumb: 'chart-21.png'}, { type: Asc.c_oAscChartTypeSettings.barNormal3d, thumb: 'chart-17.png'}, { type: Asc.c_oAscChartTypeSettings.barStacked3d, thumb: 'chart-18.png'}, { type: Asc.c_oAscChartTypeSettings.barStackedPer3d, thumb: 'chart-19.png'}, { type: Asc.c_oAscChartTypeSettings.hBarNormal3d, thumb: 'chart-25.png'}, { type: Asc.c_oAscChartTypeSettings.hBarStacked3d, thumb: 'chart-24.png'}, { type: Asc.c_oAscChartTypeSettings.hBarStackedPer3d, thumb: 'chart-23.png'}, { type: Asc.c_oAscChartTypeSettings.barNormal3dPerspective, thumb: 'chart-20.png'} ]; const columns = 3; const arr = []; let row = -1; types.forEach((type, index) => { if (0 == index % columns) { arr.push([]); row++ } arr[row].push(type); }); return arr; } // Fill Color @observable fillColor = undefined; setFillColor (color) { this.fillColor = color; } getFillColor (shapeProperties) { let fill = shapeProperties.get_fill(); const fillType = fill.get_type(); let color = 'transparent'; if (fillType == Asc.c_oAscFill.FILL_TYPE_SOLID) { fill = fill.get_fill(); const sdkColor = fill.get_color(); if (sdkColor) { if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()}; } else { color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()); } } } this.fillColor = color; return color; } // Border size and border color @observable borderColor; setBorderColor (color) { this.borderColor = color; } initBorderColor (stroke) { let color = 'transparent'; if (stroke && stroke.get_type() == Asc.c_oAscStrokeType.STROKE_COLOR) { const sdkColor = stroke.get_color(); if (sdkColor) { if (sdkColor.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { color = {color: Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()), effectValue: sdkColor.get_value()}; } else { color = Common.Utils.ThemeColor.getHexColor(sdkColor.get_r(), sdkColor.get_g(), sdkColor.get_b()); } } } this.borderColor = color; return color; } borderSizeTransform () { const _sizes = [0, 0.5, 1, 1.5, 2.25, 3, 4.5, 6]; return { sizeByIndex: function (index) { if (index < 1) return _sizes[0]; if (index > _sizes.length - 1) return _sizes[_sizes.length - 1]; return _sizes[index]; }, indexSizeByValue: function (value) { let index = 0; _sizes.forEach((size, idx) => { if (Math.abs(size - value) < 0.25) { index = idx; } }); return index; }, sizeByValue: function (value) { return _sizes[this.indexSizeByValue(value)]; } } } }