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