1 appDS2.controller('reportStepController', function($scope,$http,$location, $routeParams, $q, $modal,$log,$window, raptorReportFactory, stepFormFactory) {
3 $scope.showLoader = true;
4 // tabs for report wizard steps:
5 $scope.activeTabsId = 'Definition';
6 $scope.addReportUserId = {'id':''};
7 $scope.addReportRoleId = {'id':''};
8 // For all the dropdown box, please declare the active selection variable in the following manner:
9 // $scope.selectedOpt = {};
10 // $scope.selectedOpt.value = "";
11 $scope.getDefinitionById = function(id) {
12 raptorReportFactory.getDefinitionByReportId(id).then(function(data){
13 $scope.loadDefinition(data);
14 $scope.definitionData = data;
15 $scope.showLoader = false;
17 $log.error("raptorReportFactory: getSearchData failed.");
18 $scope.showLoader = false;
22 $scope.addReportSecurityUser = function(userId) {
23 raptorReportFactory.addReportSecurityUser(userId).then(function(data){
24 $scope.loadSecurityPage();
26 $log.error("raptorReportFactory: addReportSecurityUser failed.");
30 $scope.removeReportSecurityUser = function(securityUser) {
31 var modalInstance = $modal.open({
33 animation: $scope.animationsEnabled,
34 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-security-user-del-confirm.html',
35 sizeClass: 'modal-large',
36 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','securityUser', function ($scope, $modalInstance, $http, $log, raptorReportFactory,securityUser) {
37 $scope.securityUserName = securityUser.name;
38 $scope.ok = function() {
39 raptorReportFactory.removeReportSecurityUser(securityUser.id).then(function(data){
40 $modalInstance.close();
42 $log.error("raptorReportFactory: removeReportSecurityUser failed.");
45 $scope.cancel = function() {
46 $modalInstance.dismiss();
50 securityUser: function(){
55 modalInstance.result.then(function () {
56 $scope.loadSecurityPage();
62 $scope.addReportSecurityRole = function(roleId) {
63 raptorReportFactory.addReportSecurityRole(roleId).then(function(data){
64 $scope.loadSecurityPage();
66 $log.error("raptorReportFactory: addReportSecurityRole failed.");
70 $scope.removeReportSecurityRole = function(securityRole) {
71 var modalInstance = $modal.open({
73 animation: $scope.animationsEnabled,
74 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-security-role-del-confirm.html',
75 sizeClass: 'modal-large',
76 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','securityRole', function ($scope, $modalInstance, $http, $log, raptorReportFactory,securityRole) {
77 $scope.securityRoleName = securityRole.name;
78 $scope.ok = function() {
79 raptorReportFactory.removeReportSecurityRole(securityRole.id).then(function(data){
80 $modalInstance.close();
82 $log.error("raptorReportFactory: removeReportSecurityRole failed.");
85 $scope.cancel = function() {
86 $modalInstance.dismiss();
90 securityRole: function(){
95 modalInstance.result.then(function () {
96 $scope.loadSecurityPage();
101 $scope.saveReportSecurityInfo = function(userId, isPublic) {
102 var securityInfo = {'userId':userId+"",'isPublic':isPublic};
103 raptorReportFactory.updateReportSecurityInfo(securityInfo).then(function(data){
104 $scope.loadSecurityPage();
106 $log.error("raptorReportFactory: updateReportSecurityInfo failed.");
110 $scope.createNewDefinition = function() {
111 raptorReportFactory.createNewDefinition().then(function(data){
112 $scope.loadDefinition(data);
113 $scope.definitionData = data;
114 $scope.showLoader = false;
116 $log.error("raptorReportFactory: getSearchData failed.");
120 var initializeCreateReport = function() {
121 $scope["selectedReportType"] ={};
122 $scope.selectedReportType.value ="linear";
123 $scope.selectedReportType2 ={};
124 $scope.selectedReportType2.value ="";
125 $scope.selectedDataSource ={};
126 $scope.selectedDataSource.value="local";
127 $scope.sqlScript = "SELECT ";
128 $scope.pageSize = {"value":"50"};
132 var loadSqlInSession = function(){
133 raptorReportFactory.getSqlInSession().then(function(data){
134 $scope.sqlInSessionJSON = data;
135 $scope.sqlScript = data.query;
136 $scope.showLoader = false;
138 $log.error("raptorReportFactory: getSearchData failed.");
142 initializeCreateReport();
143 if ($routeParams.reportMode) {
144 if ($routeParams.reportMode=="copy") {
145 raptorReportFactory.copyReportById($routeParams.reportId).then(function(data){
146 $scope.$emit('RefreshInsession');
148 $log.error("raptorReportFactory: deleteFormFieldById failed.");
150 } else if ($routeParams.reportMode=="import") {
151 $scope.$emit('RefreshInsession');
153 } else if ($routeParams.reportId) {
154 $scope.getDefinitionById($routeParams.reportId);
155 $scope.isEdit = true;
156 $scope.reportId = $routeParams.reportId;
158 $scope.isEdit = false;
159 $scope.createNewDefinition();
163 $scope.RunCurrentReport = function (){
164 $window.location.href = "#/report_run/c_master="+$scope.reportId+"&refresh=Y";
167 $scope.deleteFormField = function(rowData) {
168 var modalInstance = $modal.open({
170 animation: $scope.animationsEnabled,
171 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-formfield-del-confirm.html',
172 sizeClass: 'modal-large',
173 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','rowData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, rowData) {
174 $scope.tempFieldId = rowData.id;
175 $scope.ok = function() {
176 raptorReportFactory.deleteFormFieldById(rowData.id).then(function(data){
177 $modalInstance.close();
179 $log.error("raptorReportFactory: deleteFormFieldById failed.");
182 $scope.cancel = function() {
183 $modalInstance.dismiss();
192 modalInstance.result.then(function () {
193 $scope.$emit('RefreshFormField');
198 $scope.loadDefinition = function(definitionData) {
199 $scope.reportId = definitionData.reportId+"";
200 $scope.reportName = definitionData.reportName;
201 $scope.reportDescr = definitionData.reportDescr;
202 $scope.formHelpText = definitionData.formHelpText;
203 $scope.selectedPageSize = {"value": definitionData.pageSize+''};
204 $scope.selectedMaxRowsInExcelCSVDownload = {"value": definitionData.maxRowsInExcelCSVDownload};
205 $scope.reportTitle = definitionData.reportTitle;
206 $scope.reportSubTitle = definitionData.reportSubTitle;
207 $scope.selectedNumFormCols ={"value": definitionData.numFormCols+''};
208 $scope.selectedFrozenColumns={"value": definitionData.frozenColumns+''};
209 $scope.selectedDataGridAlign = {"value":definitionData.dataGridAlign+''};
210 $scope.emptyMessage = definitionData.emptyMessage+'';
211 $scope.selectedDataContainerHeight = {"value":definitionData.dataContainerHeight+''};
212 $scope.selectedDataContainerWidth = {"value":definitionData.dataContainerWidth+''};
213 var displayAreaValue = "null"
214 for (var i=0; i<3; i++ ) {
215 if (definitionData.displayArea[i].selected) {
216 displayAreaValue = definitionData.displayArea[i].name;
219 $scope.selectedDisplayArea = {"value":displayAreaValue+""};
221 $scope.hideFormFieldsAfterRunSelected = {"value": definitionData.hideFormFieldsAfterRun}
223 $scope.hideFormFieldsSelected = {"value":definitionData.displayOptions[0].selected};
224 $scope.hideChartSelected = {"value":definitionData.displayOptions[1].selected};
225 $scope.hideReportDataSelected = {"value":definitionData.displayOptions[2].selected};
226 $scope.hideExcelSelected = {"value":definitionData.displayOptions[3].selected};
227 $scope.hidePdfSelected = {"value":definitionData.displayOptions[4].selected};
228 $scope.runtimeColSortDisabled = {"value":definitionData.runtimeColSortDisabled};
229 $scope.showLoader = false;
233 var setDefinition = function(){
234 $scope.updatedDefJson = {
235 "tabName" : "Definition",
237 "reportId" : ($scope.isEdit?$scope.reportId+'':"-1"),
238 "reportName" : $scope.reportName,
239 "reportDescr" : $scope.reportDescr,
240 "reportType" : "Linear",
242 "formHelpText" : $scope.formHelpText,
243 "pageSize" : Number($scope.selectedPageSize.value),
247 "selected" : ($scope.selectedDisplayArea.value=="HOME")
251 "selected" : ($scope.selectedDisplayArea.value==="CUSTOMER")
255 "selected" : ($scope.selectedDisplayArea.value==="REPORTS")
257 "hideFormFieldsAfterRun" : $scope.hideFormFieldsAfterRunSelected.value,
258 "maxRowsInExcelCSVDownload" : Number($scope.selectedMaxRowsInExcelCSVDownload.value),
259 "frozenColumns" : Number($scope.selectedFrozenColumns.value),
260 "dataGridAlign" : $scope.selectedDataGridAlign.value,
261 "emptyMessage" : $scope.emptyMessage,
262 "dataContainerHeight" : $scope.selectedDataContainerHeight.value,
263 "dataContainerWidth" : $scope.selectedDataContainerWidth.value,
264 "displayOptions" : [ {
265 "name" : "HideFormFields",
266 "selected" : $scope.hideFormFieldsSelected.value
268 "name" : "HideChart",
269 "selected" : $scope.hideChartSelected.value
271 "name" : "HideReportData",
272 "selected" : $scope.hideReportDataSelected.value
274 "name" : "HideExcel",
275 "selected" : $scope.hideExcelSelected.value
278 "selected" : $scope.hidePdfSelected.value
280 "runtimeColSortDisabled" : $scope.runtimeColSortDisabled.value,
281 "numFormCols" : Number($scope.selectedNumFormCols.value),
282 "reportTitle" : $scope.reportTitle,
283 "reportSubTitle" : $scope.reportSubTitle
288 var updateDefinitionData = function() {
290 raptorReportFactory.updateDefinition($scope.updatedDefJson,$scope.isEdit).then(function(data){
292 $log.error("raptorReportFactory: updateDefinition by Id failed.");
296 var saveNewDefinitionData = function() {
298 raptorReportFactory.saveNewDefinition($scope.updatedDefJson).then(function(data){
300 $log.error("raptorReportFactory: saveNewDefinition by Id failed.");
304 $scope.testRunSql = function(){
305 var queryJSON = {query: $scope.sqlScript};
306 queryJSON = JSON.stringify(queryJSON);
307 raptorReportFactory.testRunSQL(queryJSON).then(function(data){
308 var modalInstance = $modal.open({
310 animation: $scope.animationsEnabled,
311 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html',
312 sizeClass: 'modal-large',
313 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) {
314 var init = function() {
315 $scope.isError = false;
316 if (queriedData.errormessage) {
317 $scope.isError = true;
318 $scope.errormessage = queriedData.errormessage;
319 $scope.stacktrace = queriedData.stacktrace;
321 $scope.queryData = queriedData;
325 $scope.close = function() {
326 $modalInstance.dismiss();
330 queriedData: function(){
337 $log.error("raptorReportFactory: test run SQL failed.");
342 $scope.formFieldVerifySQL= function(sqlScript){
343 var queryJSON = {query: sqlScript};
344 queryJSON = JSON.stringify(queryJSON);
345 raptorReportFactory.formFieldVerifySQL(queryJSON).then(function(data){
346 var modalInstance = $modal.open({
348 animation: $scope.animationsEnabled,
349 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html',
350 sizeClass: 'modal-large',
351 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) {
352 var init = function() {
353 $scope.isError = false;
354 if (queriedData.errormessage) {
355 $scope.isError = true;
356 $scope.errormessage = queriedData.errormessage;
357 $scope.stacktrace = queriedData.stacktrace;
359 $scope.queryData = queriedData;
363 $scope.close = function() {
364 $modalInstance.dismiss();
368 queriedData: function(){
375 $log.error("raptorReportFactory: test run SQL failed.");
380 /* $scope.selectedDataSource.allowSchedule={};
381 $scope.selectedDataSource.allowSchedule.value=""*/
383 var getJsonSrcName = function(stepNum){
384 var JsonSrcPrefix = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"
385 return JsonSrcPrefix + stepNum +".json";
392 uniqueId: 'uniqueTab1x',
393 tabPanelId: 'threetab1x'
397 uniqueId: 'uniqueTab2x',
398 tabPanelId: 'threetab2x',
399 disabled: (!$scope.isEdit)
403 uniqueId: 'uniqueTab3x',
404 tabPanelId: 'threetab3x',
405 disabled: (!$scope.isEdit)
407 title: 'Form Fields',
409 uniqueId: 'uniqueTab4x',
410 tabPanelId: 'threetab4x',
411 disabled: (!$scope.isEdit)
415 uniqueId: 'uniqueTab5x',
416 tabPanelId: 'threetab5x',
417 disabled: (!$scope.isEdit)
421 uniqueId: 'uniqueTab6x',
422 tabPanelId: 'threetab6x',
423 disabled: (!$scope.isEdit)
427 $scope.unhideAllOtherTabs = function(){
428 for (var selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) {
429 $scope.gTabs[selectedTab].disabled = false;
433 $scope.openColumnPopup = function (rowData) {
434 var modalInstance = $modal.open({
436 animation: $scope.animationsEnabled,
437 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html',
438 sizeClass: 'modal-large',
439 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','colData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, colData) {
440 raptorReportFactory.getColumnEditInfoById(colData.id).then(function(data){
441 $scope.columnEditData = data;
442 $scope.colId = data.colId;
443 /* $scope.colName = data.colName;*/
444 $scope.colName = {'value':data.colName+''};
445 $scope.selectedDisplayAlignment = {"value":data.displayAlignment+''};
446 $scope.selectedDisplayHeaderAlignment = {"value":data.displayHeaderAlignment+''};
447 $scope.sortable = {"value":''+data.sortable};
448 $scope.visible = {"value":''+data.visible};
449 $scope.drilldownURL = data.drilldownURL;
450 $scope.drilldownParams = data.drilldownParams;
451 $scope.drilldownType = data.drilldownType;
452 $scope.selectedDrillDownReport = {"value":""};
456 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
459 var init = function() {
461 raptorReportFactory.getDrillDownReportList().then(function(data2){
462 $scope.drilldownReports = data2;
464 $log.error("raptorReportFactory: getDrillDownReportList failed.");
467 /* $scope.colTableRowData = colData;*/
468 $scope.displayAlignmentOptions = [
469 {value:"null", text:""},
470 {value:"Left", text:"Left"},
471 {value:"Center", text:"Center"},
472 {value:"Right", text:"Right"}
475 {value:"true", text:"Yes"},
476 {value:"false", text:"No"}
478 $scope.drillDownOptions = [
479 {value:"drillDownOpt1", text:"drillDownOpt1"},
480 {value:"drillDownOpt2", text:"drillDownOpt2"},
481 {value:"drillDownOpt3", text:"drillDownOpt3"}
486 $scope.$watch('selectedDrillDownReport.value',function(){
487 if ($scope.selectedDrillDownReport) {
488 $scope.$emit('openDrillDownpage',$scope.selectedDrillDownReport.value);
492 $scope.save = function() {
493 var drilldownURL = "";//raptorReportFactory.drillDownPopupOptions
494 //raptorReportFactory.drillDownPopupOptions.radioGroup
497 "tabName" : "Column Edit",
498 "colId" : $scope.colId,
499 "colName" : $scope.colName.value,
500 "displayAlignment" : ($scope.selectedDisplayAlignment.value=="null")?null:$scope.selectedDisplayAlignment.value,
501 "displayHeaderAlignment" : ($scope.selectedDisplayHeaderAlignment.value=="null")?null:$scope.selectedDisplayHeaderAlignment.value,
502 "sortable" : ($scope.sortable.value=="true"),
503 "visible" : ($scope.visible.value=="true"),
504 "drilldownURL" : raptorReportFactory.drillDownURL,
505 "drilldownParams" : raptorReportFactory.drillDownParams,
508 raptorReportFactory.saveColumnEditInfo(colInfo).then(function(data){
509 $modalInstance.close();
511 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
515 $scope.cancel = function() {
516 $modalInstance.dismiss();
526 modalInstance.result.then(function () {
527 $scope.$emit('RefreshColumnList');
533 $scope.throwReportNameMissingError = function () {
534 var modalInstance = $modal.open({
536 animation: $scope.animationsEnabled,
537 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-report-name-validation.html',
538 sizeClass: 'modal-small',
539 controller: ['$scope', '$modalInstance', '$http', '$log', function ($scope, $modalInstance, $http, $log) {
540 $scope.close = function() {
541 $modalInstance.dismiss();
545 modalInstance.result.then(function () {
551 $scope.addNewFormField = function () {
552 var modalInstance = $modal.open({
554 animation: $scope.animationsEnabled,
555 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html',
556 sizeClass: 'modal-large',
557 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory', function ($scope, $modalInstance, $http, $log, raptorReportFactory) {
558 raptorReportFactory.getFormFieldEditInfoById("add").then(function(data){
559 $scope.formFieldEditData = data;
560 $scope.fieldId = $scope.formFieldEditData.fieldId;
561 $scope.fieldName ={"value": $scope.formFieldEditData.fieldName};
562 $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''};
563 $scope.defaultValue = {"value": $scope.formFieldEditData.defaultValue};
564 $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL};
565 $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL};
566 $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''};
567 $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''};
568 $scope.sqlDefaultValueSelected= {value:false};
569 $scope.sqlDefaultValueSelected ={"value":false};
570 if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) {
571 $scope.sqlDefaultValueSelected.value =true;
574 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
579 {value:"true", text:"Yes"},
580 {value:"false", text:"No"}
583 $scope.verifyFieldValueOptions = [
584 {value:"DATE", text:"Date"},
585 {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"},
586 {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"},
587 {value:"HIDDEN", text:"Hidden"}
590 $scope.fieldTypeOptions = [
591 {value:"TEXT", text:"Text Box"},
592 {value:"LIST_BOX", text:"List Box"},
593 {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"},
594 {value:"HIDDEN", text:"Hidden"}
597 $scope.save = function() {
598 var formFieldJSON = {
599 "tabId" : "FormEdit",
600 "tabName" : "Form Edit",
601 "fieldId" : $scope.fieldId,
602 "fieldName" : $scope.fieldName.value,
603 "fieldType" : $scope.selectedFieldType.value,
604 "visible" : ($scope.selectedVisible.value=="true"),
605 "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value),
606 "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""),
607 "fieldSQL" :$scope.fieldSqlContent.value,
608 "validationType" : "NONE",
609 "predefinedValueList" :null
611 raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){
612 $modalInstance.close();
614 $log.error("raptorReportFactory: saveFormFieldEditInfo failed.");
618 $scope.cancel = function() {
619 $modalInstance.dismiss();
623 modalInstance.result.then(function () {
624 $scope.$emit('RefreshFormField');
629 $scope.openFormFieldPopup = function (rowData) {
630 var modalInstance = $modal.open({
632 animation: $scope.animationsEnabled,
633 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html',
634 sizeClass: 'modal-large',
635 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','fieldData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, fieldData) {
636 var init = function() {
637 raptorReportFactory.getFormFieldEditInfoById(fieldData.id).then(function(data){
638 $scope.formFieldEditData = data;
639 $scope.fieldId = $scope.formFieldEditData.fieldId;
640 $scope.fieldName = {"value":$scope.formFieldEditData.fieldName};
641 $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''};
642 $scope.defaultValue = {"value":$scope.formFieldEditData.defaultValue};
643 $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL};
644 $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL};
645 $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''};
646 $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''};
647 $scope.sqlDefaultValueSelected ={"value":false};
648 if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) {
649 $scope.sqlDefaultValueSelected.value =true;
652 $log.error("raptorReportFactory: getColumnEditInfoById failed.");
656 {value:"true", text:"Yes"},
657 {value:"false", text:"No"}
660 $scope.verifyFieldValueOptions = [
661 {value:"DATE", text:"Date"},
662 {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"},
663 {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"},
664 {value:"HIDDEN", text:"Hidden"}
667 $scope.fieldTypeOptions = [
668 {value:"TEXT", text:"Text Box"},
669 {value:"LIST_BOX", text:"List Box"},
670 {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"},
671 {value:"HIDDEN", text:"Hidden"}
678 $scope.save = function() {
679 var formFieldJSON = {
680 "tabId" : "FormEdit",
681 "tabName" : "Form Edit",
682 "fieldId" : $scope.fieldId,
683 "fieldName" : $scope.fieldName.value,
684 "fieldType" : $scope.selectedFieldType.value,
685 "visible" : ($scope.selectedVisible.value=="true"),
686 "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value),
687 "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""),
688 "fieldSQL" :$scope.fieldSqlContent.value,
689 "validationType" : "NONE",
690 "predefinedValueList" :null
692 raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){
693 $modalInstance.close();
695 $log.error("raptorReportFactory: saveFormFieldEditInfo failed.");
699 $scope.cancel = function() {
700 $modalInstance.dismiss();
704 fieldData: function(){
710 modalInstance.result.then(function () {
711 $scope.$emit('RefreshFormField');
716 $scope.openDrillDownReportPopup = function (reportId,parentReportId) {
717 var modalInstance = $modal.open({
719 animation: $scope.animationsEnabled,
720 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html',
721 sizeClass: 'modal-large',
722 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','reportId', function ($scope, $modalInstance, $http, $log, raptorReportFactory, reportId) {
724 $scope.drillDownOptionList =[];
725 $scope.selectedvalueradioGroup = {"name":""};
726 $scope.selectedChildReportFormField = {"value":""};
727 $scope.selectedChildReportColumn = {"value":""};
728 $scope.fixedValue = {"value":""};
729 $scope.suppressValues = {"value":""};
731 raptorReportFactory.getChildReportFormField(reportId).then(function(data){
732 for (var i=0;i<data.length;i++) {
733 $scope.drillDownOptionList.push(
735 "name": data[i].name,
737 "selectedvalueradioGroup":{"name":""},
738 "selectedChildReportFormField":{"value":""},
739 "selectedChildReportColumn":{"value":""},
740 "fixedValue":{"value":""},
741 "suppressValues":{"value":""}
746 $log.error("raptorReportFactory: getChildReportFormField failed.");
749 raptorReportFactory.getChildReportFormField(parentReportId).then(function(data){
750 $scope.childReportFF =data;
752 $log.error("raptorReportFactory: getChildReportFormField failed.");
755 raptorReportFactory.getChildReportColumn(parentReportId).then(function(data){
756 $scope.childReportCol =data;
758 $log.error("raptorReportFactory: getChildReportFormField failed.");
761 raptorReportFactory.setDrillDownPopupOptions(null);
763 $scope.complete = function() {
764 var drillDownPopupOptions= {
765 radioGroup : $scope.selectedvalueradioGroup.name,
766 reportFF: $scope.selectedChildReportFormField.value,
767 reportCol: $scope.selectedChildReportColumn.value,
768 fixedValue: $scope.fixedValue.value,
769 suppressValues: $scope.suppressValues.value
771 var drillDownParams = "";
773 for (var i=0;i<$scope.drillDownOptionList.length; i++) {
774 if (drillDownParams!="") {
777 if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="fixedValue"){
778 drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "="+$scope.drillDownOptionList[i].fixedValue.value;
779 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportFF"){
780 drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=[!"+$scope.drillDownOptionList[i].selectedChildReportFormField.value + "]";
781 } else if ($scope.drillDownOptionList[i].selectedvalueradioGroup.name=="reportCol"){
782 drillDownParams = drillDownParams + ampStr + $scope.drillDownOptionList[i].id + "=["+$scope.drillDownOptionList[i].selectedChildReportColumn.value + "]";
785 raptorReportFactory.setDrillDownPopupOptions(reportId,drillDownParams);
787 $modalInstance.close();
791 reportId: function(){
797 modalInstance.result.then(function () {
798 /* $scope.$emit('RefreshFormField');*/
803 $scope.$watch('activeTabsId', function (newVal, oldVal) {
804 if(newVal !== oldVal) {
805 $scope.showLoader = true;
807 for (selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) {
808 if ($scope.gTabs[selectedTab].id === newVal) {
809 $scope.stepNum = selectedTab;
810 /* stepFormFactory.getStepJSONData(getJsonSrcName($scope.stepNum))*/
811 $scope.isColumnStep = false;
812 $scope.isFormFieldStep = false;
813 $scope.isSecurityStep = false;
814 $scope.renderStep(selectedTab+1);
815 if ($scope.stepNum == 1) {
816 $scope.showLoader = false;
818 else if ($scope.stepNum == 2) {
820 } else if ($scope.stepNum == 3) {
821 $scope.isColumnStep = true;
822 raptorReportFactory.getColumnList().then(function(data){
823 $scope.colTableRowData = data;
824 $scope.showLoader = false;
826 $log.error("raptorReportFactory: get column list failed.");
827 $scope.showLoader = false;});
829 } else if ($scope.stepNum == 4) {
830 $scope.isFormFieldStep = true;
831 // put within then function:
832 raptorReportFactory.getFormFieldList().then(function(data){
833 $scope.formFieldData = data;
834 $scope.showLoader = false;
836 $log.error("raptorReportFactory: get formfields failed.");
837 $scope.showLoader = false;});
838 } else if ($scope.stepNum == 5) {
839 $scope.isSecurityStep = true;
840 $scope.reportOwnerId={'id':''};
841 $scope.isPublicOptionList = [
842 {'value':'true','text':'Yes'},
843 {'value':'false','text':'No'},
845 $scope.loadSecurityPage();
848 else if ($scope.stepNum == 6) {
849 raptorReportFactory.getDefinitionInSession().then(function(data){
850 $scope.reportId = data.reportId;
851 $scope.showLoader = false;
853 $log.error("raptorReportFactory: getDefinitionInSession failed.");
854 $scope.showLoader = false;});
857 if ($scope.stepNum>1){
858 $scope.unhideAllOtherTabs();
866 $scope.loadSecurityPage = function() {
867 $scope.showLoader = true;
868 raptorReportFactory.resetSecurityLoadingCounter();
871 raptorReportFactory.getSecurityReportOwnerList().then(function(data){
872 $scope.reportOwnerList = data;
873 raptorReportFactory.icrementSecurityLoadingCounter();
874 if(raptorReportFactory.checkSecurityLoadingCounter()){$scope.showLoader = false;};
876 $log.error("raptorReportFactory: getSecurityReportOwnerList failed.");
879 //API call 2: get report role list
880 raptorReportFactory.getReportRoleList().then(function(data){
881 $scope.reportRoleList = data;
882 raptorReportFactory.icrementSecurityLoadingCounter();
883 if(raptorReportFactory.checkSecurityLoadingCounter()){$scope.showLoader = false;};
885 $log.error("raptorReportFactory: getReportRoleList failed.");
888 //API call 3: get security page basic info
889 raptorReportFactory.getReportSecurityInfo().then(function(data){
890 $scope.reportSecurityInfo = data;
891 $scope.reportOwnerId ={id: $scope.reportSecurityInfo.ownerId};
892 raptorReportFactory.icrementSecurityLoadingCounter();
893 if(raptorReportFactory.checkSecurityLoadingCounter()){$scope.showLoader = false;};
895 $log.error("raptorReportFactory: getReportSecurityInfo failed.");
896 $scope.showLoader = false;});
898 //API call 4: retrieve security users
899 raptorReportFactory.getReportSecurityUsers().then(function(data){
900 $scope.reportSecurityUsers = data;
901 for (var i=0; i<$scope.reportSecurityUsers.length;i++) {
902 $scope.reportSecurityUsers[i]["accessAllowed"] = !$scope.reportSecurityUsers[i]["readOnly"];
904 raptorReportFactory.icrementSecurityLoadingCounter();
905 if(raptorReportFactory.checkSecurityLoadingCounter()){$scope.showLoader = false;};
907 $log.error("raptorReportFactory: reportSecurityUsers failed.");
910 //API call 5: retrieve security roles
911 raptorReportFactory.getReportSecurityRoles().then(function(data){
912 $scope.reportSecurityRoles = data;
913 for (var i=0; i<$scope.reportSecurityRoles.length;i++) {
914 $scope.reportSecurityRoles[i]["accessAllowed"] = !$scope.reportSecurityRoles[i]["readOnly"];
917 raptorReportFactory.icrementSecurityLoadingCounter();
918 if(raptorReportFactory.checkSecurityLoadingCounter()){$scope.showLoader = false;};
920 $log.error("raptorReportFactory: reportSecurityRoles failed.");
925 $scope.renderStep = function(stepNum){
926 var containerElement = angular.element(document.getElementById("stepView"));
927 containerElement.empty();
928 $scope.stepNum = stepNum;
929 var jsonSrcName = getJsonSrcName(stepNum);
930 stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
933 $scope.toggleUserEditAccessActive = function(rowData) {
934 var modalInstance = $modal.open({
936 animation: $scope.animationsEnabled,
937 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-user-role-confirm-toggle.html',
938 sizeClass: 'modal-small',
939 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','rowData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, rowData) {
940 $scope.rowData = rowData;
941 $scope.toggleEditAccessStatus = function(rowData) {
942 raptorReportFactory.toggleUserEditAccess(rowData);
943 $modalInstance.close();
946 $scope.cancelEditAccessToggle = function(rowData) {
947 rowData.accessAllowed = ! rowData.accessAllowed;
948 $modalInstance.dismiss('cancel');}
956 modalInstance.result.then(function () {
962 $scope.toggleRoleEditAccessActive = function(rowData) {
963 var modalInstance = $modal.open({
965 animation: $scope.animationsEnabled,
966 templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-user-role-confirm-toggle.html',
967 sizeClass: 'modal-small',
968 controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','rowData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, rowData) {
969 $scope.rowData = rowData;
970 $scope.toggleEditAccessStatus = function(rowData) {
971 raptorReportFactory.toggleRoleEditAccess(rowData);
972 $modalInstance.close();
975 $scope.cancelEditAccessToggle = function(rowData) {
976 rowData.accessAllowed = ! rowData.accessAllowed;
977 $modalInstance.dismiss('cancel');}
985 modalInstance.result.then(function () {
995 // initialize the page at step 1;
996 $scope.renderStep(1);
998 // create a message to display in our view
999 $scope.allProjects = [];
1000 if(!$routeParams.step && $routeParams.step == "") $routeParams.step = 1;
1001 if($routeParams.proj && $routeParams.proj > 0)
1002 $scope.projid = $routeParams.proj;
1003 if($routeParams.step)
1004 $scope.stepNum = $routeParams.step;
1008 $scope.jsonSrcName = getJsonSrcName($scope.stepNum);
1010 $scope.selectAction = function () {
1011 var containerElement = angular.element(document.getElementById("stepView"));
1012 containerElement.empty();
1013 $scope.project_name = this.prj.projectName;
1015 var stepNum = $scope.stepNum;
1016 var jsonSrcName = getJsonSrcName(stepNum);
1017 stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
1018 renderProject(this.prj.id, 1);
1022 $scope.createAction = function () {
1023 var containerElement = angular.element(document.getElementById("stepView"));
1024 containerElement.empty();
1026 var stepNum = $scope.stepNum;
1027 $scope.jsonSrcName = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"+$scope.stepNum +".json";
1028 var jsonSrcName = $scope.jsonSrcName;
1029 stepFormFactory.renderForm(jsonSrcName, containerElement, $scope);
1032 // select current project
1033 renderProject = function (proj_id, stepNum) {
1034 var userSelectedPrjId = proj_id;
1037 url: 'get_selected_project_data',
1038 params:{'selectedPrjId':userSelectedPrjId, 'step': stepNum}
1039 }).then(function successCallback(response) {
1040 var selectedproject = response.data;
1041 $scope.projid = userSelectedPrjId;
1042 //$scope.allProjects = projectLists;
1043 //$location.path('/'+userSelectedPrjId+'/'+stepNum);
1044 var div = d3.select("#stepView");
1045 div.select("[name='proj_id']").text(userSelectedPrjId);
1046 div.select("[name='proj_id']").property("value", userSelectedPrjId);
1047 d3.select("[name='project_id']").property("value", userSelectedPrjId);
1048 var h3Text = div.select("h3").text();
1049 div.select("h3").text($scope.project_name+ " - " + h3Text);
1050 for (var key in selectedproject) {
1051 if (selectedproject.hasOwnProperty(key)) {
1052 var val = selectedproject[key];
1053 var formElement = d3.selectAll("[name='" + key + "']");
1054 if(formElement[0].length > 0)
1055 console.log(formElement.attr("type"));
1056 if(formElement[0].length > 0 && formElement.attr("type") === "radio") {
1057 var formRadio = d3.selectAll("[id='" + key +"_"+val + "']");
1058 formRadio.property('checked', true);
1060 if(formElement[0].length > 0 && formElement.property("type") === "textarea") {
1061 div.select("textarea[name='" + key +"']").property('value', val);
1063 if(formElement[0].length > 0 && formElement.attr("type") === "text") {
1064 var formText = d3.selectAll("[name='" + key + "']");
1065 formText.property("value", val);
1067 if(formElement[0].length > 0 && formElement.html().startsWith("<option")) {
1068 var formSelect = d3.selectAll("[name='" + key + "']");
1070 var checkOption = function (e) {
1071 if(e.label === val){
1072 return formSelect.property("selectedIndex", e.index );
1076 formSelect.selectAll("option").forEach(function(d) {d.forEach(function(optionD) {checkOption(optionD); }) });
1079 if(formElement[0].length == 0) {
1081 if( Object.prototype.toString.call( val ) === '[object Array]' ) {
1082 val.forEach(function(d){
1083 for (var keyCheck in d) {
1084 if (d.hasOwnProperty(keyCheck)) {
1085 var valCheck = d[keyCheck];
1086 var formCheck = d3.selectAll("[name='" + key + "_"+keyCheck + "']");
1087 if(valCheck === true)
1088 formCheck.property('checked', true);
1094 var formElementOther = d3.selectAll("[name='" + key + "_"+ val + "']");
1095 if(formElementOther[0].length > 0 && formElementOther.attr("type") === "checkbox") {
1096 var formCheckbox = d3.selectAll("[name='" + key +"_"+val + "']");
1097 formRadio.property('checked', true);
1109 $scope.submit = function(){
1110 let defer = $q.defer();
1112 var div = d3.select("#stepView");
1113 var jsonSrcName = $scope.jsonSrcName;
1114 var stepNum = $scope.stepNum;
1119 }).then(function successCallback(response) {
1120 var json = response.data;
1121 var step = json.step;
1123 var sections = json.content.sections;
1124 sections.forEach(function(d, i) {
1125 var elements = d.elements;
1127 //elements.forEach(function(element, elementIndex) {
1129 values += "\"step\""+ ":\"" + step + "\",";
1130 values += "\"proj_id\""+ ":\"" + d3.select('input[name="project_id"]').property("value") + "\",";
1132 for (elementIndex = 0; elementIndex < elements.length; elementIndex++) {
1133 var element = elements[elementIndex];
1135 if(elementIndex > 0) values += ",";
1136 values += "\""+element.name +"\""+ ":" ;
1137 if(element.input === "hidden") {
1138 values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
1140 if(element.input === "radio") {
1141 values += "\""+ div.select('input[name="'+element.name+'"]:checked').property("value") +"\"";
1143 if(element.input === "checkbox") {
1144 var checkOptions = element.options;
1146 checkOptions.forEach(function(d, i) {
1147 // if(document.getElementById("'"+element.name+"_"+d.id+"'") != null)
1148 values += "\""+d.id+"\""+ ":" + div.select('input[name="'+element.name+"_"+d.id+'"]').property("checked") ;
1149 if(i<checkOptions.length-1) {
1155 if(element.input === "text") {
1156 values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\"";
1158 if(element.input === "textarea") {
1159 values += "\""+div.select('textarea[name="'+element.name+'"]').node().value +"\"";
1161 if(element.input === "select") {
1162 values += "\""+ div.select('select[name="'+element.name+'"]').property("value") + "\"";
1170 var valueJSON = JSON.parse(values);
1171 var valueStr = JSON.stringify(valueJSON, null, 4);
1172 $http({method:'POST', url:'save_steps', data: jsonSrcName, params:{'result' : valueStr, 'proj_id' : values.proj_id}}).success(function(data, status) {
1173 if(data.project_name)
1174 $scope.project_name = data.project_name;
1175 div.select("[name='proj_id']").property("value", data.proj_id);
1176 d3.select("[name='project_id']").property("value", data.proj_id);
1177 //$scope.projid = data.proj_id;
1178 valueStr=JSON.stringify(data, null, 4);
1180 //stepNum = Number(stepNum || 0)+1;
1181 //document.getElementById('itestframe').src = data;
1188 // $location.path('/step'+($scope.stepNum+1));
1189 return defer.promise;
1194 $scope.save = function() {
1195 if ($scope.stepNum ==1) {
1196 updateDefinitionData();
1197 } else if($scope.stepNum ==5) {
1198 $scope.saveReportSecurityInfo($scope.reportOwnerId.id,$scope.reportSecurityInfo.isPublic);
1203 $scope.next = function(){
1204 if ($scope.stepNum ==1) {
1205 if ($scope.reportName==="") {
1206 $scope.throwReportNameMissingError();
1209 updateDefinitionData();
1211 $scope.stepNum = $scope.stepNum +1;
1212 $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
1216 $scope.previous = function(){
1217 $scope.stepNum = $scope.stepNum -1;
1218 $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id;
1222 $scope.$on('RefreshInsession', function(event) {
1223 $scope.isEdit = true;
1224 $scope.reportId = -1;
1225 $scope.getDefinitionById(-1);
1228 $scope.$on('openDrillDownpage', function(event, reportId) {
1230 $scope.openDrillDownReportPopup(reportId,$scope.reportId);
1235 $scope.$on('RefreshFormField', function(event) {
1236 raptorReportFactory.getFormFieldList().then(function(data){
1237 $scope.formFieldData = data;
1239 $log.error("raptorReportFactory: get formfields failed.");
1243 $scope.$on('RefreshColumnList', function(event) {
1244 raptorReportFactory.getColumnList().then(function(data){
1245 $scope.colTableRowData = data;
1247 $log.error("raptorReportFactory: get column list failed.");
1251 $scope.getAllProjects = function(){
1255 }).then(function successCallback(response) {
1256 var projectLists = response.data;
1257 $scope.allProjects = projectLists;
1261 // getAllProjects();