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