152 lines
6.1 KiB
JavaScript
152 lines
6.1 KiB
JavaScript
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)];
|
|
}
|
|
}
|
|
}
|
|
} |