mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-13 11:32:20 +08:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
import { observable, action } from 'mobx';
|
|
import moment = require('moment');
|
|
import { EChartOption } from 'echarts/lib/echarts';
|
|
import { ICurve } from 'container/common-curve/config';
|
|
import { curveKeys, PERIOD_RADIO_MAP } from 'container/admin/data-curve/config';
|
|
import { timeFormat } from 'constants/strategy';
|
|
|
|
class CurveInfo {
|
|
@observable
|
|
public periodKey: string = 'oneHour';
|
|
|
|
@observable
|
|
public timeRange: [moment.Moment, moment.Moment] = PERIOD_RADIO_MAP.get(this.periodKey).dateRange;
|
|
|
|
@observable
|
|
public curveData: { [key: string]: EChartOption } = {};
|
|
|
|
@observable
|
|
public curveLoading: { [key: string]: boolean } = {};
|
|
|
|
@observable
|
|
public operators: string[] = [];
|
|
|
|
@observable
|
|
public currentOperator: string;
|
|
|
|
@action.bound
|
|
public setCurveData(key: curveKeys | string, data: EChartOption) {
|
|
this.curveData[key] = data;
|
|
}
|
|
|
|
@action.bound
|
|
public setCurveLoading(key: curveKeys | string, loading: boolean) {
|
|
this.curveLoading[key] = loading;
|
|
}
|
|
|
|
@action.bound
|
|
public setTimeRange(newRange: [moment.Moment, moment.Moment]) {
|
|
this.timeRange = newRange;
|
|
}
|
|
|
|
@action.bound
|
|
public setOperators(operators: string[]) {
|
|
this.operators = operators;
|
|
}
|
|
|
|
@action.bound
|
|
public setCurrentOperator(operator: string) {
|
|
this.currentOperator = operator;
|
|
}
|
|
|
|
public getStartTime = () => {
|
|
return this.timeRange[0].format(timeFormat);
|
|
}
|
|
|
|
public getEndTime = () => {
|
|
return this.timeRange[1].format(timeFormat);
|
|
}
|
|
|
|
public getCommonCurveData = (
|
|
options: ICurve,
|
|
parser: (option: ICurve, data: any[]) => EChartOption,
|
|
reload?: boolean) => {
|
|
const { path } = options;
|
|
this.setCurveData(path, null);
|
|
this.setCurveLoading(path, true);
|
|
return options.api(this.timeRange[0], this.timeRange[1], reload).then((data: any) => {
|
|
this.setCurveData(path, parser(options, data));
|
|
}).finally(() => {
|
|
this.setCurveLoading(path, false);
|
|
});
|
|
}
|
|
}
|
|
|
|
export const curveInfo = new CurveInfo();
|