reportCtrl.1.js 16 KB

1
  1. "use strict";app.controller("reportCtrl",["$scope","$rootScope","$state","$timeout","$interval","$http","$cookieStore","moment","SweetAlert","Restangular","api_report","api_statistic",function(e,a,r,t,l,s,n,o,u,i,p,v){function c(a,r){angular.forEach(a,function(a,t){a.path==r?e.repoRoot=a:null==e.repoRoot&&angular.isDefined(a.repoObjects)&&c(a.repoObjects,r)})}function h(e){angular.isArray(e)?angular.forEach(e,function(e,a){h(e)}):(angular.isDefined(e.name)&&(e.name.indexOf(".")>=0?e.label=e.name.substr(0,e.name.lastIndexOf(".")):e.label=e.name),angular.isDefined(e.repoObjects)&&(e.children=[],e.children=e.repoObjects,delete e.repoObjects,h(e.children)))}function m(e){var a=void 0;if(angular.isArray(e));else{a={};for(var r in e)r.indexOf("Date")>0&&angular.isString(e[r])&&(a[r]=o(e[r],"YYYYMMDD").format("YYYY-MM-DD"))}return a}function d(e){var a=void 0;if(angular.isArray(e));else{a={};for(var r in e)r.indexOf("Date")>0&&(angular.isDate(e[r])?a[r]=o(e[r]).format("YYYYMMDD"):angular.isString(e[r])&&(a[r]=e[r]))}return a}function f(){return k=x(k),O(Y(k.h,k.s,k.v))}function g(){var e="xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var a=16*Math.random()|0,r="x"==e?a:3&a|8;return r.toString(16)}).toUpperCase();return e}function y(a){p.execute(a).then(function(a){e.rheaders=[],e.rRows=[];var r=i.stripRestangular(a);w(r)})}function w(e){return D(e)}function D(a){var r,t,l,s,n,o,u,i,p="",v="",c=a.cellset,h=c?c:[],m=!1,d=0,f=[],g=null,y=!1,w=!1,D=!1,x=[],_=!0,Y=[],O=[],M={};M[q]=a.rowTotalsLists,M[b]=a.colTotalsLists;for(var E={},T={},U=[b,q],A=0;A<U.length;A++)E[U[A]]=new Array,T[U[A]]=new Array;if(M[q])for(var A=0;A<M[q].length;A++)T[q][A]=0,E[q][A]=M[q][A][T[q][A]].width;for(var A=0,k=0,S=h.length;k<S;k++){var I=k-a.topOffset;i=1,r=1,t="",l=!1,n=!1,o=!1,w=!1;var P=!1;if(M[b])for(var A=0;A<M[b].length;A++)T[b][A]=0,E[b][A]=M[b][A][T[b][A]].width;v="<tr>",0===k&&(v="<thead>"+v);for(var C=0,F=h[k].length;C<F;C++){var H=C-a.leftOffset,L=c[k][C];if("COLUMN_HEADER"===L.type&&(w=!0),"ROW_HEADER"===L.type&&c[k][0],"COLUMN_HEADER"===L.type&&"null"===L.value&&(null==s||C<s)){v+='<th class="all_null">&nbsp;</th>';var N={thclass:"all_null",value:" / "};Y.push(N)}else if("COLUMN_HEADER"===L.type){if(null==s&&(s=C),h[k].length==C+1?n=!0:u=c[k][C+1],n)if("null"==L.value){v+='<th class="col_null">&nbsp;</th>';var N={thclass:"all_null",value:" / "};Y.push(N)}else{M[b]&&(r=M[b][k+1][T[b][k+1]].span),v+='<th class="col" style="text-align: center;" colspan="'+r+'" title="'+L.value+'">'+(_?'<div rel="'+k+":"+C+'">'+L.value+"</div>":L.value)+"</th>";var N={thclass:"col",colspan:""+r,title:L.value};_?N.value={rel:k+":"+C,value:L.value}:N.value=L.value,Y.push(N)}else{var j=C>1&&k>1&&!l&&C>s&&(c[k-1][C+1].value!=c[k-1][C].value||c[k-1][C+1].properties.uniquename!=c[k-1][C].properties.uniquename),W=r>999;if(L.value!=u.value||R(c,k,C)||l||j||W){if("null"==L.value){v+='<th class="col_null" colspan="'+r+'">&nbsp;</th>';var N={thclass:"col_null",colspan:r,value:"&nbsp;"};Y.push(N)}else{M[b]&&(r=M[b][k+1][T[b][k+1]].span),v+='<th class="col" style="text-align: center;" colspan="'+(0==r?1:r)+'" title="'+L.value+'">'+(_?'<div rel="'+k+":"+C+'">'+L.value+"</div>":L.value)+"</th>";var N={thclass:"col",colspan:0==r?1:r,title:L.value};_?N.value={rel:k+":"+C,value:L.value}:N.value=L.value,Y.push(N)}r=1}else r++}c[k][3]={},M[b]&&(v+=genTotalHeaderCells(C-a.leftOffset+1,k+1,E[b],T[b],M[b],_))}else if("ROW_HEADER"===L.type&&"null"===L.value){v+='<th class="row_null">&nbsp;</th>';var N={thclass:"row_null",value:L.value};Y.push()}else if("ROW_HEADER"===L.type){d==C?l=!0:u=c[k][C+1],h.length==k+1?o=!0:i=c[k+1][C];var $=c[k-1],N={},z=!P&&!l&&0==C&&L.value===$[C].value;P=!z;var G=z?"<div>&nbsp;</div>":'<div rel="'+k+":"+C+'">'+L.value+"</div>";z?N.value={value:"  "}:N.value={value:L.value,rel:k+":"+C},_||(G=z?"&nbsp;":L.value,z?N.value=" / ":N.value=L.value);var B,Z="",B=z?"row_null":"row",K=0,X=0;if(!l&&("undefined"==typeof u||"null"===u.value)){K=1;for(var J=L.properties.dimension,Q=L.properties.level,V=(J in f?f[J].length-f[J].indexOf(Q):1),ee=C+1;K<V&&ee<=d+1&&"null"!==c[k][ee];ee++)K=ee-C;C+=K}!o&&c[k+1][C].value==c[k][C].value,v+='<th class="'+B+'" '+(K>0?' colspan="'+K+'"':"")+(X>0?' rowspan="'+X+'"':"")+Z+">"+G+"</th>",N.thclass=B,K>0&&(N.colspan=K),O.push(N)}else if("ROW_HEADER_HEADER"===L.type){v+='<th class="row_header">'+(_?"<div>"+L.value+"</div>":L.value)+"</th>";var N={thclass:"row_header",value:L.value};if(_?N.value={value:L.value}:N.value=L.value,Y.push(N),l=!0,m=!0,d=C,L.properties.hasOwnProperty("dimension")){var J=L.properties.dimension;J in f||(f[J]=[]),f[J].push(L.properties.level)}}else if("DATA_CELL"===L.type){null!=L.value&&""!=L.value||(L.value="0"),y=!0;var ae="",re=L.value,te="",le={};if(L.properties){if(L.properties.hasOwnProperty("image")){var se=L.properties.hasOwnProperty("image_height")?" height='"+L.properties.image_height+"'":"",ne=L.properties.hasOwnProperty("image_width")?" width='"+L.properties.image_width+"'":"";re="<img "+se+" "+ne+" style='padding-left: 5px' src='"+L.properties.image+"' border='0'>"}L.properties.hasOwnProperty("style")&&(ae=" style='background-color: "+L.properties.style+"' ",le.rowStyle={"background-color":L.properties.style}),L.properties.hasOwnProperty("link")&&(re="<a target='__blank' href='"+L.properties.link+"'>"+re+"</a>"),L.properties.hasOwnProperty("arrow")&&(te="<img height='10' width='10' style='padding-left: 5px' src='./images/arrow-"+L.properties.arrow+".gif' border='0'>")}else L.properties={};v+='<td class="data" '+ae+">"+(_?'<div class="datadiv" alt="'+L.properties.raw+'" rel="'+L.properties.position+'">':"")+re+te+(_?"</div>":"")+"</td>",_?le.value={alt:L.properties.raw,rel:L.properties.position,value:re}:le.value=re,O.push(le),M[b]&&(v+=genTotalDataCells(H+1,I,E[b],T[b],M,_))}}v+="</tr>",e.rheaders.push(Y),Y=[],O.length>1&&(A+=parseInt(O[O.length-1].value.value,10),e.rRows.push(O),O=[]);var oe="";M[q]&&I>=0&&(oe+=genTotalHeaderRowCells(I+1,E,T,M,_)),y&&g?k<=g?(w||D||(p+="</thead><tbody>",D=!0),p+=v,oe.length>0&&(p+=oe)):(x.push(v),oe.length>0&&x.push(oe)):(w||D||(p+="</thead><tbody>",D=!0),p+=v,oe.length>0&&(p+=oe))}var ue=[],ie=[],pe=[];ue[0]={thclass:"row",value:{rel:"1:0",value:"合计"}};for(var ve=0,ce=0,he=0;he<e.rRows.length;he++){"区域地点统计"==e.reportName&&("row"==e.rRows[he][0].thclass?(ve=parseInt(e.rRows[he][2].value.value),e.rRows[he+1]||e.rRows.splice(he+1,0,[{thclass:"rows",colspan:"2",value:{rel:"1:0",value:"区域合计"}},{value:{value:String(ve)}}]),e.rRows[he+1]&&"row"==e.rRows[he+1][0].thclass&&e.rRows.splice(he+1,0,[{thclass:"rows",colspan:"2",value:{rel:"1:0",value:"区域合计"}},{value:{value:String(ve)}}])):"row_null"==e.rRows[he][0].thclass&&(ve+=parseInt(e.rRows[he][2].value.value),e.rRows[he+1]&&"row_null"!=e.rRows[he+1][0].thclass?(e.rRows.splice(he+1,0,[{thclass:"rows",colspan:"2",value:{rel:"1:0",value:"区域合计"}},{value:{value:String(ve)}}]),ce++):e.rRows[he+1]||"row_null"==e.rRows[he][0].thclass?e.rRows[he+1]||"row_null"!=e.rRows[he][0].thclass||e.rRows.splice(he+ce+1,0,[{thclass:"rows",colspan:"2",value:{rel:"1:0",value:"区域合计"}},{value:{value:String(ve)}}]):e.rRows.splice(he+ce+1,0,[{thclass:"rows",colspan:"2",value:{rel:"1:0",value:"区域合计"}},{value:{value:String(ve)}}]))),0!=A?e.rRows[he].push({value:{value:String((100*parseInt(e.rRows[he][e.rRows[he].length-1].value.value)/A).toFixed(2))+"%"}}):e.rRows[he].push({value:{value:String((0).toFixed(2))+"%"}});for(var me=0;me<e.rRows[he].length;me++){var de=/^[+-]?\d*\.?\d*$/.test(e.rRows[he][me].value.value);de&&(angular.isUndefined(pe[me])?pe[me]=parseInt(e.rRows[he][me].value.value):pe[me]=pe[me]+parseInt(e.rRows[he][me].value.value),ue[me]={value:{value:String(pe[me])}})}}ue.push({value:{value:"100%"}}),angular.forEach(ue,function(e){e&&ie.push(e)}),"区域地点统计"==e.reportName&&ie.splice(2,1),ie[0]={thclass:"row",colspan:ue.length-ie.length+1,value:{rel:"1:0",value:"总合计"}},e.rheaders[0].push({colspan:"1",thclass:"col",title:"事件占比",value:{rel:"0:1",value:"事件占比(%)"}}),e.rRows.push(ie);var fe=35*e.rRows.length;return e.allheight=fe+570,"<table>"+p+"</tbody></table>"}function R(e,a,r){for(;a-- >0;)if(e[a][r].properties.uniquename!=e[a][r+1].properties.uniquename)return!0;return!1}function x(e){return angular.isUndefined(e)?{h:0,s:.75,v:.8}:{h:e.h+51.5,s:.75,v:.8}}function Y(e,a,r){var t,l,s,n,o,u,i,p;if(0==a)return r=Math.floor(255*r),{r:r,g:r,b:r};switch(e/=60,t=Math.floor(e),l=e-t,s=r*(1-a),n=r*(1-a*l),o=r*(1-a*(1-l)),t){case 0:u=r,i=o,p=s;break;case 1:u=n,i=r,p=s;break;case 2:u=s,i=r,p=o;break;case 3:u=s,i=n,p=r;break;case 4:u=o,i=s,p=r;break;default:u=r,i=s,p=n}return{r:255*u,g:255*i,b:255*p}}function O(e){var a=e.r,r=e.g,t=e.b,l=t|r<<8|a<<16;return"#"+l.toString(16)}var b="ROWS",q="COLUMNS";e.treeshow=!0,e.headers="请选择事件树形列表!",p.getLicenseKey().then(function(a){n.put("Auth-Token",a.token),e.try_async_load()});var M,E={};e.parameters={},e.category={},e.reportName="事件报表",e.allheight=100,e.starttimes=o((new Date).getTime()-6048e5).format("YYYYMMDD"),e.endtimes=o((new Date).getTime()-864e5).format("YYYYMMDD"),e.changeForm=function(a){e.starttimes=o(a).format("YYYYMMDD")},e.changeTo=function(a){e.endtimes=o(a).format("YYYYMMDD")},e.week=function(){var a=(new Date).getDay();e.starttimes=o((new Date).getTime()-864e5*(a+6)).format("YYYYMMDD"),e.endtimes=o((new Date).getTime()-864e5*a).format("YYYYMMDD"),e.parameters.paramDateFrom=e.starttimes,e.parameters.paramDateTo=e.endtimes,e.parameters=m(e.parameters),e.mdxquery()},e.month=function(){e.starttimes=o(new Date(o().startOf("month")).setMonth((new Date).getMonth()-1)).format("YYYYMMDD"),e.endtimes=o(new Date(o().startOf("month")).setMonth((new Date).getMonth())-864e5).format("YYYYMMDD"),e.parameters.paramDateFrom=e.starttimes,e.parameters.paramDateTo=e.endtimes,e.parameters=m(e.parameters),e.mdxquery()},e.year=function(){e.starttimes=o().startOf("year").format("YYYYMMDD"),e.endtimes=o().format("YYYYMMDD"),e.parameters.paramDateFrom=e.starttimes,e.parameters.paramDateTo=e.endtimes,e.parameters=m(e.parameters),e.mdxquery()},e.my_tree_handler=function(a){if(e.treeshow=!1,"FILE"==a.type){e.reportName=a.label;var r=e.mdxpath=a.path;T=g(),p.getMdx(r,T).then(function(a){var r=i.stripRestangular(a);E.query=r,e.shows=!1,E.query.parameters.paramDateFrom=e.starttimes,E.query.parameters.paramDateTo=e.endtimes,e.parameters=m(E.query.parameters),E.query.parameters.reportUUID?(e.rptUUID=E.query.parameters.reportUUID,delete E.query.parameters.reportUUID,e.parameters=m(E.query.parameters),v.query(E.query.parameters,e.rptUUID).then(function(a){e.rheaders=[],e.rRows=[];var r=i.stripRestangular(a);r.cellset.length<2&&(r.cellset=null,e.shows=!0,e.empty="数据为空!");w(r)})):(e.rptUUID=void 0,p.execute(r).then(function(a){e.rheaders=[],e.rRows=[];var r=i.stripRestangular(a);null!=r.cellset&&0!=r.cellset.length||(e.shows=!0,e.empty="数据为空!");w(r);A(r)}))})}},e.my_data=[],e.my_tree=M={},e.try_async_load=function(){e.my_data=[],e.select_treedata=[],p.list().then(function(a){var r=i.stripRestangular(a);c(r,"/homes/home:admin/ITSM报表"),e.repoRoot.name="事件报表",h(e.repoRoot),e.my_data.push(e.repoRoot)})},e.repoRoot=null,e.open=function(a){a.preventDefault(),a.stopPropagation(),e.opened=!e.opened},e.endOpen=function(a){a.preventDefault(),a.stopPropagation(),e.startOpened=!1,e.endOpened=!e.endOpened},e.startOpen=function(a){a.preventDefault(),a.stopPropagation(),e.endOpened=!1,e.startOpened=!e.startOpened},e.mdxquery=function(){e.shows=!1,angular.isDefined(E.query)&&(e.rptUUID?(E.query.parameters=d(e.parameters),E.query.parameters.paramDateFrom=E.query.parameters.paramDateFrom.replace(/-/g,""),E.query.parameters.paramDateTo=E.query.parameters.paramDateTo.replace(/-/g,""),e.starttimes=E.query.parameters.paramDateFrom,e.endtimes=E.query.parameters.paramDateTo,v.query(E.query.parameters,e.rptUUID).then(function(a){e.rheaders=[],e.rRows=[];var r=i.stripRestangular(a);r.cellset.length<2&&(r.cellset=null,e.shows=!0,e.empty="数据为空!");w(r)})):(e.rptUUID=void 0,E.query.parameters=d(e.parameters),angular.isDefined(e.parameters.paramDateFrom)&&angular.isDefined(e.parameters.paramDateTo)&&(E.query.parameters.paramDateFrom=E.query.parameters.paramDateFrom.replace(/-/g,""),E.query.parameters.paramDateTo=E.query.parameters.paramDateTo.replace(/-/g,""),e.starttimes=E.query.parameters.paramDateFrom,e.endtimes=E.query.parameters.paramDateTo,p.execute(E.query).then(function(a){e.rheaders=[],e.rRows=[];var r=i.stripRestangular(a);null!=r.cellset&&0!=r.cellset.length||(e.shows=!0,e.empty="数据为空!");w(r);A(r)}))))},e.execute=function(){p.list(e.token).then(function(a){e.select_treedata=e.my_data=a})},e.searchOptions=function(){if(angular.isDefined(E.query)){var e=E.query.parameters;for(var a in e);}},e.activeParentGroup=!1,e.disabledParentGroup=!1,e.toggleParentGroup=function(){E.query&&(E.query.properties["saiku.olap.result.formatter"]="flattened",y(E.query))};var T,U=function(e,a,r){var t=this,l={};a&&(l.resultset=[],l.metadata=[],l.height=0,l.width=0);var s=l;if("undefined"!=typeof e&&"undefined"!=typeof e.data&&(null===e.data||null===e.data.error)&&!(null===e.data||e.data.cellset&&0===e.data.cellset.length)){var n=e.data.cellset;if(n&&n.length>0){var o,u,i,p=0,v=0,c=!1,h=function(e,a){return e+a};for(o=0,u=n.length;0===v&&o<u;o++)for(var m=0,d=n[o].length;m<d;m++){if(!c)for(;"COLUMN_HEADER"==n[o][m].type&&"null"==n[o][m].value;)o++;if(c=!0,"ROW_HEADER_HEADER"==n[o][m].type){for(;"ROW_HEADER_HEADER"==n[o][m].type;)a&&l.metadata.push({colIndex:m,colType:"String",colName:n[o][m].value}),m++;p=m-1}if("COLUMN_HEADER"==n[o][m].type){for(var f=0,g=[];f<=o;)"null"!==n[f][m].value&&g.push(n[f][m].value),f++;a&&l.metadata.push({colIndex:m,colType:"Numeric",colName:g.join(" ~ ")}),v=o+1}}var y=[];for(i=0;i<=p;i++)y.push(null);for(o=v,u=n.length;o<u;o++)if(""!==n[o][0].value){var w=[],D=[],R=null,x=null;for(i=0;i<=p;i++){if(n[o]&&"null"===n[o][i].value){s=l;for(var Y=0;Y<p&&"null"===n[o][Y].value;Y++)s=s[y[Y]];Y>i&&(i=Y)}if(n[o]&&"null"!==n[o][i].value){if(0===i)for(var O=0;O<=p;O++)y[O]=null;"number"==typeof s&&(R[x]={},s=R[x]),x=n[o][i].value,y[i]=x,s.hasOwnProperty(x)||(s[x]={}),R=s,s=s[x]}}D=_.clone(y);for(var b=p+1,q=n[o].length;b<q;b++){var M=n[o][b],E=M.value||0,T=0!==E,U=M.properties.raw;U&&"null"!==U?E=parseFloat(U):"number"!=typeof M.value&&parseFloat(M.value.replace(/[^a-zA-Z 0-9.]+/g,""))&&(E=parseFloat(M.value.replace(/[^a-zA-Z 0-9.]+/g,"")),T=!1),E>0&&T&&(E=M.value&&M.value.indexOf("%")>=0?100*E:E),w.push(E),D.push({f:M.value,v:E})}a&&l.resultset.push(D);var A=_.reduce(w,h,0);x=null===x?"null":x,R[x]=A,s=l}return r&&(t.rawdata=e.data,t.data=l,t.hasProcessed=!0,t.data.height=t.data.resultset.length),l}}},A=function(a){var r=U({data:a}),t=window._,l=void 0;if(e.chartData=[],E.query)if("sunburst"==E.query.properties["saiku.ui.render.type"]){e.chartType="pie",l=[];var s=0,n=0;t.forIn(r,function(e,a){s+=e,n++,l.push({label:a,value:e,color:f()})}),e.chartData=l,e.chartOptions={segmentShowStroke:!0,segmentStrokeWidth:2,legendTemplate:'<ul class="tc-chart-js-legend col-md-2.5 " style="float:right;margin-top:-250px;z-index: 999;"><% for (var i=0; i<Math.min(segments.length,5); i++){%><li><span style="background-color:<%=segments[i].fillColor%>"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>',onAnimationComplete:function(){this.showTooltip(this.segments,!0)}}}else"stackedBar"==E.query.properties["saiku.ui.render.type"]};e.getRelativePosition=function(e){},e.getPointPosition=function(e){},e.exportData=function(a){!a&&T&&(a=T);var r=e.mdxpath;if(void 0!=E.query.name){var t=r.substring(r.lastIndexOf("/")+1).slice(0,-5);s({url:p.exportData("flat",a,encodeURIComponent(t)).getRequestedUrl(),method:"POST",data:E.query,headers:{Accept:"application/vnd.ms-excel","X-Auth-Token":n.get("Auth-Token")||null},responseType:"arraybuffer"}).success(function(e,a,r,l){var s=new Blob([e],{type:"application/vnd.ms-excel"}),n=URL.createObjectURL(s),o=document.createElement("a");o.href=n,o.target="_blank",o.download=t+"xls",document.body.appendChild(o),o.click()}).error(function(e,a,r,t){})}},e.rheaders=[],e.rRows=[],e.onChartClick=function(e){};var k=void 0}]);