Code coverage report for Controller/GraphsControllers/LineChartController.js

Statements: 41.51% (22 / 53)      Branches: 0% (0 / 8)      Functions: 33.33% (3 / 9)      Lines: 41.51% (22 / 53)      Ignored: none     

All files » Controller/GraphsControllers/ » LineChartController.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97                                    1     13 13 13     13 11 11 11   13 13 13     13 11                   11       11             11         11               11                                     13     13 13 13  
/*jshint node: true */
'use strict';
 
/*
* Name :  LineChartController.js
* Module : FrontEnd::Controller::GraphsController
* Location : /frontend/app/Controller/GraphsController
*
* History :
* Version       Date        Programmer                  Description
* =================================================================================================
* 0.1.0         2015-05-30  Francesco Rossetto			Add all attributes and methods
*
* 0.0.1         2015-05-30  Francesco Rossetto			Initial code      
* =================================================================================================
*
*/
 
angular.module('norris-nrti')
.controller('LineChartController', ['$scope', '$location', 'LineChartFactory', 'LineChartFlowFactory', 'SocketServicesFactory', 'ColorPicker', function($scope, $location, LineChartFactory, LineChartFlowFactory, SocketServicesFactory, ColorPicker){
 
	var socket;
	var lineChart = LineChartFactory.build(); // crea un line chart di default
	$scope.lineChart = lineChart;
	
	// funzione che connette il socket all'url e chiama la funzione listenOnEvent
	this.socketConnection = function(url){
		socket = SocketServicesFactory.build(url);
		$scope.socket = socket;
		this.listenOnEvents();
	};
	var count = 0;
	$scope.changedP = true;
	$scope.changedD = true;
 
	// funzione che mette in ascolto il socket su alcuni eventi
	this.listenOnEvents = function(){
		socket.on('configGraph', function(info){ // ascolta sull'evento 'configGraph' (ricevuto come risposta alla connessione)
			if (count === 0){
				console.log('configGraph lineChart');
				$scope.lineChart.updateParameters(info.properties); // aggiorna le proprietà del line chart di default con i dati appena ricevuti
				$scope.lineChart.initializeData(info.data); // inizializza i flussi con i dati
				$scope.changedD = !$scope.changedD; // 'notifica' cambiamento dati
				$scope.changedP = !$scope.changedP; // 'notifica' cambiamento proprietà
				count++;
			}
		});
		socket.on('updateGraphProp', function(info){ // ascolta sull'evento 'updateGraphProp'
			$scope.lineChart.updateParameters(info);  // aggiorna le proprietà del line chart con i dati appena ricevuti
			$scope.changedP = !$scope.changedP; // 'notifica' cambiamento proprietà
		});
		socket.on('insertFlow', function(info){ // ascolta sull'evento 'insertFlow'
			var flow = LineChartFlowFactory.build(info.properties); // crea un flusso di default
			flow.initializeData(info); // inizializzail flusso
			$scope.lineChart.addFlow(info.properties.ID, flow); // aggiunge il flusso al grafico
			$scope.changedD = !$scope.changedD; // 'notifica' cambiamento dati
			$scope.changedP = !$scope.changedP; // 'notifica' cambiamento proprietà
		});
		socket.on('deleteFlow', function(info){
			$scope.lineChart.deleteFlow(info.ID); // elimina un flusso
			$scope.changedD = !$scope.changedD; // 'notifica' cambiamento dati
			$scope.changedP = !$scope.changedP; // 'notifica' cambiamento proprietà
		});
		socket.on('updateFlowProp', function(info){ // ascolta sull'evento 'updateFlowProp'
			for (var i=0; i<$scope.barChart.getFlowList().length; i++){
				if ($scope.lineChart.getFlowList()[i].id === info.ID){
					$scope.lineChart.getFlowList()[i].flow.updateParameters(info); // aggiorna le proprietà dei flussi
				}
			}
			$scope.changedP = !$scope.changedP; // 'notifica' cambiamento proprietà
		});
		socket.on('updateFlowData', function(data){
			switch (data.action){
				case 'insertRecords':
					$scope.lineChart.streamUpdate(data); // effettua un aggiornamento di tipo stream
					break;
				case 'deleteRecord':
					$scope.lineChart.deleteData(data); // elimina dei dati
					break;
				case 'updateRecord':
					$scope.lineChart.inPlaceUpdate(data);  // effettua aggiornamento di tipo in place
					break;
				case 'replaceData':
					$scope.lineChart.replaceData(data); // rimpiazza dei dati
					break;
			}
			$scope.changedD = !$scope.changedD; // 'notifica' cambiamento dati
		});
	};
	// variabili e funzioni a disposizione dei test
	$scope.socket = socket;
 
	// mette a disposizione delle funzioni sullo scope
	$scope.socketConnection = this.socketConnection;
	$scope.listenOnEvents = this.listenOnEvents;
	$scope.defaultColorFlow = ColorPicker.getDefaultColor();
}]);