function RightIndexOf(n, v) {
var idx = n.toString().indexOf(v);
if (idx > -1) {
return n.toString().length - idx;
}
else {
return 0;
}
}
function __sanitize_keys(value) {
value = Object.keys(value).reduce(function (a, key) {
a[key.replace(/\s+/g, "_")] = value[key];
return a;
}, {});
return value;
}
function __resolveWhen(fn) {
return new Promise(function (res, rej) {
var schedule = function schedule(work) {
return setTimeout(work, 1);
};
var runFn = function runFn() {
return fn() ? res(fn()) : schedule(runFn);
};
schedule(function () {
runFn();
});
});
}
function GenGauge(valX, graph, datasrc, divG, w, min, max, blabels, bticks, ranges, gstyle, tckints, grep, bwidth, mtype, mcolor, lsize) {
__resolveWhen(function () {
return repdata && repdata.length
}).then(function () {
if (lsize === 0 || lsize === undefined) {
lsize = 15;
}
if (mcolor === "" || mcolor == "transparent" || mcolor === undefined) {
mcolor = "#000000";
}
if (mtype === "" || mtype === undefined) {
mtype = "triangle";
}
if (bwidth === 0 || bwidth === undefined) {
bwidth = 30;
}
var nw = $('#' + divG).css('width').replace('px', '');
if (nw > w) {
w = nw;
}
try {
calldata[divG.replace('gauge', '')] = valX + '·' + graph + '·' + datasrc + '·' + divG + '·' + w + '·' + min + '·' + max + '·' + blabels + '·' + bticks + '·' + ranges + '·' + gstyle + '·' + tckints + '·' + grep;
} catch (err) { }
var gval = 0;
var intVal = 10;
var tval = "";
if (valX != '') {
var decs = 0;
var dat = repdata[datasrc];
if (dat === undefined) {
dat = repdata;
}
$.map(dat, function (value, index) {
value = __sanitize_keys(value);
if (value.length > 0 || Object.keys(value).length > 0) {
if (value[valX].toString().indexOf('%') >= 0 ||
value[valX].toString().indexOf('$') >= 0) {
gval += parseFloat(value[valX].replace('%', '').replace('$', ''));
}
else {
if (isNumeric(value[valX])) {
gval += parseFloat(value[valX]);
var pos = RightIndexOf(value[valX], '.');
if (pos > decs) { decs = pos; }
}
}
}
});
gval = parseFloat(parseFloat(gval.toString()).toFixed(decs));
}
var bAnimate = true;
if (max - min > 100000) {
bAnimate = false;
}
intVal = Math.floor((max - min) / tckints);
var fType = "fullCircle";
w = w * .7;
var height = w;
if (gstyle == "half") {
sta = 180;
swa = 180;
fType = "halfCircle";
}
else {
sta = 122;
swa = 296;
}
var actualgval = gval;
if (gval > max) {
gval = max;
}
$ = $.noConflict();
$('#' + divG).ejCircularGauge({
load: "loadGaugeTheme",
width: w,
height: height,
value: gval,
backgroundColor: "transparent",
drawCustomLabel: function (args) { args.style.textValue = actualgval.toString(); },
enableAnimation: bAnimate,
frame: {
frameType: fType
},
scales: [{
startAngle: sta,
sweepAngle: swa,
radius: w * .50,
minimum: min,
maximum: max,
majorIntervalValue: intVal,
showRanges: true,
showLabels: blabels,
labels: [{
font: { size: lsize + "px", fontFamily: "Arial", fontStyle: "Bold" },
distanceFromScale: -(lsize / 5)
}],
ticks: [{ height: 0, width: 0 }],
ranges: RangeBuilder(ranges, bwidth),
pointers: [{
type: "marker", markerType: mtype, width: bwidth, length: bwidth / 2,
distanceFromScale: 10,
backgroundColor: mcolor,
border: { color: mcolor }
}],
customLabels: [
{ value: "", font: { size: (w / 8) + "px", fontFamily: "Arial", fontStyle: "Bold" }, position: { x: w / 2, y: height / 2 }, color: $("body").css("color") }
]
}],
});
var thold = $('#' + divG).parent().find('.widgettitle');
var title = $(thold).html();
$(thold).html('');
var pTop = (w * .65) / 5;
var pUp = (w * .65) / 8;
if (fType != "halfCircle") {
pTop = 10;
}
var shift = (pTop + pUp);
if (fType == "halfCircle") {
shift *= 1.8;
}
if (window.location.href.indexOf('profile.aspx') > -1) {
$('#' + divG).append('
'); //take title out for gauge AEL 5/16/2024
}
else {
$('#' + divG).append('' + title + '
');
}
$('#' + divG).find('canvas').css('paddingTop', pTop + 'px');
if (grep != "") {
$('#' + divG).find('canvas').attr('onclick', 'openReport(' + grep + ')');
$('#' + divG).find('canvas').addClass('point');
}
var cudiv = $('#' + divG).find('canvas').parent().find('div');
if (cudiv.length > 0) {
if ($(cudiv).html() == 'undefined') {
$(cudiv).html('');
}
}
$('#' + divG).css('textAlign', 'center');
});
}
function RangeBuilder(rgs, bwidth) {
var rArr = new Array();
var arrRgs = rgs.split(',');
if (rgs.indexOf(',') > -1) {
for (var i = 0; i < arrRgs.length; i++) {
if (arrRgs[i] != '') {
var argRng = arrRgs[i].split(' #')[0];
var argCol = arrRgs[i].split(' #')[1];
if (argCol == null) { argCol = '000000'; }
rArr[i] = {
startValue: argRng.split(' - ')[0],
endValue: argRng.split(' - ')[1],
backgroundColor: "#" + argCol,
border: {
color: "#" + argCol
},
size: bwidth
}
}
}
}
return rArr;
}
function GenGraphs(arrY, valX, graph, blegend, bvalues, datasrc, divG, w, bTips) {
var nw = $('#' + divG).css('width').replace('px', '');
if (nw > w) {
w = nw;
}
try {
calldata[divG.replace('graph', '')] = arrY + '·' + valX + '·' + graph + '·' + blegend + '·' + bvalues + '·' + datasrc + '·' + divG + '·' + w + '·' + bTips;
} catch (err) { }
var ys = arrY;
var wfcol = '#000000';
if ($('.hidWidFntCol').length > 0) {
wfcol = $('.hidWidFntCol').val();
}
try {
if (graph == "wordcloud") {
var dat = repdata[datasrc];
if (dat === undefined) {
dat = repdata;
}
var arr = $.extend(true, [], dat);
arr = formatwc(ys, arr, graph);
$('#' + divG).jQCloud(arr, {
width: w,
height: w * .7,
delayedMode: true,
removeOverflowing: false,
});
} else {
$('#' + divG).ejChart({
series: SeriesBuilder(ys.length, arrY, graph, bvalues, valX, datasrc, bTips, graph),
palette: sercol,
crosshair: { visible: (graph.indexOf("ine") > -1 || graph.indexOf("area") > -1) && bTips, type: 'trackball' },
commonSeriesOptions: {
type: graph,
labelPosition: 'inside',
},
text: "",
needResize: true,
canResize: true,
primaryXAxis: {
labelIntersectAction: "trim",
font: { color: wfcol }, majorGridLines: { color: wfcol }
},
primaryYAxis: { font: { color: wfcol }, majorGridLines: { color: wfcol } },
legend: {
visible: blegend,
enableScrollbar: false
},
zooming:
{
enable: true,
},
size: { width: (w - 20).toString(), height: (w * .65).toString() }
});
}
}
catch (err) {
console.log(err);
}
}
function GenGraphsFilter(arrY, valX, graph, blegend, bvalues, datasrc, divG, w, bTips) {
var ys = arrY;
var wfcol = '#000000';
if ($('.hidWidFntCol').length > 0) {
wfcol = $('.hidWidFntCol').val();
}
$('#' + divG).ejChart("destroy");
$('#' + divG).ejChart({
series: SeriesBuilderFilter(ys.length, arrY, graph, bvalues, valX, datasrc, bTips),
palette: sercol,
crosshair: { visible: (graph.indexOf("ine") > -1 || graph.indexOf("area") > -1) && bTips, type: 'trackball' },
commonSeriesOptions: {
type: graph,
labelPosition: 'inside',
},
text: "",
needResize: true,
canResize: true,
primaryXAxis: {
labelIntersectAction: "trim",
font: { color: wfcol }, majorGridLines: { color: wfcol }
},
primaryYAxis: { font: { color: wfcol }, majorGridLines: { color: wfcol } },
legend: {
visible: blegend,
enableScrollbar: false
},
zooming:
{
enable: true,
},
size: { width: (w - 20).toString(), height: (w * .65).toString() }
});
}
function SeriesBuilder(n, arrY, graph, bvalues, valX, datasrc, bTips, type, filt) {
var arr = new Array();
var ys = arrY;
var mygs = false;
if (type != null) {
if (type.indexOf('hilo') > -1 ||
type.indexOf('candle') > -1 ||
type.indexOf('bubble') > -1 ||
type.indexOf('range') > -1) {
mygs = true;
}
}
var dat = repdata[datasrc];
if (dat === undefined) {
dat = repdata;
}
if (filt) {
dat = filtdata[datasrc];
}
if (graph.indexOf('stacking') > -1) {
var json = dat;
var sers = [];
for (var key in json[0]) {
if (!sers.indexOf(key) > -1 && key != arrY[0] && key != valX) {
sers.push(key);
}
}
var stack = [];
for (var i in json) {
var sss = json[i][sers[0]];
if (stack.indexOf(sss) == -1) {
stack.push(sss);
}
}
var arrSer = [];
for (var t in stack.sort()) {
var jpc = json.filter(function (item) {
return item[sers[0]] == stack[t];
});
arrSer.push({
name: stack[t],
marker: {
visible: bvalues,
dataLabel: {
visible: bvalues,
font: { color: "black", size: "15px" }
}
},
tooltip: { visible: bTips },
dataSource: jpc,
explode: false,
xName: valX,
yName: [ys[0]]
});
}
return arrSer;
}
if (mygs) {
arr[0] = {};
arr[0].name = valX;
arr[0].tooltip = { visible: bTips, format: formatTT(type) };
var ar = $.extend(true, [], dat);
ar = format(ys, ar, type, valX);
arr[0].points = ar;
} else {
var ex = bTips;
if (type == "funnel" || type == "pyramid") {
ex = false;
}
for (var i = 0; i < n; i++) {
arr[i] = {
name: ys[i],
marker: {
visible: bvalues,
dataLabel: {
visible: bvalues,
font: { color: "black", size: "15px" }
}
},
tooltip: { visible: bTips },
dataSource: dat,
explode: ex,
xName: valX,
yName: [ys[i]]
}
}
}
return arr;
}
function SeriesBuilderFilter(n, arrY, graph, bvalues, valX, datasrc, bTips) {
var arr = new Array();
var ys = arrY;
for (var i = 0; i < n; i++) {
arr[i] = {
name: ys[i],
marker: {
visible: bvalues,
dataLabel: {
visible: bvalues,
font: { color: "black", size: "15px" }
}
},
tooltip: { visible: bTips },
dataSource: filtdata[datasrc],
xName: valX,
yName: [ys[i]]
}
}
return arr;
}
function formatTT(t) {
var s = null;
if (t == "bubble") {
s = "x: #point.x#
y: #point.y#
size: #point.size#";
} else if (t.indexOf('range') > -1) {
s = "x: #point.x#
high: #point.high#
low: #point.low#";
} else if (t == "hilo") {
s = "x: #point.x#
high: #point.high#
low: #point.low#";
} else if (t == "hiloopenclose" || t == "candle") {
s = "x: #point.x#
high: #point.high#
low: #point.low#
open: #point.open#
close: #point.close#";
}
return s;
}
function format(ys, arr, type, valX) {
var names = ["high", "low", "open", "close"];
if (type == "bubble") {
names = ["y", "size"];
} else if (type == "rangecolumn" || type == "rangearea") {
names = ["low", "high"];
} else if (type == "wordcloud") {
names = ["text", "url", "frequency"];
}
try {
for (var i = 0; i < arr.length; i++) {
if ("x" !== valX && type != "wordcloud") {
Object.defineProperty(arr[i], "x",
Object.getOwnPropertyDescriptor(arr[i], valX));
delete arr[i][valX];
}
for (var k = 0; k < ys.length; k++) {
if (names[k] !== ys[k]) {
Object.defineProperty(arr[i], names[k],
Object.getOwnPropertyDescriptor(arr[i], ys[k]));
delete arr[i][ys[k]];
}
}
}
}
catch (err) {
arr = null;
}
return arr;
}
function formatwc(ys, arr, type) {
try {
for (var i = 0; i < arr.length; i++) {
if ("text" !== ys[0]) {
Object.defineProperty(arr[i], "text",
Object.getOwnPropertyDescriptor(arr[i], ys[0]));
delete arr[i][ys[0]];
}
arr[i].html = {
onclick: "openit(this)",
style: "color: " + sercol[getRandomInt(0, sercol.length - 1)],
url: arr[i][ys[1]]
};
arr[i].link = {
href: "javascript:void(0)"
};
if ("weight" !== ys[2]) {
Object.defineProperty(arr[i], "weight",
Object.getOwnPropertyDescriptor(arr[i], ys[2]));
delete arr[i][ys[2]];
}
}
}
catch (err) {
arr = null;
}
return arr;
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function openit(el) {
window.open($(el).attr("url"));
}
function isNumeric(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}