RuoYi/infosouth-admin/target/classes/static/oneself/chartjs/customer_utils.js

350 lines
13 KiB
JavaScript
Raw Normal View History

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则不改变什么
}