2016-08-12 08:22:24 +00:00
|
|
|
|
2016-08-13 13:24:57 +00:00
|
|
|
|
|
|
|
var sparklineOptions = {
|
|
|
|
height: 80,//Height of the chart - Defaults to 'auto' (line height of the containing tag)
|
|
|
|
|
|
|
|
chartRangeMin: -1,
|
|
|
|
chartRangeMax: 1,
|
|
|
|
|
|
|
|
type: 'bar',
|
|
|
|
barSpacing: 0,
|
|
|
|
barWidth: 2,
|
|
|
|
barColor: '#00bf5f',
|
|
|
|
negBarColor: '#f22929',
|
2016-08-15 10:57:39 +00:00
|
|
|
zeroColor: '#ffff00',
|
|
|
|
|
2016-08-13 13:24:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
$.getJSON("/sentiment_analysis_getplotdata/",
|
|
|
|
function(data) {
|
|
|
|
//console.log(data);
|
2016-08-13 20:17:11 +00:00
|
|
|
var all_data = [];
|
2016-08-13 13:24:57 +00:00
|
|
|
var plot_data = [];
|
2016-08-13 20:17:11 +00:00
|
|
|
var graph_avg = [];
|
2016-08-13 13:24:57 +00:00
|
|
|
var array_provider = Object.keys(data);
|
|
|
|
var dates_providers = Object.keys(data[array_provider[0]]);
|
|
|
|
var dateStart = parseInt(dates_providers[0]);
|
|
|
|
var oneHour = 60*60;
|
|
|
|
var oneWeek = oneHour*24*7;
|
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
var all_graph_day_sum = 0.0;
|
|
|
|
var all_graph_hour_sum = 0.0;
|
|
|
|
|
2016-08-13 13:24:57 +00:00
|
|
|
for (graphNum=0; graphNum<8; graphNum++) {
|
2016-08-15 10:57:39 +00:00
|
|
|
var max_value = 0.0;
|
2016-08-13 13:24:57 +00:00
|
|
|
var graph_data = [];
|
|
|
|
var spark_data = [];
|
|
|
|
var curr_provider = array_provider[graphNum];
|
2016-08-13 20:17:11 +00:00
|
|
|
var curr_sum = 0.0;
|
|
|
|
var day_sum = 0.0;
|
2016-08-15 10:57:39 +00:00
|
|
|
var hour_sum = 0.0;
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
for(curr_date=dateStart; curr_date<dateStart+oneWeek; curr_date+=oneHour){
|
2016-08-13 13:24:57 +00:00
|
|
|
var data_array = data[curr_provider][curr_date];
|
|
|
|
|
|
|
|
if (data_array.length == 0){
|
|
|
|
graph_data.push({'neg': 0.0, 'neu': 0.0, 'pos': 0.0, 'compoundPos': 0.0, 'compoundNeg': 0.0});
|
|
|
|
spark_data.push(0);
|
2016-08-15 10:57:39 +00:00
|
|
|
} else { //compute avg for a given date for a given graph
|
2016-08-13 13:24:57 +00:00
|
|
|
var compPosAvg = 0;
|
|
|
|
var compNegAvg = 0;
|
|
|
|
var pos = 0;
|
|
|
|
var neg = 0;
|
|
|
|
var neu = 0;
|
|
|
|
|
|
|
|
for(i=0; i<data_array.length; i++){
|
|
|
|
//console.log(data_array[i].replace(/\'/g, '\"'));
|
|
|
|
var curr_data = jQuery.parseJSON(data_array[i].replace(/\'/g, '\"'));
|
|
|
|
compPosAvg += curr_data['compoundPos'];
|
|
|
|
compNegAvg += curr_data['compoundNeg'];
|
|
|
|
pos += curr_data['pos'];
|
|
|
|
neg += curr_data['neg'];
|
|
|
|
neu += curr_data['neu'];
|
|
|
|
}
|
|
|
|
compPosAvg = compPosAvg/data_array.length;
|
|
|
|
compNegAvg = compNegAvg/data_array.length;
|
|
|
|
pos = pos/data_array.length;
|
|
|
|
neg = neg/data_array.length;
|
|
|
|
neu = neu/data_array.length;
|
|
|
|
|
|
|
|
graph_data.push({'neg': neg, 'neu': neu, 'pos': pos, 'compoundPos': compPosAvg, 'compoundNeg': compNegAvg});
|
|
|
|
spark_data.push(pos-neg);
|
2016-08-13 20:17:11 +00:00
|
|
|
curr_sum += (pos-neg);
|
2016-08-15 10:57:39 +00:00
|
|
|
max_value = Math.abs(pos-neg) > max_value ? Math.abs(pos-neg) : max_value;
|
2016-08-13 20:17:11 +00:00
|
|
|
|
|
|
|
if(curr_date >= dateStart+oneWeek-24*oneHour){
|
|
|
|
day_sum += (pos-neg);
|
|
|
|
}
|
2016-08-15 10:57:39 +00:00
|
|
|
if(curr_date >= dateStart+oneWeek-oneHour){
|
|
|
|
hour_sum += (pos-neg);
|
|
|
|
}
|
2016-08-13 20:17:11 +00:00
|
|
|
|
2016-08-13 13:24:57 +00:00
|
|
|
}
|
|
|
|
}
|
2016-08-15 10:57:39 +00:00
|
|
|
all_graph_day_sum += day_sum;
|
|
|
|
all_graph_hour_sum += hour_sum;
|
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
var curr_avg = curr_sum / (oneWeek/oneHour);
|
2016-08-15 10:57:39 +00:00
|
|
|
//var curr_avg = curr_sum / (spark_data.length);
|
|
|
|
graph_avg.push([curr_provider, curr_avg]);
|
2016-08-13 13:24:57 +00:00
|
|
|
plot_data.push(spark_data);
|
2016-08-13 20:17:11 +00:00
|
|
|
all_data.push(graph_data);
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
|
|
|
|
sparklineOptions.chartRangeMax = max_value;
|
|
|
|
sparklineOptions.chartRangeMin = -max_value;
|
2016-08-13 20:17:11 +00:00
|
|
|
// print week
|
2016-08-13 13:24:57 +00:00
|
|
|
var num = graphNum + 1;
|
2016-08-13 20:17:11 +00:00
|
|
|
var placeholder = '.sparkLineStatsWeek' + num;
|
2016-08-13 13:24:57 +00:00
|
|
|
$(placeholder).sparkline(plot_data[graphNum], sparklineOptions);
|
2016-08-15 10:57:39 +00:00
|
|
|
$(placeholder+'t').text(curr_provider);
|
|
|
|
$(placeholder+'s').text(curr_avg.toFixed(5));
|
2016-08-13 13:24:57 +00:00
|
|
|
|
|
|
|
sparklineOptions.barWidth = 7;
|
2016-08-13 20:17:11 +00:00
|
|
|
$(placeholder+'b').sparkline([curr_avg], sparklineOptions);
|
2016-08-13 13:24:57 +00:00
|
|
|
sparklineOptions.barWidth = 2;
|
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
// print today
|
|
|
|
var data_length = plot_data[graphNum].length;
|
|
|
|
var data_today = plot_data[graphNum].slice(data_length-24*2, data_length-24*1);
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
placeholder = '.sparkLineStatsToday' + num;
|
|
|
|
sparklineOptions.barWidth = 14;
|
|
|
|
$(placeholder).sparkline(data_today, sparklineOptions);
|
2016-08-15 10:57:39 +00:00
|
|
|
$(placeholder+'t').text(curr_provider);
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
sparklineOptions.barWidth = 7;
|
|
|
|
$(placeholder+'b').sparkline([day_sum/24], sparklineOptions);
|
|
|
|
sparklineOptions.barWidth = 2;
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-13 20:17:11 +00:00
|
|
|
}//for loop
|
2016-08-13 13:24:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
/* ---------------- Gauge ---------------- */
|
|
|
|
var gaugeOptions = {
|
|
|
|
animateEasing: true,
|
|
|
|
|
|
|
|
elementWidth: 200,
|
|
|
|
elementHeight: 125,
|
|
|
|
|
|
|
|
arcFillStart: 10,
|
|
|
|
arcFillEnd: 12,
|
|
|
|
arcFillTotal: 20,
|
|
|
|
incTot: 1.0,
|
|
|
|
|
|
|
|
arcBgColorLight: 200,
|
|
|
|
arcBgColorSat: 0,
|
|
|
|
arcStrokeFg: 20,
|
|
|
|
arcStrokeBg: 30,
|
|
|
|
|
|
|
|
colorArcFg: '#FF3300',
|
|
|
|
animateSpeed: 1,
|
|
|
|
|
|
|
|
};
|
|
|
|
// Clone object
|
|
|
|
var gaugeOptions2 = jQuery.extend(true, {}, gaugeOptions);
|
|
|
|
var gaugeOptions3 = jQuery.extend(true, {}, gaugeOptions);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gaugeOptions.appendTo = '#gauge_today_last_hour';
|
|
|
|
gaugeOptions.dialLabel = 'Last hour';
|
|
|
|
gaugeOptions.elementId = 'gauge1';
|
|
|
|
gaugeOptions.inc = all_graph_hour_sum / 8;
|
|
|
|
var gauge_today_last_hour = new FlexGauge(gaugeOptions);
|
|
|
|
|
|
|
|
gaugeOptions2.appendTo = '#gauge_today_last_days';
|
|
|
|
gaugeOptions2.dialLabel = 'Today';
|
|
|
|
gaugeOptions2.elementId = 'gauge2';
|
|
|
|
gaugeOptions2.inc = all_graph_day_sum / 8;
|
|
|
|
var gauge_today_last_days = new FlexGauge(gaugeOptions2);
|
|
|
|
|
|
|
|
gaugeOptions3.appendTo = '#gauge_week';
|
|
|
|
gaugeOptions3.dialLabel = 'Week';
|
|
|
|
gaugeOptions3.elementId = 'gauge3';
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
var graph_avg_sum = 0.0;
|
|
|
|
for (i=0; i<graph_avg.length; i++)
|
|
|
|
graph_avg_sum += graph_avg[i][1];
|
2016-08-13 13:24:57 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
gaugeOptions3.inc = graph_avg_sum / graph_avg.length;
|
|
|
|
var gauge_today_last_days = new FlexGauge(gaugeOptions3);
|
2016-08-13 13:24:57 +00:00
|
|
|
|
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
/* --------- Sort providers -------- */
|
2016-08-12 08:22:24 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
graph_avg.sort(function(a, b){return b[1]-a[1]});
|
2016-08-12 08:22:24 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
for (i=1; i<6; i++){
|
|
|
|
$('.worst'+i).text(graph_avg[7-(i-1)][0]);
|
|
|
|
$('.best'+i).text(graph_avg[i-1][0]);
|
|
|
|
}
|
2016-08-12 08:22:24 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
/* ----------- CanvasJS ------------ */
|
2016-08-12 08:22:24 +00:00
|
|
|
|
2016-08-15 10:57:39 +00:00
|
|
|
var gauge_data = graph_data.slice(graph_data.length-24*2, graph_data.length-24*1);
|
|
|
|
var comp_sum_day_pos = 0.0;
|
|
|
|
var comp_sum_day_neg = 0.0;
|
|
|
|
var comp_sum_hour_pos = 0.0;
|
|
|
|
var comp_sum_hour_neg = 0.0;
|
|
|
|
for (i=1; i< gauge_data.length; i++){
|
|
|
|
comp_sum_day_pos += gauge_data[i].compoundPos;
|
|
|
|
comp_sum_day_neg += gauge_data[i].compoundNeg;
|
|
|
|
|
|
|
|
if(i >= 24){
|
|
|
|
comp_sum_hour_pos += gauge_data[i].compoundPos;
|
|
|
|
comp_sum_hour_neg += gauge_data[i].compoundNeg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var options_canvasJS_1 = {
|
|
|
|
|
|
|
|
animationEnabled: true,
|
|
|
|
axisY: {
|
|
|
|
tickThickness: 0,
|
|
|
|
lineThickness: 0,
|
|
|
|
valueFormatString: " ",
|
|
|
|
gridThickness: 0
|
|
|
|
},
|
|
|
|
axisX: {
|
|
|
|
tickThickness: 0,
|
|
|
|
lineThickness: 0,
|
|
|
|
labelFontSize: 0.1,
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
type: "bar",
|
|
|
|
color: "green",
|
|
|
|
dataPoints: [
|
|
|
|
{y: comp_sum_hour_pos/8}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: "bar",
|
|
|
|
color: "red",
|
|
|
|
dataPoints: [
|
|
|
|
{y: comp_sum_hour_neg/8}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
|
|
|
|
var chart_canvas1 = new CanvasJS.Chart("bar_today_last_hour", options_canvasJS_1);
|
|
|
|
|
|
|
|
var options_canvasJS_2 = {
|
|
|
|
|
|
|
|
animationEnabled: true,
|
|
|
|
axisY: {
|
|
|
|
tickThickness: 0,
|
|
|
|
lineThickness: 0,
|
|
|
|
valueFormatString: " ",
|
|
|
|
gridThickness: 0
|
|
|
|
},
|
|
|
|
axisX: {
|
|
|
|
tickThickness: 0,
|
|
|
|
lineThickness: 0,
|
|
|
|
labelFontSize: 0.1,
|
|
|
|
},
|
|
|
|
data: [
|
|
|
|
{
|
|
|
|
type: "bar",
|
|
|
|
color: "green",
|
|
|
|
dataPoints: [
|
|
|
|
{y: comp_sum_day_pos/8}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: "bar",
|
|
|
|
color: "red",
|
|
|
|
dataPoints: [
|
|
|
|
{y: comp_sum_day_neg/8}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
};
|
|
|
|
|
|
|
|
var chart_canvas2 = new CanvasJS.Chart("bar_today_last_days", options_canvasJS_2);
|
|
|
|
|
|
|
|
chart_canvas1.render();
|
|
|
|
chart_canvas2.render();
|
2016-08-12 08:22:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
}
|
2016-08-15 10:57:39 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-12 08:22:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
|