350 lines
13 KiB
JavaScript
350 lines
13 KiB
JavaScript
|
|
function drawCharts(result_paramsArr_data,filesNameStr){
|
|||
|
|
var paramAllData = [];
|
|||
|
|
if(filesNameStr!='allFiles'){//如果不是选择的所有文件
|
|||
|
|
//解析filesNameArr,获取新的result_paramsArr_data---------------------
|
|||
|
|
result_paramsArr_data = getNewresult_paramsArr_data(result_paramsArr_data,filesNameStr);
|
|||
|
|
//解析filesNameArr,获取新的result_paramsArr_data---------------------
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
var result_paramsArr_dataLen = result_paramsArr_data.length;
|
|||
|
|
//每个图表容器的高度
|
|||
|
|
chart_containerHeight = parseInt(page_total_height/result_paramsArr_dataLen);
|
|||
|
|
//注销之前的图形缓存,图表1,初始图表
|
|||
|
|
myLineChart.destroy();
|
|||
|
|
//注销之前的图形缓存,2个以上的图表
|
|||
|
|
for(var charti=0;charti<myLineChartArr.length;charti++){
|
|||
|
|
myLineChartArr[charti].destroy();
|
|||
|
|
}
|
|||
|
|
//清空
|
|||
|
|
myLineChartArr = [];
|
|||
|
|
console.log('注销之前的图形缓存成功');
|
|||
|
|
for(var k=0;k<result_paramsArr_data.length;k++){ //所有选中的参数
|
|||
|
|
//某个参数包含的数据
|
|||
|
|
var chartDataSets = [];
|
|||
|
|
var result_params_data = result_paramsArr_data[k];
|
|||
|
|
var req_param_data = result_params_data.req_param_data;
|
|||
|
|
//参数名
|
|||
|
|
var paramName_k = req_param_data.paramName;
|
|||
|
|
|
|||
|
|
//参数包含的数据
|
|||
|
|
paramAllData = req_param_data.paramAllData;
|
|||
|
|
//自定义x轴范围---------------------------------------
|
|||
|
|
var paramName_k_x_min=0;
|
|||
|
|
var paramName_k_x_max=0;
|
|||
|
|
var hasCustomerXField = false;
|
|||
|
|
var paramValue_jArr_X_k_cus = [];
|
|||
|
|
for(var kk=0;kk<customer_x_field.length;kk++){
|
|||
|
|
customer_x_field_values = customer_x_field[kk];
|
|||
|
|
if(paramName_k==customer_x_field_values.set_paramName){
|
|||
|
|
if(customer_x_field_values.x_minValue!=''&&customer_x_field_values.x_minValue!="")
|
|||
|
|
paramName_k_x_min = customer_x_field_values.x_minValue
|
|||
|
|
if(customer_x_field_values.x_maxValue!=''&&customer_x_field_values.x_maxValue!="")
|
|||
|
|
paramName_k_x_max = customer_x_field_values.x_maxValue;
|
|||
|
|
paramValue_jArr_X_k_cus = customer_x_field_values.paramValue_jArr_X_k_cus;
|
|||
|
|
hasCustomerXField = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//自定义x轴范围---------------------------------------
|
|||
|
|
//如果设置过x轴范围,则重新生成数据
|
|||
|
|
if(hasCustomerXField&&(paramName_k_x_min<paramName_k_x_max))
|
|||
|
|
paramAllData = get_Y_data_k_By_customer_X_Field(paramName_k_x_min,paramName_k_x_max,paramAllData);
|
|||
|
|
|
|||
|
|
//自定义y轴范围数据------------------------------------
|
|||
|
|
var paramName_k_y_min = 0;
|
|||
|
|
var paramName_k_y_max = 0;
|
|||
|
|
var hasCustomerYField = false;
|
|||
|
|
//遍历自定义y轴范围数据
|
|||
|
|
for(var i=0;i<customer_y_field.length;i++){
|
|||
|
|
var customer_y_fieldObj = customer_y_field[i];
|
|||
|
|
if(paramName_k==customer_y_fieldObj.set_paramName){
|
|||
|
|
if(customer_y_fieldObj.y_minValue!=''&&customer_y_fieldObj.y_minValue!="")
|
|||
|
|
paramName_k_y_min = customer_y_fieldObj.y_minValue;
|
|||
|
|
if(customer_y_fieldObj.y_maxValue!=''&&customer_y_fieldObj.y_maxValue!="")
|
|||
|
|
paramName_k_y_max = customer_y_fieldObj.y_maxValue;
|
|||
|
|
|
|||
|
|
hasCustomerYField = true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//自定义y轴范围数据------------------------------------
|
|||
|
|
//获取图表的颜色
|
|||
|
|
//获取图表的颜色,models_keypoint_params_colorArr 存放参数的颜色序号 数组
|
|||
|
|
for(var i=0;i<models_keypoint_params_colorArr.length;i++){
|
|||
|
|
models_keypoint_params_colorObj = models_keypoint_params_colorArr[i];
|
|||
|
|
if(paramName_k==models_keypoint_params_colorObj.paramName_k)
|
|||
|
|
getColorNum(models_keypoint_params_colorObj.color_index);
|
|||
|
|
}
|
|||
|
|
//选择的的参数的字体颜色
|
|||
|
|
var param_fontColor = "rgba("+redcolor+","+greencolor+","+bluecolor+",1)";
|
|||
|
|
$("."+req_param_data.paramName+"_class").css({"color":param_fontColor});
|
|||
|
|
//初始化图表------------------
|
|||
|
|
var ctxk;
|
|||
|
|
if(result_paramsArr_dataLen==1) //只有一个参数
|
|||
|
|
ctxk = addOneChart(0,'onlyone',chart_containerHeight,paramName_k,param_fontColor);
|
|||
|
|
else //多个参数
|
|||
|
|
ctxk = addOneChart(k,'',chart_containerHeight,paramName_k,param_fontColor);
|
|||
|
|
var myLineChartk;
|
|||
|
|
//初始化图表------------------
|
|||
|
|
//每一个csv中计算出来的x轴数据
|
|||
|
|
var paramValue_jArr_X = [];
|
|||
|
|
//获取x轴数据时需要判断该值
|
|||
|
|
loop_paramAllData_temp_i = -1;
|
|||
|
|
|
|||
|
|
for(var i=0;i<paramAllData.length;i++){
|
|||
|
|
var paramObj = paramAllData[i];
|
|||
|
|
var paramName = paramObj.paramName;
|
|||
|
|
//一个csv的计算后的数据
|
|||
|
|
var paramValue = paramObj.paramValue;
|
|||
|
|
//文件名序号
|
|||
|
|
fileIndex = paramObj.fileIndex;
|
|||
|
|
|
|||
|
|
//每一个csv中计算出来的y轴数据
|
|||
|
|
var paramValue_jArr_Y = [];
|
|||
|
|
var paramValueArr = paramValue.split(';');
|
|||
|
|
|
|||
|
|
//获取每个参数x轴数据------------------------------------------
|
|||
|
|
if(paramValue==''||paramValue==""||paramValue==null){
|
|||
|
|
continue;
|
|||
|
|
}else{
|
|||
|
|
if(loop_paramAllData_temp_i==-1){
|
|||
|
|
loop_paramAllData_temp_i = i;
|
|||
|
|
if(loop_paramAllData_temp_i>-1){
|
|||
|
|
for(var ii=0;ii<paramValueArr.length;ii++){
|
|||
|
|
//只计算一个csv的x轴数据
|
|||
|
|
paramValue_jArr_X.push(ii);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//获取每个参数x轴数据------------------------------------------
|
|||
|
|
|
|||
|
|
paramValue_jArr_Y = paramValueArr;
|
|||
|
|
|
|||
|
|
//填充颜色
|
|||
|
|
var backgroundColor = "rgba("+redcolor+","+greencolor+","+bluecolor+",0.4)";
|
|||
|
|
var borderColor = "rgba("+redcolor+","+greencolor+","+bluecolor+",1)";
|
|||
|
|
var pointBorderColor = "rgba("+redcolor+","+greencolor+","+bluecolor+",1)";
|
|||
|
|
//图表数据对象
|
|||
|
|
var chartDataObj;
|
|||
|
|
if(hasCustomerYField&&(paramName_k_y_min<paramName_k_y_max)){
|
|||
|
|
//用户自定义y轴范围
|
|||
|
|
chartDataObj = {
|
|||
|
|
label : 'csv'+parseInt(fileIndex),
|
|||
|
|
//backgroundColor: backgroundColor,
|
|||
|
|
backgroundColor : 'rgba(0,0,0,0.0)',
|
|||
|
|
borderColor: borderColor,
|
|||
|
|
pointBorderColor: pointBorderColor,
|
|||
|
|
pointHoverBackgroundColor: pointBorderColor,
|
|||
|
|
pointHoverBorderColor: pointBorderColor,
|
|||
|
|
pointHoverBackgroundColor: pointBorderColor,
|
|||
|
|
pointBorderWidth:1,
|
|||
|
|
yAxisID: 'customer_y_ID'+k,
|
|||
|
|
data : paramValue_jArr_Y
|
|||
|
|
};
|
|||
|
|
}else{
|
|||
|
|
chartDataObj = {
|
|||
|
|
label : 'csv'+parseInt(fileIndex),
|
|||
|
|
//backgroundColor: backgroundColor,
|
|||
|
|
backgroundColor : 'rgba(0,0,0,0.0)',
|
|||
|
|
borderColor: borderColor,
|
|||
|
|
pointBorderColor: pointBorderColor,
|
|||
|
|
pointHoverBackgroundColor: pointBorderColor,
|
|||
|
|
pointHoverBorderColor: pointBorderColor,
|
|||
|
|
pointHoverBackgroundColor: pointBorderColor,
|
|||
|
|
pointBorderWidth:1,
|
|||
|
|
data : paramValue_jArr_Y
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//图表数据集
|
|||
|
|
chartDataSets.push(chartDataObj);
|
|||
|
|
console.log('获取某个图表数据集成功');
|
|||
|
|
}
|
|||
|
|
if(hasCustomerXField&&(paramName_k_x_min<paramName_k_x_max)){
|
|||
|
|
paramValue_jArr_X = paramValue_jArr_X_k_cus;
|
|||
|
|
}
|
|||
|
|
//图表数据
|
|||
|
|
var showchartdata = {
|
|||
|
|
labels : paramValue_jArr_X,
|
|||
|
|
datasets : chartDataSets
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//只勾选一个参数,只有一个图表
|
|||
|
|
if(k==0){
|
|||
|
|
|
|||
|
|
//画图表-生成图标图形------------------------------
|
|||
|
|
if(hasCustomerYField&&(paramName_k_y_min<paramName_k_y_max)){//该参数x轴范围已经被自定义过
|
|||
|
|
myLineChart = new Chart(ctx, {
|
|||
|
|
type: 'line',
|
|||
|
|
data: showchartdata,
|
|||
|
|
options: {
|
|||
|
|
scales: {
|
|||
|
|
yAxes: [{
|
|||
|
|
id: 'customer_y_ID'+k,
|
|||
|
|
type: 'linear',
|
|||
|
|
position: 'left',
|
|||
|
|
ticks: {
|
|||
|
|
max: parseInt(paramName_k_y_max),
|
|||
|
|
min: parseInt(paramName_k_y_min)
|
|||
|
|
}
|
|||
|
|
}]
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
legend: {
|
|||
|
|
display: false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
}else{
|
|||
|
|
myLineChart = new Chart(ctx, {
|
|||
|
|
type: 'line',
|
|||
|
|
data: showchartdata,
|
|||
|
|
options : {
|
|||
|
|
legend: {
|
|||
|
|
display: false
|
|||
|
|
}
|
|||
|
|
}//'top',
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
console.log('绘制第一个图表成功');
|
|||
|
|
//画图表-结束------------------------------
|
|||
|
|
}else{
|
|||
|
|
//画图表-生成图标图形------------------------------
|
|||
|
|
if(hasCustomerYField&&(paramName_k_y_min<paramName_k_y_max)){//该参数x轴范围已经被自定义过
|
|||
|
|
myLineChartk = new Chart(ctxk, {
|
|||
|
|
type: 'line',
|
|||
|
|
data: showchartdata,
|
|||
|
|
options: {
|
|||
|
|
scales: {
|
|||
|
|
yAxes: [{
|
|||
|
|
id: 'customer_y_ID'+k,
|
|||
|
|
type: 'linear',
|
|||
|
|
position: 'left',
|
|||
|
|
ticks: {
|
|||
|
|
max: parseInt(paramName_k_y_max),
|
|||
|
|
min: parseInt(paramName_k_y_min)
|
|||
|
|
}
|
|||
|
|
}]
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
legend: {
|
|||
|
|
display: false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
console.log('绘制自定义x轴范围,某个图表成功');
|
|||
|
|
}else{
|
|||
|
|
myLineChartk = new Chart(ctxk, {
|
|||
|
|
type: 'line',
|
|||
|
|
data: showchartdata,
|
|||
|
|
options : {
|
|||
|
|
legend: {
|
|||
|
|
display: false
|
|||
|
|
}
|
|||
|
|
}//'top',
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
console.log('绘制某个图表成功');
|
|||
|
|
}
|
|||
|
|
myLineChartArr.push(myLineChartk);
|
|||
|
|
//画图表-结束------------------------------
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
function getNewresult_paramsArr_data(result_paramsArr_data,filesNameStr,allClickFlag){
|
|||
|
|
var result_paramsArr_dataNew = [];
|
|||
|
|
var filesNameArr = filesNameStr.split(",");
|
|||
|
|
var result_paramsArr_dataLen = result_paramsArr_data.length;
|
|||
|
|
for(var k=0;k<result_paramsArr_dataLen;k++){
|
|||
|
|
var result_params_data = result_paramsArr_data[k];
|
|||
|
|
var req_param_data = result_params_data.req_param_data;
|
|||
|
|
var paramAllData = req_param_data.paramAllData;
|
|||
|
|
var result_params_dataNew;
|
|||
|
|
var req_param_dataNew;
|
|||
|
|
var paramAllDataNew=[];
|
|||
|
|
for(var i=0;i<filesNameArr.length;i++){
|
|||
|
|
for(var j=0;j<paramAllData.length;j++){
|
|||
|
|
var paramObj = paramAllData[j];
|
|||
|
|
var paramName = paramObj.paramName;
|
|||
|
|
//一个csv的计算后的数据
|
|||
|
|
var fileName = paramObj.fileName;
|
|||
|
|
if(filesNameArr[i]==fileName){
|
|||
|
|
paramAllDataNew.push(paramObj);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
req_param_dataNew = {"paramAllData":paramAllDataNew,"keyPointName":req_param_data.keyPointName,"paramName":req_param_data.paramName,"param_X_Length":req_param_data.param_X_Length,"param_from":req_param_data.param_from,"param_to":req_param_data.param_to};
|
|||
|
|
result_params_dataNew = {"req_param_data":req_param_dataNew}
|
|||
|
|
result_paramsArr_dataNew.push(result_params_dataNew);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return result_paramsArr_dataNew;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//根据自定义x轴的范围获取指定数量的y轴数据
|
|||
|
|
function get_Y_data_k_By_customer_X_Field(paramName_k_x_min,paramName_k_x_max,paramAllData){
|
|||
|
|
var paramAllDataNew=[];
|
|||
|
|
for(var j=0;j<paramAllData.length;j++){
|
|||
|
|
var paramObj = paramAllData[j];
|
|||
|
|
var paramName = paramObj.paramName;
|
|||
|
|
var paramValue = paramObj.paramValue;
|
|||
|
|
paramValueArr = paramValue.split(";");
|
|||
|
|
var paramValueNew = '';
|
|||
|
|
for(var m=paramName_k_x_min;m<paramName_k_x_max;m++){
|
|||
|
|
paramValueNew=paramValueNew+paramValueArr[m]+";";
|
|||
|
|
}
|
|||
|
|
paramValueNew = paramValueNew.substring(0, paramValueNew.length-1);
|
|||
|
|
paramObjNew = {"keyPointName":paramObj.keyPointName,"fileName":paramObj.fileName,"paramName":paramObj.paramName,"paramValue":paramValueNew};
|
|||
|
|
paramAllDataNew.push(paramObjNew);
|
|||
|
|
}
|
|||
|
|
return paramAllDataNew;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//暂时不使用该函数--------------
|
|||
|
|
//生成自定义的x轴数据,选择过的参数
|
|||
|
|
var customer_x_field_valuesArr = [];
|
|||
|
|
//是否有参数被自定义过x轴范围,只要有一个,就为true
|
|||
|
|
var isContainCusXFieldsTag = false;
|
|||
|
|
//获取每个参数的自定义x轴范围和显示的y轴数据
|
|||
|
|
function get_customer_x_field_k_values(paramName_k){
|
|||
|
|
var paramName_k_x_min=0;
|
|||
|
|
var paramName_k_x_max=0;
|
|||
|
|
var hasCustomerXField = false;
|
|||
|
|
for(var i=0;i<customer_x_field.length;i++){
|
|||
|
|
var customer_x_fieldObj = customer_x_field[i];
|
|||
|
|
if(paramName_k==customer_x_fieldObj.set_paramName){
|
|||
|
|
paramName_k_x_min = customer_x_fieldObj.x_minValue;
|
|||
|
|
paramName_k_x_max = customer_x_fieldObj.x_maxValue;
|
|||
|
|
hasCustomerXField=true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//如果该参数没有被自定义过x轴范围,则不改变什么,如果有,则同时改变y轴要显示的数据,并重新绘图
|
|||
|
|
//只要有一个参数被自定义过x轴范围,就要重新绘图,所以,只要有一个参数被自定义过,返回false,则continue,执行下一个参数,继续判断下一个参数是否也被自定义过x轴范围,获取该x轴范围
|
|||
|
|
if(hasCustomerXField){
|
|||
|
|
//生成自定义的x轴数据
|
|||
|
|
paramValue_jArr_X_k_cus = [];
|
|||
|
|
for(var i=paramName_k_x_min;i<paramName_k_x_max;i++){
|
|||
|
|
paramValue_jArr_X_k_cus.push(i);
|
|||
|
|
}
|
|||
|
|
customer_x_field_k_values = {"paramName_k":paramName_k,"paramValue_jArr_X_k_cus":paramValue_jArr_X_k_cus,"paramName_k_x_min":paramName_k_x_min,"paramName_k_x_max":paramName_k_x_max};
|
|||
|
|
customer_x_field_valuesArr.push(customer_x_field_k_values);
|
|||
|
|
isContainCusXFieldsTag = true;
|
|||
|
|
//如果返回isContainCusXFieldsTag = true,则continue,执行下一个参数,继续判断下一个参数是否也被自定义过x轴范围
|
|||
|
|
}
|
|||
|
|
//如果返回isContainCusXFieldsTag = false,则不改变什么
|
|||
|
|
|
|||
|
|
}
|