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);
 | |
|     });
 | |
| }
 |