removing unused db file
[policy/engine.git] / ecomp-sdk-app / src / main / webapp / static / fusion / raptor / ebz / report_run.js
1 app.controller("reportRunController", ['$scope','$rootScope','$routeParams','$http','dateFilter', '$window', '$timeout', 'rowSorter',
2                                        function ($scope,$rootScope,$routeParams,$http,dateFilter,$window,$timeout,rowSorter) { 
3         $scope.dateformat = "MM/dd/yyyy";
4         $scope.datetimeformat = "MM/dd/yyyy hh:mm a";
5         $scope.showFormFields =  false;
6         $scope.showGrid =  false;
7         $scope.showChart =  false;
8         $scope.showBackButton = false;
9         $scope.reportData = {};
10         $scope.reportData.allowEdit = false;
11         $scope.formFieldSelectedValues = {};
12         $scope.showFormFieldIds = false;
13         
14         $scope.isInProgress = true;
15         
16         if($routeParams.reportUrlParams.indexOf("parent___params===")>-1) {
17                 $scope.showBackButton = true;
18                 $scope.parentReportUrlParams = $routeParams.reportUrlParams.substring($routeParams.reportUrlParams.indexOf("parent___params===")+18);
19                 $scope.currentReportUrlParams = $routeParams.reportUrlParams.substring(0,$routeParams.reportUrlParams.indexOf("parent___params==="));
20         } else {
21                 $scope.currentReportUrlParams = $routeParams.reportUrlParams;
22         }
23         console.log($routeParams.reportUrlParams);
24         var parseQueryString = function( queryString ) {
25             var params = {}, queries, temp, i, l;
26             // Split into key/value pairs
27             queries = queryString.split("&");
28             // Convert the array of strings into an object
29             for ( i = 0, l = queries.length; i < l; i++ ) {
30                 temp = queries[i].split('=');
31                 //console.log(temp[0]);
32                 //console.log(temp[0] != "refresh");
33                 if(temp[0] && temp[0] != "refresh")
34                         params[temp[0]] = temp[1];
35             }
36             return params;
37         };
38         
39         var convertQueryString = function(queryString) {
40                 var keys = ""; var str = "";
41                 keys = Object.keys(queryString);
42                 //console.log(keys);
43                 for ( i = 0, l = keys.length; i < l; i++ ) {
44                         str += keys[i]+"="+queryString[keys[i]] + "&";
45                         
46                 }
47                 return str;
48                 //queryString = 
49         }
50         
51         
52         
53         
54         $scope.urlParams = parseQueryString($scope.currentReportUrlParams);
55         
56         $scope.reportChartURL = 'report#/report_chart_wizard/'+$scope.urlParams.c_master;
57         
58         $scope.reportEditURL = 'report_wizard.htm?action=report.edit&c_master='+$scope.urlParams.c_master;
59
60         
61         $http.get('raptor.htm?action=report.run.container&'+$scope.currentReportUrlParams).then(
62                 function(response){
63                         console.log(response);
64                         $scope.isInProgress = false;
65                         $scope.reportData = response.data;
66                 if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){
67                         console.log('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams));
68                         $http.get('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams)).then(
69                                         function(response){
70                                           $scope.showChart =  true;
71                                           document.getElementById('chartiframe').contentWindow.document.write(response.data);
72                                           document.getElementById('chartiframe').contentWindow.document.close();
73                                         });
74                 }
75         
76                 if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){
77                           $scope.showFormFields = true;
78                     }
79                 });
80     $scope.getFormFieldSelectedValuesAsURL = function(){
81         var formFieldsUrl = '';
82         $scope.reportData.formFieldList.forEach(function(formField) {
83                         if(formField.fieldType==='LIST_BOX') {
84                                 if($scope.formFieldSelectedValues && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId].value != '') {
85                                         formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId].value+'&';
86                                 }
87                         } else if(formField.fieldType==='LIST_MULTI_SELECT') {
88                                 if($scope.formFieldSelectedValues[formField.fieldId].length >0) {
89                                         for (var i = 0; i < $scope.formFieldSelectedValues[formField.fieldId].length; i++) {
90                                                 if($scope.formFieldSelectedValues[formField.fieldId][i].defaultValue){
91                                                   formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId][i].value+'&';
92                                                 }
93                                     }
94                                 }
95                         } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'DATE'){
96                                 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.dateformat)+'&';
97                         } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'TIMESTAMP_MIN'){
98                                 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.datetimeformat)+'&';
99                         } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId] != ''){
100                                 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId]+'&';
101                         }
102         });
103         return formFieldsUrl;
104
105     }
106
107     $scope.runReport = function(pagination){
108         
109         var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
110                 console.log("pagination");
111         if(!pagination) {
112                 console.log("refreshed ...");
113                 $scope.gridOptions.pageNumber = 1;
114                   $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize];
115                   $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize;
116                   if($scope.reportData.totalRows<14){
117                           $scope.gridHeight = ($scope.reportData.totalRows+7)*30+'px';
118                   } else{
119                           $scope.gridHeight = '400px';
120                   }
121                   $scope.gridOptions.totalItems = $scope.reportData.totalRows;
122                   $scope.gridOptions.data= $scope.reportData.reportDataRows;
123                   $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName;
124
125         }
126         $scope.currentReportUrlParams = 'c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'&display_content=Y&r_page='+(paginationOptions.pageNumber-1);
127         console.log('raptor.htm?action=report.run.container&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1));
128           $http.get('raptor.htm?action=report.run.container&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then(
129                 function(response){
130                         $scope.reportData = response.data;
131                         if($scope.reportData.errormessage) {
132                                 document.getElementById('errorDiv').innerHTML = $scope.reportData.errormessage;
133                                 console.log(document.getElementById('errorDiv').innerHtml);
134                                 console.log($scope.reportData.errormessage);
135                         }                  
136                     if(!pagination) {   
137                       if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){
138                                 console.log('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1));
139                                 $http.get('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then(
140                                                 function(response) {
141                                                         console.log(response.data);
142                                                         $scope.showChart =  true;
143                                                         document.getElementById('chartiframe').contentWindow.document.write(response.data);
144                                                         document.getElementById('chartiframe').contentWindow.document.close();
145                                                 });
146                         } else {
147                                                         $scope.showChart =  false;
148                         }
149                     }
150                         if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){
151                                 $scope.showFormFields = true;
152                                 } else {
153                                         $scope.showFormFields = false;
154                                 }
155                 });
156     };
157
158           var paginationOptions = {
159                             pageNumber: 1,
160                             pageSize: 5,
161                             sort: null
162           };
163           
164           $scope.gridOptions = {
165                                 pageNumber: 1,
166                                 sort : null,
167                             paginationPageSizes: [5],
168                             paginationPageSize: 5,
169                             useExternalPagination: true,
170                                 columnDefs: [],
171                                 data: [],
172                             enableGridMenu: true,
173                             enableSelectAll: true,
174                                 gridMenuCustomItems : [
175                                         {       title : 'All Reports',
176                                                 action : function($event) {
177                                                         $window.open('report.htm','_self');
178                                                         },      order : 210     },
179                                         {       title : 'Edit Report',
180                                                 action : function($event) {
181                                                         $window.open($scope.reportEditURL,'_self');
182                                                         },      order : 211     },
183                                         {       title : 'Export All data as Excel 2007',
184                                                 action : function($event) {
185                                                         $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel2007.session','_self');
186                                                         },      order : 212     },
187                                         {       title : 'Export All data as Excel',
188                                                 action : function($event) {
189                                                         $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel.session','_self');
190                                                         },      order : 213 },
191                                         {       title : 'Export All data as CSV',
192                                                 action : function($event) {
193                                                         $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.csv.session','_self');
194                                                         },      order : 214     },
195                                         {       title : 'Export All data as PDF',
196                                                 action : function($event) {
197                                                         $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.pdf.session','_self');
198                                                         },      order : 215     } ],
199                             exporterMenuPdf: false,
200                         exporterMenuCsv: false,
201                             exporterCsvFilename: 'myFile.csv',
202                             exporterPdfDefaultStyle: {fontSize: 9},
203                             exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
204                             exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'},
205                             exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
206                             exporterPdfFooter: function ( currentPage, pageCount ) {
207                               return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
208                             },
209                             exporterPdfCustomFormatter: function ( docDefinition ) {
210                               docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
211                               docDefinition.styles.footerStyle = { fontSize: 10, bold: true };
212                               return docDefinition;
213                             },
214                             exporterPdfOrientation: 'portrait',
215                             exporterPdfPageSize: 'LETTER',
216                             exporterPdfMaxGridWidth: 500,
217                             exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),
218                             onRegisterApi: function(gridApi) {
219                                 $scope.gridApi = gridApi;
220                                 gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
221                                   paginationOptions.pageNumber = newPage;
222                                   paginationOptions.pageSize = pageSize;
223                                   $scope.runReport(true);
224                                 });
225                               }
226                           };
227  
228           $scope.uiGridRefresh = function(){
229                   var columnDefsArray = [];
230                   var columnFreezeEndColumn = $scope.reportData.colIdxTobeFreezed;
231                   var doColumnNeedToFreeze = false;
232                   if(columnFreezeEndColumn && columnFreezeEndColumn.length>0) {
233                           doColumnNeedToFreeze = true;
234                   }
235                   $scope.reportData.reportDataColumns.forEach(function(entry) {
236                           var tempColumnDef = { displayName: entry.columnTitle, field: entry.colId, enableSorting: entry.sortable,
237                                           sortingAlgorithm: function(a, b) {
238                                          return rowSorter.sortAlpha(a.displayValue, b.displayValue);
239                                           },
240                                           cellTemplate: '<div  class="ui-grid-cell-contents"  style="text-align:{{COL_FIELD.alignment}};" title="TOOLTIP">   '+
241                                                  '  <div ng-if="!COL_FIELD.drillDownURL || COL_FIELD.drillDownURL==\'\'">{{COL_FIELD.displayValue}}</div>' +
242                                  '  <a ng-if="COL_FIELD.drillDownURL && COL_FIELD.drillDownURL!=\'\'" ng-href="{{COL_FIELD.drillDownURL}}&parent___params==={{grid.appScope.currentReportUrlParams}}" >{{COL_FIELD.displayValue}}</a>' +
243                                                   '</div>'};
244                           if(entry.columnWidth && entry.columnWidth!='null' && entry.columnWidth!='pxpx' && entry.columnWidth!='nullpx' && entry.columnWidth!='nullpxpx'){
245                                   tempColumnDef['minWidth'] = entry.columnWidth.substring(0, entry.columnWidth.length - 2);
246                           } else {
247                                   tempColumnDef['minWidth'] = '100';
248                           }
249                           if(doColumnNeedToFreeze) {
250                                   tempColumnDef['pinnedLeft']= true;
251                                   if(columnFreezeEndColumn === entry.colId){
252                                           doColumnNeedToFreeze = false;
253                                   }
254                           }
255                           columnDefsArray.push(tempColumnDef);
256                   }); 
257           
258                   $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize];
259                   $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize;
260                   if($scope.reportData.totalRows<14){
261                           $scope.gridHeight = ($scope.reportData.totalRows+5)*30+'px';
262                   }else{
263                           $scope.gridHeight = '400px';
264                   }
265                   $scope.gridOptions.totalItems = $scope.reportData.totalRows;
266                   $scope.gridOptions.columnDefs= columnDefsArray;
267                   $scope.gridOptions.data= $scope.reportData.reportDataRows;
268                   $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName;
269           };
270
271                 $scope.$watch("reportData",function(newValue,oldValue) {
272                  if(!$scope.urlParams.hideGrid){
273                   if($scope.reportData){
274                 if($scope.reportData.displayData && $scope.reportData.reportDataColumns){
275                                 $scope.showGrid =  true;
276                         $scope.uiGridRefresh();
277                         }
278               }
279                  }
280                 });
281
282                 $scope.triggerOtherFormFields = function(){
283                         console.log("report_run");
284                 var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
285                 $http.get('raptor.htm?action=report.formfields.run.container&c_master='+$scope.reportData.reportID+'&'+formFieldsUrl).then(
286                                 function(response){
287                                 $scope.reportData = response.data;
288                                 });
289                 };
290                 $timeout(function() {
291                         $rootScope.isViewRendering = false;
292                         });
293 }]);