gerd
11/8/2016 - 1:13 PM

episodeDetailbyTCB.js

/**
 * This object will handle all the EpisodeDetail Total Cost Breakdown Chart Functionalities
 * 
 * @class lexisnexis.component.epiosdeDetailbyTCB
 */

jQuery.namespace('lexisnexis.component');
lexisnexis.component.EpisodeDetailByTCB = lexisnexis.component.Table
        .extend({
            data : {
            	chartId: '#ln_ED_tcb_graph_container',
            	xAxisId: '#episodeDetailbyTCB-xaxis',
            	empty_string: "",
            	error_message:'<span style="color:red">Error: Data is currently unavailable.</span>',
            	overallEfficiencyHigh:"",
            	overallEfficiencyLow:"",
            	efficiencyIndex:""
            },
            /**
			 * initialize the table and register for functionality
			 * 
			 * @method ready
			 */
            ready : function() {
                var cs = this; 
                cs.getClientParameters(cs);
                cs.getEpisodeDetailByTCB(cs);
               // cs.registerViewby();
                LN.getPage().registerEvent(EVENT_TYPES.APPLY_BUTTON_CLICK, cs, cs.getEpisodeDetailByTCB); 
            },
            
           /* registerViewby: function() {
            	var cs = this;
            	$( "input[name*='providerRoleViewBy']" ).change(function(){
    				cs.data.providerRole = $('input[name="providerRoleViewBy"]:checked').val();
    				cs.getEfficiencyByMPC(cs);
    	    	});
            },*/
            
            clearData: function(cs){
            	$(cs.data.chartId).html(cs.data.empty_string);
				$(cs.data.xAxisId).html(cs.data.empty_string);
            },
            
            noDataError: function(cs){
            	$(cs.data.chartId).html(cs.data.error_message);
            },
            
            getEpisodeDetailByTCB: function(cs){
            	$('#ln_episodedetail_by_tcb_graph .ln-chartbody').removeClass('collapse');
            	$.ajax({
				  url: LN.getContextPath()+'/getTotalCostBreakdownSummary',				  
				  method: 'POST',
				  async: true,
				  cache:true,	   
				  dataType : "json",
				  beforeSend: function(){
					  cs.clearData(cs);
					  LN.showAjaxIndicator(cs.data.chartId);					  
				  },'data': {},
				  success: function(response){
					  cs.clearData(cs);
					  //for Drill Downs 
					  //cs.drawGaugeChart(cs,response);
					  //cs.getClientParameters(cs,response);					 			  
					  response.fromScreen = "OE" ; 
					  response.toScreen = "ETG" ; 
					  response.groupBy = "MPC" ;
					  response.overallEfficiencyLow = cs.data.overallEfficiencyLow*100;	
					  response.overallEfficiencyHigh = cs.data.overallEfficiencyHigh*100;	
					  if(response.episodeDetailCostComparisionPercentagesDTOList && response.episodeDetailCostComparisionPercentagesDTOList.length>0){
						  var episodeDetailObj= response.episodeDetailCostComparisionPercentagesDTOList[0];
						  cs.getTotalCostSummaryData(cs,episodeDetailObj, response );
						  var template = $("#ln_epsiodedetail_graph_template").html();					
						  var html = Mustache.to_html(template,response);
						  $("#ln_ED_tcb_graph_container").html(html);
						  $('[data-toggle="tooltip"]').tooltip(); 
					  }else{
						  $('#ln_episodedetail_by_tcb_graph .ln-chartbody').addClass('collapse');
					  }
				  },
				  error: function(){
					  cs.clearData(cs);
					  cs.noDataError(cs);
				  },
				  complete: function(){
					LN.hideAjaxIndicator(cs.data.chartId);
				  }
		 	   });
            },
            getTotalCostSummaryData: function(cs, episodeDetailObj,response) {
            	episodeDetailObj.totalCost= parseInt(episodeDetailObj.totalCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.totalCost)) : null ;
            	episodeDetailObj.facCost= parseInt(episodeDetailObj.facCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.facCost)) : null;
            	episodeDetailObj.ancCost= parseInt(episodeDetailObj.ancCost) > 0  ? formatUtil.formatNumber(parseInt(episodeDetailObj.ancCost)): null;
            	episodeDetailObj.surgCost= parseInt(episodeDetailObj.surgCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.surgCost)): null;
            	episodeDetailObj.rxCost= parseInt(episodeDetailObj.rxCost) > 0? formatUtil.formatNumber(parseInt(episodeDetailObj.rxCost)): null;
            	episodeDetailObj.mgmtCost= parseInt(episodeDetailObj.mgmtCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.mgmtCost)):null;
            	episodeDetailObj.benchmarkCost= parseInt(episodeDetailObj.benchmarkCost) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkCost)) : null ;
            	episodeDetailObj.benchmarkFac= parseInt(episodeDetailObj.benchmarkFac) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkFac)) : null;
            	episodeDetailObj.benchmarkAnc= parseInt(episodeDetailObj.benchmarkAnc) > 0  ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkAnc)): null;
            	episodeDetailObj.benchmarkSurg= parseInt(episodeDetailObj.benchmarkSurg) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkSurg)): null;
            	episodeDetailObj.benchmarkRx= parseInt(episodeDetailObj.benchmarkRx) > 0? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkRx)): null;
            	episodeDetailObj.benchmarkMgmt= parseInt(episodeDetailObj.benchmarkMgmt) > 0 ? formatUtil.formatNumber(parseInt(episodeDetailObj.benchmarkMgmt)):null;
            	episodeDetailObj.totEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totEfficiencyIndex);
            	episodeDetailObj.totMgmtEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totMgmtEfficiencyIndex);            	
            	episodeDetailObj.totSurgEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totSurgEfficiencyIndex);
            	episodeDetailObj.totFacEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totFacEfficiencyIndex);
            	episodeDetailObj.totRxEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totRxEfficiencyIndex);
            	episodeDetailObj.totAncEfficiencyIndexCss= cs.getProgressCssClass(cs,episodeDetailObj.totAncEfficiencyIndex);
            	episodeDetailObj.totEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totEfficiencyIndex);
            	episodeDetailObj.totMgmtEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totMgmtEfficiencyIndex);
            	episodeDetailObj.totSurgEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totSurgEfficiencyIndex);
            	episodeDetailObj.totFacEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totFacEfficiencyIndex);
            	episodeDetailObj.totRxEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totRxEfficiencyIndex);
            	episodeDetailObj.totAncEfficiencyIndexWidth= cs.getProgressWidth(cs,episodeDetailObj.totAncEfficiencyIndex);
            	episodeDetailObj.totEfficiencyIndex=(episodeDetailObj.totEfficiencyIndex*100).toFixed(0);
            	episodeDetailObj.totMgmtEfficiencyIndex=(episodeDetailObj.totMgmtEfficiencyIndex*100).toFixed(0);
            	episodeDetailObj.totSurgEfficiencyIndex=(episodeDetailObj.totSurgEfficiencyIndex*100).toFixed(0);
            	episodeDetailObj.totFacEfficiencyIndex=(episodeDetailObj.totFacEfficiencyIndex*100).toFixed(0);
            	episodeDetailObj.totRxEfficiencyIndex=(episodeDetailObj.totRxEfficiencyIndex*100).toFixed(0);
            	episodeDetailObj.totAncEfficiencyIndex=(episodeDetailObj.totAncEfficiencyIndex*100).toFixed(0);
            	if(episodeDetailObj.totMgmtEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totMgmtUnderUtlizdCss=episodeDetailObj.totMgmtEfficiencyIndexWidth;
            	}
            	if(episodeDetailObj.totEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totEffUnderUtlizdCss=episodeDetailObj.totEfficiencyIndexWidth;
            	}
            	if(episodeDetailObj.totSurgEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totSurgUnderUtlizdCss=episodeDetailObj.totSurgEfficiencyIndexWidth;
            	}
            	if(episodeDetailObj.totFacEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totFacUnderUtlizdCss=episodeDetailObj.totFacEfficiencyIndexWidth;
            	}
            	if(episodeDetailObj.totRxEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totRxUnderUtlizdCss=episodeDetailObj.totRxEfficiencyIndexWidth;
            	}
            	if(episodeDetailObj.totAncEfficiencyIndexCss=='progress-bar-warning'){            		
            		episodeDetailObj.totAncUnderUtlizdCss=episodeDetailObj.totAncEfficiencyIndexWidth;
            	}
            	response.episodeDetailObj=episodeDetailObj;
            },
            
            getProgressCssClass: function(cs, effIndex){
            	if(parseFloat(effIndex) <= 0 ){
            		return "progress-bar-warning";
            	}
                else if(parseFloat(effIndex) > 0 && parseFloat(effIndex) < parseFloat(cs.data.overallEfficiencyLow)){
            		return "progress-bar-warning";
            	}else if(parseFloat(effIndex) > parseFloat(cs.data.overallEfficiencyHigh)){
            		return "progress-bar-danger";
            	}else if(parseFloat(effIndex) >= parseFloat(cs.data.overallEfficiencyLow)
            			&& (parseFloat(effIndex) <= parseFloat(cs.data.overallEfficiencyHigh))){
            		return "progress-bar-success";
            	}
            },
            getProgressWidth: function(cs, effIndex){
            	if(parseFloat(effIndex) <= 0 ){
            		return "0%";
            	}
                else if(parseFloat(effIndex) > 0 && parseFloat(effIndex) < parseFloat(cs.data.overallEfficiencyLow)){
            		var width= (42.5 * parseFloat(effIndex))/parseFloat(cs.data.overallEfficiencyLow);
            		return Math.round(width)+"%";
            	}else if(parseFloat(effIndex) > parseFloat(cs.data.overallEfficiencyHigh)){
            		var width= (100 * parseFloat(effIndex))/2;
            		if(parseFloat(width)> 100.00){
            			width=100.00;
            		}
            		return Math.round(width)+"%";
            	}else if(parseFloat(effIndex) >= parseFloat(cs.data.overallEfficiencyLow)
            			&& (parseFloat(effIndex) <= parseFloat(cs.data.overallEfficiencyHigh))){
            		var width= (67.5 * parseFloat(effIndex))/parseFloat(cs.data.overallEfficiencyHigh);
            		return Math.round(width)+"%";
            	}
            },
            
            getClientParameters: function(cs){
				$.ajax({
					  url: LN.getContextPath()+'/getOverallefficiencyParameters',
					  method: 'POST',
					  async: true,
					  cache:true,	   
					  dataType : "json",
					  success: function(response){
						  //cs.clearData(cs);
						  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.data.efficiencyIndex="0.0";
					          	});	
						  }
						
					  },
					  error: function(data){
						  cs.clearData(cs);
						  cs.handleError(cs);
					  },
					  complete: function(){
						 // cs.stopLoader();
					  }
			 	 });
			
		}
            /*drawGaugeChart : function(cs,response) {
				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;
				if (highValue >= 8) {
					highValueForDisplay = 8;
				} else {
					highValueForDisplay = highValue;
				}
				
				response.underUtilizedPercentage = (overallEfficiencyLow/highValueForDisplay) * 100;
				response.expectedUtilizedPercentage = ((overallEfficiencyHigh-overallEfficiencyLow)/highValueForDisplay) * 100;
				response.overUtilizedPercentage = 100 - (response.underUtilizedPercentage + response.expectedUtilizedPercentage);
				// 0.5 has been added to make the pointer exactly point to the right percentage
				response.efficiencyIndexPercentage = (efficiencyIndex/highValue)* 100 + 0.5;
				response.calculatedHighValue = highValue;
				response.underLine = response.underUtilizedPercentage ;
				response.expectedLine = response.expectedUtilizedPercentage - 5;
				response.overLine = response.overUtilizedPercentage;
				response.overallEfficiencyLow = cs.data.overallEfficiencyLow*100;	
				response.overallEfficiencyHigh = cs.data.overallEfficiencyHigh*100;	
      		    
			}*/
        });