import { Http } from "../Http";
import { ArrayHelper, AstHelper } from "@gvol-org/geovis-brain-core";
import { PrintObject } from "../models/PrintObject";
import { Chart } from "./Chart";
import * as echarts from "echarts";
/**
* @class Chart.array
* @since ui.Chart
*/
export class array {
static chart: Chart;
constructor() { }
// /**
// * 通过制定数据集合绘制图表;
// * @param {List} [array] y轴数据列表,可以是一维列表、二维数据
// * @param {Number} [axis] x轴的方向,数据方向,可以是0、1,根据传入的array数据不同而不同
// * @param {List} [xLabels] x轴的数据列表
// * @return ui.Chart
// * @tutorial ui.Chart.array
// */
// static values_expressions(array: any, axis: number, xLabels?: any) {
// let awaitCount=0;
// let resCount=0;
// if (array instanceof PrintObject) {
// //表达式调用接口拿到数据
// awaitCount++;
// let codeContent = "print(" + array['expressions'] + ");";
// Http.getPrintRequest_expressions(codeContent).then(response => {
// console.log("chart参数1", response);
// Http.responseSubject$.next(null);
// resCount++;
// if (response) {
// array.chart.values =[response.prints[0]];
// }
// if (awaitCount==resCount) {
// array.chart.cht.hideLoading();
// if (array.chart.xLabels) {
// // let labels:any= Array.from(new Set(array.chart.xLabels));
// // if (labels.length==array.chart.xLabels) {
// // array.chart.setChartType(array.chart.chartType);
// // return;
// // }
// // let series= array.chart.getSeries(labels);
// // array.chart.xLabels=labels;
// // array.chart.values=series;
// array.chart.setChartType(array.chart.chartType);
// }
// }
// });
// array=[[]];
// }
// if (xLabels instanceof PrintObject) {
// awaitCount++;
// let codeContent = "print(" + xLabels['expressions'] + ");";
// Http.getPrintRequest_expressions(codeContent).then(response => {
// console.log("chart参数2", response);
// Http.responseSubject$.next(null);
// resCount++;
// if (response) {
// array.chart.xLabels =response.prints[0];
// }
// if (awaitCount==resCount) {
// array.chart.cht.hideLoading();
// if (array.chart.xLabels) {
// // let labels:any= Array.from( new Set(array.chart.xLabels));
// // if (labels.length==array.chart.xLabels) {
// // array.chart.setChartType(array.chart.chartType);
// // return;
// // }
// // let series= array.chart.getSeries(labels);
// // array.chart.xLabels=labels;
// // array.chart.values=series;
// array.chart.setChartType(array.chart.chartType);
// }
// }
// });
// xLabels=[]
// }
// array.chart = new Chart();
// var myChart = echarts.init( array.chart.el as HTMLElement);
// array.chart.cht = myChart;
// array.chart.values = array;
// array.chart.axis = axis;
// array.chart.xLabels = xLabels;
// array.chart.setChartType(array.chart.chartType);
// if (awaitCount>0) {
// myChart.showLoading({
// text: '图表生成中...',
// color: '#ccc',
// textColor: '#000',
// maskColor: 'rgba(255, 255, 255, 0.3)',
// zlevel: 0,
// });
// }
// return array.chart;
// }
/**
* 通过制定数据集合绘制图表;
* @param {List} [array] y轴数据列表,可以是一维列表、二维数据
* @param {Number} [axis] x轴的方向,数据方向,可以是0、1,根据传入的array数据不同而不同
* @param {List} [xLabels] x轴的数据列表
* @return ui.Chart
* @tutorial ui.Chart.array
*/
static values(array: any, axis: number, xLabels?: any) {
let awaitCount = 0;
let resCount = 0;
if (array instanceof PrintObject) {
if (array["order"]) {
array['chain'] = AstHelper.relativeChain(array["order"]);
}
let content = {
type: 'value',
chain: array['chain']
};
if ((window as any).astCallback) {
(window as any).astCallback(content);
}
//表达式调用接口拿到数据
awaitCount++;
if (typeof process === 'undefined') {
//浏览器环境,非node环境
Http.getPrintRequest(array['chain']).then(response => {
console.log("chart参数1", response);
Http.responseSubject$.next(null);
resCount++;
if (response && response.data.status == 'success') {
let arrVal = response.data.detail;
let depth = ArrayHelper.getArrayDepth(arrVal);
console.log("数组深度", depth);
if (depth == 1) {
arrVal = [arrVal];
}
array.chart.values = arrVal;
}
if (awaitCount == resCount) {
array.chart.cht.hideLoading();
if (array.chart.xLabels) {
// let labels:any= Array.from(new Set(array.chart.xLabels));
// if (labels.length==array.chart.xLabels) {
// array.chart.setChartType(array.chart.chartType);
// return;
// }
// let series= array.chart.getSeries(labels);
// array.chart.xLabels=labels;
// array.chart.values=series;
array.chart.setChartType(array.chart.chartType);
}
}
});
}
array = [[]];
}
if (xLabels instanceof PrintObject) {
awaitCount++;
if (xLabels["order"]) {
xLabels['chain'] = AstHelper.relativeChain(xLabels["order"]);
}
let content = {
type: 'value',
chain: xLabels['chain']
};
if ((window as any).astCallback) {
(window as any).astCallback(content);
}
if (typeof process === 'undefined') {
//浏览器环境,非node环境
Http.getPrintRequest(xLabels['chain']).then(response => {
console.log("chart参数2", response);
Http.responseSubject$.next(null);
resCount++;
if (response && response.data.status == 'success') {
array.chart.xLabels = response.data.detail;
}
if (awaitCount == resCount) {
array.chart.cht.hideLoading();
if (array.chart.xLabels) {
// let labels:any= Array.from( new Set(array.chart.xLabels));
// if (labels.length==array.chart.xLabels) {
// array.chart.setChartType(array.chart.chartType);
// return;
// }
// let series= array.chart.getSeries(labels);
// array.chart.xLabels=labels;
// array.chart.values=series;
array.chart.setChartType(array.chart.chartType);
}
}
});
}
xLabels = []
}
array.chart = new Chart();
if (typeof process === 'undefined') {
var myChart = echarts.init(array.chart.el as HTMLElement);
array.chart.cht = myChart;
array.chart.values = array;
array.chart.axis = axis;
array.chart.xLabels = xLabels;
array.chart.setChartType(array.chart.chartType);
if (awaitCount > 0) {
myChart.showLoading({
text: '图表生成中...',
color: '#ccc',
textColor: '#000',
maskColor: 'rgba(255, 255, 255, 0.3)',
zlevel: 0,
});
}
}
return array.chart;
}
}