mirror of https://github.com/CIRCL/AIL-framework
105 lines
4.2 KiB
JavaScript
105 lines
4.2 KiB
JavaScript
var li_text = "<li><div class='checkbox'></div><label class='provider'><input value='"
|
|
var li_text_mid = "' type='checkbox'></input> "
|
|
var li_text_end = "</label></li>"
|
|
|
|
function getSyncScriptParams() {
|
|
var scripts = document.getElementsByTagName('script');
|
|
var lastScript = scripts[scripts.length-1];
|
|
var scriptName = lastScript;
|
|
return {
|
|
url_sentiment_analysis : scriptName.getAttribute('data-url_sentiment_analysis'),
|
|
};
|
|
}
|
|
|
|
var url_sentiment_analysis = getSyncScriptParams().url_sentiment_analysis;
|
|
|
|
/* Get Providers List and display them by row */
|
|
$.getJSON(url_sentiment_analysis + '?getProviders=True', function(data){
|
|
for(i=0; i<data.length; i++){
|
|
var providerList = i%2 == 0 ? '#providerList1' : '#providerList2';
|
|
$(providerList).append(li_text + data[i] + li_text_mid + data[i] + li_text_end);
|
|
}
|
|
});
|
|
|
|
|
|
/* Create the slider and button*/
|
|
var today = Date.now();
|
|
var old_day = today - (31*24*60*60)*1000;
|
|
$( ".sliderRange" ).slider({
|
|
range: true,
|
|
min: old_day,
|
|
max: today,
|
|
values: [ today - (7*24*60*60)*1000, today ],
|
|
step: 24*60*60*1000,
|
|
slide: function( event, ui ) {
|
|
$( "#amount" ).val( new Date(ui.values[ 0 ]).toLocaleDateString() + " - " + new Date(ui.values[ 1 ]).toLocaleDateString() );
|
|
}
|
|
});
|
|
|
|
$( "#amount" ).val( new Date($( ".sliderRange" ).slider( "values", 0 )).toLocaleDateString() +
|
|
" - " + new Date($( ".sliderRange" ).slider( "values", 1 )).toLocaleDateString() );
|
|
|
|
$('#plot_btn').click(plotData);
|
|
|
|
/* Plot the requested data (if available) stored in slider and checkboxes */
|
|
function plotData(){
|
|
|
|
var graph_options = {
|
|
series: {
|
|
stack: $('#checkbox_stacked').prop('checked'),
|
|
lines: { show: false,
|
|
lineWidth: 2,
|
|
fill: true, fillColor: { colors: [ { opacity: 0.5 }, { opacity: 0.2 } ] }
|
|
},
|
|
bars: {show: true, barWidth: 60*60*1000},
|
|
shadowSize: 0
|
|
},
|
|
grid: {
|
|
hoverable: true,
|
|
clickable: true,
|
|
tickColor: "#f9f9f9",
|
|
borderWidth: 0
|
|
},
|
|
xaxis: {
|
|
mode: "time",
|
|
timeformat: "%m/%d:%Hh",
|
|
minTickSize: [1, "hour"]
|
|
},
|
|
yaxis: {
|
|
autoscaleMargin: 0.1,
|
|
},
|
|
}
|
|
var query = $( "input:checked[value]" ).map(function () {return this.value;}).get().join(",");
|
|
var Qdate = new Date($( ".sliderRange" ).slider( "values", 0 )).toLocaleDateString() +'-'+ new Date($( ".sliderRange" ).slider( "values", 1 )).toLocaleDateString();
|
|
|
|
|
|
// retreive the data from the server
|
|
$.getJSON(url_sentiment_analysis + '?getProviders=False&query='+query+'&Qdate='+Qdate, function(data){
|
|
var to_plot = [];
|
|
for (provider in data){
|
|
var nltk_data = Object.keys(data[provider]).map(function (key) { return data[provider][key]; });
|
|
var nltk_key = Object.keys(data[provider]).map(function (key) { return key; });
|
|
|
|
var pos = 0.0;
|
|
var neg = 0.0;
|
|
var XY_data = [];
|
|
for (i=0; i<nltk_data.length; i++){
|
|
if (nltk_data[i].length == 0)
|
|
continue;
|
|
else {
|
|
for (j=0; j<nltk_data[i].length; j++){
|
|
var curr_data = jQuery.parseJSON(nltk_data[i][j].replace(/\'/g, '\"'));
|
|
pos += curr_data['pos'];
|
|
neg += curr_data['neg'];
|
|
}
|
|
pos = pos/nltk_data.length;
|
|
neg = neg/nltk_data.length;
|
|
}
|
|
XY_data.push([nltk_key[i]*1000, pos-neg]);
|
|
}
|
|
to_plot.push({ data: XY_data, label: provider});
|
|
}
|
|
var plot = $.plot($("#graph"), to_plot, graph_options);
|
|
});
|
|
}
|