faa2c4205aa9812f1bd60fcc797683eae368616b
[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" : raptorReportFactory.drillDownURL,
412                                                                   "drilldownParams" : raptorReportFactory.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,parentReportId) {
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                                          
611                                          $scope.drillDownOptionList =[];
612                                          $scope.selectedvalueradioGroup = {"name":""};
613                                          $scope.selectedChildReportFormField = {"value":""};
614                                          $scope.selectedChildReportColumn = {"value":""};
615                                          $scope.fixedValue = {"value":""};
616                                          $scope.suppressValues = {"value":""};
617
618                                         raptorReportFactory.getChildReportFormField(reportId).then(function(data){                                              
619                                                 for (var i=0;i<data.length;i++) {
620                                                         $scope.drillDownOptionList.push(
621                                                                         {
622                                                                         "name": data[i].name,
623                                                                         "id": data[i].id,
624                                                                         "selectedvalueradioGroup":{"name":""},
625                                                                         "selectedChildReportFormField":{"value":""},
626                                                                         "selectedChildReportColumn":{"value":""},
627                                                                         "fixedValue":{"value":""},
628                                                                         "suppressValues":{"value":""}                                                                   
629                                                                         }
630                                                                         )
631                                                 }
632                                                 },function(error){
633                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
634                                                         });
635
636                                         raptorReportFactory.getChildReportFormField(parentReportId).then(function(data){
637                                                 $scope.childReportFF =data;
638                                                 },function(error){
639                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
640                                                         });                                     
641
642                                         raptorReportFactory.getChildReportColumn(parentReportId).then(function(data){
643                                                 $scope.childReportCol =data;
644                                                 },function(error){
645                                                         $log.error("raptorReportFactory: getChildReportFormField failed.");  
646                                                         });
647                                         
648                                         raptorReportFactory.setDrillDownPopupOptions(null);                                                                                                                     
649                         
650                                   $scope.complete = function() {
651
652                                         console.log("$scope.drillDownOptionList: ");
653                                         console.log($scope.drillDownOptionList);
654                                         
655
656                                         var drillDownPopupOptions= {
657                                                         radioGroup : $scope.selectedvalueradioGroup.name,
658                                                         reportFF: $scope.selectedChildReportFormField.value,
659                                                         reportCol:  $scope.selectedChildReportColumn.value,
660                                                         fixedValue:  $scope.fixedValue.value,
661                                                         suppressValues: $scope.suppressValues.value
662                                         }
663                                         var drillDownParams = "";
664                                         var ampStr ="";
665                                         for (var i=0;i<$scope.drillDownOptionList.length; i++) {
666                                                 if (drillDownParams!="") {
667                                                         ampStr = "&amp;";
668                                                 } 
669                                                 if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="fixedValue"){
670                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "="+$scope.drillDownOptionList[i].fixedValue.value;
671                                                 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportFF"){
672                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=[!"+$scope.drillDownOptionList[i].selectedChildReportFormField.value + "]";                                                   
673                                                 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportCol"){
674                                                         drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=["+$scope.drillDownOptionList[i].selectedChildReportColumn.value + "]";                                                                                                               
675                                                 }                                                       
676                                         }
677                                         raptorReportFactory.setDrillDownPopupOptions(reportId,drillDownParams);
678                                         console.log(raptorReportFactory.drillDownURL);
679                                         console.log(raptorReportFactory.drillDownParams);
680                                         
681                                         $modalInstance.close();
682                                   };
683                             }],
684                                 resolve:{
685                                         reportId: function(){
686                                         return reportId;
687                                         }
688                                  }
689                           });
690
691                       modalInstance.result.then(function () {
692 /*                              $scope.$emit('RefreshFormField');*/
693                       }, function () {
694                       });
695 };
696  
697     $scope.$watch('activeTabsId', function (newVal, oldVal) {
698         if(newVal !== oldVal) {
699                 $scope.showLoader = true;
700             var selectedTab;
701             for (selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) {
702                 if ($scope.gTabs[selectedTab].id === newVal) {
703                     $scope.stepNum = selectedTab;
704 /*                    stepFormFactory.getStepJSONData(getJsonSrcName($scope.stepNum))*/
705                         $scope.isColumnStep = false;                                                
706                         $scope.isFormFieldStep = false;
707                         $scope.renderStep(selectedTab+1);
708                         if ($scope.stepNum == 1) {
709                         $scope.showLoader = false;                      
710                         }
711                         else if ($scope.stepNum == 2) {
712                                 loadSqlInSession();
713                         }       else if ($scope.stepNum == 3) {
714                                 $scope.isColumnStep = true;
715                                 raptorReportFactory.getColumnList().then(function(data){
716                                         $scope.colTableRowData = data;
717                                 $scope.showLoader = false;
718                                 },function(error){
719                                         $log.error("raptorReportFactory: get column list failed.");
720                                         $scope.showLoader = false;});
721                                                         
722                         }  else if ($scope.stepNum == 4) {
723                                 $scope.isFormFieldStep = true;
724                                 // put within then function:
725                                 raptorReportFactory.getFormFieldList().then(function(data){
726                                         $scope.formFieldData = data;
727                                 $scope.showLoader = false;
728                                 },function(error){
729                                         $log.error("raptorReportFactory: get formfields failed."); 
730                                         $scope.showLoader = false;});
731                         }  else if ($scope.stepNum == 5) {
732                                 raptorReportFactory.getDefinitionInSession().then(function(data){
733                                 $scope.reportId = data.reportId;
734                                 $scope.showLoader = false;
735                         },function(error){
736                                 $log.error("raptorReportFactory: getDefinitionInSession failed."); 
737                                 $scope.showLoader = false;});           
738                         }
739                         
740                         if ($scope.stepNum>1){
741                                 $scope.unhideAllOtherTabs();
742                         }
743                     break;
744                 }
745             }
746
747             var selectedTabPanelElement = document.getElementById($scope.gTabs[selectedTab].tabPanelId);
748
749             var elem = null;
750             if (selectedTabPanelElement) {
751                 elem = DOMHelper.firstTabableElement(selectedTabPanelElement);
752             }
753
754             if (elem) {
755                 $timeout(function () {
756                     elem.focus();
757                 }, 100);
758             }
759         }
760     });  
761          
762     
763     $scope.renderStep = function(stepNum){
764         var containerElement = angular.element(document.getElementById("stepView"));
765         containerElement.empty();
766         $scope.stepNum = stepNum;
767         var jsonSrcName = getJsonSrcName(stepNum);
768         stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
769     }
770     
771     // initialize the page at step 1;
772     $scope.renderStep(1);
773     
774         // create a message to display in our view
775         $scope.allProjects = [];
776         if(!$routeParams.step && $routeParams.step == "") $routeParams.step = 1;
777         if($routeParams.proj && $routeParams.proj > 0) 
778                 $scope.projid  = $routeParams.proj;
779         if($routeParams.step)
780                 $scope.stepNum = $routeParams.step;
781         else
782                 $scope.stepNum = 1;     
783
784     $scope.jsonSrcName = getJsonSrcName($scope.stepNum);
785     
786     $scope.selectAction = function () {
787       var containerElement = angular.element(document.getElementById("stepView"));
788       containerElement.empty();
789       $scope.project_name = this.prj.projectName;
790       $scope.stepNum = 1;
791       var stepNum = $scope.stepNum;      
792       var jsonSrcName =         getJsonSrcName(stepNum);
793       stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
794       renderProject(this.prj.id, 1);
795     };
796
797     
798     $scope.createAction = function () {
799       var containerElement = angular.element(document.getElementById("stepView"));
800       containerElement.empty();
801       $scope.stepNum = 1;
802       var stepNum = $scope.stepNum;
803       $scope.jsonSrcName = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"+$scope.stepNum +".json";
804         var jsonSrcName = $scope.jsonSrcName;
805       stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
806     };
807
808     // select current project
809     renderProject = function (proj_id, stepNum) {
810         var userSelectedPrjId = proj_id;
811         $http({
812             method: 'GET',
813             url: 'get_selected_project_data',   
814             params:{'selectedPrjId':userSelectedPrjId, 'step': stepNum}
815                 }).then(function successCallback(response) {
816                  var selectedproject = response.data;
817                 $scope.projid  = userSelectedPrjId;
818              //$scope.allProjects = projectLists; 
819              //$location.path('/'+userSelectedPrjId+'/'+stepNum);
820              var div = d3.select("#stepView");
821              div.select("[name='proj_id']").text(userSelectedPrjId);
822              div.select("[name='proj_id']").property("value", userSelectedPrjId);
823              d3.select("[name='project_id']").property("value", userSelectedPrjId);
824              var h3Text = div.select("h3").text();
825              div.select("h3").text($scope.project_name+ " - " + h3Text);
826              for (var key in selectedproject) {
827                   if (selectedproject.hasOwnProperty(key)) {
828                     var val = selectedproject[key];
829                     var formElement = d3.selectAll("[name='" + key +  "']");                        
830                     if(formElement[0].length > 0)
831                      console.log(formElement.attr("type"));
832                     if(formElement[0].length > 0 && formElement.attr("type") === "radio") {
833                         var formRadio = d3.selectAll("[id='" + key +"_"+val +  "']");
834                         formRadio.property('checked', true);
835                     }
836                     if(formElement[0].length > 0 && formElement.property("type") === "textarea") {
837                         div.select("textarea[name='" + key +"']").property('value', val);
838                     }
839                     if(formElement[0].length > 0 && formElement.attr("type") === "text") {
840                         var formText = d3.selectAll("[name='" + key +  "']");
841                         formText.property("value", val);                        
842                     }
843                     if(formElement[0].length > 0 && formElement.html().startsWith("<option")) {
844                         var formSelect = d3.selectAll("[name='" + key + "']");
845                         
846                         var checkOption = function (e) {
847                             if(e.label === val){
848                                 return formSelect.property("selectedIndex", e.index );
849                             }
850                         };
851
852                         formSelect.selectAll("option").forEach(function(d) {d.forEach(function(optionD) { console.log(optionD);checkOption(optionD); }) });
853                     }
854                          
855                     if(formElement[0].length == 0) {
856                         if(key != 'step') {
857                             if( Object.prototype.toString.call( val ) === '[object Array]' ) {
858                                 val.forEach(function(d){
859                                         for (var keyCheck in d) {
860                                                 if (d.hasOwnProperty(keyCheck)) {
861                                                         var valCheck = d[keyCheck];
862                                                         var formCheck = d3.selectAll("[name='" + key + "_"+keyCheck + "']");
863                                                         if(valCheck === true)
864                                                         formCheck.property('checked', true);
865                                                 }
866                                         }
867                                 });
868                            }
869                         }
870                         var formElementOther = d3.selectAll("[name='" + key + "_"+ val + "']");
871                         if(formElementOther[0].length > 0 && formElementOther.attr("type") === "checkbox") {
872                                 var formCheckbox = d3.selectAll("[name='" + key +"_"+val +  "']");
873                                 formRadio.property('checked', true);
874                         }
875                     }
876                   }
877                 }
878              
879              
880              
881         });
882     }
883         
884   //submit function
885     $scope.submit = function(){
886         let defer = $q.defer();
887       
888         var div = d3.select("#stepView");
889         var jsonSrcName = $scope.jsonSrcName;
890         var stepNum = $scope.stepNum;
891         var values = "";
892          $http({
893              method: 'GET',
894              url: jsonSrcName
895              }).then(function successCallback(response) {
896                  var json = response.data;
897                  var step = json.step;
898                  if(step > 0) {
899                          var sections = json.content.sections;                           
900                      sections.forEach(function(d, i) {
901                          var elements = d.elements;
902                          if(elements) {
903                              //elements.forEach(function(element, elementIndex) {
904                                  values += "{";
905                                  values += "\"step\""+ ":\"" + step + "\",";
906                                  values += "\"proj_id\""+ ":\"" + d3.select('input[name="project_id"]').property("value") + "\",";
907                                  
908                                  for (elementIndex = 0; elementIndex < elements.length; elementIndex++) {
909                                          var element = elements[elementIndex];
910                                  
911                                  if(elementIndex > 0) values += ",";  
912                                  values += "\""+element.name +"\""+ ":" ;
913                                  if(element.input === "hidden") {
914                                           values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
915                                  }
916                                  if(element.input === "radio") {
917                                          values += "\""+ div.select('input[name="'+element.name+'"]:checked').property("value") +"\"";                                           
918                                  }
919                                  if(element.input === "checkbox") {
920                                          var checkOptions = element.options;
921                                          values += "[{";
922                                          checkOptions.forEach(function(d, i) {
923                                        // if(document.getElementById("'"+element.name+"_"+d.id+"'") != null)
924                                                   values += "\""+d.id+"\""+ ":" + div.select('input[name="'+element.name+"_"+d.id+'"]').property("checked") ;
925                                                   if(i<checkOptions.length-1) {
926                                                           values +=  ",";
927                                                   }
928                                          })
929                                          values += "}]";
930                                  }
931                                  if(element.input === "text") {
932                                          values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
933                                  }                               
934                                  if(element.input === "textarea") {
935                                          values += "\""+div.select('textarea[name="'+element.name+'"]').node().value +"\"";
936                                  }                               
937                                  if(element.input === "select") {
938                                          values += "\""+ div.select('select[name="'+element.name+'"]').property("value") + "\"";
939                                  } 
940                                  
941                              };
942                              values += "}";
943                          }
944                      });
945                  }
946                          var valueJSON = JSON.parse(values);
947                          var valueStr = JSON.stringify(valueJSON, null, 4);
948                  $http({method:'POST', url:'save_steps', data: jsonSrcName, params:{'result' : valueStr, 'proj_id' : values.proj_id}}).success(function(data, status) {
949                     if(data.project_name)
950                         $scope.project_name = data.project_name;
951                     div.select("[name='proj_id']").property("value", data.proj_id);
952                     d3.select("[name='project_id']").property("value", data.proj_id);
953                     //$scope.projid = data.proj_id;
954                     valueStr=JSON.stringify(data, null, 4);
955                     defer.resolve();
956                     //stepNum = Number(stepNum || 0)+1;
957                     //document.getElementById('itestframe').src = data;
958                
959                 }) 
960
961                 defer.resolve();                 
962                  
963              });
964        // $location.path('/step'+($scope.stepNum+1));
965         return defer.promise;
966     
967     };
968     
969     //Save function
970     $scope.save = function() {
971                 if ($scope.stepNum ==1) {                       
972                         updateDefinitionData();
973                 }
974         };
975
976     //Next function
977     $scope.next = function(){
978                 if ($scope.stepNum ==1) {                       
979                         updateDefinitionData();
980                 }
981         $scope.stepNum = $scope.stepNum +1;
982         $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
983     };   
984
985     //Previous function
986     $scope.previous = function(){
987         $scope.stepNum = $scope.stepNum -1;
988         $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
989         
990     };
991
992         $scope.$on('RefreshInsession', function(event) {
993                 $scope.isEdit = true;
994                 $scope.reportId = -1;                           
995                 $scope.getDefinitionById(-1);
996         });
997         
998             $scope.$on('openDrillDownpage', function(event, reportId) {
999                 console.log("$scope.reportId");
1000                 console.log($scope.reportId);
1001         if (reportId!="") {
1002                                 $scope.openDrillDownReportPopup(reportId,$scope.reportId);
1003         }
1004         });
1005
1006     
1007         $scope.$on('RefreshFormField', function(event) {
1008                 raptorReportFactory.getFormFieldList().then(function(data){
1009                         $scope.formFieldData = data;
1010                 },function(error){
1011                         $log.error("raptorReportFactory: get formfields failed.");  
1012                         });
1013         });
1014
1015         $scope.$on('RefreshColumnList', function(event) {
1016                 raptorReportFactory.getColumnList().then(function(data){
1017                         $scope.colTableRowData = data;
1018                 },function(error){
1019                         $log.error("raptorReportFactory: get column list failed.");           
1020                 });             
1021         });
1022         
1023     $scope.getAllProjects = function(){
1024         $http({
1025             method: 'GET',
1026             url: 'get_projects'   
1027             }).then(function successCallback(response) {
1028                  var projectLists = response.data;
1029              $scope.allProjects = projectLists; 
1030          });
1031     }
1032
1033     // getAllProjects();
1034
1035 });