2 * Copyright (c) 2014 DataTorrent, Inc. ALL Rights Reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 angular.module('ui.dashboard')
20 .controller('WidgetSettingsRaptorReportCtrl', ['$http','$scope','$rootScope','$uibModalInstance', 'widget', function ($http,$scope,$rootScope,$uibModalInstance, widget) {
22 // add watch function for widget here
23 // leave ajax call to the dashboard.js
25 console.log("============= WidgetSettingsRaptorReportCtrl scope =================");
28 var getFormFieldListUrl = "raptor.htm?action=report.run.container&c_master="+widget.report_id + "&refresh=Y"
29 console.log("============= getFormFieldListUrl =============");
30 console.log(getFormFieldListUrl);
31 $http.get(getFormFieldListUrl).then(
33 $scope.reportData = res.data;
34 // add widget to scope
35 $scope.showFormFieldIds = false;
36 $scope.formFieldSelectedValues = {};
39 var parseQueryString = function( queryString ) {
40 var params = {}, queries, temp, i, l;
41 // Split into key/value pairs
42 queries = queryString.split("&");
43 // Convert the array of strings into an object
44 for ( i = 0, l = queries.length; i < l; i++ ) {
45 temp = queries[i].split('=');
46 //console.log(temp[0]);
47 //console.log(temp[0] != "refresh");
48 if(temp[0] && temp[0] != "refresh")
49 params[temp[0]] = temp[1];
54 var paginationOptions = {
60 $scope.gridOptions = {
61 paginationPageSizes: [5],
62 paginationPageSize: 5,
63 useExternalPagination: true,
67 enableSelectAll: true,
68 exporterMenuPdf: false,
69 exporterMenuCsv: false,
70 exporterCsvFilename: 'myFile.csv',
71 exporterPdfDefaultStyle: {fontSize: 9},
72 exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
73 exporterPdfTableHeaderStyle: {fontSize: 10, bol$rootScoped: true, italics: true, color: 'red'},
74 exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
75 exporterPdfFooter: function ( currentPage, pageCount ) {
76 return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
78 exporterPdfCustomFormatter: function ( docDefinition ) {
79 docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
80 docDefinition.styles.footerStyle = { fontSize: 10, bold: true };
83 exporterPdfOrientation: 'portrait',
84 exporterPdfPageSize: 'LETTER',
85 exporterPdfMaxGridWidth: 500,
86 exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),
87 onRegisterApi: function(gridApi) {
88 $scope.gridApi = gridApi;
89 gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
90 paginationOptions.pageNumber = newPage;
91 paginationOptions.pageSize = pageSize;
99 $scope.getFormFieldSelectedValuesAsURL = function(){
100 var formFieldsUrl = '';
101 $scope.widget.reportData.formFieldList.forEach(function(formField) {
102 if(formField.fieldType==='LIST_BOX') {
103 if($scope.formFieldSelectedValues && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId].value != '') {
104 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId].value+'&';
106 } else if(formField.fieldType==='LIST_MULTI_SELECT') {
107 if($scope.formFieldSelectedValues[formField.fieldId].length >0) {
108 for (var i = 0; i < $scope.formFieldSelectedValues[formField.fieldId].length; i++) {
109 if($scope.formFieldSelectedValues[formField.fieldId][i].defaultValue){
110 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId][i].value+'&';
114 } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'DATE'){
115 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.dateformat)+'&';
116 } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'TIMESTAMP_MIN'){
117 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.datetimeformat)+'&';
118 } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId] != ''){
119 formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId]+'&';
122 return formFieldsUrl;
126 $scope.triggerOtherFormFields = function(){
127 console.log("report_run");
128 var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
129 $http.get('raptor.htm?action=report.formfields.run.container&c_master='+widget.report_id+'&'+formFieldsUrl).then(
131 $scope.widget.reportData = response.data;
136 $scope.runReport = function(pagination){
137 var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL();
138 console.log("pagination");
140 console.log("refreshed ...");
141 $scope.gridOptions.pageNumber = 1;
142 $scope.gridOptions.paginationPageSizes= [widget.reportData.pageSize];
143 $scope.gridOptions.paginationPageSize= widget.reportData.pageSize;
144 if(widget.reportData.totalRows<14){
145 $scope.gridHeight = (widget.reportData.totalRows+7)*30+'px';
147 $scope.gridHeight = '400px';
149 $scope.gridOptions.totalItems = widget.reportData.totalRows;
150 $scope.gridOptions.data= widget.reportData.reportDataRows;
151 $scope.gridOptions.exporterPdfHeader.text= widget.reportData.reportName;
153 /* $scope.currentReportUrlParams = 'c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'&display_content=Y&r_page='+(paginationOptions.pageNumber-1);
154 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));
155 $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(
157 $scope.currentReportUrlParams = 'c_master='+ widget.report_id+'&'+formFieldsUrl+'&display_content=Y&r_page='+(paginationOptions.pageNumber-1);
158 $scope.urlParams = parseQueryString($scope.currentReportUrlParams);
160 console.log('raptor.htm?action=report.run.container&c_master='+ widget.report_id +'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1));
161 $http.get('raptor.htm?action=report.run.container&c_master='+widget.report_id+'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then(
163 widget.reportData = response.data;
164 if(widget.reportData.errormessage) {
165 document.getElementById('errorDiv').innerHTML = widget.reportData.errormessage;
166 console.log(document.getElementById('errorDiv').innerHtml);
167 console.log(widget.reportData.errormessage);
170 if(!$scope.urlParams.hideChart && widget.reportData.chartAvailable && widget.reportData.totalRows>1){
171 console.log('raptor.htm?action=chart.run&c_master='+widget.report_id+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1));
172 $http.get('raptor.htm?action=chart.run&c_master='+widget.report_id +'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then(
174 console.log(response.data);
175 $scope.showChart = true;
176 document.getElementById('chartiframe').contentWindow.document.write(response.data);
177 document.getElementById('chartiframe').contentWindow.document.close();
180 $scope.showChart = false;
183 if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){
184 $scope.showFormFields = true;
186 $scope.showFormFields = false;
189 $rootScope.gridOptions = $scope.gridOptions;
190 $rootScope.gridHeight = $scope.gridHeight;
191 $rootScope.showdataContainer = true;
198 // set up result object
199 $scope.result = jQuery.extend(true, {}, widget);
201 $scope.ok = function () {
202 $uibModalInstance.close($scope.result);
205 $scope.okay = function () {
206 console.log("$scope.okay!")
209 /* $uibModalInstance.close($scope.result);*/
212 $scope.cancel = function () {
213 $uibModalInstance.dismiss('cancel');