| 
					
				 | 
			
			
				@@ -203,12 +203,58 @@ class Dashboard { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		this.renderPositions(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	loadJs(files,iteration,callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var object = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var js = files[iteration]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if($('script[src="'+js+'"]').length!=0 || js==null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(files.length > iteration) object.loadJs(files,iteration+1,callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if((files.length-1) == iteration) if(callback) callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//on supprime tout autre js ayant la même base mais des versions plus vielles 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var baseJs = js.replace(/\?v=.*/gm,''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		$('script[src^="'+baseJs+'?"]').remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		var jsFile = document.createElement('script'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		jsFile.setAttribute("type","text/javascript"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		document.getElementsByTagName("body")[0].appendChild(jsFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		jsFile.onload = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(files.length > iteration) object.loadJs(files,iteration+1,callback); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if((files.length-1) == iteration) if(callback) callback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		jsFile.src =  js; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//Ajout d'un widget en fonction de paramètre 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	addWidget(widgetOptions){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	addWidget(widgetOptions,callback){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var object = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//Ajout du widget au tableau de widgets interne 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		object.widgets[widgetOptions.id] = widgetOptions; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//Ajout de css tiers si définits 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(widgetOptions.cssUrl && widgetOptions.cssUrl.length>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (var k in widgetOptions.cssUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var url = widgetOptions.cssUrl[k]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if($('link[href="'+url+'"]').length!=0) continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//on supprime tout autre css ayant la même base mais des versions plus vielles 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var baseCss = url.replace(/\?v=.*/gm,''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				$('link[href^="'+baseCss+'"]').remove(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				var cssFile = document.createElement('link'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cssFile.setAttribute("rel","stylesheet"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cssFile.setAttribute("type","text/css"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				cssFile.setAttribute("href", url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				document.getElementsByTagName("body")[0].appendChild(cssFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//Ajout de js tiers si définits 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(widgetOptions.jsUrl && widgetOptions.jsUrl.length>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			object.loadJs(widgetOptions.jsUrl,0,function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(callback) callback(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		//Render de la template pour les propriétés du widget courant 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		object.renderContent(widgetOptions.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -292,7 +338,6 @@ class Dashboard { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	renderContent(id) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var widget = this.widgets[id]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		console.log(id,widget); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		var widgetElement = widget.element!=null ? widget.element : $(Mustache.render(this.widgetTemplate, widget)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if(widget.label !== null) widgetElement.find('.widget-header-title').html(widget.label); 
			 |