This repository has been archived on 2026-06-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
EDT/admin/js/webdatarocks/webdatarocks.highcharts.js
wsh5485 7e47ce238b chore: 添加多个图片和资源文件
添加了管理后台所需的图片资源、Excel文件、安装程序以及设计相关的图片文件
2025-06-15 13:04:37 +08:00

533 lines
18 KiB
JavaScript

/**
* WebDataRocks Reporting v1.3.3 (http://www.webdatarocks.com/)
* Copyright 2020 WebDataRocks. All rights reserved.
*/
(function () {
WebDataRocksHighcharts = {};
WebDataRocksHighcharts.getData = function (options, callbackHandler, updateHandler) {
var _options = {
type: options.type,
xAxisType: (options.xAxisType == "datetime") ? options.xAxisType : "",
valuesOnly: (options.valuesOnly != undefined && options.valuesOnly == true) ? true : false,
withDrilldown: (options.withDrilldown != undefined && options.withDrilldown == true) ? true : false
}
//define slice to select the data you would like to show (different from data that webdatarocks instance is showing)
//leave it undefined to get the data that webdatarocks instance is showing
var slice = options.slice;
//in case WebDataRocksHighcharts does not include the type of chart you need
//or you need to preprocess the data in a different way
//please use prepareDataFunction
var _prepareDataFunction = options.prepareDataFunction;
var _updateHandler;
if (updateHandler != null) {
_updateHandler = function (data) {
if (_prepareDataFunction != undefined) {
updateHandler(_prepareDataFunction(data, _options), data);
} else {
_options.withDrilldown = options.withDrilldown && data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0; //not enough data
updateHandler(prepareData(data, _options), data);
}
};
}
this.instance.getData({
slice: slice
}, function (data) {
if (_prepareDataFunction != undefined) {
callbackHandler(_prepareDataFunction(data, _options), data);
} else {
_options.withDrilldown = options.withDrilldown && data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0; //not enough data
callbackHandler(prepareData(data, _options), data);
}
}, _updateHandler
);
}
WebDataRocksHighcharts.getAxisFormat = function (format) {
return getFormatedString("value", format);
}
WebDataRocksHighcharts.getPointXFormat = function (format) {
return getFormatedString("point.x", format);
}
WebDataRocksHighcharts.getPointYFormat = function (format) {
return getFormatedString("point.y", format);
}
WebDataRocksHighcharts.getPointZFormat = function (format) {
return getFormatedString("point.z", format);
}
function getFormatedString(val, format) {
var str = val;
if (format == null) return str;
var thousandsSeparator = (format["thousandsSeparator"] != undefined && format["thousandsSeparator"] != "");
var decimalPlaces = (format["decimalPlaces"] != undefined && format["decimalPlaces"] != -1);
if (thousandsSeparator || decimalPlaces) {
str = thousandsSeparator
? str + ":,." + (decimalPlaces ? format["decimalPlaces"] : "") + "f"
: str + ":." + (decimalPlaces ? format["decimalPlaces"] : "") + "f";
}
str = "{" + str + "}";
if (format["currencySymbol"] != undefined && format["currencySymbol"] != "") {
str = (format["currencySymbolAlign"] == "left")
? format["currencySymbol"] + str
: str + format["currencySymbol"];
}
return str;
}
function prepareData(data, options) {
switch (options.type) {
case "area":
case "areaspline":
case "bar":
case "column":
case "waterfall":
return prepareDataWithCategories(data, options);
case "funnel":
case "pie":
case "pyramid":
return prepareDataForPie(data, options);
case "arearange":
case "areasplinerange":
case "columnrange":
case "errorbar":
return prepareDataRange(data, options);
case "bubble":
return prepareDataForBubble(data, options);
case "scatter":
options.valuesOnly = true;
case "polygon":
case "spline":
default:
//line chart
if (options.valuesOnly == true) {
return prepareDataWithNumbers(data, options);
} else {
return prepareDataWithCategories(data, options);
}
//not included
//case "boxplot":
//case "gauge":
//case "solidgauge":
//case "heatmap":
//case "treemap":
}
}
function prepareDataWithCategories(data, options) {
var output = prepareChartInfo(data, options);
if (options.withDrilldown) {
prepareSeriesWithDrilldown(output, data);
} else {
if (options.xAxisType == "datetime") {
prepareSeriesDatetime(output, data);
} else {
prepareSeries(output, data);
}
}
return output;
}
function prepareDataForPie(data, options) {
var output = prepareChartInfo(data, options);
if (options.withDrilldown) {
prepareSeriesWithDrilldown(output, data);
} else {
prepareSeriesWithY(output, data);
}
return output;
}
function prepareDataWithNumbers(data, options) {
var output = prepareChartInfo(data, options);
prepareSeriesXYNumeric(output, data);
return output;
}
function prepareDataRange(data, options) {
var output = prepareChartInfo(data, options);
prepareSeriesRange(output, data);
return output;
}
function prepareDataForBubble(data, options) {
var output = prepareChartInfo(data, options);
if (options.valuesOnly == true) {
prepareSeriesXYZNumeric(output, data);
} else {
prepareSeriesXYZ(output, data);
}
return output;
}
function prepareChartInfo(data, options) {
var output = {
title: {
text: data.meta.caption
}
};
if (options.type != undefined) output.chart = { type: options.type };
if (options.valuesOnly == true) {
output.xAxis = {
title: {
text: data.meta.v0Name
}
};
output.yAxis = {
title: {
text: (data.meta.v1Name != undefined) ? data.meta.v1Name : ""
}
};
} else {
output.xAxis = {
title: {
text: (data.meta.r0Name != undefined) ? data.meta.r0Name : ((data.meta.c0Name != undefined) ? data.meta.c0Name : "")
}
};
output.yAxis = [];
var yAxesAmount = (options.valuesOnly == true || options.withDrilldown == true
|| options.type == "arearange" || options.type == "areasplinerange"
|| options.type == "columnrange" || options.type == "errorbar"
|| options.type == "bubble")
? 1 : data.meta.vAmount;
for (var i = 0; i < yAxesAmount; i++) {
output.yAxis.push({
title: {
text: data.meta["v" + i + "Name"]
},
opposite: (i > 0)
});
}
}
if (options.xAxisType == "datetime") {
output.xAxis.type = "datetime";
}
if (options.withDrilldown) {
output.xAxis.type = "category";
}
return output;
}
function prepareSeries(output, data) {
var categories = [];
var series = {};
var _yName;
var _seriesName;
var value;
var _seriesBasedOnC = false;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
if (record["c0"] == undefined || record["c1"] != undefined) continue;
_seriesBasedOnC = true;
} else if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined) continue;
if (categories.indexOf(record["c0"]) == -1) categories.push(record["c0"]);
}
for (var j = 0; j < data.meta.vAmount; j++) {
_yName = data.meta["v" + j + "Name"];
_seriesName = _seriesBasedOnC ? record["c0"] : _yName;
if (series[_yName] == undefined) {
series[_yName] = {};
}
if (series[_yName][_seriesName] == undefined) {
series[_yName][_seriesName] = [];
}
value = isNaN(record["v" + j]) ? null : record["v" + j];
series[_yName][_seriesName].push(value);
}
}
output.xAxis.categories = categories;
output.series = [];
var yn = 0;
for (var yAxis in series) {
var _series = series[yAxis];
for (var seriesname in _series) {
var s = {
name: (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0 && data.meta["vAmount"] > 1)
? yAxis + " - " + seriesname
: seriesname,
data: _series[seriesname]
};
if (output.yAxis.length > 1) {
s.yAxis = yn;
}
output.series.push(s);
}
if (output.yAxis.length > 1) {
yn++;
}
}
}
function prepareSeriesDatetime(output, data) {
var categories = [];
var series = {};
var _yName;
var _seriesName;
var value;
var _seriesBasedOnC = false;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
if (record["c0"] == undefined || record["c1"] != undefined) continue;
_seriesBasedOnC = true;
} else if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined) continue;
if (categories.indexOf(record["c0"]) == -1) categories.push(record["c0"]);
}
for (var j = 0; j < data.meta.vAmount; j++) {
_yName = data.meta["v" + j + "Name"];
_seriesName = _seriesBasedOnC ? record["c0"] : _yName;
if (series[_yName] == undefined) {
series[_yName] = {};
}
if (series[_yName][_seriesName] == undefined) {
series[_yName][_seriesName] = [];
}
value = isNaN(record["v" + j]) ? null : record["v" + j];
series[_yName][_seriesName].push([(record["r0"] != undefined ? record["r0"] : record["c0"]), value]);
}
}
//output.xAxis.categories = categories;
output.series = [];
var yn = 0;
for (var yAxis in series) {
var _series = series[yAxis];
for (var seriesname in _series) {
var s = {
name: (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0 && data.meta["vAmount"] > 1)
? yAxis + " - " + seriesname
: seriesname,
data: _series[seriesname]
};
if (output.yAxis.length > 1) {
s.yAxis = yn;
}
output.series.push(s);
}
if (output.yAxis.length > 1) {
yn++;
}
}
}
function prepareSeriesWithY(output, data) {
var series = {};
var value;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined) continue;
if (series[data.meta.v0Name] == undefined) series[data.meta.v0Name] = [];
value = isNaN(record["v0"]) ? null : record["v0"];
series[data.meta.v0Name].push({ name: record["r0"], y: value });
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined) continue;
if (series[data.meta.v0Name] == undefined) series[data.meta.v0Name] = [];
value = isNaN(record["v0"]) ? null : record["v0"];
series[data.meta.v0Name].push({ name: record["c0"], y: value });
}
}
output.series = [];
for (var seriesname in series) {
output.series.push({ "name": seriesname, "data": series[seriesname] });
}
}
function prepareSeriesXYNumeric(output, data) {
output.series = [];
if (data.meta.v1Name == undefined) return; //not enough data
var series = {};
var xValue;
var yValue;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] == undefined || record["c1"] != undefined) continue;
if (series[record["c0"]] == undefined) series[record["c0"]] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
series[record["c0"]].push({ name: record["r0"], x: xValue, y: yValue });
} else if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (series[data.meta.v1Name] == undefined) series[data.meta.v1Name] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
series[data.meta.v1Name].push({ name: record["r0"], x: xValue, y: yValue });
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined) continue;
if (series[data.meta.v1Name] == undefined) series[data.meta.v1Name] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
series[data.meta.v1Name].push({ name: record["c0"], x: xValue, y: yValue });
}
}
for (var seriesname in series) {
output.series.push({ "name": seriesname, "data": series[seriesname] });
}
}
function prepareSeriesXYZNumeric(output, data) {
output.series = [];
if (data.meta.v2Name == undefined) return; //not enough data
var series = {};
var xValue;
var yValue;
var zValue;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] == undefined || record["c1"] != undefined) continue;
if (series[record["c0"]] == undefined) series[record["c0"]] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
zValue = isNaN(record["v2"]) ? null : record["v2"];
series[record["c0"]].push({ name: record["r0"], x: xValue, y: yValue, z: zValue });
} else if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined) continue;
if (series[data.meta.v2Name] == undefined) series[data.meta.v2Name] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
zValue = isNaN(record["v2"]) ? null : record["v2"];
series[data.meta.v2Name].push({ name: record["r0"], x: xValue, y: yValue, z: zValue });
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined) continue;
if (series[data.meta.v2Name] == undefined) series[data.meta.v2Name] = [];
xValue = isNaN(record["v0"]) ? null : record["v0"];
yValue = isNaN(record["v1"]) ? null : record["v1"];
zValue = isNaN(record["v2"]) ? null : record["v2"];
series[data.meta.v2Name].push({ name: record["c0"], x: xValue, y: yValue, z: zValue });
}
}
for (var seriesname in series) {
output.series.push({ "name": seriesname, "data": series[seriesname] });
}
}
function prepareSeriesXYZ(output, data) {
output.series = [];
if (data.meta.v1Name == undefined) return; //not enough data
var categories = [];
var series = {};
var yValue;
var zValue;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
if (record["c0"] == undefined || record["c1"] != undefined) continue;
if (series[record["c0"]] == undefined) series[record["c0"]] = [];
yValue = isNaN(record["v0"]) ? null : record["v0"];
zValue = isNaN(record["v1"]) ? null : record["v1"];
series[record["c0"]].push([record["r0"], yValue, zValue]);
} else if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined) continue;
if (series[data.meta.v1Name] == undefined) series[data.meta.v1Name] = [];
yValue = isNaN(record["v0"]) ? null : record["v0"];
zValue = isNaN(record["v1"]) ? null : record["v1"];
series[data.meta.v1Name].push([record["r0"], yValue, zValue]);
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined) continue;
if (series[data.meta.v1Name] == undefined) series[data.meta.v1Name] = [];
yValue = isNaN(record["v0"]) ? null : record["v0"];
zValue = isNaN(record["v1"]) ? null : record["v1"];
series[data.meta.v1Name].push([record["c0"], yValue, zValue]);
}
}
output.xAxis.categories = categories;
for (var seriesname in series) {
output.series.push({ "name": seriesname, "data": series[seriesname] });
}
}
function prepareSeriesWithDrilldown(output, data) {//can drill be for more than one level?
var mainSeries = {};
var series = {};
var value;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0 && data.meta["cAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined) continue;
if (mainSeries[data.meta["r0Name"]] == undefined) mainSeries[data.meta["r0Name"]] = [];
if (record["c0"] == undefined) {
value = isNaN(record["v0"]) ? null : record["v0"];
mainSeries[data.meta["r0Name"]].push({ name: record["r0"], y: value, drilldown: record["r0"] });
}
if (record["c0"] == undefined || record["c1"] != undefined) continue;
if (series[record["r0"]] == undefined) series[record["r0"]] = [];
value = isNaN(record["v0"]) ? null : record["v0"];
series[record["r0"]].push([record["c0"], value]);
}
}
output.series = [];
for (var mainseriesname in mainSeries) {
output.series.push({ "name": mainseriesname, colorByPoint: true, "data": mainSeries[mainseriesname] });
}
output.drilldown = {};
output.drilldown.series = [];
for (var seriesname in series) {
output.drilldown.series.push({ "name": seriesname, "id": seriesname, "data": series[seriesname] });
}
}
function prepareSeriesRange(output, data) {
var categories = [];
var series = {};
var low;
var high;
for (var i = 0; i < data.data.length; i++) {
var record = data.data[i];
if (data.meta["rAmount"] > 0) {
if (record["r0"] == undefined || record["r1"] != undefined || record["c0"] != undefined) continue;
if (categories.indexOf(record["r0"]) == -1) categories.push(record["r0"]);
} else if (data.meta["cAmount"] > 0) {
if (record["c0"] == undefined || record["c1"] != undefined || record["r0"] != undefined) continue;
if (categories.indexOf(record["c0"]) == -1) categories.push(record["c0"]);
}
if (series[data.meta.v0Name] == undefined) series[data.meta.v0Name] = [];
low = isNaN(record["v0"]) ? null : record["v0"];
high = (data.meta.v1Name != undefined)
? isNaN(record["v1"]) ? null : record["v1"]
: low;
series[data.meta.v0Name].push([low, high]);
}
output.xAxis.categories = categories;
output.series = [];
for (var seriesname in series) {
output.series.push({ "name": seriesname, "data": series[seriesname] });
}
}
})();