﻿
Ext.namespace("Credit360");__trGroup('Target dashboard');Credit360.ChartPopup=function(config){config=config||{};Ext.apply(this,{items:[{xtype:'box',id:'chartPopupImg',autoEl:{tag:'img',cls:'sparkLine',src:'/fp/shared/images/shim.gif',style:'border:1px solid #000'}}],renderTo:Ext.getBody()});Credit360.ChartPopup.superclass.constructor.call(this,config);this.loadMask=new Ext.LoadMask(this.body,{msg:__tr('Loading...')});};Ext.extend(Credit360.ChartPopup,Ext.ux.PagePopup,{title:__tr('Chart popup'),closeAction:'hide',width:300,height:154,minWidth:200,minHeight:100,resizable:false,draggable:true,animate:true,show:function(chart,regionDescription,animationTarget){this.setSize(chart.width+20,chart.height+56);this.setTitle(String.format("{0} - {1}",this.indDescription,regionDescription));var img=this.items.get("chartPopupImg").el.dom;img.src='/csr/site/dataExplorer4/chart.aspx?cacheKey='+chart.key;img.width=chart.width;img.height=chart.height;Credit360.ChartPopup.superclass.show.call(this,animationTarget,[30,0]);}});Ext.namespace('Credit360');Credit360.TargetDashboard=function(config){this.toolbar=null;this.config=null;this.sparkLines=null;this.sortByPeriodIdx=0;this.sortDir=-1;Credit360.TargetDashboard.superclass.constructor.call(this,config);this.popup=new Credit360.ChartPopup({indDescription:config.selectedInd.description});}
Ext.extend(Credit360.TargetDashboard,Ext.Panel,{sortRegionFn:function(a,b){var va=a.indData?a.indData.values[this.sortByPeriodIdx+1].v:null;var vb=b.indData?b.indData.values[this.sortByPeriodIdx+1].v:null;if(va==null){if(vb==null){return 0;}
return-this.sortDir;}
if(vb==null){return this.sortDir;}
return(va-vb)*this.sortDir;},writeDataCells:function(tr,data){for(var i=1;i<data.values.length;i++){var td=Ext.get(tr.insertCell(-1));td.dom.align="right";var v=data.values[i];td.createChild({tag:'span',style:(v.isEstimated||(!v.v&&v.v!==0))?"color:#bbb":"",html:(v.v||v.v===0)?NPSL.Locale.formatNumber(v.v,data.dp):__tr('n/a')})}
if(!this.hideTotals){var td=Ext.get(tr.insertCell(-1));td.dom.align="right";td.createChild({tag:'span',style:'font-weight:bold',html:(data.aggregate||data.aggregate===0)?NPSL.Locale.formatNumber(data.aggregate,data.dp):__tr('n/a')});}},getVarianceString:function(v1,v2){return(!v2||(!v1&&v1!==0))?__tr('n/a'):NPSL.Locale.formatNumber((v1*100/v2)-100,1,null,"%");},getVarianceClass:function(v1,v2,targetDirection){if(!v2||(!v1&&!v1!==0)){return'';}
switch(targetDirection){case 1:return(v1>=v2)?'onTarget':'offTarget';case-1:return(v1<=v2)?'onTarget':'offTarget';default:return'';}},writeVariance:function(tr,data1,data2){for(var i=1;i<data1.values.length;i++){var td=Ext.get(tr.insertCell(-1));td.dom.align="right";var v1=data1.values[i];var v2=data2.values[i];td.dom.className=this.getVarianceClass(v1.v,v2.v,this.selectedInd.targetDirection);td.createChild({tag:'span',style:(v1.isEstimated||v2.isEstimated||(!v1.v&&v1.v!==0)||(!v2.v&&v2.v!==0))?"color:#bbb":"",html:this.getVarianceString(v1.v,v2.v)})}
if(!this.hideTotals){var td=Ext.get(tr.insertCell(-1));td.dom.align="right";td.dom.className=this.getVarianceClass(data1.aggregate,data2.aggregate,this.selectedInd.targetDirection);td.createChild({tag:'span',style:'font-weight:bold',html:this.getVarianceString(data1.aggregate,data2.aggregate)});}},sortPeriods:function(idx,dir){this.sortByPeriodIdx=idx;this.sortDir=dir;var tbl=this.body;tbl.select("img").removeAllListeners();tbl.select("tr[1].td").removeAllListeners();tbl.update("");this.renderTable();},writePeriods:function(tab,periods){var tr=tab.insertRow(-1);tr.vAlign='middle';tr.className='periods';Ext.fly(tr.insertCell(-1)).update("&nbsp;");Ext.fly(tr.insertCell(-1)).update("&nbsp;");var multiRow=(periods[0].indexOf("|")!=-1);var previousPeriodLabel="";for(var i=0;i<periods.length;i++){var td=Ext.get(tr.insertCell(-1));td.dom.align="right";if(multiRow){var pls=periods[i].split("|");var s=[];s.push(pls[1]!=previousPeriodLabel?pls[1]:"");s.push(pls[0]);td.update(s.join("<br/>"));previousPeriodLabel=pls[1];}else{td.update(periods[i]);}
if(i==this.sortByPeriodIdx){Ext.DomHelper.append(td,{tag:"img",width:18,height:10,title:this.sortDir>0?__tr('Sort asscending'):__tr('Sort descending'),src:"/fp/shared/images/"+((this.sortDir>0)?"sortAsc.gif":"sortDesc.gif")});}
td.setStyle("cursor","pointer");td.on("click",this.sortPeriods.createDelegate(this,[i,(i==this.sortByPeriodIdx?-this.sortDir:this.sortDir)]));}
if(!this.hideTotals){var totalCell=Ext.fly(tr.insertCell(-1));totalCell.update((multiRow?"<br/>":"")+__tr('Total'));totalCell.dom.align="right";}},onSparklineClick:function(evt,o){var idx=this.sparkLines.indexOf(o);o=this.sparkLines.item(idx);var chart=this.regions[idx].popupChart;this.popup.show(chart,this.regions[idx].description,o);},render:function(ct,pos){Credit360.TargetDashboard.superclass.render.call(this,ct,pos);this.renderTable();},renderTable:function(){var regions=this.regions;var tabConfig={id:'tableContent',tag:'table',cellPadding:0,cellSpacing:0,width:'100%',cls:regions[0].targetData?"targetDashboardMultiRows":"targetDashboardSingleRows"};var tab=this.body.createChild(tabConfig,null,true);regions.sort(this.sortRegionFn.createDelegate(this));this.writePeriods(tab,this.periods);for(var i=0;i<regions.length;i++){var r=regions[i];var chart=r.sparkLine;var tr=tab.insertRow(-1);tr.vAlign='middle';var td=Ext.get(tr.insertCell(-1));if(r.targetData){td.dom.rowSpan=3;tr.className='major';}
td.createChild({tag:'img',cls:'sparkLine',src:'/csr/site/dataExplorer4/chart.aspx?cacheKey='+chart.key,width:chart.width,height:chart.height,qtip:__tr('Click to view a larger version of the chart for {0}',r.description)});var td=Ext.get(tr.insertCell(-1));td.update(r.description);if(r.indData){this.writeDataCells(tr,r.indData);}
if(r.targetData){var tr=tab.insertRow(-1);tr.vAlign='middle';tr.className="targetOrVariance";Ext.get(tr.insertCell(-1)).update(__tr('Target')).addClass("targetOrVarianceLabel");this.writeDataCells(tr,r.targetData);var tr=tab.insertRow(-1);tr.className="targetOrVariance";tr.vAlign='middle';Ext.get(tr.insertCell(-1)).update(__tr('Variance')).addClass("targetOrVarianceLabel");this.writeVariance(tr,r.indData,r.targetData);}}
this.sparkLines=this.body.select(".sparkLine").on("click",this.onSparklineClick,this);}});