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