diff options
author | TATTAVARADA <statta@research.att.com> | 2017-04-27 07:53:18 -0400 |
---|---|---|
committer | st782s <statta@research.att.com> | 2017-04-27 08:31:27 -0400 |
commit | 6beb446925c967aca92f5513adf36c5db77c00d6 (patch) | |
tree | 9392057ed0739de2445c5b2a2a8bee6dcdacbcf7 /ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports | |
parent | 246b225194e3e8dc1926294de591a94fd9787fa7 (diff) |
[PORTAL-7] Rebase
This rebasing includes common libraries and common overlays projects
abstraction of components
Change-Id: Ia1efa4deacdc5701e6205104ac021a6c80ed60ba
Signed-off-by: st782s <statta@research.att.com>
Diffstat (limited to 'ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports')
5 files changed, 1467 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-import-controller.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-import-controller.js new file mode 100644 index 00000000..a8f853fd --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-import-controller.js @@ -0,0 +1,20 @@ +appDS2.controller('reportImportController', function($scope,$http,$location, $routeParams, $q, $modal,$log,$window, raptorReportFactory, stepFormFactory, DOMHelper) { + $scope.importXML = function(){ + + var importXMLJSON = { + "tabId":"Import", + "tabName":"Import", + "reportXML":$scope.xmlContent + } + $scope.errorMessage = "" + raptorReportFactory.postImportXml(importXMLJSON).then(function(data){ + if (data.errormessage) { + $scope.errorMessage = data.errormessage; + } else { + $window.location.href = 'report#/report_wizard/-1'; + }; + },function(error){ + $log.error("raptorReportFactory: postImportXml failed."); + }); + } +});
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-router.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-router.js new file mode 100644 index 00000000..db3422ed --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-router.js @@ -0,0 +1,37 @@ +appDS2.config(['$routeProvider', + function($routeProvider) { + $routeProvider. + when('/', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/report-search.html', + controller: 'reportSearchController' + }). + when('/report_search', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/report-search.html', + controller: 'reportSearchController' + }). + when('/report_run/:reportUrlParams*', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/report-run.html', + controller: 'reportRunController' + }). + when('/report_chart_wizard/:reportId', { + templateUrl: 'static/fusion/raptor/ebz/report_chart_wizard.html', + controller: 'ChartController' + }). + when("/report_wizard", { + templateUrl : "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html", + controller: "reportStepController" + }). + when("/report_wizard/:reportId", { + templateUrl : "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html", + controller: "reportStepController" + }). + when("/report_wizard/:reportMode/:reportId", { + templateUrl : "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html", + controller: "reportStepController" + }). + when("/report_import", { + templateUrl : "app/fusion/scripts/DS2-view-models/ds2-reports/report-import.html", + controller: "reportImportController" + }) + ; + }]);
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-run-controller.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-run-controller.js new file mode 100644 index 00000000..02f58985 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-run-controller.js @@ -0,0 +1,326 @@ +appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams','$http','dateFilter', '$window', '$timeout', 'rowSorter', + function ($scope,$rootScope,$routeParams,$http,dateFilter,$window,$timeout,rowSorter) { + $scope.dateformat = "MM/dd/yyyy"; + $scope.datetimeformat = "MM/dd/yyyy hh:mm a"; + $scope.showFormFields = false; + $scope.showGrid = false; + $scope.showChart = false; + $scope.showBackButton = false; + $scope.reportData = {}; + $scope.reportData.allowEdit = false; + $scope.formFieldSelectedValues = {}; + $scope.showFormFieldIds = false; + + $scope.isInProgress = true; + + if($routeParams.reportUrlParams.indexOf("parent___params===")>-1) { + $scope.showBackButton = true; + $scope.parentReportUrlParams = $routeParams.reportUrlParams.substring($routeParams.reportUrlParams.indexOf("parent___params===")+18); + $scope.currentReportUrlParams = $routeParams.reportUrlParams.substring(0,$routeParams.reportUrlParams.indexOf("parent___params===")); + } else { + $scope.currentReportUrlParams = $routeParams.reportUrlParams; + } + console.log($routeParams.reportUrlParams); + var parseQueryString = function( queryString ) { + var params = {}, queries, temp, i, l; + // Split into key/value pairs + queries = queryString.split("&"); + // Convert the array of strings into an object + for ( i = 0, l = queries.length; i < l; i++ ) { + temp = queries[i].split('='); + //console.log(temp[0]); + //console.log(temp[0] != "refresh"); + if(temp[0] && temp[0] != "refresh") + params[temp[0]] = temp[1]; + } + return params; + }; + + var convertQueryString = function(queryString) { + var keys = ""; var str = ""; + keys = Object.keys(queryString); + //console.log(keys); + for ( i = 0, l = keys.length; i < l; i++ ) { + str += keys[i]+"="+queryString[keys[i]] + "&"; + + } + return str; + //queryString = + } + + + + + $scope.urlParams = parseQueryString($scope.currentReportUrlParams); + + $scope.reportChartURL = 'report#/report_chart_wizard/'+$scope.urlParams.c_master; + + $scope.reportEditURL = 'report_wizard.htm?action=report.edit&c_master='+$scope.urlParams.c_master; + + + $http.get('raptor.htm?action=report.run.container&'+$scope.currentReportUrlParams).then( + function(response){ + console.log(response); + $scope.isInProgress = false; + $scope.reportData = response.data; + console.log('reportData report run container response',$scope.reportData); + if ($scope.reportData.reportTitle) { + $scope.reportData.reportHeading = $scope.reportData.reportTitle; + if ($scope.reportData.reportSubTitle) { + $scope.reportData.reportSubTitle = $scope.reportData.reportSubTitle; + } + } + else + $scope.reportData.reportHeading = $scope.reportData.reportName; + if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){ + console.log('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams)); + $http.get('raptor.htm?action=chart.run&'+convertQueryString($scope.urlParams)).then( + function(response){ + $scope.showChart = true; + document.getElementById('chartiframe').contentWindow.document.write(response.data); + document.getElementById('chartiframe').contentWindow.document.close(); + }); + } + + if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields){ + $scope.showFormFields = true; + } + }); + $scope.getFormFieldSelectedValuesAsURL = function(){ + var formFieldsUrl = ''; + $scope.reportData.formFieldList.forEach(function(formField) { + if(formField.fieldType==='LIST_BOX') { + if($scope.formFieldSelectedValues && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId].value != '') { + formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId].value+'&'; + } + } else if(formField.fieldType==='LIST_MULTI_SELECT') { + if($scope.formFieldSelectedValues[formField.fieldId].length >0) { + for (var i = 0; i < $scope.formFieldSelectedValues[formField.fieldId].length; i++) { + if($scope.formFieldSelectedValues[formField.fieldId][i].defaultValue){ + formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId][i].value+'&'; + } + } + } + } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'DATE'){ + formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.dateformat)+'&'; + } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && formField.validationType === 'TIMESTAMP_MIN'){ + formFieldsUrl = formFieldsUrl+formField.fieldId+'='+dateFilter($scope.formFieldSelectedValues[formField.fieldId],$scope.datetimeformat)+'&'; + } else if((formField.fieldType === 'text' || formField.fieldType === 'TEXT') && $scope.formFieldSelectedValues[formField.fieldId] && $scope.formFieldSelectedValues[formField.fieldId] != ''){ + formFieldsUrl = formFieldsUrl+formField.fieldId+'='+$scope.formFieldSelectedValues[formField.fieldId]+'&'; + } + }); + return formFieldsUrl; + + } + + $scope.runReport = function(pagination){ + var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL(); + /*if ($scope.reportData.reportTitle) + $scope.reportData.reportHeading = $scope.reportData.reportTitle; + else + $scope.reportData.reportHeading = $scope.reportData.reportName;*/ + + console.log("pagination"); + if(!pagination) { + //console.log("refreshed ..."); + $scope.gridOptions.pageNumber = 1; + paginationOptions.pageNumber = 1; + paginationOptions.pageSize = $scope.reportData.pageSize; + //console.log($scope.gridOptions); + $scope.gridOptions.paginationCurrentPage = 1; + $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize]; + $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize; + if($scope.reportData.totalRows<14){ + $scope.gridHeight = ($scope.reportData.totalRows+7)*30+'px'; + } else{ + $scope.gridHeight = '400px'; + } + $scope.gridOptions.totalItems = $scope.reportData.totalRows; + $scope.gridOptions.data= $scope.reportData.reportDataRows; + $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName; + + } + $scope.currentReportUrlParams = 'c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'&display_content=Y&r_page='+(paginationOptions.pageNumber-1); + console.log('raptor.htm?action=report.run.container&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1)); + $http.get('raptor.htm?action=report.run.container&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'refresh=Y&display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then( + function(response){ + $scope.reportData = response.data; + if ($scope.reportData.reportTitle) { + $scope.reportData.reportHeading = $scope.reportData.reportTitle; + if ($scope.reportData.reportSubTitle) { + $scope.reportData.reportSubTitle = $scope.reportData.reportSubTitle; + } + } + else + $scope.reportData.reportHeading = $scope.reportData.reportName; + + if($scope.reportData.errormessage) { + //console.log($scope.reportData); + var stacktraceFP = $scope.reportData.stacktrace.substring(0, $scope.reportData.stacktrace.indexOf(":")+1); + document.getElementById('errorDiv').innerHTML = stacktraceFP + " " + $scope.reportData.errormessage; + //console.log(document.getElementById('errorDiv').innerHtml); + //console.log(stacktraceFP + " " + $scope.reportData.errormessage); + } + if(!pagination) { + if(!$scope.urlParams.hideChart && $scope.reportData.chartAvailable && $scope.reportData.totalRows>1){ + console.log('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1)); + $http.get('raptor.htm?action=chart.run&c_master='+$scope.urlParams.c_master+'&'+formFieldsUrl+'display_content=Y&r_page='+(paginationOptions.pageNumber-1)).then( + function(response) { + console.log(response.data); + $scope.showChart = true; + console.log('response.data',response.data); + document.getElementById('chartiframe').contentWindow.document.write(response.data); + document.getElementById('chartiframe').contentWindow.document.close(); + }); + } else { + $scope.showChart = false; + } + } + if($scope.reportData.displayForm && $scope.reportData.formFieldList && $scope.reportData.formFieldList.length>0 && !$scope.urlParams.hideFormFields && !$scope.reportData.hideFormFieldsAfterRun){ + $scope.showFormFields = true; + } else { + $scope.showFormFields = false; + } + }); + }; + + var paginationOptions = { + pageNumber: 1, + pageSize: 5, + sort: null + }; + + var correctTotalPaginationTemplate = + //same as normal template, but fixed totals: {{(((grid.options.paginationCurrentPage-1)*grid.options.paginationPageSize)+1)}} {{(grid.options.paginationCurrentPage*grid.options.paginationPageSize>grid.options.totalItems?grid.options.totalItems:grid.options.paginationCurrentPage*grid.options.paginationPageSize)}} + "<div role=\"contentinfo\" class=\"ui-grid-pager-panel\" ui-grid-pager ng-show=\"grid.options.enablePaginationControls\"><div role=\"navigation\" class=\"ui-grid-pager-container\"><div role=\"menubar\" class=\"ui-grid-pager-control\"><button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-first\" ui-grid-one-bind-title=\"aria.pageToFirst\" ui-grid-one-bind-aria-label=\"aria.pageToFirst\" ng-click=\"pageFirstPageClick()\" ng-disabled=\"cantPageBackward()\"><div class=\"first-triangle\"><div class=\"first-bar\"></div></div></button> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-previous\" ui-grid-one-bind-title=\"aria.pageBack\" ui-grid-one-bind-aria-label=\"aria.pageBack\" ng-click=\"pagePreviousPageClick()\" ng-disabled=\"cantPageBackward()\"><div class=\"first-triangle prev-triangle\"></div></button> <input type=\"number\" ui-grid-one-bind-title=\"aria.pageSelected\" ui-grid-one-bind-aria-label=\"aria.pageSelected\" class=\"ui-grid-pager-control-input\" ng-model=\"grid.options.paginationCurrentPage\" min=\"1\" max=\"{{ paginationApi.getTotalPages() }}\" required> <span class=\"ui-grid-pager-max-pages-number\" ng-show=\"paginationApi.getTotalPages() > 0\"><abbr ui-grid-one-bind-title=\"paginationOf\">/</abbr> {{ paginationApi.getTotalPages() }}</span> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-next\" ui-grid-one-bind-title=\"aria.pageForward\" ui-grid-one-bind-aria-label=\"aria.pageForward\" ng-click=\"pageNextPageClick()\" ng-disabled=\"cantPageForward()\"><div class=\"last-triangle next-triangle\"></div></button> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-last\" ui-grid-one-bind-title=\"aria.pageToLast\" ui-grid-one-bind-aria-label=\"aria.pageToLast\" ng-click=\"pageLastPageClick()\" ng-disabled=\"cantPageToLast()\"><div class=\"last-triangle\"><div class=\"last-bar\"></div></div></button></div><div class=\"ui-grid-pager-row-count-picker\" ng-if=\"grid.options.paginationPageSizes.length > 1\"><select ui-grid-one-bind-aria-labelledby-grid=\"'items-per-page-label'\" ng-model=\"grid.options.paginationPageSize\" ng-options=\"o as o for o in grid.options.paginationPageSizes\"></select><span ui-grid-one-bind-id-grid=\"'items-per-page-label'\" class=\"ui-grid-pager-row-count-label\"> {{sizesLabel}}</span></div><span ng-if=\"grid.options.paginationPageSizes.length <= 1\" class=\"ui-grid-pager-row-count-label\">{{grid.options.paginationPageSize}} {{sizesLabel}}</span></div><div class=\"ui-grid-pager-count-container\"><div class=\"ui-grid-pager-count\"><span ng-show=\"grid.options.totalItems > 0\">{{(((grid.options.paginationCurrentPage-1)*grid.options.paginationPageSize)+1)}} <abbr ui-grid-one-bind-title=\"paginationThrough\">-</abbr> {{(grid.options.paginationCurrentPage*grid.options.paginationPageSize>grid.options.totalItems?grid.options.totalItems:grid.options.paginationCurrentPage*grid.options.paginationPageSize)}} {{paginationOf}} {{grid.options.totalItems}} {{totalItemsLabel}}</span></div></div></div>"; + + $scope.gridOptions = { + pageNumber: 1, + sort : null, + paginationPageSizes: [5], + paginationPageSize: 5, + paginationTemplate: correctTotalPaginationTemplate, + columnDefs: [], + data: [], + enableGridMenu: true, + enableSelectAll: true, + gridMenuCustomItems : [ + { title : 'All Reports', + action : function($event) { + $window.open('report.htm','_self'); + }, order : 210 }, + { title : 'Edit Report', + action : function($event) { + $window.open($scope.reportEditURL,'_self'); + }, order : 211 }, + { title : 'Export All data as Excel 2007', + action : function($event) { + $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel2007.session','_self'); + }, order : 212 }, + { title : 'Export All data as Excel', + action : function($event) { + $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.excel.session','_self'); + }, order : 213 }, + { title : 'Export All data as CSV', + action : function($event) { + $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.csv.session','_self'); + }, order : 214 }, + { title : 'Export All data as PDF', + action : function($event) { + $window.open('raptor.htm?c_master='+$scope.reportData.reportID+'&r_action=report.download.pdf.session','_self'); + }, order : 215 } ], + exporterMenuPdf: false, + exporterMenuCsv: false, + exporterCsvFilename: 'myFile.csv', + exporterPdfDefaultStyle: {fontSize: 9}, + exporterPdfTableStyle: {margin: [30, 30, 30, 30]}, + exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'}, + exporterPdfHeader: { text: "My Header", style: 'headerStyle' }, + exporterPdfFooter: function ( currentPage, pageCount ) { + return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' }; + }, + exporterPdfCustomFormatter: function ( docDefinition ) { + docDefinition.styles.headerStyle = { fontSize: 22, bold: true }; + docDefinition.styles.footerStyle = { fontSize: 10, bold: true }; + return docDefinition; + }, + exporterPdfOrientation: 'portrait', + exporterPdfPageSize: 'LETTER', + exporterPdfMaxGridWidth: 500, + exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")), + onRegisterApi: function(gridApi) { + $scope.gridApi = gridApi; + gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { + paginationOptions.pageNumber = newPage; + paginationOptions.pageSize = pageSize; + $scope.runReport(true); + }); + } + }; + + $scope.uiGridRefresh = function(){ + var columnDefsArray = []; + var columnFreezeEndColumn = $scope.reportData.colIdxTobeFreezed; + var doColumnNeedToFreeze = false; + if(columnFreezeEndColumn && columnFreezeEndColumn.length>0) { + doColumnNeedToFreeze = true; + } + $scope.reportData.reportDataColumns.forEach(function(entry) { + var tempColumnDef = { displayName: entry.columnTitle, field: entry.colId, enableSorting: entry.sortable, + sortingAlgorithm: function(a, b) { + return rowSorter.sortAlpha(a.displayValue, b.displayValue); + }, + cellTemplate: '<div class="ui-grid-cell-contents" style="text-align:{{COL_FIELD.alignment}};" title="TOOLTIP"> '+ + ' <div ng-if="!COL_FIELD.drillDownURL || COL_FIELD.drillDownURL==\'\'">{{COL_FIELD.displayValue}}</div>' + + ' <a ng-if="COL_FIELD.drillDownURL && COL_FIELD.drillDownURL!=\'\'" ng-href="{{COL_FIELD.drillDownURL}}&parent___params==={{grid.appScope.currentReportUrlParams}}" >{{COL_FIELD.displayValue}}</a>' + + '</div>'}; + if(entry.columnWidth && entry.columnWidth!='null' && entry.columnWidth!='pxpx' && entry.columnWidth!='nullpx' && entry.columnWidth!='nullpxpx'){ + tempColumnDef['minWidth'] = entry.columnWidth.substring(0, entry.columnWidth.length - 2); + } else { + tempColumnDef['minWidth'] = '100'; + } + if(doColumnNeedToFreeze) { + tempColumnDef['pinnedLeft']= true; + if(columnFreezeEndColumn === entry.colId){ + doColumnNeedToFreeze = false; + } + } + columnDefsArray.push(tempColumnDef); + }); + + $scope.gridOptions.paginationPageSizes= [$scope.reportData.pageSize]; + $scope.gridOptions.paginationPageSize= $scope.reportData.pageSize; + if($scope.reportData.totalRows<14){ + $scope.gridHeight = ($scope.reportData.totalRows+5)*30+'px'; + }else{ + $scope.gridHeight = '400px'; + } + $scope.gridOptions.totalItems = $scope.reportData.totalRows; + $scope.gridOptions.columnDefs= columnDefsArray; + $scope.gridOptions.data= $scope.reportData.reportDataRows; + $scope.gridOptions.exporterPdfHeader.text= $scope.reportData.reportName; + }; + + $scope.$watch("reportData",function(newValue,oldValue) { + if(!$scope.urlParams.hideGrid){ + if($scope.reportData){ + if($scope.reportData.displayData && $scope.reportData.reportDataColumns){ + $scope.showGrid = true; + $scope.uiGridRefresh(); + } + } + } + }); + + $scope.triggerOtherFormFields = function(){ + console.log("report_run"); + var formFieldsUrl = $scope.getFormFieldSelectedValuesAsURL(); + $http.get('raptor.htm?action=report.formfields.run.container&c_master='+$scope.reportData.reportID+'&'+formFieldsUrl).then( + function(response){ + $scope.reportData = response.data; + }); + }; + $timeout(function() { + $rootScope.isViewRendering = false; + }); +}]); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-search-controller.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-search-controller.js new file mode 100644 index 00000000..1e01a297 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-search-controller.js @@ -0,0 +1,184 @@ +appDS2.requires.push('ui.grid'); +appDS2.requires.push('ui.grid.pagination'); +appDS2.controller("reportSearchController", ['$scope','$rootScope','$http','$timeout','uiGridConstants','$modal','$q','$log','raptorReportFactory',function ($scope,$rootScope,$http,$timeout,uiGridConstants,$modal,$q,$log,raptorReportFactory) { + + $scope.getSearchData = function(){ + raptorReportFactory.getSearchData().then(function(data){ + $scope.searchdData = data; + },function(error){ + $log.error("raptorReportFactory: getSearchData failed."); + }); + } + + $scope.getSearchData(); + + $scope.runReport = function(){ + var searchParams = ''; + if($scope.reportId && $scope.reportId!=''){ + searchParams = '&rep_id='+$scope.reportId+'&rep_id_options='+$scope.operatorRepId.index; + } + if($scope.reportName && $scope.reportName!=''){ + searchParams = searchParams+'&rep_name='+$scope.reportName+'&rep_name_options='+$scope.operatorRepName.index; + } + + var pageSearchParameter = ($scope.paginationOptions.pageNumber-1)+searchParams + raptorReportFactory.getSearchDataAtPage(pageSearchParameter).then(function(data){ + $scope.searchdData = data + },function(error){ + $log.error("raptorReportFactory: getSearchDataAtPage failed."); + }); + }; + + + $scope.paginationOptions = { + pageNumber: 1, + pageSize: 5, + sort: null + }; + + var correctTotalPaginationTemplate = + //same as normal template, but fixed totals: {{(((grid.options.paginationCurrentPage-1)*grid.options.paginationPageSize)+1)}} {{(grid.options.paginationCurrentPage*grid.options.paginationPageSize>grid.options.totalItems?grid.options.totalItems:grid.options.paginationCurrentPage*grid.options.paginationPageSize)}} + "<div role=\"contentinfo\" class=\"ui-grid-pager-panel\" ui-grid-pager ng-show=\"grid.options.enablePaginationControls\"><div role=\"navigation\" class=\"ui-grid-pager-container\"><div role=\"menubar\" class=\"ui-grid-pager-control\"><button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-first\" ui-grid-one-bind-title=\"aria.pageToFirst\" ui-grid-one-bind-aria-label=\"aria.pageToFirst\" ng-click=\"pageFirstPageClick()\" ng-disabled=\"cantPageBackward()\"><div class=\"first-triangle\"><div class=\"first-bar\"></div></div></button> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-previous\" ui-grid-one-bind-title=\"aria.pageBack\" ui-grid-one-bind-aria-label=\"aria.pageBack\" ng-click=\"pagePreviousPageClick()\" ng-disabled=\"cantPageBackward()\"><div class=\"first-triangle prev-triangle\"></div></button> <input type=\"number\" ui-grid-one-bind-title=\"aria.pageSelected\" ui-grid-one-bind-aria-label=\"aria.pageSelected\" class=\"ui-grid-pager-control-input\" ng-model=\"grid.options.paginationCurrentPage\" min=\"1\" max=\"{{ paginationApi.getTotalPages() }}\" required> <span class=\"ui-grid-pager-max-pages-number\" ng-show=\"paginationApi.getTotalPages() > 0\"><abbr ui-grid-one-bind-title=\"paginationOf\">/</abbr> {{ paginationApi.getTotalPages() }}</span> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-next\" ui-grid-one-bind-title=\"aria.pageForward\" ui-grid-one-bind-aria-label=\"aria.pageForward\" ng-click=\"pageNextPageClick()\" ng-disabled=\"cantPageForward()\"><div class=\"last-triangle next-triangle\"></div></button> <button type=\"button\" role=\"menuitem\" class=\"ui-grid-pager-last\" ui-grid-one-bind-title=\"aria.pageToLast\" ui-grid-one-bind-aria-label=\"aria.pageToLast\" ng-click=\"pageLastPageClick()\" ng-disabled=\"cantPageToLast()\"><div class=\"last-triangle\"><div class=\"last-bar\"></div></div></button></div><div class=\"ui-grid-pager-row-count-picker\" ng-if=\"grid.options.paginationPageSizes.length > 1\"><select ui-grid-one-bind-aria-labelledby-grid=\"'items-per-page-label'\" ng-model=\"grid.options.paginationPageSize\" ng-options=\"o as o for o in grid.options.paginationPageSizes\"></select><span ui-grid-one-bind-id-grid=\"'items-per-page-label'\" class=\"ui-grid-pager-row-count-label\"> {{sizesLabel}}</span></div><span ng-if=\"grid.options.paginationPageSizes.length <= 1\" class=\"ui-grid-pager-row-count-label\">{{grid.options.paginationPageSize}} {{sizesLabel}}</span></div><div class=\"ui-grid-pager-count-container\"><div class=\"ui-grid-pager-count\"><span ng-show=\"grid.options.totalItems > 0\">{{(((grid.options.paginationCurrentPage-1)*grid.options.paginationPageSize)+1)}} <abbr ui-grid-one-bind-title=\"paginationThrough\">-</abbr> {{(grid.options.paginationCurrentPage*grid.options.paginationPageSize>grid.options.totalItems?grid.options.totalItems:grid.options.paginationCurrentPage*grid.options.paginationPageSize)}} {{paginationOf}} {{grid.options.totalItems}} {{totalItemsLabel}}</span></div></div></div>"; + + $scope.gridOptions = { + paginationPageSizes: [5], + paginationPageSize: 5, + paginationTemplate: correctTotalPaginationTemplate, + columnDefs: [], + data: [], + enableGridMenu: true, + enableSelectAll: true, + exporterMenuPdf: false, + exporterMenuCsv: false, + exporterCsvFilename: 'myFile.csv', + exporterPdfDefaultStyle: {fontSize: 9}, + exporterPdfTableStyle: {margin: [30, 30, 30, 30]}, + exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'}, + exporterPdfHeader: { text: "My Header", style: 'headerStyle' }, + exporterPdfFooter: function ( currentPage, pageCount ) { + return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' }; + }, + exporterPdfCustomFormatter: function ( docDefinition ) { + docDefinition.styles.headerStyle = { fontSize: 22, bold: true }; + docDefinition.styles.footerStyle = { fontSize: 10, bold: true }; + return docDefinition; + }, + exporterPdfOrientation: 'portrait', + exporterPdfPageSize: 'LETTER', + exporterPdfMaxGridWidth: 500, + exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")), + onRegisterApi: function(gridApi) { + gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { + $scope.paginationOptions.pageNumber = newPage; + $scope.paginationOptions.pageSize = pageSize; + $scope.runReport(); + }); + } + }; + + + var getPage = function() { + $scope.gridOptions.columnDefs = []; + $scope.searchdData.columns[0].forEach(function(entry) { + if(entry.columnTitle=='Run'){ + $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: entry.columnId, enableSorting: false, + cellTemplate: '<div class="ui-grid-cell-contents"><a ng-href="#/report_run/{{COL_FIELD.drillDownLink.substr(39)}}" class="icon-controls-pointer" style="font-size:20px;"></a></div>' + }); + } else if(entry.columnTitle=='Edit'){ + $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: entry.columnId, enableSorting: false, + cellTemplate: '<div class="ui-grid-cell-contents"><a ng-href="{{COL_FIELD.drillDownLink}}" class="icon-misc-pen" style="font-size:20px;"></a></div>' + }); + } else if(entry.columnTitle=='Delete'){ + $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: entry.columnId, enableSorting: false, + cellTemplate: '<div class="ui-grid-cell-contents"><a ng-click="grid.appScope.removeReport(COL_FIELD.drillDownLink,row)" class="icon-misc-trash" style="font-size:20px;"></a></div>' + }); + } else if(entry.columnTitle=='Copy'){ + $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: entry.columnId, enableSorting: false, + cellTemplate: '<div class="ui-grid-cell-contents"><a ng-href="{{COL_FIELD.drillDownLink}}" class="icon-documents-copy" style="font-size:20px;"></a></div>' + }); + } else if(entry.columnTitle=='Schedule'){ + } else if(entry.columnTitle=='No'){ + } else { + $scope.gridOptions.columnDefs.push({ displayName: entry.columnTitle, field: entry.columnId, + enableSorting: true, + cellTemplate: '<div class="ui-grid-cell-contents" style="text-align:{{COL_FIELD.alignment}};" title="TOOLTIP"> <div>{{COL_FIELD.displayValue}}</div> </div>' + }); + } + }); + + $scope.gridOptions.paginationPageSizes= [$scope.searchdData.metaReport.pageSize]; + $scope.gridOptions.paginationPageSize= $scope.searchdData.metaReport.pageSize; + $scope.gridOptions.totalItems = $scope.searchdData.metaReport.totalSize; + + $scope.gridOptions.data = []; + $scope.searchdData.rows[0].forEach(function(entry) { + var localData = {}; + entry.forEach(function(rowData){ + localData[rowData["columnId"]]= rowData["searchresultField"]; + }); + $scope.gridOptions.data.push(localData); + }); + }; + + $scope.$watch("searchdData",function(newValue,oldValue) { + if($scope.searchdData){ + getPage(); + } + }); + + $scope.operatorsRepId = [ + {index: 0, value: 'Equal To', text: 'Equal To', alias:'Equal To'}, + {index: 1, value: 'Less Than', text: 'Less Than', alias:'Less Than'}, + {index: 2, value: 'Greater Than', text: 'Greater Than', alias:'Greater Than'}]; + $scope.operatorRepId = {}; + $scope.operatorRepId.value = $scope.operatorsRepId[0].value; + $scope.operatorRepId.index = $scope.operatorsRepId[0].index; + + $scope.operatorsRepName = [ + {index: 0, value: 'Starts With', text: 'Starts With', alias:'Starts With'}, + {index:1, value: 'Ends With', text: 'Ends With', alias:'Ends With'}, + {index: 2, value: 'Contains', text: 'Contains', alias:'Contains'}]; + + $scope.operatorRepName = {}; + $scope.operatorRepName.value = $scope.operatorsRepName[0].value; + $scope.operatorRepName.index = $scope.operatorsRepName[0].index; + + $scope.removeReport = function(reportDeleteUrl,row) { + var modalInstance = $modal.open({ + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-del-confirm.html', + sizeClass: 'modal-small', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory', function ($scope, $modalInstance, $http, $log, raptorReportFactory) { + $scope.ok = function() { + raptorReportFactory.getReportDeleteStatus(reportDeleteUrl).then(function(data){ + if (!(data.deleted)) { + $log.error("raptorReportFactory: report removal failed.") + } + $modalInstance.close(); + },function(error){ + $log.error("report removal error.") + }); + }; + + $scope.cancel = function() { + $modalInstance.dismiss(); + }; + }] + }); + + modalInstance.result.then(function () { + $scope.$emit('RefreshGridOptions'); + }, function () { + }); + }; + + $scope.$on('RefreshGridOptions', function(event) { + $scope.getSearchData(); + }); + + $timeout(function() { + $rootScope.isViewRendering = false; + }); + + +}]); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-step-controller.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-step-controller.js new file mode 100644 index 00000000..6133fe64 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-step-controller.js @@ -0,0 +1,900 @@ +appDS2.controller('reportStepController', function($scope,$http,$location, $routeParams, $q, $modal,$log,$window, raptorReportFactory, stepFormFactory, DOMHelper) { + + // tabs for report wizard steps: + $scope.activeTabsId = 'Definition'; + + // For all the dropdown box, please declare the active selection variable in the following manner: + // $scope.selectedOpt = {}; + // $scope.selectedOpt.value = ""; + $scope.getDefinitionById = function(id) { + raptorReportFactory.getDefinitionByReportId(id).then(function(data){ + $scope.loadDefinition(data); + $scope.definitionData = data; + },function(error){ + $log.error("raptorReportFactory: getSearchData failed."); + }); + } + + + $scope.createNewDefinition = function() { + raptorReportFactory.createNewDefinition().then(function(data){ + $scope.loadDefinition(data); + $scope.definitionData = data; + },function(error){ + $log.error("raptorReportFactory: getSearchData failed."); + }); + } + + var initializeCreateReport = function() { + $scope["selectedReportType"] ={}; + $scope.selectedReportType.value ="linear"; + $scope.selectedReportType2 ={}; + $scope.selectedReportType2.value =""; + $scope.selectedDataSource ={}; + $scope.selectedDataSource.value="local"; + $scope.sqlScript = "SELECT "; + $scope.pageSize = {"value":"50"}; + } + + + var loadSqlInSession = function(){ + raptorReportFactory.getSqlInSession().then(function(data){ + $scope.sqlInSessionJSON = data; + $scope.sqlScript = data.query; + },function(error){ + $log.error("raptorReportFactory: getSearchData failed."); + }); + }; + + initializeCreateReport(); + if ($routeParams.reportMode) { + if ($routeParams.reportMode=="copy") { + raptorReportFactory.copyReportById($routeParams.reportId).then(function(data){ + $scope.$emit('RefreshInsession'); + },function(error){ + $log.error("raptorReportFactory: deleteFormFieldById failed."); + }); + } else if ($routeParams.reportMode=="import") { + $scope.$emit('RefreshInsession'); + } + } else if ($routeParams.reportId) { + $scope.getDefinitionById($routeParams.reportId); + $scope.isEdit = true; + $scope.reportId = $routeParams.reportId; + } else { + $scope.isEdit = false; + $scope.createNewDefinition(); + } + + + $scope.RunCurrentReport = function (){ + $window.location.href = "#/report_run/c_master="+$scope.reportId+"&refresh=Y"; + } + + $scope.deleteFormField = function(rowData) { + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-formfield-del-confirm.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','rowData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, rowData) { + $scope.tempFieldId = rowData.id; + $scope.ok = function() { + raptorReportFactory.deleteFormFieldById(rowData.id).then(function(data){ + $modalInstance.close(); + },function(error){ + $log.error("raptorReportFactory: deleteFormFieldById failed."); + }); + } + $scope.cancel = function() { + $modalInstance.dismiss(); + }; + }], + resolve:{ + rowData: function(){ + return rowData; + } + } + }); + modalInstance.result.then(function () { + $scope.$emit('RefreshFormField'); + }, function () { + }); + } + + $scope.loadDefinition = function(definitionData) { + $scope.reportId = definitionData.reportId+""; + $scope.reportName = definitionData.reportName; + $scope.reportDescr = definitionData.reportDescr; + $scope.formHelpText = definitionData.formHelpText; + $scope.selectedPageSize = {"value": definitionData.pageSize+''}; + $scope.selectedMaxRowsInExcelCSVDownload = {"value": definitionData.maxRowsInExcelCSVDownload}; + $scope.reportTitle = definitionData.reportTitle; + $scope.reportSubTitle = definitionData.reportSubTitle; + $scope.selectedNumFormCols ={"value": definitionData.numFormCols+''}; + $scope.selectedFrozenColumns={"value": definitionData.frozenColumns+''}; + $scope.selectedDataGridAlign = {"value":definitionData.dataGridAlign+''}; + $scope.emptyMessage = definitionData.emptyMessage+''; + $scope.selectedDataContainerHeight = {"value":definitionData.dataContainerHeight+''}; + $scope.selectedDataContainerWidth = {"value":definitionData.dataContainerWidth+''}; + var displayAreaValue = "null" + for (var i=0; i<3; i++ ) { + if (definitionData.displayArea[i].selected) { + displayAreaValue = definitionData.displayArea[i].name; + } + } + $scope.selectedDisplayArea = {"value":displayAreaValue+""}; + + $scope.hideFormFieldsAfterRunSelected = {"value": definitionData.hideFormFieldsAfterRun} + + $scope.hideFormFieldsSelected = {"value":definitionData.displayOptions[0].selected}; + $scope.hideChartSelected = {"value":definitionData.displayOptions[1].selected}; + $scope.hideReportDataSelected = {"value":definitionData.displayOptions[2].selected}; + $scope.hideExcelSelected = {"value":definitionData.displayOptions[3].selected}; + $scope.hidePdfSelected = {"value":definitionData.displayOptions[4].selected}; + $scope.runtimeColSortDisabled = {"value":definitionData.runtimeColSortDisabled}; + } + + + var setDefinition = function(){ + $scope.updatedDefJson = { + "tabName" : "Definition", + "tabId" : "Def", + "reportId" : ($scope.isEdit?$scope.reportId+'':"-1"), + "reportName" : $scope.reportName, + "reportDescr" : $scope.reportDescr, + "reportType" : "Linear", + "dbInfo" : "local", + "formHelpText" : $scope.formHelpText, + "pageSize" : Number($scope.selectedPageSize.value), + "displayArea" : [ { + "id" : "HOME", + "name" : "HOME", + "selected" : ($scope.selectedDisplayArea.value=="HOME") + }, { + "id" : "CUSTOMER", + "name" : "CUSTOMER", + "selected" : ($scope.selectedDisplayArea.value==="CUSTOMER") + }, { + "id" : "REPORTS", + "name" : "REPORTS", + "selected" : ($scope.selectedDisplayArea.value==="REPORTS") + } ], + "hideFormFieldsAfterRun" : $scope.hideFormFieldsAfterRunSelected.value, + "maxRowsInExcelCSVDownload" : Number($scope.selectedMaxRowsInExcelCSVDownload.value), + "frozenColumns" : Number($scope.selectedFrozenColumns.value), + "dataGridAlign" : $scope.selectedDataGridAlign.value, + "emptyMessage" : $scope.emptyMessage, + "dataContainerHeight" : $scope.selectedDataContainerHeight.value, + "dataContainerWidth" : $scope.selectedDataContainerWidth.value, + "displayOptions" : [ { + "name" : "HideFormFields", + "selected" : $scope.hideFormFieldsSelected.value + }, { + "name" : "HideChart", + "selected" : $scope.hideChartSelected.value + }, { + "name" : "HideReportData", + "selected" : $scope.hideReportDataSelected.value + }, { + "name" : "HideExcel", + "selected" : $scope.hideExcelSelected.value + }, { + "name" : "HidePdf", + "selected" : $scope.hidePdfSelected.value + } ], + "runtimeColSortDisabled" : $scope.runtimeColSortDisabled.value, + "numFormCols" : Number($scope.selectedNumFormCols.value), + "reportTitle" : $scope.reportTitle, + "reportSubTitle" : $scope.reportSubTitle + } + + } + + var updateDefinitionData = function() { + setDefinition(); + raptorReportFactory.updateDefinition($scope.updatedDefJson,$scope.isEdit).then(function(data){ + },function(error){ + $log.error("raptorReportFactory: updateDefinition by Id failed."); + }); + } + + var saveNewDefinitionData = function() { + setDefinition(); + raptorReportFactory.saveNewDefinition($scope.updatedDefJson).then(function(data){ + },function(error){ + $log.error("raptorReportFactory: saveNewDefinition by Id failed."); + }); + } + + $scope.testRunSql = function(){ + var queryJSON = {query: $scope.sqlScript}; + queryJSON = JSON.stringify(queryJSON); + raptorReportFactory.testRunSQL(queryJSON).then(function(data){ + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) { + var init = function() { + $scope.isError = false; + if (queriedData.errormessage) { + $scope.isError = true; + $scope.errormessage = queriedData.errormessage; + $scope.stacktrace = queriedData.stacktrace; + } else { + $scope.queryData = queriedData; + } + } + init(); + $scope.close = function() { + $modalInstance.dismiss(); + }; + }], + resolve:{ + queriedData: function(){ + return data; + } + } + }) + + },function(error){ + $log.error("raptorReportFactory: test run SQL failed."); + }); + } + + + $scope.formFieldVerifySQL= function(sqlScript){ + var queryJSON = {query: sqlScript}; + queryJSON = JSON.stringify(queryJSON); + raptorReportFactory.formFieldVerifySQL(queryJSON).then(function(data){ + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-test-run-sql.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','queriedData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, queriedData) { + var init = function() { + $scope.isError = false; + if (queriedData.errormessage) { + $scope.isError = true; + $scope.errormessage = queriedData.errormessage; + $scope.stacktrace = queriedData.stacktrace; + } else { + $scope.queryData = queriedData; + } + } + init(); + $scope.close = function() { + $modalInstance.dismiss(); + }; + }], + resolve:{ + queriedData: function(){ + return data; + } + } + }) + + },function(error){ + $log.error("raptorReportFactory: test run SQL failed."); + }); + } + + + /* $scope.selectedDataSource.allowSchedule={}; + $scope.selectedDataSource.allowSchedule.value=""*/ + + var getJsonSrcName = function(stepNum){ + var JsonSrcPrefix = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step" + return JsonSrcPrefix + stepNum +".json"; + } + + $scope.gTabs = [ + { + title: 'Definition', + id: 'Definition', + uniqueId: 'uniqueTab1x', + tabPanelId: 'threetab1x' + }, { + title: 'SQL', + id: 'SQL', + uniqueId: 'uniqueTab2x', + tabPanelId: 'threetab2x', + disabled: (!$scope.isEdit) + }, { + title: 'Columns', + id: 'Columns', + uniqueId: 'uniqueTab3x', + tabPanelId: 'threetab3x', + disabled: (!$scope.isEdit) + }, { + title: 'Form Fields', + id: 'Form Fields', + uniqueId: 'uniqueTab4x', + tabPanelId: 'threetab4x', + disabled: (!$scope.isEdit) + }, { + title: 'Run', + id: 'Run', + uniqueId: 'uniqueTab5x', + tabPanelId: 'threetab5x', + disabled: (!$scope.isEdit) + } + ]; + + $scope.unhideAllOtherTabs = function(){ + for (var selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) { + $scope.gTabs[selectedTab].disabled = false; + } + } + + $scope.openColumnPopup = function (rowData) { + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','colData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, colData) { + raptorReportFactory.getColumnEditInfoById(colData.id).then(function(data){ + $scope.columnEditData = data; + $scope.colId = data.colId; +/* $scope.colName = data.colName;*/ + $scope.colName = {'value':data.colName+''}; + $scope.selectedDisplayAlignment = {"value":data.displayAlignment+''}; + $scope.selectedDisplayHeaderAlignment = {"value":data.displayHeaderAlignment+''}; + $scope.sortable = {"value":''+data.sortable}; + $scope.visible = {"value":''+data.visible}; + $scope.drilldownURL = data.drilldownURL; + $scope.drilldownParams = data.drilldownParams; + $scope.drilldownType = data.drilldownType; + },function(error){ + $log.error("raptorReportFactory: getColumnEditInfoById failed."); + }); + + var init = function() { +/* $scope.colTableRowData = colData;*/ + $scope.displayAlignmentOptions = [ + {value:"null", text:""}, + {value:"Left", text:"Left"}, + {value:"Center", text:"Center"}, + {value:"Right", text:"Right"} + ]; + $scope.ynOptions = [ + {value:"true", text:"Yes"}, + {value:"false", text:"No"} + ]; + $scope.drillDownOptions = [ + {value:"drillDownOpt1", text:"drillDownOpt1"}, + {value:"drillDownOpt2", text:"drillDownOpt2"}, + {value:"drillDownOpt3", text:"drillDownOpt3"} + ]; + } + + init(); + + $scope.save = function() { + var colInfo = { + "tabId" : "ColEdit", + "tabName" : "Column Edit", + "colId" : $scope.colId, + "colName" : $scope.colName.value, + "displayAlignment" : ($scope.selectedDisplayAlignment.value=="null")?null:$scope.selectedDisplayAlignment.value, + "displayHeaderAlignment" : ($scope.selectedDisplayHeaderAlignment.value=="null")?null:$scope.selectedDisplayHeaderAlignment.value, + "sortable" : ($scope.sortable.value=="true"), + "visible" : ($scope.visible.value=="true"), + "drilldownURL" : "", + "drilldownParams" : "", + "drilldownType" : "" + } + raptorReportFactory.saveColumnEditInfo(colInfo).then(function(data){ + $modalInstance.close(); + },function(error){ + $log.error("raptorReportFactory: getColumnEditInfoById failed."); + }); + }; + + $scope.cancel = function() { + $modalInstance.dismiss(); + }; + }], + resolve:{ + colData: function(){ + return rowData; + } + } + }); + + modalInstance.result.then(function () { + $scope.$emit('RefreshColumnList'); + }, function () { + }); + }; + $scope.addNewFormField = function () { + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory', function ($scope, $modalInstance, $http, $log, raptorReportFactory) { + raptorReportFactory.getFormFieldEditInfoById("add").then(function(data){ + $scope.formFieldEditData = data; + $scope.fieldId = $scope.formFieldEditData.fieldId; + $scope.fieldName ={"value": $scope.formFieldEditData.fieldName}; + $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''}; + $scope.defaultValue = {"value": $scope.formFieldEditData.defaultValue}; + $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL}; + $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL}; + $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''}; + $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''}; + $scope.sqlDefaultValueSelected= {value:false}; + $scope.sqlDefaultValueSelected ={"value":false}; + if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) { + $scope.sqlDefaultValueSelected.value =true; + } + },function(error){ + $log.error("raptorReportFactory: getColumnEditInfoById failed."); + }); + + + $scope.ynOptions = [ + {value:"true", text:"Yes"}, + {value:"false", text:"No"} + ]; + + $scope.verifyFieldValueOptions = [ + {value:"DATE", text:"Date"}, + {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"}, + {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"}, + {value:"HIDDEN", text:"Hidden"} + ] + + $scope.fieldTypeOptions = [ + {value:"TEXT", text:"Text Box"}, + {value:"LIST_BOX", text:"List Box"}, + {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"}, + {value:"HIDDEN", text:"Hidden"} + ]; + + $scope.save = function() { + var formFieldJSON = { + "tabId" : "FormEdit", + "tabName" : "Form Edit", + "fieldId" : $scope.fieldId, + "fieldName" : $scope.fieldName.value, + "fieldType" : $scope.selectedFieldType.value, + "visible" : ($scope.selectedVisible.value=="true"), + "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value), + "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""), + "fieldSQL" :$scope.fieldSqlContent.value, + "validationType" : "NONE", + "predefinedValueList" :null + } + raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){ + $modalInstance.close(); + },function(error){ + $log.error("raptorReportFactory: saveFormFieldEditInfo failed."); + }); + }; + + $scope.cancel = function() { + $modalInstance.dismiss(); + }; + }] + }); + modalInstance.result.then(function () { + $scope.$emit('RefreshFormField'); + }, function () { + }); + }; + + $scope.openFormFieldPopup = function (rowData) { + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-formfield-edit.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','fieldData', function ($scope, $modalInstance, $http, $log, raptorReportFactory, fieldData) { + var init = function() { + raptorReportFactory.getFormFieldEditInfoById(fieldData.id).then(function(data){ + $scope.formFieldEditData = data; + $scope.fieldId = $scope.formFieldEditData.fieldId; + $scope.fieldName = {"value":$scope.formFieldEditData.fieldName}; + $scope.selectedVisible = {"value":$scope.formFieldEditData.visible+''}; + $scope.defaultValue = {"value":$scope.formFieldEditData.defaultValue}; + $scope.fieldDefaultSQL = {"value": $scope.formFieldEditData.fieldDefaultSQL}; + $scope.fieldSqlContent = {"value": $scope.formFieldEditData.fieldSQL}; + $scope.selectedValidationType = {"value":$scope.formFieldEditData.validationType +''}; + $scope.selectedFieldType = {"value":$scope.formFieldEditData.fieldType +''}; + $scope.sqlDefaultValueSelected ={"value":false}; + if (($scope.fieldDefaultSQL.value)&&($scope.fieldDefaultSQL.value!="")) { + $scope.sqlDefaultValueSelected.value =true; + } + },function(error){ + $log.error("raptorReportFactory: getColumnEditInfoById failed."); + }); + + $scope.ynOptions = [ + {value:"true", text:"Yes"}, + {value:"false", text:"No"} + ]; + + $scope.verifyFieldValueOptions = [ + {value:"DATE", text:"Date"}, + {value:"TIME_STAMP_HOUR", text:"TimeStamp (Hour)"}, + {value:"TIME_STAMP_HOUR_MIN", text:"TimeStamp (Hour,Min)"}, + {value:"HIDDEN", text:"Hidden"} + ] + + $scope.fieldTypeOptions = [ + {value:"TEXT", text:"Text Box"}, + {value:"LIST_BOX", text:"List Box"}, + {value:"LIST_MULTI_SELECT", text:"Multi-select List Box"}, + {value:"HIDDEN", text:"Hidden"} + ]; + + } + + init(); + + $scope.save = function() { + var formFieldJSON = { + "tabId" : "FormEdit", + "tabName" : "Form Edit", + "fieldId" : $scope.fieldId, + "fieldName" : $scope.fieldName.value, + "fieldType" : $scope.selectedFieldType.value, + "visible" : ($scope.selectedVisible.value=="true"), + "defaultValue" : ($scope.sqlDefaultValueSelected.value?'':$scope.defaultValue.value), + "fieldDefaultSQL" : ($scope.sqlDefaultValueSelected.value?$scope.fieldDefaultSQL.value:""), + "fieldSQL" :$scope.fieldSqlContent.value, + "validationType" : "NONE", + "predefinedValueList" :null + } + raptorReportFactory.saveFormFieldEditInfo(formFieldJSON).then(function(data){ + $modalInstance.close(); + },function(error){ + $log.error("raptorReportFactory: saveFormFieldEditInfo failed."); + }); + }; + + $scope.cancel = function() { + $modalInstance.dismiss(); + }; + }], + resolve:{ + fieldData: function(){ + return rowData; + } + } + }); + + modalInstance.result.then(function () { + $scope.$emit('RefreshFormField'); + }, function () { + }); + }; + + + $scope.$watch('activeTabsId', function (newVal, oldVal) { + if(newVal !== oldVal) { + var selectedTab; + for (selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) { + if ($scope.gTabs[selectedTab].id === newVal) { + $scope.stepNum = selectedTab; +/* stepFormFactory.getStepJSONData(getJsonSrcName($scope.stepNum))*/ + $scope.isColumnStep = false; + $scope.isFormFieldStep = false; + $scope.renderStep(selectedTab+1); + if ($scope.stepNum == 2) { + loadSqlInSession(); + } else if ($scope.stepNum == 3) { + $scope.isColumnStep = true; + + raptorReportFactory.getColumnList().then(function(data){ + $scope.colTableRowData = data; + },function(error){ + $log.error("raptorReportFactory: get column list failed."); }); + + } else if ($scope.stepNum == 4) { + $scope.isFormFieldStep = true; + // put within then function: + raptorReportFactory.getFormFieldList().then(function(data){ + $scope.formFieldData = data; + },function(error){ + $log.error("raptorReportFactory: get formfields failed."); }); + } else if ($scope.stepNum == 5) { + raptorReportFactory.getDefinitionInSession().then(function(data){ + $scope.reportId = data.reportId; + },function(error){ + $log.error("raptorReportFactory: getDefinitionInSession failed."); }); + } + + if ($scope.stepNum>1){ + $scope.unhideAllOtherTabs(); + } + break; + } + } + + var selectedTabPanelElement = document.getElementById($scope.gTabs[selectedTab].tabPanelId); + + var elem = null; + if (selectedTabPanelElement) { + elem = DOMHelper.firstTabableElement(selectedTabPanelElement); + } + + if (elem) { + $timeout(function () { + elem.focus(); + }, 100); + } + } + }); + + + $scope.renderStep = function(stepNum){ + var containerElement = angular.element(document.getElementById("stepView")); + containerElement.empty(); + $scope.stepNum = stepNum; + var jsonSrcName = getJsonSrcName(stepNum); + stepFormFactory.renderForm(jsonSrcName, containerElement, $scope); + } + + // initialize the page at step 1; + $scope.renderStep(1); + + // create a message to display in our view + $scope.allProjects = []; + if(!$routeParams.step && $routeParams.step == "") $routeParams.step = 1; + if($routeParams.proj && $routeParams.proj > 0) + $scope.projid = $routeParams.proj; + if($routeParams.step) + $scope.stepNum = $routeParams.step; + else + $scope.stepNum = 1; + + $scope.jsonSrcName = getJsonSrcName($scope.stepNum); + + $scope.selectAction = function () { + var containerElement = angular.element(document.getElementById("stepView")); + containerElement.empty(); + $scope.project_name = this.prj.projectName; + $scope.stepNum = 1; + var stepNum = $scope.stepNum; + var jsonSrcName = getJsonSrcName(stepNum); + stepFormFactory.renderForm(jsonSrcName, containerElement, $scope); + renderProject(this.prj.id, 1); + }; + + + $scope.createAction = function () { + var containerElement = angular.element(document.getElementById("stepView")); + containerElement.empty(); + $scope.stepNum = 1; + var stepNum = $scope.stepNum; + $scope.jsonSrcName = "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/json/step"+$scope.stepNum +".json"; + var jsonSrcName = $scope.jsonSrcName; + stepFormFactory.renderForm(jsonSrcName, containerElement, $scope); + }; + + // select current project + renderProject = function (proj_id, stepNum) { + var userSelectedPrjId = proj_id; + $http({ + method: 'GET', + url: 'get_selected_project_data', + params:{'selectedPrjId':userSelectedPrjId, 'step': stepNum} + }).then(function successCallback(response) { + var selectedproject = response.data; + $scope.projid = userSelectedPrjId; + //$scope.allProjects = projectLists; + //$location.path('/'+userSelectedPrjId+'/'+stepNum); + var div = d3.select("#stepView"); + div.select("[name='proj_id']").text(userSelectedPrjId); + div.select("[name='proj_id']").property("value", userSelectedPrjId); + d3.select("[name='project_id']").property("value", userSelectedPrjId); + var h3Text = div.select("h3").text(); + div.select("h3").text($scope.project_name+ " - " + h3Text); + for (var key in selectedproject) { + if (selectedproject.hasOwnProperty(key)) { + var val = selectedproject[key]; + var formElement = d3.selectAll("[name='" + key + "']"); + if(formElement[0].length > 0) + console.log(formElement.attr("type")); + if(formElement[0].length > 0 && formElement.attr("type") === "radio") { + var formRadio = d3.selectAll("[id='" + key +"_"+val + "']"); + formRadio.property('checked', true); + } + if(formElement[0].length > 0 && formElement.property("type") === "textarea") { + div.select("textarea[name='" + key +"']").property('value', val); + } + if(formElement[0].length > 0 && formElement.attr("type") === "text") { + var formText = d3.selectAll("[name='" + key + "']"); + formText.property("value", val); + } + if(formElement[0].length > 0 && formElement.html().startsWith("<option")) { + var formSelect = d3.selectAll("[name='" + key + "']"); + + var checkOption = function (e) { + if(e.label === val){ + return formSelect.property("selectedIndex", e.index ); + } + }; + + formSelect.selectAll("option").forEach(function(d) {d.forEach(function(optionD) { console.log(optionD);checkOption(optionD); }) }); + } + + if(formElement[0].length == 0) { + if(key != 'step') { + if( Object.prototype.toString.call( val ) === '[object Array]' ) { + val.forEach(function(d){ + for (var keyCheck in d) { + if (d.hasOwnProperty(keyCheck)) { + var valCheck = d[keyCheck]; + var formCheck = d3.selectAll("[name='" + key + "_"+keyCheck + "']"); + if(valCheck === true) + formCheck.property('checked', true); + } + } + }); + } + } + var formElementOther = d3.selectAll("[name='" + key + "_"+ val + "']"); + if(formElementOther[0].length > 0 && formElementOther.attr("type") === "checkbox") { + var formCheckbox = d3.selectAll("[name='" + key +"_"+val + "']"); + formRadio.property('checked', true); + } + } + } + } + + + + }); + } + + //submit function + $scope.submit = function(){ + let defer = $q.defer(); + + var div = d3.select("#stepView"); + var jsonSrcName = $scope.jsonSrcName; + var stepNum = $scope.stepNum; + var values = ""; + $http({ + method: 'GET', + url: jsonSrcName + }).then(function successCallback(response) { + var json = response.data; + var step = json.step; + if(step > 0) { + var sections = json.content.sections; + sections.forEach(function(d, i) { + var elements = d.elements; + if(elements) { + //elements.forEach(function(element, elementIndex) { + values += "{"; + values += "\"step\""+ ":\"" + step + "\","; + values += "\"proj_id\""+ ":\"" + d3.select('input[name="project_id"]').property("value") + "\","; + + for (elementIndex = 0; elementIndex < elements.length; elementIndex++) { + var element = elements[elementIndex]; + + if(elementIndex > 0) values += ","; + values += "\""+element.name +"\""+ ":" ; + if(element.input === "hidden") { + values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\""; + } + if(element.input === "radio") { + values += "\""+ div.select('input[name="'+element.name+'"]:checked').property("value") +"\""; + } + if(element.input === "checkbox") { + var checkOptions = element.options; + values += "[{"; + checkOptions.forEach(function(d, i) { + // if(document.getElementById("'"+element.name+"_"+d.id+"'") != null) + values += "\""+d.id+"\""+ ":" + div.select('input[name="'+element.name+"_"+d.id+'"]').property("checked") ; + if(i<checkOptions.length-1) { + values += ","; + } + }) + values += "}]"; + } + if(element.input === "text") { + values += "\""+div.select('input[name="'+element.name+'"]').property("value") +"\""; + } + if(element.input === "textarea") { + values += "\""+div.select('textarea[name="'+element.name+'"]').node().value +"\""; + } + if(element.input === "select") { + values += "\""+ div.select('select[name="'+element.name+'"]').property("value") + "\""; + } + + }; + values += "}"; + } + }); + } + var valueJSON = JSON.parse(values); + var valueStr = JSON.stringify(valueJSON, null, 4); + $http({method:'POST', url:'save_steps', data: jsonSrcName, params:{'result' : valueStr, 'proj_id' : values.proj_id}}).success(function(data, status) { + if(data.project_name) + $scope.project_name = data.project_name; + div.select("[name='proj_id']").property("value", data.proj_id); + d3.select("[name='project_id']").property("value", data.proj_id); + //$scope.projid = data.proj_id; + valueStr=JSON.stringify(data, null, 4); + defer.resolve(); + //stepNum = Number(stepNum || 0)+1; + //document.getElementById('itestframe').src = data; + + }) + + defer.resolve(); + + }); + // $location.path('/step'+($scope.stepNum+1)); + return defer.promise; + + }; + + //Save function + $scope.save = function() { + if ($scope.stepNum ==1) { + updateDefinitionData(); + } + }; + + //Next function + $scope.next = function(){ + if ($scope.stepNum ==1) { + updateDefinitionData(); + } + $scope.stepNum = $scope.stepNum +1; + $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id; + }; + + //Previous function + $scope.previous = function(){ + $scope.stepNum = $scope.stepNum -1; + $scope.activeTabsId = $scope.gTabs[$scope.stepNum-1].id; + + }; + + $scope.$on('RefreshInsession', function(event) { + $scope.isEdit = true; + $scope.reportId = -1; + $scope.getDefinitionById(-1); + }); + + $scope.$on('RefreshFormField', function(event) { + raptorReportFactory.getFormFieldList().then(function(data){ + $scope.formFieldData = data; + },function(error){ + $log.error("raptorReportFactory: get formfields failed."); + }); + }); + + $scope.$on('RefreshColumnList', function(event) { + raptorReportFactory.getColumnList().then(function(data){ + $scope.colTableRowData = data; + },function(error){ + $log.error("raptorReportFactory: get column list failed."); + }); + }); + + $scope.getAllProjects = function(){ + $http({ + method: 'GET', + url: 'get_projects' + }).then(function successCallback(response) { + var projectLists = response.data; + $scope.allProjects = projectLists; + }); + } + + // getAllProjects(); + +});
\ No newline at end of file |