aboutsummaryrefslogtreecommitdiffstats
path: root/ecomp-sdk-app/src/main/webapp/static/fusion/raptor/ebz/report_run.js
blob: 0df56796ca97eca85e673c1bcb70e958525496bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
app.controller("reportRunController", ['$scope','$rootScope','$routeParams','$http','dateFilter', '$window', '$timeout', 'rowSorter',
                                       function ($scope,$rootScope,$routeParams,$http,dateFilter,$window,$timeout,rowSorter) { 
	$scope.dateformat = "MM/dd/yyyy";
	$scope.datetimeformat = "MM/dd/yyyy hh:mm a";
	$scope.showFormFields =  false;
	$scope.showGrid =  false;
	$scope.showChart =  false;
	$scope.showBackButton = false;
	$scope.reportData = {};
	$scope.reportData.allowEdit = false;
	$scope.formFieldSelectedValues = {};
	$scope.showFormFieldIds = false;
	
	$scope.isInProgress = true;
	
	if($routeParams.reportUrlParams.indexOf("parent___params===")>-1) {
		$scope.showBackButton = true;
		$scope.parentReportUrlParams = $routeParams.reportUrlParams.substring($routeParams.reportUrlParams.indexOf("parent___params===")+18);
		$scope.currentReportUrlParams = $routeParams.reportUrlParams.substring(0,$routeParams.reportUrlParams.indexOf("parent___params==="));
	} else {
		$scope.currentReportUrlParams = $routeParams.reportUrlParams;
	}
	console.log($routeParams.reportUrlParams);
	var parseQueryString = function( queryString ) {
	    var params = {}, queries, temp, i, l;
	    // Split into key/value pairs
	    queries = queryString.split("&");
	    // Convert the array of strings into an object
	    for ( i = 0, l = queries.length; i < l; i++ ) {
	        temp = queries[i].split('=');
	        //console.log(temp[0]);
	        //console.log(temp[0] != "refresh");
	        if(temp[0] && temp[0] != "refresh")
	        	params[temp[0]] = temp[1];
	    }
	    return params;
	};
	
	var convertQueryString = function(queryString) {
		var keys = ""; var str = "";
		keys = Object.keys(queryString);
		//console.log(keys);
		for ( i = 0, l = keys.length; i < l; i++ ) {
			str += keys[i]+"="+queryString[keys[i]] + "&";
			
		}
		return str;
		//queryString = 
	}
	
	
	
	
	$scope.urlParams = parseQueryString($scope.currentReportUrlParams);
	
	$scope.reportChartURL = 'report#/report_chart_wizard/'+$scope.urlParams.c_master;
	
	$scope.reportEditURL = 'report_wizard.htm?action=report.edit&c_master='+$scope.urlParams.c_master;

	
	$http.get('raptor.htm?action=report.run.container&'+$scope.currentReportUrlParams).then(
		function(response){
			console.log(response);
			$scope.isInProgress = false;
			$scope.reportData = response.data;
	      	if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){
	      		console.log('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams));
		    	$http.get('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams)).then(
		      		 	function(response){
		      		 	  $scope.showChart =  true;
		      			  document.getElementById('chartiframe').contentWindow.document.write(response.data);
		      		 	  document.getElementById('chartiframe').contentWindow.document.close();
		      			});
	    	}
	
	        if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){
			  $scope.showFormFields = true;
		    }
		});
    $scope.getFormFieldSelectedValuesAsURL = function(){
    	var formFieldsUrl = '';
    	$scope.reportData.formFieldList.forEach(function(formField) {
	   		if(formField.fieldType==='LIST_BOX') {
	   			if($scope.formFieldSelectedValues && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId].value != '') {
	   				formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId].value+'&';
	   			}
	   		} else if(formField.fieldType==='LIST_MULTI_SELECT') {
	   			if($scope.formFieldSelectedValues[formField.fieldId].length >0) {
	   				for (var i = 0; i < $scope.formFieldSelectedValues[formField.fieldId].length; i++) {
	   					if($scope.formFieldSelectedValues[formField.fieldId][i].defaultValue){
		   				  formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId][i].value+'&';
	   					}
	   			    }
	   			}
	   		} else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'DATE'){
	   			formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.dateformat)+'&';
	   		} else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'TIMESTAMP_MIN'){
	   			formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.datetimeformat)+'&';
	   		} else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId] != ''){
	   			formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId]+'&';
	   		}
    	});
    	return formFieldsUrl;

    }

    $scope.runReport = function(pagination){
    	
    	var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
		console.log("pagination");
    	if(!pagination) {
    		console.log("refreshed ...");
    		$scope.gridOptions.pageNumber = 1;
  		  $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize];
		  $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize;
		  if($scope.reportData.totalRows<14){
			  $scope.gridHeight = ($scope.reportData.totalRows+7)*30+'px';
		  } else{
			  $scope.gridHeight = '400px';
		  }
		  $scope.gridOptions.totalItems = $scope.reportData.totalRows;
		  $scope.gridOptions.data= $scope.reportData.reportDataRows;
		  $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName;

    	}
        $scope.currentReportUrlParams = 'c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'&display_content=Y&r_page='+(paginationOptions.pageNumber-1);
    	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));
    	  $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(
    		function(response){
		    	$scope.reportData = response.data;
		    	if($scope.reportData.errormessage) {
		    		document.getElementById('errorDiv').innerHTML = $scope.reportData.errormessage;
		    		console.log(document.getElementById('errorDiv').innerHtml);
		    		console.log($scope.reportData.errormessage);
		    	}		   
		    if(!pagination) {	
		      if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){
		      		console.log('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1));
			    	$http.get('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then(
			      		 	function(response) {
			      		 		console.log(response.data);
			      		 		$scope.showChart =  true;
			      		 		document.getElementById('chartiframe').contentWindow.document.write(response.data);
			      		 		document.getElementById('chartiframe').contentWindow.document.close();
			      			});
		      	} else {
			      		 		$scope.showChart =  false;
		      	}
		    }
		        if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){
		        	$scope.showFormFields = true;
				} else {
					$scope.showFormFields = false;
				}
    		});
    };

	  var paginationOptions = {
			    pageNumber: 1,
			    pageSize: 5,
			    sort: null
	  };
	  
	  $scope.gridOptions = {
			  	pageNumber: 1,
			  	sort : null,
			    paginationPageSizes: [5],
			    paginationPageSize: 5,
			    useExternalPagination: true,
				columnDefs: [],
				data: [],
			    enableGridMenu: true,
			    enableSelectAll: true,
				gridMenuCustomItems : [
   					{	title : 'All Reports',
						action : function($event) {
							$window.open('report.htm','_self');
							},	order : 210	},
   					{	title : 'Edit Report',
						action : function($event) {
							$window.open($scope.reportEditURL,'_self');
							},	order : 211	},
					{	title : 'Export All data as Excel 2007',
						action : function($event) {
							$window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel2007.session','_self');
							},	order : 212	},
					{	title : 'Export All data as Excel',
						action : function($event) {
							$window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel.session','_self');
							},	order : 213 },
					{	title : 'Export All data as CSV',
						action : function($event) {
							$window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.csv.session','_self');
							},	order : 214	},
					{	title : 'Export All data as PDF',
						action : function($event) {
							$window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.pdf.session','_self');
							},	order : 215	} ],
			    exporterMenuPdf: false,
	    		exporterMenuCsv: false,
			    exporterCsvFilename: 'myFile.csv',
			    exporterPdfDefaultStyle: {fontSize: 9},
			    exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
			    exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'},
			    exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
			    exporterPdfFooter: function ( currentPage, pageCount ) {
			      return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
			    },
			    exporterPdfCustomFormatter: function ( docDefinition ) {
			      docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
			      docDefinition.styles.footerStyle = { fontSize: 10, bold: true };
			      return docDefinition;
			    },
			    exporterPdfOrientation: 'portrait',
			    exporterPdfPageSize: 'LETTER',
			    exporterPdfMaxGridWidth: 500,
			    exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),
			    onRegisterApi: function(gridApi) {
			        $scope.gridApi = gridApi;
			        gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
			          paginationOptions.pageNumber = newPage;
			          paginationOptions.pageSize = pageSize;
			          $scope.runReport(true);
			        });
			      }
			  };
 
	  $scope.uiGridRefresh = function(){
		  var columnDefsArray = [];
		  var columnFreezeEndColumn = $scope.reportData.colIdxTobeFreezed;
		  var doColumnNeedToFreeze = false;
		  if(columnFreezeEndColumn && columnFreezeEndColumn.length>0) {
			  doColumnNeedToFreeze = true;
		  }
		  $scope.reportData.reportDataColumns.forEach(function(entry) {
			  var tempColumnDef = { displayName: entry.columnTitle, field: entry.colId, enableSorting: entry.sortable,
					  sortingAlgorithm: function(a, b) {
				         return rowSorter.sortAlpha(a.displayValue, b.displayValue);
					  },
					  cellTemplate: '<div  class="ui-grid-cell-contents"  style="text-align:{{COL_FIELD.alignment}};" title="TOOLTIP">   '+
					  	 '  <div ng-if="!COL_FIELD.drillDownURL || COL_FIELD.drillDownURL==\'\'">{{COL_FIELD.displayValue}}</div>' +
		                 '  <a ng-if="COL_FIELD.drillDownURL && COL_FIELD.drillDownURL!=\'\'" ng-href="{{COL_FIELD.drillDownURL}}&parent___params==={{grid.appScope.currentReportUrlParams}}" >{{COL_FIELD.displayValue}}</a>' +
						  '</div>'};
			  if(entry.columnWidth && entry.columnWidth!='null' && entry.columnWidth!='pxpx' && entry.columnWidth!='nullpx' && entry.columnWidth!='nullpxpx'){
				  tempColumnDef['minWidth'] = entry.columnWidth.substring(0, entry.columnWidth.length - 2);
			  } else {
				  tempColumnDef['minWidth'] = '100';
			  }
			  if(doColumnNeedToFreeze) {
				  tempColumnDef['pinnedLeft']= true;
				  if(columnFreezeEndColumn === entry.colId){
					  doColumnNeedToFreeze = false;
				  }
			  }
			  columnDefsArray.push(tempColumnDef);
		  }); 
	  
		  $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize];
		  $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize;
		  if($scope.reportData.totalRows<14){
			  $scope.gridHeight = ($scope.reportData.totalRows+5)*30+'px';
		  }else{
			  $scope.gridHeight = '400px';
		  }
		  $scope.gridOptions.totalItems = $scope.reportData.totalRows;
		  $scope.gridOptions.columnDefs= columnDefsArray;
		  $scope.gridOptions.data= $scope.reportData.reportDataRows;
		  $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName;
	  };

		$scope.$watch("reportData",function(newValue,oldValue) {
	  	 if(!$scope.urlParams.hideGrid){
		  if($scope.reportData){
	    	if($scope.reportData.displayData && $scope.reportData.reportDataColumns){
	  			$scope.showGrid =  true;
		        $scope.uiGridRefresh();
	  		}
	      }
		 }
		});

		$scope.triggerOtherFormFields = function(){
  			console.log("report_run");
	    	var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
	    	$http.get('raptor.htm?action=report.formfields.run.container&c_master='+$scope.reportData.reportID+'&'+formFieldsUrl).then(
	      		 	function(response){
	    		    	$scope.reportData = response.data;
	      			});
		};
		$timeout(function() {
			$rootScope.isViewRendering = false;
			});
}]);