gerd
11/8/2016 - 1:53 PM

stackedGauge.js

lexisnexis.component.StackedGauge = lexisnexis.component.Component
		.extend({
			
			data: {
				empty: "",
				providerCountID: '#providerCount',
				filteredProviderCountID: '#filteredProviderCount',
				efficiencyIndexDivID: '#ln_overAllEfficiencyIndex',
				efficiencyIndexPanelDivClass: '.ln-gaugechart-height',
				errorMessage: '<span style="color:red">Error: Data is currently unavailable.</span>'
			},
			
			ready : function() {
				var cs= this;
				cs.startLoader(cs);
				LN.getPage().registerEvent(EVENT_TYPES.OVERALL_EFFICIENCY_TOTALS_SUCCESS,
                        cs, cs.constructGraph);
				LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK,cs, cs.startLoader);
			},
			
			
			startLoader : function(cs){
				LN.showAjaxIndicator(cs.data.efficiencyIndexPanelDivClass);
			},
			
			stopLoader : function(cs){
				LN.hideAjaxIndicator(cs.data.efficiencyIndexPanelDivClass);
			},
			
			collapsePanel: function(cs){
				$(cs.data.efficiencyIndexDivID+' '+cs.data.efficiencyIndexPanelDivClass).addClass('collapse');
			},
			
			handleError: function(cs){
				$(cs.data.efficiencyIndexDivID+' '+cs.data.efficiencyIndexPanelDivClass).html(cs.data.errorMessage);
			},
			
			expandPanel: function(cs){
				$(cs.data.efficiencyIndexDivID+' '+cs.data.efficiencyIndexPanelDivClass).removeClass('collapse');
			},
			
			constructGraph: function(cs , data){
				cs.expandPanel(cs);
				$('#ln_movers_chart .panel-body label').hide();
				cs.data.efficiencyIndex =  data.totEffIndex ;
				var providerCount = data.providerCount ; 
				cs.startLoader(cs);
				if(providerCount==0){
					cs.stopLoader(cs);
					cs.collapsePanel(cs);
				}else if(!isNaN(providerCount)){
					cs.getClientParameters(cs)	
				}
			},
			
			getClientParameters: function(cs){
					$.ajax({
						beforeSend: function(){
							$('#ln_movers_chart .panel-body label').show();	
						},
						url: LN.getContextPath()+'/getOverallefficiencyParameters',
						method: 'POST',
						async: true,
						cache:true,	   
						dataType : "json",
						success: function(response){
							  if(response){
								  _.each(response, function(resp) {   
									  if(resp.name==='PPM_OVERALL_EFFICIENCY_HIGH'){
										  cs.data.overallEfficiencyHigh=resp.value;
									  }else if(resp.name==='PPM_OVERALL_EFFICIENCY_LOW'){
										  cs.data.overallEfficiencyLow=resp.value;
									  }
						          	});	
							  }
							  cs.drawGaugeChart(cs);
						},
						error: function(data){
							cs.handleError(cs);
						},
						complete: function(){
							 // cs.stopLoader();
						}
				 	 });
				
			},
			
			
			drawGaugeChart : function(cs) {
				var formattedValue=[];
				var highValue;
				
				var overallEfficiencyLow = cs.data.overallEfficiencyLow;
				var overallEfficiencyHigh = cs.data.overallEfficiencyHigh;
				var efficiencyIndex = cs.data.efficiencyIndex;
				
				if ((parseFloat(overallEfficiencyHigh) + parseFloat(overallEfficiencyLow)) <= parseFloat(efficiencyIndex)) {
					highValue = parseInt(efficiencyIndex) + 1;
				} else {
					if (overallEfficiencyHigh.toString().indexOf('.') != -1 || overallEfficiencyLow.toString().indexOf('.') != -1) {
						highValue = parseFloat(overallEfficiencyHigh) + parseFloat(overallEfficiencyLow);
					} else {
						highValue = parseInt(overallEfficiencyHigh) + parseInt(overallEfficiencyLow);
					}
				}
				
				var highValueForDisplay = 8 ;
				if (highValue < 8) {
					highValueForDisplay = highValue;
				}
				
				cs.data.underUtilizedPercentage = (overallEfficiencyLow/highValueForDisplay) * 100;
				cs.data.expectedUtilizedPercentage = ((overallEfficiencyHigh-overallEfficiencyLow)/highValueForDisplay) * 100;
				cs.data.overUtilizedPercentage = 100 - (cs.data.underUtilizedPercentage + cs.data.expectedUtilizedPercentage);
				// 0.5 has been added to make the pointer exactly point to the right percentage
				cs.data.efficiencyIndexPercentage = (efficiencyIndex/highValue)* 100 + 0.5;
				cs.data.calculatedHighValue = highValue;
	      		cs.data.overlegendwidth = cs.data.overUtilizedPercentage - 6;
	      		cs.data.expectedlegendwidth = cs.data.expectedUtilizedPercentage -4;
	      		cs.data.underlegendwidth = cs.data.underUtilizedPercentage - 6;
				
      		    $("#efficiency_index_id").text(cs.data.efficiencyIndex);  
      		    var template = $("#ln_overallefficiency_index_template").html();
      		    var html = Mustache.to_html(template, cs.data);
      		    $(cs.data.efficiencyIndexDivID).html(html);
			}
		});