ab0737992490e2f9f0bc387d8a2b167a3f91d5bc
[portal/sdk.git] /
1 appDS2.controller('reportStepController', function($scope,$http,$location, $routeParams, $q, $modal,$log,$window, raptorReportFactory, stepFormFactory) {
2
3         $scope.showLoader = true;
4         // tabs for report wizard steps:
5         $scope.activeTabsId = 'Definition';
6
7         // For all the dropdown box, please declare the active selection variable in the following manner:
8         // $scope.selectedOpt = {}; 
9         // $scope.selectedOpt.value = "";
10         $scope.getDefinitionById = function(id) {
11                 raptorReportFactory.getDefinitionByReportId(id).then(function(data){
12                         $scope.loadDefinition(data);
13                         $scope.definitionData = data;
14                         $scope.showLoader = false;
15                 },function(error){
16                         $log.error("raptorReportFactory: getSearchData failed.");
17                         $scope.showLoader = false;
18                 });
19         }
20         
21
22         $scope.createNewDefinition = function() {
23                 raptorReportFactory.createNewDefinition().then(function(data){
24                         $scope.loadDefinition(data);
25                         $scope.definitionData = data;
26                         $scope.showLoader = false;
27                 },function(error){
28                         $log.error("raptorReportFactory: getSearchData failed.");
29                 });
30         }       
31         
32         var initializeCreateReport = function() {
33                 $scope["selectedReportType"] ={};
34                 $scope.selectedReportType.value ="linear";
35                 $scope.selectedReportType2 ={};
36                 $scope.selectedReportType2.value ="";
37                 $scope.selectedDataSource ={};
38                 $scope.selectedDataSource.value="local";
39                 $scope.sqlScript = "SELECT ";
40                 $scope.pageSize = {"value":"50"};
41         }
42
43         
44         var loadSqlInSession = function(){              
45                 raptorReportFactory.getSqlInSession().then(function(data){
46                         $scope.sqlInSessionJSON = data;
47                         $scope.sqlScript = data.query;
48                 $scope.showLoader = false;
49                 },function(error){
50                         $log.error("raptorReportFactory: getSearchData failed.");
51                 });
52         };
53         
54         initializeCreateReport();
55         if ($routeParams.reportMode) {
56                 if ($routeParams.reportMode=="copy") {
57                         raptorReportFactory.copyReportById($routeParams.reportId).then(function(data){
58                                   $scope.$emit('RefreshInsession');
59                         },function(error){
60                                 $log.error("raptorReportFactory: deleteFormFieldById failed.");
61                         });                                                                                                     
62                 } else if ($routeParams.reportMode=="import") {
63                         $scope.$emit('RefreshInsession');
64                 }
65         } else if ($routeParams.reportId) {
66                 $scope.getDefinitionById($routeParams.reportId);
67                 $scope.isEdit = true;
68                 $scope.reportId = $routeParams.reportId;
69         } else {
70                 $scope.isEdit = false;
71                 $scope.createNewDefinition();
72         }
73         
74         
75         $scope.RunCurrentReport = function (){
76                 $window.location.href = "#/report_run/c_master="+$scope.reportId+"&refresh=Y";
77         }
78         
79         $scope.deleteFormField = function(rowData) {            
80                    var modalInstance = $modal.open({
81                                  scope: $scope,
82                                  animation: $scope.animationsEnabled,
83                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-formfield-del-confirm.html',
84                                  sizeClass: 'modal-large',
85                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','rowData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, rowData) {
86                                          $scope.tempFieldId = rowData.id;
87                                          $scope.ok = function() {
88                                                         raptorReportFactory.deleteFormFieldById(rowData.id).then(function(data){
89                                                         $modalInstance.close();                                                                                                                                                                                                 
90                                                         },function(error){
91                                                                 $log.error("raptorReportFactory: deleteFormFieldById failed.");
92                                                         });                                                                              
93                                          }                                       
94                                          $scope.cancel = function() {
95                                         $modalInstance.dismiss();
96                                  };
97                             }],
98                                 resolve:{
99                                         rowData: function(){
100                                         return rowData;
101                                         }
102                                  }
103                           });
104                       modalInstance.result.then(function () {
105                           $scope.$emit('RefreshFormField');
106                       }, function () {
107                       });               
108         }
109         
110         $scope.loadDefinition = function(definitionData) {
111                 $scope.reportId =  definitionData.reportId+"";
112                 $scope.reportName = definitionData.reportName;
113                 $scope.reportDescr = definitionData.reportDescr;
114                 $scope.formHelpText = definitionData.formHelpText;
115                 $scope.selectedPageSize = {"value": definitionData.pageSize+''};
116                 $scope.selectedMaxRowsInExcelCSVDownload = {"value": definitionData.maxRowsInExcelCSVDownload};
117                 $scope.reportTitle = definitionData.reportTitle;
118                 $scope.reportSubTitle = definitionData.reportSubTitle;
119                 $scope.selectedNumFormCols ={"value": definitionData.numFormCols+''}; 
120                 $scope.selectedFrozenColumns={"value": definitionData.frozenColumns+''};
121                 $scope.selectedDataGridAlign = {"value":definitionData.dataGridAlign+''};
122                 $scope.emptyMessage = definitionData.emptyMessage+'';
123                 $scope.selectedDataContainerHeight = {"value":definitionData.dataContainerHeight+''};
124                 $scope.selectedDataContainerWidth = {"value":definitionData.dataContainerWidth+''};
125                 var displayAreaValue = "null"
126                 for (var i=0; i<3; i++ ) {
127                         if (definitionData.displayArea[i].selected) {
128                                 displayAreaValue = definitionData.displayArea[i].name;
129                         }
130                 }
131                 $scope.selectedDisplayArea = {"value":displayAreaValue+""}; 
132                 
133                 $scope.hideFormFieldsAfterRunSelected = {"value": definitionData.hideFormFieldsAfterRun}
134
135                 $scope.hideFormFieldsSelected = {"value":definitionData.displayOptions[0].selected};
136                 $scope.hideChartSelected = {"value":definitionData.displayOptions[1].selected};
137                 $scope.hideReportDataSelected = {"value":definitionData.displayOptions[2].selected};
138                 $scope.hideExcelSelected = {"value":definitionData.displayOptions[3].selected};
139                 $scope.hidePdfSelected = {"value":definitionData.displayOptions[4].selected};
140                 $scope.runtimeColSortDisabled = {"value":definitionData.runtimeColSortDisabled};
141                 $scope.showLoader = false;
142         } 
143         
144         
145         var setDefinition = function(){
146                 $scope.updatedDefJson = {
147                                   "tabName" : "Definition",
148                                   "tabId" : "Def",
149                                   "reportId" : ($scope.isEdit?$scope.reportId+'':"-1"),
150                                   "reportName" : $scope.reportName,
151                                   "reportDescr" :  $scope.reportDescr,
152                                   "reportType" : "Linear",
153                                   "dbInfo" : "local",
154                                   "formHelpText" : $scope.formHelpText,
155                                   "pageSize" : Number($scope.selectedPageSize.value),
156                                   "displayArea" : [ {
157                                     "id" : "HOME",
158                                     "name" : "HOME",
159                                     "selected" : ($scope.selectedDisplayArea.value=="HOME")
160                                   }, {
161                                     "id" : "CUSTOMER",
162                                     "name" : "CUSTOMER",
163                                     "selected" : ($scope.selectedDisplayArea.value==="CUSTOMER")
164                                   }, {
165                                     "id" : "REPORTS",
166                                     "name" : "REPORTS",
167                                     "selected" : ($scope.selectedDisplayArea.value==="REPORTS")
168                                   } ],
169                                   "hideFormFieldsAfterRun" : $scope.hideFormFieldsAfterRunSelected.value,
170                                   "maxRowsInExcelCSVDownload" : Number($scope.selectedMaxRowsInExcelCSVDownload.value),
171                                   "frozenColumns" : Number($scope.selectedFrozenColumns.value),
172                                   "dataGridAlign" : $scope.selectedDataGridAlign.value,
173                                   "emptyMessage" : $scope.emptyMessage,
174                                   "dataContainerHeight" : $scope.selectedDataContainerHeight.value,
175                                   "dataContainerWidth" : $scope.selectedDataContainerWidth.value,
176                                   "displayOptions" : [ {
177                                     "name" : "HideFormFields",
178                                     "selected" : $scope.hideFormFieldsSelected.value
179                                   }, {
180                                     "name" : "HideChart",
181                                     "selected" : $scope.hideChartSelected.value
182                                   }, {
183                                     "name" : "HideReportData",
184                                     "selected" : $scope.hideReportDataSelected.value
185                                   }, {
186                                     "name" : "HideExcel",
187                                     "selected" : $scope.hideExcelSelected.value
188                                   }, {
189                                     "name" : "HidePdf",
190                                     "selected" : $scope.hidePdfSelected.value
191                                   } ],
192                                   "runtimeColSortDisabled" : $scope.runtimeColSortDisabled.value,
193                                   "numFormCols" :  Number($scope.selectedNumFormCols.value),
194                                   "reportTitle" : $scope.reportTitle,
195                                   "reportSubTitle" : $scope.reportSubTitle
196                                 }
197
198         }
199         
200         var updateDefinitionData = function() {
201                         setDefinition();
202                         raptorReportFactory.updateDefinition($scope.updatedDefJson,$scope.isEdit).then(function(data){
203                         },function(error){
204                                 $log.error("raptorReportFactory: updateDefinition by Id failed.");
205                         });                             
206         }
207         
208         var saveNewDefinitionData = function() {
209                 setDefinition();
210                 raptorReportFactory.saveNewDefinition($scope.updatedDefJson).then(function(data){
211                 },function(error){
212                         $log.error("raptorReportFactory: saveNewDefinition by Id failed.");
213                 });             
214         }
215         
216         $scope.testRunSql = function(){
217                 var queryJSON = {query: $scope.sqlScript};
218                 queryJSON = JSON.stringify(queryJSON);
219                 raptorReportFactory.testRunSQL(queryJSON).then(function(data){
220                         var modalInstance = $modal.open({
221                                  scope: $scope,
222                                  animation: $scope.animationsEnabled,
223                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html',
224                                  sizeClass: 'modal-large',
225                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) {
226                                          var init = function() {
227                                                  $scope.isError = false;
228                                                  if (queriedData.errormessage) {
229                                                          $scope.isError = true;
230                                                          $scope.errormessage = queriedData.errormessage;
231                                                          $scope.stacktrace = queriedData.stacktrace;
232                                                  } else {
233                                                          $scope.queryData = queriedData;
234                                                 }
235                                          }
236                                          init();                        
237                                   $scope.close = function() {
238                                         $modalInstance.dismiss();
239                                   };
240                             }],
241                                 resolve:{
242                                         queriedData: function(){
243                                         return data;
244                                         }
245                                  }
246                    })                   
247                         
248                 },function(error){
249                         $log.error("raptorReportFactory: test run SQL failed.");
250                 });             
251         }
252
253
254         $scope.formFieldVerifySQL= function(sqlScript){
255                 var queryJSON = {query: sqlScript};
256                 queryJSON = JSON.stringify(queryJSON);
257                 raptorReportFactory.formFieldVerifySQL(queryJSON).then(function(data){
258                         var modalInstance = $modal.open({
259                                  scope: $scope,
260                                  animation: $scope.animationsEnabled,
261                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html',
262                                  sizeClass: 'modal-large',
263                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) {
264                                          var init = function() {
265                                                  $scope.isError = false;
266                                                  if (queriedData.errormessage) {
267                                                          $scope.isError = true;
268                                                          $scope.errormessage = queriedData.errormessage;
269                                                          $scope.stacktrace = queriedData.stacktrace;
270                                                  } else {
271                                                          $scope.queryData = queriedData;
272                                                 }
273                                          }
274                                          init();                        
275                                   $scope.close = function() {
276                                         $modalInstance.dismiss();
277                                   };
278                             }],
279                                 resolve:{
280                                         queriedData: function(){
281                                         return data;
282                                         }
283                                  }
284                    })                   
285                         
286                 },function(error){
287                         $log.error("raptorReportFactory: test run SQL failed.");
288                 });             
289         }
290         
291         
292         /*      $scope.selectedDataSource.allowSchedule={};
293         $scope.selectedDataSource.allowSchedule.value=""*/
294         
295     var getJsonSrcName = function(stepNum){
296         var JsonSrcPrefix = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"
297         return JsonSrcPrefix + stepNum +".json";
298     }
299         
300         $scope.gTabs = [
301          {
302              title: 'Definition',
303              id: 'Definition',
304              uniqueId: 'uniqueTab1x',
305              tabPanelId: 'threetab1x'
306          }, {
307              title: 'SQL',
308              id: 'SQL',
309              uniqueId: 'uniqueTab2x',
310              tabPanelId: 'threetab2x',
311              disabled: (!$scope.isEdit)
312          }, {
313              title: 'Columns',
314              id: 'Columns',
315              uniqueId: 'uniqueTab3x',
316              tabPanelId: 'threetab3x',
317              disabled: (!$scope.isEdit)
318          }, {
319              title: 'Form Fields',
320              id: 'Form Fields',
321              uniqueId: 'uniqueTab4x',
322              tabPanelId: 'threetab4x',
323              disabled: (!$scope.isEdit)
324          }, {
325              title: 'Run',
326              id: 'Run',
327              uniqueId: 'uniqueTab5x',
328              tabPanelId: 'threetab5x',
329              disabled: (!$scope.isEdit)
330          }
331      ];
332         
333         $scope.unhideAllOtherTabs = function(){
334                 for (var selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) {
335                         $scope.gTabs[selectedTab].disabled = false;
336                 }
337         }
338     
339         $scope.openColumnPopup = function (rowData) {
340                    var modalInstance = $modal.open({
341                                  scope: $scope,
342                                  animation: $scope.animationsEnabled,
343                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html',
344                                  sizeClass: 'modal-large',
345                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','colData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, colData) {
346                                          raptorReportFactory.getColumnEditInfoById(colData.id).then(function(data){
347                                                         $scope.columnEditData = data;
348                                                         $scope.colId = data.colId;
349 /*                                                      $scope.colName = data.colName;*/
350                                                         $scope.colName = {'value':data.colName+''};
351                                                         $scope.selectedDisplayAlignment = {"value":data.displayAlignment+''};
352                                                         $scope.selectedDisplayHeaderAlignment = {"value":data.displayHeaderAlignment+''};
353                                                         $scope.sortable = {"value":''+data.sortable};
354                                                         $scope.visible = {"value":''+data.visible};
355                                                         $scope.drilldownURL = data.drilldownURL;
356                                                         $scope.drilldownParams = data.drilldownParams;
357                                                         $scope.drilldownType = data.drilldownType;                                      
358                                                         $scope.selectedDrillDownReport = {"value":""};
359                                                                                                         
360                                                         
361                                                         },function(error){
362                                                         $log.error("raptorReportFactory: getColumnEditInfoById failed.");
363                                                 });                                              
364
365                                          var init = function() {
366                                                  
367                                                  raptorReportFactory.getDrillDownReportList().then(function(data2){
368                                                          $scope.drilldownReports = data2;
369                                                                 },function(error){
370                                                                 $log.error("raptorReportFactory: getDrillDownReportList failed.");
371                                                         }); 
372                                                  
373 /*                                               $scope.colTableRowData = colData;*/
374                                                  $scope.displayAlignmentOptions = [
375                                                          {value:"null", text:""},                                                        
376                                                          {value:"Left", text:"Left"},
377                                                          {value:"Center", text:"Center"},
378                                                          {value:"Right", text:"Right"}
379                                                  ];
380                                                  $scope.ynOptions = [
381                                                          {value:"true", text:"Yes"},
382                                                          {value:"false", text:"No"}                                                      
383                                                  ];
384                                                  $scope.drillDownOptions = [
385                                                          {value:"drillDownOpt1", text:"drillDownOpt1"},
386                                                          {value:"drillDownOpt2", text:"drillDownOpt2"},
387                                                          {value:"drillDownOpt3", text:"drillDownOpt3"}
388                                                  ];
389                                          }
390                                          
391                                          init();
392                                          $scope.$watch('selectedDrillDownReport.value',function(){
393                                                  if ($scope.selectedDrillDownReport) {
394                                                      $scope.$emit('openDrillDownpage',$scope.selectedDrillDownReport.value);
395                                                  }
396                                          });
397                                          
398                                          $scope.save = function() {
399                                                  var drilldownURL = "";//raptorReportFactory.drillDownPopupOptions
400                                                 //raptorReportFactory.drillDownPopupOptions.radioGroup
401                                                  var colInfo = {
402                                                                   "tabId" : "ColEdit",
403                                                                   "tabName" : "Column Edit",
404                                                                   "colId" : $scope.colId,
405                                                                   "colName" : $scope.colName.value,
406                                                                   "displayAlignment" : ($scope.selectedDisplayAlignment.value=="null")?null:$scope.selectedDisplayAlignment.value,
407                                                                   "displayHeaderAlignment" : ($scope.selectedDisplayHeaderAlignment.value=="null")?null:$scope.selectedDisplayHeaderAlignment.value,
408                                                                   "sortable" : ($scope.sortable.value=="true"),
409                                                                   "visible" : ($scope.visible.value=="true"),
410                                                                   "drilldownURL" : raptorReportFactory.drillDownURL,
411                                                                   "drilldownParams" : raptorReportFactory.drillDownParams,
412                                                                   "drilldownType" : ""
413                                                                 }
414                                                  raptorReportFactory.saveColumnEditInfo(colInfo).then(function(data){
415                                                         $modalInstance.close();                                                                                                                                 
416                                                                 },function(error){
417                                                                 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
418                                                         });                                              
419                                   };                                    
420                         
421                                   $scope.cancel = function() {
422                                         $modalInstance.dismiss();
423                                   };
424                             }],
425                                 resolve:{
426                                         colData: function(){
427                                         return rowData;
428                                         }
429                                  }
430                           });
431
432                       modalInstance.result.then(function () {
433                                 $scope.$emit('RefreshColumnList');
434                       }, function () {
435                       });
436     };
437     $scope.addNewFormField = function () {
438                    var modalInstance = $modal.open({
439                                  scope: $scope,
440                                  animation: $scope.animationsEnabled,
441                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html',
442                                  sizeClass: 'modal-large',
443                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory', function ($scope, $modalInstance, $http, $log, raptorReportFactory) {          
444                                          raptorReportFactory.getFormFieldEditInfoById("add").then(function(data){
445                                                  $scope.formFieldEditData = data;
446                                                  $scope.fieldId = $scope.formFieldEditData.fieldId;
447                                                  $scope.fieldName ={"value": $scope.formFieldEditData.fieldName};
448                                                  $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''};
449                                                  $scope.defaultValue = {"value": $scope.formFieldEditData.defaultValue};
450                                                  $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL};
451                                                  $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL};
452                                                  $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''};
453                                                  $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''};
454                                                 $scope.sqlDefaultValueSelected= {value:false};
455                                                 $scope.sqlDefaultValueSelected ={"value":false};
456                                                 if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) {
457                                                         $scope.sqlDefaultValueSelected.value =true;
458                                                 } 
459                                                 },function(error){
460                                                 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
461                                         });
462                                          
463
464                                          $scope.ynOptions = [
465                                                  {value:"true", text:"Yes"},
466                                                  {value:"false", text:"No"}                                                      
467                                          ];
468                                          
469                                          $scope.verifyFieldValueOptions = [
470                                                  {value:"DATE", text:"Date"},
471                                                  {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"},
472                                                  {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"},
473                                                  {value:"HIDDEN", text:"Hidden"}                                                                                                                                                                                                                 
474                                          ]                                       
475                                          
476                                          $scope.fieldTypeOptions = [
477                                                  {value:"TEXT", text:"Text Box"},
478                                                  {value:"LIST_BOX", text:"List Box"},
479                                                  {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"},
480                                                  {value:"HIDDEN", text:"Hidden"}                                                                                                                                                         
481                                         ];
482                                          
483                                          $scope.save = function() {
484                                                  var formFieldJSON = {
485                                                           "tabId" : "FormEdit",
486                                                           "tabName" : "Form Edit",
487                                                           "fieldId" : $scope.fieldId,
488                                                           "fieldName" : $scope.fieldName.value,
489                                                           "fieldType" : $scope.selectedFieldType.value,
490                                                           "visible" : ($scope.selectedVisible.value=="true"),
491                                                           "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value),
492                                                           "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""),
493                                                           "fieldSQL" :$scope.fieldSqlContent.value,
494                                                           "validationType" : "NONE",
495                                                           "predefinedValueList" :null
496                                                         }
497                                                  raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){
498                                                         $modalInstance.close(); 
499                                                                 },function(error){
500                                                                 $log.error("raptorReportFactory: saveFormFieldEditInfo failed.");
501                                                         });                               
502                                   };
503                         
504                                   $scope.cancel = function() {
505                                         $modalInstance.dismiss();
506                                   };
507                             }]
508                           });
509                       modalInstance.result.then(function () {
510                                 $scope.$emit('RefreshFormField');
511                       }, function () {
512                       });                  
513     };
514         
515         $scope.openFormFieldPopup = function (rowData) {
516                    var modalInstance = $modal.open({
517                                  scope: $scope,
518                                  animation: $scope.animationsEnabled,
519                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html',
520                                  sizeClass: 'modal-large',
521                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','fieldData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, fieldData) {
522                                          var init = function() {
523                                                  raptorReportFactory.getFormFieldEditInfoById(fieldData.id).then(function(data){
524                                                                  $scope.formFieldEditData = data;
525                                                                  $scope.fieldId = $scope.formFieldEditData.fieldId;
526                                                                  $scope.fieldName = {"value":$scope.formFieldEditData.fieldName};
527                                                                  $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''};
528                                                                  $scope.defaultValue = {"value":$scope.formFieldEditData.defaultValue};
529                                                                  $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL};
530                                                                  $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL};
531                                                                  $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''};
532                                                                  $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''};
533                                                                 $scope.sqlDefaultValueSelected ={"value":false};
534                                                                 if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) {
535                                                                         $scope.sqlDefaultValueSelected.value =true;
536                                                                 } 
537                                                                 },function(error){
538                                                                 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
539                                                         });                                                                                             
540                                                  
541                                                  $scope.ynOptions = [
542                                                          {value:"true", text:"Yes"},
543                                                          {value:"false", text:"No"}                                                      
544                                                  ];
545                                                  
546                                                  $scope.verifyFieldValueOptions = [
547                                                          {value:"DATE", text:"Date"},
548                                                          {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"},
549                                                          {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"},
550                                                          {value:"HIDDEN", text:"Hidden"}                                                                                                                                                                                                                 
551                                                  ]
552                                                  
553                                                  $scope.fieldTypeOptions = [
554                                                          {value:"TEXT", text:"Text Box"},
555                                                          {value:"LIST_BOX", text:"List Box"},
556                                                          {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"},
557                                                          {value:"HIDDEN", text:"Hidden"}                                                                                                                                                         
558                                                 ];
559                                                 
560                                          }
561                                          
562                                          init();
563                                          
564                                          $scope.save = function() {
565                                                  var formFieldJSON = {
566                                                           "tabId" : "FormEdit",
567                                                           "tabName" : "Form Edit",
568                                                           "fieldId" : $scope.fieldId,
569                                                           "fieldName" : $scope.fieldName.value,
570                                                           "fieldType" : $scope.selectedFieldType.value,
571                                                           "visible" : ($scope.selectedVisible.value=="true"),
572                                                           "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value),
573                                                           "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""),
574                                                           "fieldSQL" :$scope.fieldSqlContent.value,
575                                                           "validationType" : "NONE",
576                                                           "predefinedValueList" :null
577                                                         }
578                                                  raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){
579                                                         $modalInstance.close(); 
580                                                                 },function(error){
581                                                                 $log.error("raptorReportFactory: saveFormFieldEditInfo failed.");
582                                                         });                               
583                                   };
584                         
585                                   $scope.cancel = function() {
586                                         $modalInstance.dismiss();
587                                   };
588                             }],
589                                 resolve:{
590                                         fieldData: function(){
591                                         return rowData;
592                                         }
593                                  }
594                           });
595
596                       modalInstance.result.then(function () {
597                                 $scope.$emit('RefreshFormField');
598                       }, function () {
599                       });
600  };
601     
602         $scope.openDrillDownReportPopup = function (reportId,parentReportId) {
603                    var modalInstance = $modal.open({
604                                  scope: $scope,
605                                  animation: $scope.animationsEnabled,
606                                  templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html',
607                                  sizeClass: 'modal-large',
608                                  controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','reportId', function ($scope, $modalInstance, $http, $log, raptorReportFactory, reportId) {
609                                          
610                                          $scope.drillDownOptionList =[];
611                                          $scope.selectedvalueradioGroup = {"name":""};
612                                          $scope.selectedChildReportFormField = {"value":""};
613                                          $scope.selectedChildReportColumn = {"value":""};
614                                          $scope.fixedValue = {"value":""};
615                                          $scope.suppressValues = {"value":""};
616
617                                         raptorReportFactory.getChildReportFormField(reportId).then(function(data){                                              
618                                                 for (var i=0;i<data.length;i++) {
619                                                         $scope.drillDownOptionList.push(
620                                                                         {
621                                                                         "name": data[i].name,
622                                                                         "id": data[i].id,
623                                                                         "selectedvalueradioGroup":{"name":""},
624                                                                         "selectedChildReportFormField":{"value":""},
625                                                                         "selectedChildReportColumn":{"value":""},
626                                                                         "fixedValue":{"value":""},
627                                                                         "suppressValues":{"value":""}                                                                   
628                                                                         }
629                                                                         )
630                                                 }
631                                                 },function(error){
632                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
633                                                         });
634
635                                         raptorReportFactory.getChildReportFormField(parentReportId).then(function(data){
636                                                 $scope.childReportFF =data;
637                                                 },function(error){
638                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
639                                                         });                                     
640
641                                         raptorReportFactory.getChildReportColumn(parentReportId).then(function(data){
642                                                 $scope.childReportCol =data;
643                                                 },function(error){
644                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
645                                                         });
646                                         
647                                         raptorReportFactory.setDrillDownPopupOptions(null);                                                                                                                     
648                         
649                                   $scope.complete = function() {
650
651                                         console.log("$scope.drillDownOptionList: ");
652                                         console.log($scope.drillDownOptionList);
653                                         
654
655                                         var drillDownPopupOptions= {
656                                                         radioGroup : $scope.selectedvalueradioGroup.name,
657                                                         reportFF: $scope.selectedChildReportFormField.value,
658                                                         reportCol:  $scope.selectedChildReportColumn.value,
659                                                         fixedValue:  $scope.fixedValue.value,
660                                                         suppressValues: $scope.suppressValues.value
661                                         }
662                                         var drillDownParams = "";
663                                         var ampStr ="";
664                                         for (var i=0;i<$scope.drillDownOptionList.length; i++) {
665                                                 if (drillDownParams!="") {
666                                                         ampStr = "&amp;";
667                                                 } 
668                                                 if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="fixedValue"){
669                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "="+$scope.drillDownOptionList[i].fixedValue.value;
670                                                 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportFF"){
671                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=[!"+$scope.drillDownOptionList[i].selectedChildReportFormField.value + "]";                                                   
672                                                 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportCol"){
673                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=["+$scope.drillDownOptionList[i].selectedChildReportColumn.value + "]";                                                                                                               
674                                                 }                                                       
675                                         }
676                                         raptorReportFactory.setDrillDownPopupOptions(reportId,drillDownParams);
677                                         console.log(raptorReportFactory.drillDownURL);
678                                         console.log(raptorReportFactory.drillDownParams);
679                                         
680                                         $modalInstance.close();
681                                   };
682                             }],
683                                 resolve:{
684                                         reportId: function(){
685                                         return reportId;
686                                         }
687                                  }
688                           });
689
690                       modalInstance.result.then(function () {
691 /*                              $scope.$emit('RefreshFormField');*/
692                       }, function () {
693                       });
694 };
695  
696     $scope.$watch('activeTabsId', function (newVal, oldVal) {
697         if(newVal !== oldVal) {
698                 $scope.showLoader = true;
699             var selectedTab;
700             for (selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) {
701                 if ($scope.gTabs[selectedTab].id === newVal) {
702                     $scope.stepNum = selectedTab;
703 /*                    stepFormFactory.getStepJSONData(getJsonSrcName($scope.stepNum))*/
704                         $scope.isColumnStep = false;                                                
705                         $scope.isFormFieldStep = false;
706                         $scope.renderStep(selectedTab+1);
707                         if ($scope.stepNum == 1) {
708                         $scope.showLoader = false;                      
709                         }
710                         else if ($scope.stepNum == 2) {
711                                 loadSqlInSession();
712                         }       else if ($scope.stepNum == 3) {
713                                 $scope.isColumnStep = true;
714                                 raptorReportFactory.getColumnList().then(function(data){
715                                         $scope.colTableRowData = data;
716                                 $scope.showLoader = false;
717                                 },function(error){
718                                         $log.error("raptorReportFactory: get column list failed.");
719                                         $scope.showLoader = false;});
720                                                         
721                         }  else if ($scope.stepNum == 4) {
722                                 $scope.isFormFieldStep = true;
723                                 // put within then function:
724                                 raptorReportFactory.getFormFieldList().then(function(data){
725                                         $scope.formFieldData = data;
726                                 $scope.showLoader = false;
727                                 },function(error){
728                                         $log.error("raptorReportFactory: get formfields failed."); 
729                                         $scope.showLoader = false;});
730                         }  else if ($scope.stepNum == 5) {
731                                 raptorReportFactory.getDefinitionInSession().then(function(data){
732                                 $scope.reportId = data.reportId;
733                                 $scope.showLoader = false;
734                         },function(error){
735                                 $log.error("raptorReportFactory: getDefinitionInSession failed."); 
736                                 $scope.showLoader = false;});           
737                         }
738                         
739                         if ($scope.stepNum>1){
740                                 $scope.unhideAllOtherTabs();
741                         }
742                     break;
743                 }
744             }
745         }
746     });  
747          
748     
749     $scope.renderStep = function(stepNum){
750         var containerElement = angular.element(document.getElementById("stepView"));
751         containerElement.empty();
752         $scope.stepNum = stepNum;
753         var jsonSrcName = getJsonSrcName(stepNum);
754         stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
755     }
756     
757     // initialize the page at step 1;
758     $scope.renderStep(1);
759     
760         // create a message to display in our view
761         $scope.allProjects = [];
762         if(!$routeParams.step && $routeParams.step == "") $routeParams.step = 1;
763         if($routeParams.proj && $routeParams.proj > 0) 
764                 $scope.projid  = $routeParams.proj;
765         if($routeParams.step)
766                 $scope.stepNum = $routeParams.step;
767         else
768                 $scope.stepNum = 1;     
769
770     $scope.jsonSrcName = getJsonSrcName($scope.stepNum);
771     
772     $scope.selectAction = function () {
773       var containerElement = angular.element(document.getElementById("stepView"));
774       containerElement.empty();
775       $scope.project_name = this.prj.projectName;
776       $scope.stepNum = 1;
777       var stepNum = $scope.stepNum;      
778       var jsonSrcName =         getJsonSrcName(stepNum);
779       stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
780       renderProject(this.prj.id, 1);
781     };
782
783     
784     $scope.createAction = function () {
785       var containerElement = angular.element(document.getElementById("stepView"));
786       containerElement.empty();
787       $scope.stepNum = 1;
788       var stepNum = $scope.stepNum;
789       $scope.jsonSrcName = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"+$scope.stepNum +".json";
790         var jsonSrcName = $scope.jsonSrcName;
791       stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
792     };
793
794     // select current project
795     renderProject = function (proj_id, stepNum) {
796         var userSelectedPrjId = proj_id;
797         $http({
798             method: 'GET',
799             url: 'get_selected_project_data',   
800             params:{'selectedPrjId':userSelectedPrjId, 'step': stepNum}
801                 }).then(function successCallback(response) {
802                  var selectedproject = response.data;
803                 $scope.projid  = userSelectedPrjId;
804              //$scope.allProjects = projectLists; 
805              //$location.path('/'+userSelectedPrjId+'/'+stepNum);
806              var div = d3.select("#stepView");
807              div.select("[name='proj_id']").text(userSelectedPrjId);
808              div.select("[name='proj_id']").property("value", userSelectedPrjId);
809              d3.select("[name='project_id']").property("value", userSelectedPrjId);
810              var h3Text = div.select("h3").text();
811              div.select("h3").text($scope.project_name+ " - " + h3Text);
812              for (var key in selectedproject) {
813                   if (selectedproject.hasOwnProperty(key)) {
814                     var val = selectedproject[key];
815                     var formElement = d3.selectAll("[name='" + key +  "']");                        
816                     if(formElement[0].length > 0)
817                      console.log(formElement.attr("type"));
818                     if(formElement[0].length > 0 && formElement.attr("type") === "radio") {
819                         var formRadio = d3.selectAll("[id='" + key +"_"+val +  "']");
820                         formRadio.property('checked', true);
821                     }
822                     if(formElement[0].length > 0 && formElement.property("type") === "textarea") {
823                         div.select("textarea[name='" + key +"']").property('value', val);
824                     }
825                     if(formElement[0].length > 0 && formElement.attr("type") === "text") {
826                         var formText = d3.selectAll("[name='" + key +  "']");
827                         formText.property("value", val);                        
828                     }
829                     if(formElement[0].length > 0 && formElement.html().startsWith("<option")) {
830                         var formSelect = d3.selectAll("[name='" + key + "']");
831                         
832                         var checkOption = function (e) {
833                             if(e.label === val){
834                                 return formSelect.property("selectedIndex", e.index );
835                             }
836                         };
837
838                         formSelect.selectAll("option").forEach(function(d) {d.forEach(function(optionD) { console.log(optionD);checkOption(optionD); }) });
839                     }
840                          
841                     if(formElement[0].length == 0) {
842                         if(key != 'step') {
843                             if( Object.prototype.toString.call( val ) === '[object Array]' ) {
844                                 val.forEach(function(d){
845                                         for (var keyCheck in d) {
846                                                 if (d.hasOwnProperty(keyCheck)) {
847                                                         var valCheck = d[keyCheck];
848                                                         var formCheck = d3.selectAll("[name='" + key + "_"+keyCheck + "']");
849                                                         if(valCheck === true)
850                                                         formCheck.property('checked', true);
851                                                 }
852                                         }
853                                 });
854                            }
855                         }
856                         var formElementOther = d3.selectAll("[name='" + key + "_"+ val + "']");
857                         if(formElementOther[0].length > 0 && formElementOther.attr("type") === "checkbox") {
858                                 var formCheckbox = d3.selectAll("[name='" + key +"_"+val +  "']");
859                                 formRadio.property('checked', true);
860                         }
861                     }
862                   }
863                 }
864              
865              
866              
867         });
868     }
869         
870   //submit function
871     $scope.submit = function(){
872         let defer = $q.defer();
873       
874         var div = d3.select("#stepView");
875         var jsonSrcName = $scope.jsonSrcName;
876         var stepNum = $scope.stepNum;
877         var values = "";
878          $http({
879              method: 'GET',
880              url: jsonSrcName
881              }).then(function successCallback(response) {
882                  var json = response.data;
883                  var step = json.step;
884                  if(step > 0) {
885                          var sections = json.content.sections;                           
886                      sections.forEach(function(d, i) {
887                          var elements = d.elements;
888                          if(elements) {
889                              //elements.forEach(function(element, elementIndex) {
890                                  values += "{";
891                                  values += "\"step\""+ ":\"" + step + "\",";
892                                  values += "\"proj_id\""+ ":\"" + d3.select('input[name="project_id"]').property("value") + "\",";
893                                  
894                                  for (elementIndex = 0; elementIndex < elements.length; elementIndex++) {
895                                          var element = elements[elementIndex];
896                                  
897                                  if(elementIndex > 0) values += ",";  
898                                  values += "\""+element.name +"\""+ ":" ;
899                                  if(element.input === "hidden") {
900                                           values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
901                                  }
902                                  if(element.input === "radio") {
903                                          values += "\""+ div.select('input[name="'+element.name+'"]:checked').property("value") +"\"";                                           
904                                  }
905                                  if(element.input === "checkbox") {
906                                          var checkOptions = element.options;
907                                          values += "[{";
908                                          checkOptions.forEach(function(d, i) {
909                                        // if(document.getElementById("'"+element.name+"_"+d.id+"'") != null)
910                                                   values += "\""+d.id+"\""+ ":" + div.select('input[name="'+element.name+"_"+d.id+'"]').property("checked") ;
911                                                   if(i<checkOptions.length-1) {
912                                                           values +=  ",";
913                                                   }
914                                          })
915                                          values += "}]";
916                                  }
917                                  if(element.input === "text") {
918                                          values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
919                                  }                               
920                                  if(element.input === "textarea") {
921                                          values += "\""+div.select('textarea[name="'+element.name+'"]').node().value +"\"";
922                                  }                               
923                                  if(element.input === "select") {
924                                          values += "\""+ div.select('select[name="'+element.name+'"]').property("value") + "\"";
925                                  } 
926                                  
927                              };
928                              values += "}";
929                          }
930                      });
931                  }
932                          var valueJSON = JSON.parse(values);
933                          var valueStr = JSON.stringify(valueJSON, null, 4);
934                  $http({method:'POST', url:'save_steps', data: jsonSrcName, params:{'result' : valueStr, 'proj_id' : values.proj_id}}).success(function(data, status) {
935                     if(data.project_name)
936                         $scope.project_name = data.project_name;
937                     div.select("[name='proj_id']").property("value", data.proj_id);
938                     d3.select("[name='project_id']").property("value", data.proj_id);
939                     //$scope.projid = data.proj_id;
940                     valueStr=JSON.stringify(data, null, 4);
941                     defer.resolve();
942                     //stepNum = Number(stepNum || 0)+1;
943                     //document.getElementById('itestframe').src = data;
944                
945                 }) 
946
947                 defer.resolve();                 
948                  
949              });
950        // $location.path('/step'+($scope.stepNum+1));
951         return defer.promise;
952     
953     };
954     
955     //Save function
956     $scope.save = function() {
957                 if ($scope.stepNum ==1) {                       
958                         updateDefinitionData();
959                 }
960         };
961
962     //Next function
963     $scope.next = function(){
964                 if ($scope.stepNum ==1) {                       
965                         updateDefinitionData();
966                 }
967         $scope.stepNum = $scope.stepNum +1;
968         $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
969     };   
970
971     //Previous function
972     $scope.previous = function(){
973         $scope.stepNum = $scope.stepNum -1;
974         $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
975         
976     };
977
978         $scope.$on('RefreshInsession', function(event) {
979                 $scope.isEdit = true;
980                 $scope.reportId = -1;                           
981                 $scope.getDefinitionById(-1);
982         });
983         
984             $scope.$on('openDrillDownpage', function(event, reportId) {
985                 console.log("$scope.reportId");
986                 console.log($scope.reportId);
987         if (reportId!="") {
988                                 $scope.openDrillDownReportPopup(reportId,$scope.reportId);
989         }
990         });
991
992     
993         $scope.$on('RefreshFormField', function(event) {
994                 raptorReportFactory.getFormFieldList().then(function(data){
995                         $scope.formFieldData = data;
996                 },function(error){
997                         $log.error("raptorReportFactory: get formfields failed.");  
998                         });
999         });
1000
1001         $scope.$on('RefreshColumnList', function(event) {
1002                 raptorReportFactory.getColumnList().then(function(data){
1003                         $scope.colTableRowData = data;
1004                 },function(error){
1005                         $log.error("raptorReportFactory: get column list failed.");           
1006                 });             
1007         });
1008         
1009     $scope.getAllProjects = function(){
1010         $http({
1011             method: 'GET',
1012             url: 'get_projects'   
1013             }).then(function successCallback(response) {
1014                  var projectLists = response.data;
1015              $scope.allProjects = projectLists; 
1016          });
1017     }
1018
1019     // getAllProjects();
1020
1021 });