diff options
Diffstat (limited to 'ecomp-sdk/epsdk-app-overlay')
19 files changed, 1722 insertions, 1057 deletions
diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-chart-controller.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-chart-controller.js new file mode 100644 index 00000000..806b1bc2 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-controllers/ds2-reports/report-chart-controller.js @@ -0,0 +1,382 @@ +appDS2.controller('reportChartController', function ($scope, $rootScope, $timeout, $window, $http, $routeParams,modalService) { + //$scope.test="1223"; + //alert($scope.chartType.value); + console.log("reportChartController called"); + $scope.commonOptionOpen = false; + $scope.additionalOptionOpen = false; + + $scope.selectedChartType = {value:""}; + $scope.chartTypeOptions = [ + {value: 'barChart', text: 'Bar Chart'}, + {value: 'timeSeries', text: 'Time Series/Area Chart'}, + {value: 'pieChart', text: 'Pie Chart'}, + {value: 'annotationChart', text: 'Annotation Chart'}, + {value: 'flexibleTimeChart', text: 'Flexible Time Chart'} + ]; + + $scope.animateSelected = {value:false}; + + $scope.populateChrtWzdFields = function() { + $scope.reportRunJson = {}; + $http.get("raptor.htm?action=chart.json&c_master="+$routeParams.reportId).then(function (response) { + $scope.reportRunJson = response.data; + //Set chart type + if ($scope.reportRunJson.chartTypeJSON) { + var chrtTypeValue = $scope.reportRunJson.chartTypeJSON.value; + for(var i = 0; i < $scope.chartTypes.length; i++) { + var obj = $scope.chartTypes[i]; + //console.log(obj.id); + if ($scope.chartTypes[i].value==chrtTypeValue) { + $scope.reportRunJson.chartTypeJSON.index=$scope.chartTypes[i].index; + $scope.reportRunJson.chartTypeJSON.title=$scope.chartTypes[i].title; + } + + } + } + + //Set Domain Axis + if ($scope.reportRunJson.domainAxisJSON) { + var domaninAxisValue = $scope.reportRunJson.domainAxisJSON.value; + for(var i = 0; i < $scope.reportRunJson.chartColumnJSONList.length; i++) { + if ($scope.reportRunJson.chartColumnJSONList[i].value==domaninAxisValue) { + $scope.reportRunJson.domainAxisJSON.index=$scope.reportRunJson.chartColumnJSONList[i].index; + $scope.reportRunJson.domainAxisJSON.title=$scope.reportRunJson.chartColumnJSONList[i].title; + } + + } + } + + //Set Category + if ($scope.reportRunJson.categoryAxisJSON) { + var categoryAxisValue = $scope.reportRunJson.categoryAxisJSON.value; + for(var i = 0; i < $scope.reportRunJson.chartColumnJSONList.length; i++) { + if ($scope.reportRunJson.chartColumnJSONList[i].value==categoryAxisValue) { + $scope.reportRunJson.categoryAxisJSON.index=$scope.reportRunJson.chartColumnJSONList[i].index; + $scope.reportRunJson.categoryAxisJSON.title=$scope.reportRunJson.chartColumnJSONList[i].title; + } + } + } + + //Set range axis label + if ($scope.reportRunJson.rangeAxisList) { + for(var j = 0; j < $scope.reportRunJson.rangeAxisList.length; j++) { + + if ($scope.reportRunJson.rangeAxisList[j].rangeAxisLabelJSON) { + var rangeAxisLabelValue = $scope.reportRunJson.rangeAxisList[j].rangeAxisLabelJSON.value; + for(var i = 0; i < $scope.reportRunJson.chartColumnJSONList.length; i++) { + if ($scope.reportRunJson.chartColumnJSONList[i].value==rangeAxisLabelValue) { + $scope.reportRunJson.rangeAxisList[j].rangeAxisLabelJSON.index=$scope.reportRunJson.chartColumnJSONList[i].index; + $scope.reportRunJson.rangeAxisList[j].rangeAxisLabelJSON.title=$scope.reportRunJson.chartColumnJSONList[i].title; + } + } + } + } + } + + + //set range linetype + if ($scope.reportRunJson.rangeAxisList) { + for(var j = 0; j < $scope.reportRunJson.rangeAxisList.length; j++) { + if ($scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON != null && $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON.value != "" + && $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON.value != null) { + var lineTypeValue = $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON.value; + for(var i = 0; i < $scope.lineTypes.length; i++) { + if ($scope.lineTypes[i].value==lineTypeValue) { + $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON.index=$scope.lineTypes[i].index; + $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON.title=$scope.lineTypes[i].title; + } + } + } else { + $scope.reportRunJson.rangeAxisList[j].rangeLineTypeJSON = null; + } + } + } + //set range color + if ($scope.reportRunJson.rangeAxisList) { + for(var j = 0; j < $scope.reportRunJson.rangeAxisList.length; j++) { + if ($scope.reportRunJson.rangeAxisList[j].rangeColorJSON != null && $scope.reportRunJson.rangeAxisList[j].rangeColorJSON.value != "" + && $scope.reportRunJson.rangeAxisList[j].rangeColorJSON.value != null) { + var colorValue = $scope.reportRunJson.rangeAxisList[j].rangeColorJSON.value; + for(var i = 0; i < $scope.rangeColors.length; i++) { + if ($scope.rangeColors[i].value==colorValue) { + $scope.reportRunJson.rangeAxisList[j].rangeColorJSON.index=$scope.rangeColors[i].index; + $scope.reportRunJson.rangeAxisList[j].rangeColorJSON.title=$scope.rangeColors[i].title; + } + } + }else { + $scope.reportRunJson.rangeAxisList[j].rangeColorJSON = null; + } + } + } + }); + + $scope.legend = "true"; + } + + $scope.saveChartData = function() { + //Converting string variables to numbers + $scope.reportRunJson.commonChartOptions.rightMargin = Number($scope.reportRunJson.commonChartOptions.rightMargin); + $scope.reportRunJson.commonChartOptions.topMargin = Number($scope.reportRunJson.commonChartOptions.topMargin); + $scope.reportRunJson.commonChartOptions.bottomMargin = Number($scope.reportRunJson.commonChartOptions.bottomMargin); + $scope.reportRunJson.commonChartOptions.leftMargin = Number($scope.reportRunJson.commonChartOptions.leftMargin); + + if ($scope.reportRunJson.categoryAxisJSON == "") { + console.log('Inside categoryAxisJSON value'); + $scope.reportRunJson.categoryAxisJSON = {}; + $scope.reportRunJson.categoryAxisJSON.value = -1; + console.log('$scope.reportRunJson.categoryAxisJSON',$scope.reportRunJson.categoryAxisJSON); + } + + console.log($scope.reportRunJson); + $http.post("save_chart", JSON.stringify($scope.reportRunJson)).success(function(data, status) { + $scope.successSubmit=true; + }) + } + + + $scope.addRangeAxisRow = function (rangeaxisitem) { + $scope.reportRunJson.rangeAxisList.push({ + }); + }; + + $scope.removeRangeAxisRow = function (index) { + $scope.reportRunJson.rangeAxisList.splice(index, 1); + }; + + + $scope.init = function () { + if ($scope) { + $scope.populateChrtWzdFields(); + } + }; + + + + $scope.domainItems = [{title:"Domain Axis1", content:"Test1", open: false},{title:"Domain Axis2", content:"Test2", open: false}]; + + $scope.chartTypes = [ + {index: 0, value: 'BarChart3D', title: 'Bar Chart'}, + {index: 1, value: 'TimeSeriesChart', title: 'Time Series/Area Chart'}, + {index: 2, value: 'PieChart', title: 'Pie Chart'}, + {index: 3, value: 'AnnotationChart', title: 'Annotation Chart'}, + {index: 4, value: 'FlexTimeChart', title: 'Flexible Time Chart'} + ]; + + $scope.categories = [ + {index: 0, value: 'scenario_name', title: 'scenario_name'}, + {index: 1, value: 'total_traffic_in_PB', title: 'Total Traffic in PB'}, + {index: 2, value: 'Avg Utilization Day', title: 'Avg Utilization Day'} + ]; + + $scope.rangeColors = [ + {index: 0, value: "#1f77b4",title: "Dodger Blue"}, + {index: 1, value: "#ff7f0e",title: "Vivid orange"}, + {index: 2, value: "#2ca02c",title: "Forest Green"}, + {index: 3, value: "#8c864b",title: "Greenish Red"}, + {index: 4, value: "#9467bd",title: "Desaturated violet"}, + {index: 5, value: "#8c564b",title: "Dark moderate red"}, + {index: 6, value: "#e377c2",title: "Soft pink"}, + {index: 7, value: "#7f7f7f",title: "Dark gray"}, + {index: 8, value: "#bcbd22",title: "Strong yellow"}, + {index: 9, value: "#17becf",title: "Strong cyan"}, + {index: 10, value: "#dc143c",title: "Vivid red"}, + {index: 11, value: "#800080",title: "Dark magenta"}, + {index: 12, value: "#0000FF",title: "Blue"}, + {index: 13, value: "#008000",title: "Dark lime green"}, + {index: 14, value: "#D2691E",title: "Reddish Orange"}, + {index: 15, value: "#FF0000",title: "Red"}, + {index: 16, value: "#000000",title: "Black"}, + {index: 17, value: "#DB7093",title: "Pink"}, + {index: 18, value: "#FF00FF",title: "Pure Magenta"}, + {index: 19, value: "#7B68EE",title: "Soft blue"}, + {index: 20, value: "#1f77b6",title: "Strong blue"}, + {index: 21, value: "#9edae5",title: "Very soft cyan"}, + {index: 22, value: "#393b79",title: "Dark Blue"}, + {index: 23, value: "#5254a3",title: "Dark moderate Blue"}, + {index: 24, value: "#6b6ecf",title: "Slightly desaturated blue"}, + {index: 25, value: "#9c9ede",title: "Very soft blue"}, + {index: 26, value: "#637939",title: "Dark Green"}, + {index: 27, value: "#8ca252",title: "Dark moderate green"}, + {index: 28, value: "#b5cf6b",title: "Slightly desaturated green"}, + {index: 29, value: "#cedb9c",title: "Desaturated Green"}, + + /* Old Colors */ + {index: 30, value: "#00FFFF",title: "Aqua"}, + {index: 31, value: "#000000",title: "Black"}, + {index: 32, value: "#0000FF",title: "Blue"}, + {index: 33, value: "#FF00FF",title: "Fuchsia"}, + {index: 34, value: "#808080",title: "Gray"}, + {index: 35, value: "#008000",title: "Green"}, + {index: 36, value: "#00FF00",title: "Lime"}, + {index: 37, value: "#800000",title: "Maroon"}, + {index: 38, value: "#000080",title: "Navy"}, + {index: 39, value: "#808000",title: "Olive"}, + {index: 40, value: "#FF9900",title: "Orange"}, + {index: 41, value: "#800080",title: "Purple"}, + {index: 42, value: "#FF0000",title: "Red"}, + {index: 43, value: "#C0C0C0",title: "Silver"}, + {index: 44, value: "#008080",title: "Teal"}, + {index: 45, value: "#FFFFFF",title: "White"}, + {index: 46, value: "#FFFF00",title: "Yellow"} + ]; + + + $scope.lineTypes = [ + {index: 0, value: 'default', title: 'Default'}, + {index: 1, value: 'dotted_lines', title: 'Dotted Lines'}, + {index: 2, value: 'dashed_lines', title: 'Dashed Lines'} + ]; + + $scope.hardCodeReport= { + "reportID":"3356", + "reportName":"Test: Line Chart", + "reportDescr":"", + "reportTitle":"", + "reportSubTitle":"", + "formFieldList":[ + ], + "chartColumnJSONList":[ + { + "index":0, + "value":"tr0", + "title":"traffic_date", + "$$hashKey":"056" + }, + { + "index":1, + "value":"ut1", + "title":"util_perc", + "$$hashKey":"057" + } + ], + "formfield_comments":null, + "totalRows":0, + "chartSqlWhole":"SELECT traffic_date tr0, traffic_date tr0_1,util_perc ut1, 1 FROM portal.demo_util_chart ORDER BY 1", + "chartAvailable":true, + "chartType":{"index": "", "value": "Bar Chart", "title": ""}, + "width":"700", + "height":"420", + "animation":false, + "rotateLabels":"90", + "staggerLabels":false, + "showTitle":"false", + "domainAxis":{ + "index":0, + "value":"tr0", + "title":"traffic_date", + "$$hashKey":"11H" + }, + + "categoryAxis":{ + "index":1, + "value":"ut1", + "title":"util_perc", + "$$hashKey":"11I" + }, + + "hasCategoryAxis":false, + "rangeAxisList":[ + { + + "rangeColor":{ + "index":"", + "value":"#bcbd22", + "title":"" + }, + + "rangeLineType":{ + "index":"", + "value":"dotted_lines", + "title":"" + }, + "rangeAxisLabel":{ + "index":0, + "value":"tr0", + "title":"traffic_date", + "$$hashKey":"056" + }, + "YAxis":"10", + "chartTitle":"test" + }, + { + "rangeColor":{ + "index":"", + "value":"#2ca02c", + "title":"" + }, + + "rangeLineType":{ + "index":"", + "value":"dashed_lines", + "title":"" + + + }, + + "rangeAxisLabel":{ + "index":0, + "value":"tr0", + "title":"traffic_date", + "$$hashKey":"056" + }, + "YAxis":"10", + "chartTitle":"test" + } + + + ], + + "primaryAxisLabel":"testlabel", + "secondaryAxisLabel":"testseclabel", + "minRange":"10", + "maxRange":"20", + "topMargin":"6", + "bottomMargin":"5", + "leftMargin":"4", + "rightMargin":"3" + }; + + var colorValue = $scope.hardCodeReport.rangeAxisList[0].rangeColor.value; + + $timeout(function() { + $rootScope.isViewRendering = false; + }); + + +}); + +app.directive('onlyDigits', function () { + + return { + restrict: 'A', + require: '?ngModel', + link: function (scope, element, attrs, ngModel) { + if (!ngModel) return; + ngModel.$parsers.unshift(function (inputValue) { + var digits = inputValue.split('').filter(function (s) { return (!isNaN(s) && s != ' '); }).join(''); + ngModel.$viewValue = digits; + ngModel.$render(); + return digits; + }); + } + }; +}); + +app.directive('onlyCharacters', function () { + return { + restrict: 'A', + require: '?ngModel', + link: function (scope, element, attrs, ngModel) { + if (!ngModel) return; + ngModel.$parsers.unshift(function (inputValue) { + var digits = inputValue.split('').filter(function (s) { return (isNaN(s) && s != ' '); }).join(''); + ngModel.$viewValue = digits; + ngModel.$render(); + return digits; + }); + } + }; +}); + + + 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 index db3422ed..1e22cca3 100644 --- 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 @@ -17,6 +17,10 @@ appDS2.config(['$routeProvider', templateUrl: 'static/fusion/raptor/ebz/report_chart_wizard.html', controller: 'ChartController' }). + when('/report_chart/:reportId', { + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/report-chart-wizard.html', + controller: 'reportChartController' + }). when("/report_wizard", { templateUrl : "app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html", controller: "reportStepController" 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 index 02f58985..760ff6d3 100644 --- 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 @@ -10,7 +10,9 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' $scope.reportData.allowEdit = false; $scope.formFieldSelectedValues = {}; $scope.showFormFieldIds = false; - + $scope.showFormFieldId = { + value: false + }; $scope.isInProgress = true; if($routeParams.reportUrlParams.indexOf("parent___params===")>-1) { @@ -20,7 +22,7 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' } else { $scope.currentReportUrlParams = $routeParams.reportUrlParams; } - console.log($routeParams.reportUrlParams); + // console.log($routeParams.reportUrlParams); var parseQueryString = function( queryString ) { var params = {}, queries, temp, i, l; // Split into key/value pairs @@ -60,10 +62,10 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' $http.get('raptor.htm?action=report.run.container&'+$scope.currentReportUrlParams).then( function(response){ - console.log(response); + // console.log(response); $scope.isInProgress = false; $scope.reportData = response.data; - console.log('reportData report run container response',$scope.reportData); + // console.log('reportData report run container response',$scope.reportData); if ($scope.reportData.reportTitle) { $scope.reportData.reportHeading = $scope.reportData.reportTitle; if ($scope.reportData.reportSubTitle) { @@ -73,7 +75,7 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' 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)); + // 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; @@ -120,7 +122,7 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' else $scope.reportData.reportHeading = $scope.reportData.reportName;*/ - console.log("pagination"); + // console.log("pagination"); if(!pagination) { //console.log("refreshed ..."); $scope.gridOptions.pageNumber = 1; @@ -141,7 +143,7 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' } $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)); + // 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; @@ -163,12 +165,12 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' } 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)); + // 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); + // console.log(response.data); $scope.showChart = true; - console.log('response.data',response.data); + // console.log('response.data',response.data); document.getElementById('chartiframe').contentWindow.document.write(response.data); document.getElementById('chartiframe').contentWindow.document.close(); }); @@ -313,7 +315,7 @@ appDS2.controller("reportRunController", ['$scope','$rootScope','$routeParams',' }); $scope.triggerOtherFormFields = function(){ - console.log("report_run"); + // 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){ 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 index 1e01a297..3fe5bde3 100644 --- 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 @@ -45,6 +45,7 @@ appDS2.controller("reportSearchController", ['$scope','$rootScope','$http','$tim paginationPageSize: 5, paginationTemplate: correctTotalPaginationTemplate, columnDefs: [], + enableColumnResizing: true, data: [], enableGridMenu: true, enableSelectAll: true, 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 index 6133fe64..f1e82fa5 100644 --- 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 @@ -1,5 +1,7 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $routeParams, $q, $modal,$log,$window, raptorReportFactory, stepFormFactory, DOMHelper) { + + $scope.showLoader = true; // tabs for report wizard steps: $scope.activeTabsId = 'Definition'; @@ -10,8 +12,10 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout raptorReportFactory.getDefinitionByReportId(id).then(function(data){ $scope.loadDefinition(data); $scope.definitionData = data; + $scope.showLoader = false; },function(error){ $log.error("raptorReportFactory: getSearchData failed."); + $scope.showLoader = false; }); } @@ -20,6 +24,7 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout raptorReportFactory.createNewDefinition().then(function(data){ $scope.loadDefinition(data); $scope.definitionData = data; + $scope.showLoader = false; },function(error){ $log.error("raptorReportFactory: getSearchData failed."); }); @@ -41,6 +46,7 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout raptorReportFactory.getSqlInSession().then(function(data){ $scope.sqlInSessionJSON = data; $scope.sqlScript = data.query; + $scope.showLoader = false; },function(error){ $log.error("raptorReportFactory: getSearchData failed."); }); @@ -133,6 +139,7 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout $scope.hideExcelSelected = {"value":definitionData.displayOptions[3].selected}; $scope.hidePdfSelected = {"value":definitionData.displayOptions[4].selected}; $scope.runtimeColSortDisabled = {"value":definitionData.runtimeColSortDisabled}; + $scope.showLoader = false; } @@ -349,11 +356,21 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout $scope.drilldownURL = data.drilldownURL; $scope.drilldownParams = data.drilldownParams; $scope.drilldownType = data.drilldownType; + $scope.selectedDrillDownReport = {"value":""}; + + },function(error){ $log.error("raptorReportFactory: getColumnEditInfoById failed."); }); var init = function() { + + raptorReportFactory.getDrillDownReportList().then(function(data2){ + $scope.drilldownReports = data2; + },function(error){ + $log.error("raptorReportFactory: getDrillDownReportList failed."); + }); + /* $scope.colTableRowData = colData;*/ $scope.displayAlignmentOptions = [ {value:"null", text:""}, @@ -373,8 +390,15 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout } init(); + $scope.$watch('selectedDrillDownReport.value',function(){ + if ($scope.selectedDrillDownReport) { + $scope.$emit('openDrillDownpage',$scope.selectedDrillDownReport.value); + } + }); $scope.save = function() { + var drilldownURL = "";//raptorReportFactory.drillDownPopupOptions + //raptorReportFactory.drillDownPopupOptions.radioGroup var colInfo = { "tabId" : "ColEdit", "tabName" : "Column Edit", @@ -384,7 +408,7 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout "displayHeaderAlignment" : ($scope.selectedDisplayHeaderAlignment.value=="null")?null:$scope.selectedDisplayHeaderAlignment.value, "sortable" : ($scope.sortable.value=="true"), "visible" : ($scope.visible.value=="true"), - "drilldownURL" : "", + "drilldownURL" : drilldownURL, "drilldownParams" : "", "drilldownType" : "" } @@ -576,9 +600,77 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout }); }; - + $scope.openDrillDownReportPopup = function (reportId) { + var modalInstance = $modal.open({ + scope: $scope, + animation: $scope.animationsEnabled, + templateUrl: 'app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html', + sizeClass: 'modal-large', + controller: ['$scope', '$modalInstance', '$http', '$log','raptorReportFactory','reportId', function ($scope, $modalInstance, $http, $log, raptorReportFactory, reportId) { + $scope.selectedvalueradioGroup = {"name":""}; + $scope.selectedChildReportFormField = {"value":""}; + $scope.selectedChildReportColumn = {"value":""}; + $scope.fixedValue = {"value":""}; + $scope.suppressValues = {"value":""}; + + raptorReportFactory.getChildReportFormField(reportId).then(function(data){ + $scope.childReportFF =data; + },function(error){ + $log.error("raptorReportFactory: getChildReportFormField failed."); + }); + + raptorReportFactory.getChildReportColumn(reportId).then(function(data){ + $scope.childReportCol =data; + },function(error){ + $log.error("raptorReportFactory: getChildReportFormField failed."); + }); + + raptorReportFactory.setDrillDownPopupOptions(null); + + $scope.complete = function() { +// if ($scope.selectedvalueradioGroup.name=="radiovalue1") { +// console.log("radio 1 selected"); +// } else if ($scope.selectedvalueradioGroup.name=="radiovalue2") { +// console.log("radio 2 selected"); +// } else if ($scope.selectedvalueradioGroup.name=="radiovalue3") { +// console.log("radio 3 selected"); +// } else if ($scope.selectedvalueradioGroup.name=="radiovalue4") { +// console.log("radio 4 selected"); +// } else if ($scope.selectedvalueradioGroup.name=="radiovalue5") { +// console.log("radio 5 selected"); +// } else { +// console.log("None selected"); +// } + + var drillDownPopupOptions= { + radioGroup : $scope.selectedvalueradioGroup.name, + reportFF: $scope.selectedChildReportFormField.value, + reportCol: $scope.selectedChildReportColumn.value, + fixedValue: $scope.fixedValue.value, + suppressValues: $scope.suppressValues.value + } + raptorReportFactory.setDrillDownPopupOptions(drillDownPopupOptions); + console.log(raptorReportFactory.drillDownPopupOptions); + + $modalInstance.close(); + }; + }], + resolve:{ + reportId: function(){ + return reportId; + } + } + }); + + modalInstance.result.then(function () { +/* $scope.$emit('RefreshFormField');*/ + }, function () { + }); +}; + $scope.$watch('activeTabsId', function (newVal, oldVal) { if(newVal !== oldVal) { + $scope.showLoader = true; var selectedTab; for (selectedTab = 0; selectedTab < $scope.gTabs.length; selectedTab++) { if ($scope.gTabs[selectedTab].id === newVal) { @@ -587,28 +679,36 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout $scope.isColumnStep = false; $scope.isFormFieldStep = false; $scope.renderStep(selectedTab+1); - if ($scope.stepNum == 2) { + if ($scope.stepNum == 1) { + $scope.showLoader = false; + } + else if ($scope.stepNum == 2) { loadSqlInSession(); } else if ($scope.stepNum == 3) { $scope.isColumnStep = true; - raptorReportFactory.getColumnList().then(function(data){ $scope.colTableRowData = data; + $scope.showLoader = false; },function(error){ - $log.error("raptorReportFactory: get column list failed."); }); - + $log.error("raptorReportFactory: get column list failed."); + $scope.showLoader = false;}); + } else if ($scope.stepNum == 4) { $scope.isFormFieldStep = true; // put within then function: raptorReportFactory.getFormFieldList().then(function(data){ $scope.formFieldData = data; + $scope.showLoader = false; },function(error){ - $log.error("raptorReportFactory: get formfields failed."); }); + $log.error("raptorReportFactory: get formfields failed."); + $scope.showLoader = false;}); } else if ($scope.stepNum == 5) { raptorReportFactory.getDefinitionInSession().then(function(data){ $scope.reportId = data.reportId; + $scope.showLoader = false; },function(error){ - $log.error("raptorReportFactory: getDefinitionInSession failed."); }); + $log.error("raptorReportFactory: getDefinitionInSession failed."); + $scope.showLoader = false;}); } if ($scope.stepNum>1){ @@ -869,6 +969,13 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout $scope.getDefinitionById(-1); }); + $scope.$on('openDrillDownpage', function(event, reportId) { + if (reportId!="") { + $scope.openDrillDownReportPopup(reportId); + } + }); + + $scope.$on('RefreshFormField', function(event) { raptorReportFactory.getFormFieldList().then(function(data){ $scope.formFieldData = data; @@ -897,4 +1004,4 @@ appDS2.controller('reportStepController', function($scope,$http,$location, $rout // getAllProjects(); -});
\ No newline at end of file +}); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js index 87ae7a31..7dcbdbe8 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2Header.js @@ -1,152 +1,116 @@ - appDS2.directive('ds2Header', function () { - return { - restrict: 'A', //This menas that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements - replace: false, - templateUrl: "app/fusion/scripts/DS2-view-models/ds2Header.html", - controller: ['$scope', '$filter','$http','$timeout', '$log','UserInfoServiceDS2', '$window', '$cookies', "$cookieStore", function ($scope, $filter, $http, $timeout, $log,UserInfoServiceDS2, $window, $cookies, $cookieStore) { - // copy from existing DS1 - /*Define fields*/ - $scope.userName; - $scope.userFirstName; - /*$scope.redirectUrl; - $scope.contactUsUrl; - $scope.getAccessUrl; - $scope.childData=[]; - $scope.parentData=[]; - $scope.menuItems = []; - $scope.loadMenufail=false; - $scope.megaMenuDataObject=[]; - $scope.activeClickSubMenu = { - x: '' - }; - $scope.activeClickMenu = { - x: '' - }; - $scope.favoritesMenuItems = []; - $scope.favoriteItemsCount = 0; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - $scope.favoritesWindow = false;*/ +appDS2.directive('ds2Header', function () { + return { + restrict: 'A', //This menas that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements + replace: false, + templateUrl: "app/fusion/scripts/DS2-view-models/ds2Header.html", + controller: ['$scope', '$filter','$http','$timeout', '$log','UserInfoServiceDS2', 'HeaderServiceDS2', '$window', '$cookies','$cookieStore', function ($scope, $filter, $http, $timeout, $log,UserInfoServiceDS2,HeaderServiceDS2, $window, $cookies,$cookieStore) { + // copy from existing DS1 - //DS2 code - $scope.tabItems = [ - { - 'title': 'ECOMP' - }, - { - 'title': 'Help', - 'subitems': [{ - 'value': 'Contact Us' + /*Define fields*/ + $scope.userName; + $scope.userFirstName; + $scope.userId; + $scope.userEmail; + $scope.redirectUrl; + $scope.contactUsUrl; + $scope.getAccessUrl; + $scope.menuItems = []; + $scope.showHeader = ($cookieStore.get("show_app_header") == undefined ? true : $cookies.get("show_app_header") ); - }, { - 'value': 'Get Access' - }, - ]}, - ]; - - $scope.userProfile = {}; - $scope.showInfo = false; - $scope.showProfile = function () { - $scope.showInfo = !$scope.showInfo; - }; - $scope.loginOptions1 = [ - {value: '', text: 'Log In..'}, - {value: '1', text: 'Premier'}, - {value: '2', text: 'Wifi Services'}, - {value: '3', text: 'Cloud Solutions'} - ]; - $scope.loginVal = {}; - $scope.loginVal.value = $scope.loginOptions1[0].value; - - $scope.clickLogin = function () { - $scope.openDropdown = !$scope.openDropdown; - }; - $scope.skipNavigation = function () { - var element = angular.element(document.querySelector('li.last'))[0]; - element.children[0].focus(); - }; - - /***************functions**************/ - /*Put user info into fields*/ + + /***************functions**************/ + /*getting user info from session*/ + $scope.getUserNameFromSession = function(){ + UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() + .then(function (res) { + $scope.contactUsUrl=res.contactUsLink; + $scope.userName = res.userName; + $scope.userId = res.userid; + $scope.userEmail = res.email; + $scope.userFirstName = res.firstName; + $scope.redirectUrl = res.portalUrl; + $scope.getAccessUrl = res.getAccessUrl; + }); + } + + $scope.returnToPortal=function(){ + window.location.href = $scope.redirectUrl; + } - $scope.inputUserInfo = function(userInfo){ - if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ - if(typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null){ - $scope.userFirstName = userInfo.USER_FIRST_NAME; - } - } - } - /*getting user info from session*/ - $scope.getUserNameFromSession = function(){ - UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() - .then(function (res) { - $scope.contactUsUrl=res.contactUsLink; - $scope.userName = res.userName; - $scope.userFirstName = res.firstName; - $scope.redirectUrl = res.portalUrl; - $scope.getAccessUrl = res.getAccessUrl; - $scope.userProfile.fullName = res.userName; - $scope.userProfile.email = res.email; - }); - } + /*Menu Structure*/ + var menuStructureConvert = function(menuItems) { + $scope.megaMenuDataObjectTemp = + [{ + text: "Manage", + children: menuItems + }, + { + text: "Support", + children: [ + { + label:"Contact Us", + action:$scope.contactUsUrl, + childMenus:[] + }, + { + label:"Get Access", + action:$scope.getAccessUrl, + childMenus:[] + }] + }]; + return $scope.megaMenuDataObjectTemp; + }; - /*Put user info into fields*/ - $scope.inputUserInfo = function(userInfo){ - if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ - if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='') - $scope.userProfile.firstName = userInfo.USER_FIRST_NAME; - if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='') - $scope.userProfile.lastName = userInfo.USER_LAST_NAME; - if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='') - $scope.userProfile.email = userInfo.USER_EMAIL; - } - } + $scope.getMenu=function() { + $scope.getUserNameFromSession(); + var promise = HeaderServiceDS2.getMenu(); + promise.then( + function(res) { + if(res==null || res==''){ + $log.error('failed to get menu'); + $scope.getUserNameFromSession(); + }else{ + $scope.parentMenu = JSON.parse(res.data); + $scope.childMenu = JSON.parse(res.data2); + for(var i=0; i<$scope.parentMenu.length;i++){ + $scope.parentMenu[i].childMenus = ($scope.childMenu[i]); + } + $scope.menuItems = menuStructureConvert($scope.parentMenu); + } + }, + function(err) { + $log.error('getMenu failed', err); + } + ); + } - /*getting user info from shared context*/ - $scope.getUserName=function() { - var promise = UserInfoServiceDS2.getFunctionalMenuStaticDetailShareContext(); - promise.then( - function(res) { - if(res==null || res==''){ - $log.warn('DS2HeaderCtlr::getUserName: failed to get info from shared context'); - $scope.getUserNameFromSession(); - }else{ - // $log.info('Received User information from shared context',res); - var resData = res; - $scope.inputUserInfo(resData); - $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName; - } - }, - function(err) { - console.log('error'); - } - ); - }; - - $scope.adjustHeader=function() { - $scope.showHeader = ($cookieStore.get("show_app_header") == undefined ? true : $cookies.show_app_header); - if($scope.showHeader == true) { - $scope.drawer_margin_top = 70; - $scope.drawer_custom_top = 54; - $scope.toggle_drawer_top = 55; - } - else { - - $scope.drawer_margin_top = 60; - $scope.drawer_custom_top = 0; - $scope.toggle_drawer_top = 10; - } - - } + + + $scope.adjustHeader=function() { + $scope.showHeader = ($cookies.get("show_app_header") == undefined ? true : $cookies.get("show_app_header")); + console.log($scope.showHeader); + if ($scope.showHeader==true) { + document.getElementById('page-content').style.marginTop = "45px"; + }else{ + document.getElementById('page-content').style.marginTop = "0px"; + } + }; // adjustHeader + $scope.$on('$routeChangeSuccess', function () { + $scope.adjustHeader(); + }); - /*call the get user info function*/ - try{ - $scope.getUserName(); - $scope.adjustHeader(); - - }catch(err){ - $log.info('Error while getting User information',err); - } - }] - } -});
\ No newline at end of file + $scope.getUserNameFromSession(); + $scope.getMenu(); + }] + } +}); + +appDS2.filter("ellipsis", function(){ + return function(text, length){ + if (text) { + var ellipsis = text.length > length ? "..." : ""; + return text.slice(0, length) + ellipsis; + }; + return text; + } +}); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js index 8174c586..758add6e 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-directives/ds2LeftMenu.js @@ -64,23 +64,7 @@ appDS2.directive('ds2Menu', function () { },function(error){ console.log("error happened while calling getAppName "+error); }); - - $scope.adjustHeader=function() { - $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header); - if ($scope.showHeader == true) { - $scope.drawer_margin_top = 50; - $scope.drawer_custom_top = 54; - $scope.toggle_drawer_top = 55; - } - else { - $scope.drawer_margin_top = 40; - $scope.drawer_custom_top = 0; - $scope.toggle_drawer_top = 10; - } - }; // adjustHeader - - - $scope.adjustHeader(); + $scope.drawerOpen = true; diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/raptorReportFactory.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/raptorReportFactory.js index 06324d39..65e05fbd 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/raptorReportFactory.js +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/ds2-raptor-report/raptorReportFactory.js @@ -3,7 +3,22 @@ appDS2.factory('raptorReportFactory', function($http, $q) { getDefinitionByReportId: function(reportId) { return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/Def/"+reportId, + url: "report/wizard/retrieve_def_tab_wise_data/"+reportId, + }).then(function(response) { + if (typeof response.data === 'object') { + return response.data; + } else { + return $q.reject("raptorReportFactory: getDefinitionByReportId did not return a valid JSON object."); + } + }, function(response) { + // something went wrong + return $q.reject("raptorReportFactory: getDefinitionByReportId callback failed"); + }); + }, + getDefinitionByReportId: function(reportId) { + return $http({ + method: "GET", + url: "report/wizard/retrieve_def_tab_wise_data/"+reportId, }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -18,7 +33,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { getDefinitionInSession: function() { return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/Def/InSession", + url: "report/wizard/retrieve_def_tab_wise_data/InSession", }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -34,7 +49,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { createNewDefinition: function() { return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/Def/Create", + url: "report/wizard/retrieve_def_tab_wise_data/Create", }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -82,7 +97,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { getSqlInSession: function() { return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/Sql/InSession", + url: "report/wizard/retrieve_sql_tab_wise_data/InSession", }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -100,8 +115,8 @@ appDS2.factory('raptorReportFactory', function($http, $q) { url: "report/wizard/retrieve_data/true", data: queryJSON }).then(function(response) { - if (typeof response.data === 'object') { - return response.data; + if (typeof response.data === 'object') { + return JSON.parse(response.data.data.elements); } else { return $q.reject("raptorReportFactory: testRunSQL did not return a valid JSON object."); } @@ -118,7 +133,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { data: queryJSON }).then(function(response) { if (typeof response.data === 'object') { - return response.data; + return JSON.parse(response.data.data.elements); } else { return $q.reject("raptorReportFactory: formFieldVerifySQL did not return a valid JSON object."); } @@ -144,11 +159,58 @@ appDS2.factory('raptorReportFactory', function($http, $q) { return $q.reject("raptorReportFactory: getColumnList callback failed"); }); }, - + getDrillDownReportList: function() { + return $http({ + method: "GET", + url: "report/wizard/list_drilldown_reports", + }).then(function(response) { + if (typeof response.data === 'object') { + return response.data; + } else { + return $q.reject("raptorReportFactory: getDrillDownReportList did not return a valid JSON object."); + } + return response.data; + }, function(response) { + // something went wrong + return $q.reject("raptorReportFactory: getDrillDownReportList callback failed"); + }); + }, + getChildReportFormField: function(reportId) { + return $http({ + method: "GET", + url: "report/wizard/list_child_report_ff/"+reportId, + }).then(function(response) { + if (typeof response.data === 'object') { + return response.data; + } else { + return $q.reject("raptorReportFactory: getDrillDownReportList did not return a valid JSON object."); + } + return response.data; + }, function(response) { + // something went wrong + return $q.reject("raptorReportFactory: getDrillDownReportList callback failed"); + }); + }, + getChildReportColumn: function(reportId) { + return $http({ + method: "GET", + url: "report/wizard/list_child_report_col/"+reportId, + }).then(function(response) { + if (typeof response.data === 'object') { + return response.data; + } else { + return $q.reject("raptorReportFactory: getChildReportColumn did not return a valid JSON object."); + } + return response.data; + }, function(response) { + // something went wrong + return $q.reject("raptorReportFactory: getChildReportColumn callback failed"); + }); + }, getColumnEditInfoById: function(columnId){ return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/ColEdit/"+columnId, + url: "report/wizard/retrieve_col_tab_wise_data/"+columnId, }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -241,7 +303,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { getFormFieldEditInfoById: function(fieldId){ return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/FormEdit/"+fieldId, + url: "report/wizard/retrieve_form_tab_wise_data/"+fieldId, }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -257,7 +319,7 @@ appDS2.factory('raptorReportFactory', function($http, $q) { deleteFormFieldById: function(fieldId){ return $http({ method: "GET", - url: "report/wizard/retrieve_tab_wise_data/FormEdit/delete/"+fieldId, + url: "report/wizard/retrieve_form_tab_wise_data/"+fieldId+"/delete", }).then(function(response) { if (typeof response.data === 'object') { return response.data; @@ -314,6 +376,9 @@ appDS2.factory('raptorReportFactory', function($http, $q) { return $q.reject("raptorReportFactory: getSearchDataAtPage callback failed"); }); }, + setDrillDownPopupOptions: function(drillDownPopupOptions) { + this.drillDownPopupOptions = drillDownPopupOptions; + }, getReportDeleteStatus : function(deleteUrl) { return $http.get(deleteUrl).then(function(response) { if (typeof response.data === 'object') { diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/headerServiceDS2.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/headerServiceDS2.js index 92a99be0..c9134f62 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/headerServiceDS2.js +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/headerServiceDS2.js @@ -1,483 +1,17 @@ -appDS2.directive('qHeader', function () { - - return { - restrict: 'A', //This menas that it will be used as an attribute and NOT as an element. I don't like creating custom HTML elements - replace: false, - templateUrl: "app/fusion/scripts/DS2-view-models/ds2Header.html", - controller: ['$scope', '$filter','$http','$timeout', '$log','UserInfoServiceDS2', '$window', '$cookies', function ($scope, $filter, $http, $timeout, $log,UserInfoServiceDS2, $window, $cookies) { - - //alert("in header service") - /*Define fields*/ - $scope.userName; - $scope.userFirstName; - $scope.redirectUrl; - $scope.contactUsUrl; - $scope.getAccessUrl; - $scope.childData=[]; - $scope.parentData=[]; - $scope.menuItems = []; - $scope.loadMenufail=false; - $scope.megaMenuDataObject=[]; - $scope.activeClickSubMenu = { - x: '' - }; - $scope.activeClickMenu = { - x: '' - }; - $scope.favoritesMenuItems = []; - $scope.favoriteItemsCount = 0; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - $scope.favoritesWindow = false; - - /* Menu Structure - var menuStructureConvert = function(menuItems) { - console.log(menuItems); - $scope.megaMenuDataObjectTemp = - [ - { - text: "ECOMP", - children: menuItems - }, - { - text: "Help", - children: [ - { - text:"Contact Us", - url:$scope.contactUsUrl - }, - { - text:"Get Access", - url:$scope.getAccessUrl - }] - } - ]; - return $scope.megaMenuDataObjectTemp; - }; - */ - /***************functions**************/ - /*Put user info into fields*/ - $scope.inputUserInfo = function(userInfo){ - if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ - if(typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null){ - $scope.userFirstName = userInfo.USER_FIRST_NAME; - } - } - } - /*getting user info from session*/ - $scope.getUserNameFromSession = function(){ - UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() - .then(function (res) { - $scope.contactUsUrl=res.contactUsLink; - $scope.userName = res.userName; - $scope.userFirstName = res.firstName; - $scope.redirectUrl = res.portalUrl; - $scope.getAccessUrl = res.getAccessUrl; - }); - } - $scope.getTopMenuStaticInfo=function() { - var promise = UserInfoServiceDS2.getFunctionalMenuStaticDetailShareContext(); - promise.then( - function(res) { - if(res==null || res==''){ - $log.info('failed getting static User information'); - $scope.getUserNameFromSession(); - }else{ - $log.info('Received static User information'); - - var resData = res; - console.log(resData); - $scope.inputUserInfo(resData); - $scope.userName = $scope.firstName+ ' '+ $scope.lastName; - } - }, - function(err) { - $log.info('failed getting static User information'); - } - ); - } - - $scope.returnToPortal=function(){ - window.location.href = $scope.redirectUrl; - } - - var unflatten = function( array, parent, tree ){ - tree = typeof tree !== 'undefined' ? tree : []; - parent = typeof parent !== 'undefined' ? parent : { menuId: null }; - var children = _.filter( array, function(child){ return child.parentMenuId == parent.menuId; }); - if( !_.isEmpty( children ) ){ - if( parent.menuId === null ){ - tree = children; - }else{ - parent['children'] = children - } - _.each( children, function( child ){ unflatten( array, child ) } ); - } - return tree; - } - - $scope.getMenu=function() { - $scope.getTopMenuStaticInfo(); - $http({ - method: "GET", - url: 'get_functional_menu', -// TIMEOUT USED FOR LOCAL TESTING ONLY -// timeout: 100 - }).success(function (response) { - - if (response == '101: Timeout') { - $log.debug('Timeout attempting to get_functional_menu'); - $scope.megaMenuDataObject = menuStructureConvert(""); -// $scope.createErrorMenu(); - //$scope.loadMenufail=true; - } else { - if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){ - $log.debug('Timeout attempting to get_functional_menu'); - $scope.menuItems = unflatten( response); - $scope.megaMenuDataObject = menuStructureConvert($scope.menuItems); -// $scope.createErrorMenu(); - //$scope.loadMenufail=true; - }else{ - $scope.loadMenufail=false; - $scope.contactUsURL = response.contactUsLink; - $log.debug('functional_menu',response); - $scope.megaMenuDataObject = menuStructureConvert(""); - } - } - }).error(function (response){ - $scope.megaMenuDataObject = menuStructureConvert(""); -// $scope.createErrorMenu(); - //$scope.loadMenufail=true; - $log.debug('REST API failed get_functional_menu...'); - }); - - } - - /*$scope.adjustHeader=function() { - $scope.showHeader = ($cookies.show_app_header == undefined ? true : $cookies.show_app_header); - - if($scope.showHeader == true) { - $scope.drawer_margin_top = 70; - $scope.drawer_custom_top = 54; - $scope.toggle_drawer_top = 55; - } - else { - - $scope.drawer_margin_top = 60; - $scope.drawer_custom_top = 0; - $scope.toggle_drawer_top = 10; - } - - }*/ - - $scope.getMenu(); - // $scope.adjustHeader(); - -/* **************************************************************************/ -/* Logic for the favorite menus is here */ - - $scope.loadFavorites = function () { - $log.debug('loadFavorites has happened.'); - if ($scope.favoritesMenuItems == '') { - $scope.generateFavoriteItems(); - $log.debug('loadFavorites is calling generateFavoriteItems()'); - } else { - $log.debug('loadFavorites is NOT calling generateFavoriteItems()'); - } - } - - $scope.goToUrl = function (item) { - $log.info("goToUrl called") - $log.info(item); - - var url = item.url; - var restrictedApp = item.restrictedApp; - $log.debug('Restricted app status is: ' + restrictedApp); - if (!url) { - $log.info('No url found for this application, doing nothing..'); - return; - } - if (restrictedApp) { - $window.open(url, '_blank'); - } else { - $window.open(url, '_self'); - } - - } - - $scope.submenuLevelAction = function(index, column) { - if ($scope.favoritesMenuItems == '') { - $scope.generateFavoriteItems(); - $log.debug('submenuLevelAction is calling generateFavoriteItems()'); - } - $log.debug('item hovered/clicked: ' + index + '; column = ' + column); - if (column == 2) { // 2 is Design - $scope.favoritesWindow = false; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - } - if (index=='Favorites' && $scope.favoriteItemsCount != 0) { - $log.debug('Showing Favorites window'); - $scope.favoritesWindow = true; - $scope.showFavorites = true; - $scope.emptyFavorites = false; - } - if (index=='Favorites' && $scope.favoriteItemsCount == 0) { - $log.debug('Hiding Favorites window in favor of No Favorites Window'); - $scope.favoritesWindow = true; - $scope.showFavorites = false; - $scope.emptyFavorites = true; - } - if (column > 2) { - $scope.favoritesWindow = false; - $scope.showFavorites = false; - $scope.emptyFavorites = false; - } - }; - - $scope.hideFavoritesWindow = function() { - $log.debug('$scope.hideFavoritesWindow has been called'); - $scope.showFavorites = false; - $scope.emptyFavorites = false; - } - - $scope.isUrlFavorite = function (menuId) { -// $log.debug('array objects in menu favorites = ' + $scope.favoriteItemsCount + '; menuId=' + menuId); - var jsonMenu = JSON.stringify($scope.favoritesMenuItems); - var isMenuFavorite = jsonMenu.indexOf('menuId\":' + menuId); - if (isMenuFavorite==-1) { - return false; - } else { - return true; - } - - } - - $scope.generateFavoriteItems = function() { - $http({ - method: "GET", - url: 'get_favorites', -// TIMEOUT USED FOR LOCAL TESTING ONLY -// timeout: 100 - }).success(function (response) { - if (response == '101: Timeout') { - $log.error('Timeout attempting to get_favorites_menu'); +appDS2.factory('HeaderServiceDS2', function ($http,$log, $q) { + return { + getMenu: function() { + return $http.get('get_menu') + .then(function(response) { + if (typeof response.data === 'object') { + return response.data; } else { - if(typeof response != 'undefined' && response.length!=0 && typeof response[0] != 'undefined' && typeof response[0].error!="undefined"){ - $log.error('REST API failed get_favorites' + response); - }else{ - $log.debug('get_favorites = ' + JSON.stringify(response)); - $scope.favoritesMenuItems = response; - $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length; - $log.info('number of favorite menus: ' + $scope.favoriteItemsCount); - } - } - }).error(function (response){ - $log.error('REST API failed get_favorites' + response); -//createFavoriteErrorMenu() USED FOR LOCAL TESTING ONLY -// $scope.createFavoriteErrorMenu(); - }); - } - - $scope.createFavoriteErrorMenu=function() { - $scope.favoritesMenuItems = []; - $scope.favoriteItemsCount = Object.keys($scope.favoritesMenuItems).length; - $log.info('number of favorite menus: ' + $scope.favoriteItemsCount); - } - - /* end of Favorite Menu code */ - /* **************************************************************************/ - - - /* **************************************************************************/ - // THIS IS USED FOR LOCAL TESTING ONLY - /* **************************************************************************/ - $scope.createErrorMenu=function() { - $log.debug('Creating fake menu now...'); -// $scope.loadMenufail=true; - $scope.menuItems = [ - { - "menuId": 1, - "column": 2, - "text": "Design", - "parentMenuId": null, - "url": "" - }, - { - "menuId": 2, - "column": 3, - "text": "Infrastructure Ordering", - "parentMenuId": null, - "url": "" - }, - { - "menuId": 3, - "column": 4, - "text": "Service Creation", - "parentMenuId": null, - "url": "" - }, - { - "menuId": 4, - "column": 5, - "text": "Service Mgmt", - "parentMenuId": null, - "url": "" - }, - { - "menuId": 90, - "column": 1, - "text": "Google", - "parentMenuId": 1, - "url": "http://google.com" - }, - { - "menuId": 91, - "column": 1, - "text": "Mike Little's Coffee Cup", - "parentMenuId": 2, - "url": "http://coffee.com" - }, - { - "menuId": 92, - "column": 2, - "text": "Andy and his Astrophotgraphy", - "parentMenuId": 3, - "url": "http://nightskypix.com" - }, - { - "menuId": 93, - "column": 1, - "text": "JSONLint", - "parentMenuId": 4, - "url": "http://http://jsonlint.com" - }, - { - "menuId": 94, - "column": 2, - "text": "HROneStop", - "parentMenuId": 4, - "url": "http://ebiz.sbc.com/hronestop" - }, - { - "menuId": 95, - "column": 2, - "text": "4th Level App4a R16", - "parentMenuId": 4, - "url": "http://www.e-access.att.com/ecomp_portal_ist/ecompportal/widgets" - }, - { - "menuId": 96, - "column": 3, - "text": "3rd Level App1c R200", - "parentMenuId": 4, - "url": "http://app1c.com" - }, - { - "menuId": 97, - "column": 1, - "text": "3rd Level App4b R16", - "parentMenuId": 5, - "url": "http://app4b.com" - }, - { - "menuId": 98, - "column": 2, - "text": "3rd Level App2b R16", - "parentMenuId": 5, - "url": "http://app2b.com" - }, - { - "menuId": 99, - "column": 1, - "text": "Favorites", - "parentMenuId": null, - "url": "" - } - ]; - $scope.menuItems = unflatten( $scope.menuItems ); - //remove this - $scope.megaMenuDataObject = menuStructureConvert($scope.menuItems); - } - }] - } + return $q.reject(response.data); + } + }, function(response) { + // something went wrong + return $q.reject(response.data); + }); + } + }; }); - -appDS2.filter("ellipsis", function(){ - return function(text, length){ - if (text) { - var ellipsis = text.length > length ? "..." : ""; - return text.slice(0, length) + ellipsis; - }; - return text; - } -}); -function reloadPageOnce() { - if( window.localStorage ) - { - if( !localStorage.getItem('firstLoad') ) - { - localStorage['firstLoad'] = true; - window.location.reload(); - } - else - localStorage.removeItem('firstLoad'); - } -} -appDS2.controller('loginSnippetCtrl', function ($scope,$http, $log,UserInfoServiceDS2){ - /*Define fields*/ - $scope.userProfile={ - firstName:'', - lastName:'', - fullName:'', - email:'', - } - /*Put user info into fields*/ - $scope.inputUserInfo = function(userInfo){ - if (typeof(userInfo) != "undefined" && userInfo!=null && userInfo!=''){ - if (typeof(userInfo.USER_FIRST_NAME) != "undefined" && userInfo.USER_FIRST_NAME!=null && userInfo.USER_FIRST_NAME!='') - $scope.userProfile.firstName = userInfo.USER_FIRST_NAME; - if (typeof(userInfo.USER_LAST_NAME) != "undefined" && userInfo.USER_LAST_NAME!=null && userInfo.USER_LAST_NAME!='') - $scope.userProfile.lastName = userInfo.USER_LAST_NAME; - if (typeof(userInfo.USER_EMAIL) != "undefined" && userInfo.USER_EMAIL!=null && userInfo.USER_EMAIL!='') - $scope.userProfile.email = userInfo.USER_EMAIL; - - } - } - /*getting user info from session*/ - $scope.getUserNameFromSession = function(){ - UserInfoServiceDS2.getFunctionalMenuStaticDetailSession() - .then(function (response) { - $scope.userProfile.fullName = response.userName; - $scope.userProfile.email = response.email; - }); - } - /*getting user info from shared context*/ - $scope.getUserName=function() { - var promise = UserInfoServiceDS2.getFunctionalMenuStaticDetailShareContext(); - promise.then( - function(res) { - if(res==null || res==''){ - $log.info('headerServiceDS2: get user information from session'); - $scope.getUserNameFromSession(); - - }else{ - // $log.info('Received User information from shared context',res); - var resData = res; - console.log(resData); - $scope.inputUserInfo(resData); - $scope.userProfile.fullName = $scope.userProfile.firstName+ ' '+ $scope.userProfile.lastName; - } - }, - function(err) { - console.log('error'); - } - ); - }; - /*call the get user info function*/ - try{ - $scope.getUserName(); - }catch(err){ - $log.info('Error while getting User information',err); - } -});
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/leftMenuServiceDS2.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/leftMenuServiceDS2.js index 879da8e7..61346c84 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/leftMenuServiceDS2.js +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-services/leftMenuServiceDS2.js @@ -70,22 +70,9 @@ window.onscroll = function (e) { adjustLeftMenuHeight(); } -function adjustHeader() { - var showHeader = getCookie("show_app_header"); - if(showHeader==''){ - $(".menu-container").css({ - "margin-top" : 45, - }); - }else{ - $(".menu-container").css({ - "margin-top" : 0, - }); - } -}; /* adjust left menu height on page load */ $(function() { adjustLeftMenuHeight(); - adjustHeader(); }); diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/all-reports.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/all-reports.html index c90f95b4..bbfddca6 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/all-reports.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/all-reports.html @@ -61,6 +61,7 @@ <script src="./app/fusion/scripts/DS2-controllers/ds2-reports/report-run-controller.js"></script> <script src="./app/fusion/scripts/DS2-controllers/ds2-reports/report-step-controller.js"></script> <script src="./app/fusion/scripts/DS2-controllers/ds2-reports/report-import-controller.js"></script> + <script src="./app/fusion/scripts/DS2-controllers/ds2-reports/report-chart-controller.js"></script> <script src="./app/fusion/scripts/DS2-view-models/ds2-reports/directive/dynamicform.js"></script> <script src="./app/fusion/scripts/DS2-controllers/ds2-reports/report-router.js"></script> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html index ad081991..097d1795 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-col-edit.html @@ -99,14 +99,14 @@ </td> </tr> -<!-- <tr> - <td class="colTableLeftColumn">Drill-down Link:</td> + <tr> + <td class="colTableLeftColumn" style="width:350px;">Drill-down Link:</td> <td> - <select name="drillDown" b2b-dropdown ng-model="selectedDrillDownLink.value" placeholder-text="Select"> - <option b2b-dropdown-list option-repeat="d in drillDownOptions" value="{{d.value}}">{{d.text}}</option> + <select name="drillDown" b2b-dropdown ng-model="selectedDrillDownReport.value" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in drilldownReports" value="{{d.id}}">{{d.name}}</option> </select> </td> - </tr> --> + </tr> </tbody> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html new file mode 100644 index 00000000..ec2134bf --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/modal/report-wizard-drilldown-edit.html @@ -0,0 +1,150 @@ +<style> +#columnEditTable table tbody td { + border: none; +} + +#columnEditTable table tbody tr { + border: none; +} + +.colTableLeftColumn { + width: 45%; + vertical-align:center; +} + +.colTableInput { + width:220px; +} + +#columnEditTable .selectWrap{ + width:220px; +} + +</style> + +<div style="height: 700px;"> + <div class="b2b-modal-header ng-scope in"> + <h2 id="myModalLabel" modal-title="">Drill-down Parameters Configuration</h2> + <div class="corner-button in"> + <button type="button" class="close" aria-label="Close" + ng-click="$dismiss('cancel')"></button> + </div> + </div> + <div class="b2b-modal-body ng-scope ng-isolate-scope in" style="margin-bottom: -50px;"> + <form name="workflowForm" class="css-form" novalidate> + + <div id="columnEditTable"> + <table class="striped"> + <tbody> + + <fieldset role="radiogroup" radio-group-accessibility> + <tr ng-show="childReportFF.length>0"> + <td colspan="2"> + <h2>User</h2> + </td> + </tr> + + <tr ng-show="childReportFF.length>0"> + <td> + <div class="form-row" role="radio" style="margin-top:0px;"> + <label for="optionsRadios1111" class="radio"> + <input type="radio" ng-model="selectedvalueradioGroup.name" id="optionsRadios1111" name="optionsRadio11" value="noValue" required> + <i class="skin"></i> + <span>No Value</span> + </label> + </div> + </td> + <td style="margin-top:10px;"> + <p>Accept Default</p> + </td> + </tr> + + <tr ng-show="childReportFF.length>0"> + <td> + <div class="form-row" role="radio" style="margin-top:0px;"> + <label for="optionsRadios2222" class="radio"> + <input type="radio" ng-model="selectedvalueradioGroup.name" id="optionsRadios2222" name="optionsRadio11" value="fixedValue"> + <i class="skin"></i> + <span>Fixed Value</span> + </label> + </div> + </td> + <td><input type="text" name="defaultValue" ng-model="fixedValue.value" class="colTableInput"></td> + </tr> + + + <tr ng-show="childReportFF.length>0"> + <td> + <div class="form-row" role="radio" style="margin-top:0px;"> + <label for="optionsRadios333333" class="radio"> + <input type="radio" ng-model="selectedvalueradioGroup.name" id="optionsRadios333333" name="optionsRadio11" value="reportCol"> + <i class="skin"></i> + <span>Value of Column</span> + </div> + </td> + <td> + <select name="childReportColumn" b2b-dropdown ng-model="selectedChildReportColumn.value" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in childReportCol" value="{{d.id}}">{{d.name}}</option> + </select> + </td> + + </tr> + + <tr ng-show="childReportFF.length>0"> + <td> + <div class="form-row" role="radio" style="margin-top:0px;"> + <label for="optionsRadios444444" class="radio"> + <input type="radio" ng-model="selectedvalueradioGroup.name" id="optionsRadios444444" name="optionsRadio11" value="reportFF"> + <i class="skin"></i> + <span>Value of Form Field</span> + </div> + </td> + <td> + <select name="childReportFormField" b2b-dropdown ng-model="selectedChildReportFormField.value" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in childReportFF" value="{{d.id}}">{{d.name}}</option> + </select> + </td> + </tr> + + <tr ng-show="childReportFF.length>0"> + <td> + <div class="form-row" role="radio" style="margin-top:0px;"> + <label for="optionsRadios5555" class="radio"> + <input type="radio" ng-model="selectedvalueradioGroup.name" id="optionsRadios5555" name="optionsRadio11" value="valueSet" required> + <i class="skin"></i> + <span>Value Set</span> + </label> + </div> + </td> + <td style="margin-top:10px;"> + <p>Pass the value of the selected column if not empty, otherwise pass the value of the selected form field</p> + </td> + </tr> + + </fieldset> + + <tr> + <td colspan="2"> + <h2>Parameter values not to be passed to the drill-down report</h2> + </td> + </tr> + + <tr> + <td class="colTableLeftColumn">Suppress Values</td> + <td><input type="text" name="suppressValue" ng-model="suppressValues.value" class="colTableInput"></td> + </tr> + + </tbody> + </table> + </div> + <div class="b2b-modal-footer ng-scope ng-isolate-scope in"> + <div class="cta-button-group in"> + <button class="btn btn-alt btn-small" type="button" + ng-click="complete()">Complete</button> + </div> + + </div> + </form> + <br /> + </div> +</div>
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-chart-wizard.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-chart-wizard.html new file mode 100644 index 00000000..16676d24 --- /dev/null +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-chart-wizard.html @@ -0,0 +1,719 @@ +<style> +table tbody td { + border: none; +} + +table tbody tr { + border: none; +} + +table{ + border: none; + margin-bottom:0px; +} + +#RangeTable{ + margin-top: 5px; + border: 1px solid black; +} +</style> + +<div id="page-content"> +<h1 class="heading-page">Report Chart Configuration</h1> +<!-- <div style="color:#2ca02c" ng-show="successSubmit">Your configurations have been successfully submitted</div> --> + + + +<div> +<table> + <thead> + <tr> + <th width="30%">Chart Type</th> + <th>Animate</th> + </tr> + </thead> + + <tbody> + <tr> + <td> + <select name="chartType" b2b-dropdown ng-model="reportRunJson.chartTypeJSON.value" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in chartTypeOptions" value="{{d.value}}">{{d.text}}</option> + </select> + </td> + <td> + <label for="animateCheckbox" class="checkbox"> + <input id="animateCheckbox" type="checkbox" ng-model="reportRunJson.animation" /><i class="skin"></i><span></span> + </label> + </td> + </tr> + </tbody> +</table> + +<table> + <thead> + <tr> + <th width="50px">Width (px)</th> + <th>Height (px)</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <input type="text" name="displayName" ng-model="reportRunJson.width" style="width:100px;"> + </td> + <td> + <input type="text" name="displayName" ng-model="reportRunJson.height" style="width:100px;"> + </td> + </tr> + </tbody> +</table> + +<table> + <thead> + <tr> + <th width="50px">Title</th> + </tr> + </thead> + <tbody> + <tr> + <fieldset role="radiogroup" radio-group-accessibility> + <td> + <label for="optionsRadiosShowTitleTrue" class="radio"> + <input type="radio" ng-model="reportRunJson.showTitle" id="optionsRadiosShowTitleTrue" name="optionsRadiosShowTitleTrue" value="true"> + <i class="skin"></i> + <span>Show</span> + </label> + </td> + <td> + <label for="optionsRadiosShowTitleFalse" class="radio"> + <input type="radio" ng-model="reportRunJson.showTitle" id="optionsRadiosShowTitleFalse" name="optionsRadiosShowTitleFalse" value="false"> + <i class="skin"></i> + <span>Hide</span> + </label> + </td> + </fieldset> + </tr> + + </tbody> +</table> + +<table> + <thead> + <tr> + <th width="30%">Domain Axis</th> + <th width="30%">Category</th> + <th width="40%"></th> + </tr> + </thead> + <tbody> + <tr> + <td> + <select name="chartType" b2b-dropdown ng-model="reportRunJson.domainAxisJSON" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in reportRunJson.chartColumnJSONList" value="{{d.value}}">{{d.title}}</option> + </select> + </td> + <td> + <select name="chartType" b2b-dropdown ng-model="reportRunJson.categoryAxisJSON" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in reportRunJson.chartColumnJSONList" value="{{d.value}}">{{d.title}}</option> + </select> + </td> + </tr> + </tbody> +</table> + + + <div id="RangeTable"> + +<table ng-repeat="rangeReport in reportRunJson.rangeAxisList"> + <thead> + <tr> + <th width="25%">Range Axis</th> + <th width="10%">Y Axis</th> + <th width="20%">Chart Title</th> + <th width="22%">Color</th> + <th width="18%">Line Type</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td> + <select name="chartType" b2b-dropdown ng-model="rangeReport.rangeAxisLabelJSON.value" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in reportRunJson.chartColumnJSONList" value="{{d.value}}">{{d.title}}</option> + </select> + </td> + <td> + <input type="text" name="displayName" ng-model="rangeReport.rangeYAxis" style="width:100px;"> + </td> <td> + <input type="text" name="displayName" ng-model="rangeReport.rangeChartGroup" style="width:150px;"> + </td> + <td> + <select name="chartType" b2b-dropdown ng-model="rangeReport.rangeColorJSON" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in rangeColors" value="{{d.value}}">{{d.title}}</option> + </select> + </td> + <td> + <select name="chartType" b2b-dropdown ng-model="rangeReport.rangeLineTypeJSON" placeholder-text="Select"> + <option b2b-dropdown-list option-repeat="d in lineTypes" value="{{d.value}}">{{d.title}}</option> + </select> + </td> + <td> + <button ng-show="$index==0" type="submit" style="width: 90px; height:35px;margin-left:5px;" class="btn btn-secondary btn-small" ng-click="addRangeAxisRow()">Add</button> + <button ng-hide="$index==0" type="submit" style="width: 90px; height:35px;margin-left:5px;" class="btn btn-secondary btn-small" ng-click="removeRangeAxisRow($index)">Remove</button> + </td> + </tr> + + </tbody> +</table> +</div> + +</div> + +<div ng-show=false style="min-height:500px" data-ng-init="init()"> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Chart Type</label><BR> + <div class="form-field" att-select="chartTypes" ng-model="reportRunJson.chartTypeJSON" placeholder="Select an Option" show-input-filter="true" ng-change="actionClicked()"></div> + </div> + + + <div class="fn-ebz-container" style="position:relative; top: -8px;"> + <label class="fn-ebz-text-label">Animate</label><BR> + <div><input type="checkbox" ng-model="reportRunJson.animation" att-checkbox data-ng-value="true"></div> + </div> + <BR> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Width (Px)</label><BR> + <input type="text" name="chartWidth" maxlength=4 only-digits ng-model="reportRunJson.width" style="width:80px"/> + </div> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Height (Px)</label><BR> + <input type="text" name="chartHeight" maxlength=4 only-digits ng-model="reportRunJson.height" style="width:80px"/> + </div> + <BR> + + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Title</label><BR> + <span><input name="tle" type="radio" ng-model="reportRunJson.showTitle" data-ng-value="true"/>Show</span> + <span><input name="tle" type="radio" ng-model="reportRunJson.showTitle" data-ng-value="false"/>Hide</span> + </div> + <BR> + + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Domain Axis</label><BR> + <div class="form-field" att-select="reportRunJson.chartColumnJSONList" ng-model="reportRunJson.domainAxisJSON" placeholder="Select an Option" show-input-filter="true"></div> + </div> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Category</label><BR> + <div class="form-field" att-select="reportRunJson.chartColumnJSONList" ng-model="reportRunJson.categoryAxisJSON" placeholder="Select an Option" show-input-filter="true"></div> + </div> + <BR> + +<div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> +<div ng-repeat="rangeReport in reportRunJson.rangeAxisList"> + <div style="margin-left:5px"> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Range Axis</label><BR> + <div class="form-field" att-select="reportRunJson.chartColumnJSONList" + ng-model="rangeReport.rangeAxisLabelJSON" placeholder="Select an Option" show-input-filter="true"></div> + </div> + + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Y Axis</label><BR> + <input id="yaxs" type="text" name="yAxis" maxlength=50 ng-model=rangeReport.rangeYAxis style="width:100px"/> + </div> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Chart Title</label><BR> + <input type="text" name="chartTitle" maxlength=50 ng-model="rangeReport.rangeChartGroup" style="width:200px"/> + </div> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Color</label><BR> + <div class="form-field" att-select="rangeColors" ng-model="rangeReport.rangeColorJSON" placeholder="Select an Option" show-input-filter="true"></div> + </div> + + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Line Type</label><BR> + <div class="form-field" att-select="lineTypes" ng-model="rangeReport.rangeLineTypeJSON" placeholder="Select an Option" show-input-filter="true"></div> + </div> + + <div class="fn-ebz-container" ng-show="reportRunJson.chartTypeJSON.value=='FlexTimeChart' || + reportRunJson.chartTypeJSON.value=='AnnotationChart'" style="position:relative; top: -8px;"> + <label class="fn-ebz-text-label">Area</label><BR> + <input type="checkbox" ng-model="rangeReport.showAsArea" att-checkbox data-ng-value="true"> + </div> + + <div class="fn-ebz-container" style="position:relative; top: 25px;"> + <a href="javascript:void(0)" ng-show="{{$index==0}}" style="float: right;" att-button btn-type="secondary" size="small" att-accessibility-click="13,32" + ng-click="addRangeAxisRow(rangeReport);" >Add</a> + <a href="javascript:void(0)" ng-show="{{$index>0}}" style="float: right;" att-button btn-type="secondary" size="small" att-accessibility-click="13,32" ng-click="removeRangeAxisRow($index);" > + Remove</a> + </div> + </div> + </div> + </div> + <BR> + +<accordion close-others="true" css="att-accordion--no-box"> + <accordion-group id="additionalOptions" heading="Additional Options" child-length="10"> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Primary Axis Label</label><BR> + <input type="text" name="prAxis" maxlength=50 ng-model="reportRunJson.primaryAxisLabel" style="width:210px"/> + </div> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Secondary Axis Label</label><BR> + <input type="text" name="secAxis" maxlength=75 ng-model="reportRunJson.secondaryAxisLabel" style="width:210px"/> + </div> + <BR> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Range Axis Minimum Range</label><BR> + <input type="text" name="rAxisMinRange" only-digits ng-model="reportRunJson.minRange" style="width:210px"/> + </div> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Maximum Range</label><BR> + <input type="text" name="rAxisMaxRange" only-digits ng-model="reportRunJson.maxRange" ng-maxLength="35" style="width:210px"/> + </div><BR> + </accordion-group> +</accordion> + + + + +<div ng-show="reportRunJson.chartTypeJSON.value=='BarChart3D'"> + + <accordion close-others="true" css="att-accordion--no-box"> + <accordion-group id="accBar" heading="Bar Chart Options" child-length="10"> + + + <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> + <div class="fn-ebz-container" style="position:relative;margin:10px;" > + <label class="fn-ebz-text-label">Orientation</label><BR> + <span><input name="orient" type="radio" ng-model="reportRunJson.barChartOptions.verticalOrientation" data-ng-value="true"/>Vertical</span> + <span><input name="orient" type="radio" ng-model="reportRunJson.barChartOptions.verticalOrientation" data-ng-value="false"/>Horizontal</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Stacked</label><BR> + <span><input name="stack" type="radio" ng-model="reportRunJson.barChartOptions.stackedChart" data-ng-value="true"/>Yes</span> + <span><input name="stack" type="radio" ng-model="reportRunJson.barChartOptions.stackedChart" data-ng-value="false"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Show Controls</label><BR> + <span><input name="shwcontrol" type="radio" ng-model="reportRunJson.barChartOptions.displayBarControls" data-ng-value="true"/>Yes</span> + <span><input name="shwcontrol" type="radio" ng-model="reportRunJson.barChartOptions.displayBarControls" data-ng-value="false"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">XAxis Date Type</label><BR> + <span><input name="xAxisDtype" type="radio" ng-model="reportRunJson.barChartOptions.xAxisDateType" data-ng-value="true"/>Yes</span> + <span><input name="xAxisDtype" type="radio" ng-model="reportRunJson.barChartOptions.xAxisDateType" data-ng-value="false"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Display less XAxis tickers</label><BR> + <span><input name="xTicker" type="radio" ng-model="reportRunJson.barChartOptions.minimizeXAxisTickers" data-ng-value="true"/>Yes</span> + <span><input name="xTicker" type="radio" ng-model="reportRunJson.barChartOptions.minimizeXAxisTickers" data-ng-value="false"/>No</span> + </div><BR> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Is Time Axis?</label><BR> + <span><input name="timeAxis" type="radio" ng-model="reportRunJson.barChartOptions.timeAxis" data-ng-value="true"/>Yes</span> + <span><input name="timeAxis" type="radio" ng-model="reportRunJson.barChartOptions.timeAxis" data-ng-value="false"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Log Scale (Y Axis)</label><BR> + <span><input type="checkbox" ng-model="reportRunJson.barChartOptions.yAxisLogScale" att-checkbox data-ng-value="true"></span> + + </div> + </div> + + </accordion-group> +</accordion> +</div> + + <div ng-show="reportRunJson.chartTypeJSON.value=='TimeSeriesChart'"> + <!-- <div class="fn-ebz-text-label"><b>Time Series Chart Options</b></div><BR> --> + <accordion close-others="true" css="att-accordion--no-box"> + <accordion-group id="accTimeChart" heading="Time Series Chart Options" child-length="10"> + + <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> + <div style="margin-left:5px"> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Render as</label><BR> + <span><input name="renderAs" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.lineChartRenderer" value="line"/>Line</span> + <span><input name="orient" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.lineChartRenderer" value="area"/>Area</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">X Axis Label</label><BR> + <span><input type="checkbox" ng-model="reportRunJson.timeSeriesChartOptions.showXAxisLabel" att-checkbox data-ng-value="true"></span> + </div><BR> + + <div class="fn-ebz-container" style="position:relative;bottom:10px;"> + <label class="fn-ebz-text-label">X Axis <br>Tickers</label><BR> + <span style="position:relative;top:10px;"><input type="checkbox" ng-model="reportRunJson.timeSeriesChartOptions.addXAxisTicker" att-checkbox data-ng-value="true"></span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:20px;"> + <label class="fn-ebz-text-label">Is Time Axis?</label><BR> + <span><input name="timeAxisChart" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.nonTimeAxis" data-ng-value="true"/>Yes</span> + <span><input name="timeAxisChart" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.nonTimeAxis" data-ng-value="false"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Multi Series?</label><BR> + <span><input name="mSeries" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.multiSeries" data-ng-value="true"/>Yes</span> + <span><input name="mSeries" type="radio" ng-model="reportRunJson.timeSeriesChartOptions.multiSeries" data-ng-value="false"/>No</span> + </div> + </div> + </div> + + </accordion-group> + </accordion> + + </div> + + <div ng-show="reportRunJson.chartTypeJSON.value=='FlexTimeChart'"> + + + <accordion close-others="true" css="att-accordion--no-box"> + <accordion-group id="accFlexTimeChart" heading="Flex Time Series Chart Options" child-length="10"> + + <!-- <div class="fn-ebz-text-label"><b>Flex Time Series Chart Options</b></div><BR> --> + <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> + <div style="margin-left:5px"> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Zoom-In Window</label><BR> + <span><input type="text" name="zWindow" only-digits maxlength=3 ng-model="reportRunJson.flexTimeSeriesChartOptions.zoomIn"></span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Time Axis Type</label><BR> + <span><input name="timeAxisType" type="radio" ng-model="reportRunJson.flexTimeSeriesChartOptions.timeAxisType" value="weekly"/>Weekly</span> + <span><input name="timeAxisType" type="radio" ng-model="reportRunJson.flexTimeSeriesChartOptions.timeAxisType" value="daily"/>Daily</span> + <span><input name="timeAxisType" type="radio" ng-model="reportRunJson.flexTimeSeriesChartOptions.timeAxisType" value="hourly"/>Hourly</span> + <span><input name="timeAxisType" type="radio" ng-model="reportRunJson.flexTimeSeriesChartOptions.timeAxisType" value="30min"/>30 Min</span> + </div> + </div> + </div> + </accordion-group> + </accordion> + + </div> + + + + + + + + <!-- <div class="fn-ebz-text-label"><b>Common Options</b></div><BR> --> + + <accordion close-others="true" css="att-accordion--no-box"> + <accordion-group id="accCommonOptions" heading="Common Options" child-length="10"> + + <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> + <div style="margin-left:5px"> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Legend Angle</label><BR> + <span><input name="langle" type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" value="up45"/>up 45°</span> + <span><input name="langle" type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" value="up90"/>up 90°</span> + <span><input name="langle" type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" value="down45"/>down 45°</span> + <span><input name="langle" type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" value="down90"/>down 90°</span> + <span><input name="langle" type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" value="standard"/>Standard</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:15px;"> + <label class="fn-ebz-text-label">Legend Position</label><BR> + <span><input name="lgPosition" type="radio" ng-model="reportRunJson.commonChartOptions.legendPosition" value="top"/>Top</span> + <span><input name="lgPosition" type="radio" ng-model="reportRunJson.commonChartOptions.legendPosition" value="bottom"/>Bottom</span> + </div><BR> + + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Legend</label><BR> + <span><input name="lgd" type="radio" ng-model="reportRunJson.commonChartOptions.hideLegend" data-ng-value="false"/>Yes</span> + <span><input name="lgd" type="radio" ng-model="reportRunJson.commonChartOptions.hideLegend" data-ng-value="true"/>No</span> + </div> + + <div class="fn-ebz-container" style="position:relative;margin:10px;"> + <label class="fn-ebz-text-label">Animation</label><BR> + <span><input name="anmtate" type="radio" ng-model="reportRunJson.commonChartOptions.animateAnimatedChart" data-ng-value="true" />Yes</span> + <span><input name="anmtate" type="radio" ng-model="reportRunJson.commonChartOptions.animateAnimatedChart" data-ng-value="false"/>No</span> + </div><BR> + + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Top Margin</label><BR> + <input type="text" name="reportRunJson.commonChartOptions.topMargin" only-digits maxlength=3 ng-model="reportRunJson.commonChartOptions.topMargin" style="width:210px"/> + </div> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Bottom Margin</label><BR> + <input type="text" name="reportRunJson.commonChartOptions.bottomMargin" only-digits maxlength=3 ng-model="reportRunJson.commonChartOptions.bottomMargin" style="width:210px"/> + </div> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Left Margin</label><BR> + <input type="text" name="reportRunJson.commonChartOptions.leftMargin" only-digits maxlength=3 ng-model="reportRunJson.commonChartOptions.leftMargin" style="width:210px"/> + </div> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Right Margin</label><BR> + <input type="text" name="reportRunJson.commonChartOptions.rightMargin" only-digits maxlength=3 ng-model="reportRunJson.commonChartOptions.rightMargin" style="width:210px"> + </div><BR> + </div> + </div> + </accordion-group> +</accordion> + <br/><br/> + <a href="javascript:void(0)" att-button btn-type="primary" att-accessibility-click="13,32" ng-click="saveChartData();">Save</a> + <a href="report#/report_run/c_master={{reportRunJson.reportID}}&refresh=Y" att-button btn-type="primary" att-accessibility-click="13,32">Run</a> +</div> + +<div> + <b2b-expanders class="mpc-expanders" is-open="additionalOptionOpen"> + <b2b-expander-heading> + <div class="row"> + <div class="span6"> + <div class="heading-medium b2b-blue" ng-class=" { 'b2b-toggle-header-active': !additionalOptionOpen, 'b2b-toggle-header-inactive': additionalOptionOpen } ">Additional Options</div> + <p class="p-small"> + </p> + </div> + <div style="position: absolute;right: 250px;" class="span1"> + <i class="pull-right b2b-toggle-header-icon" b2b-expander-toggle b2b-accessibility-click="13,32" expand-icon="icon-primary-collapsed" collapse-icon="icon-primary-expanded" tabindex="0" aria-posinset="1" aria-setsize="2"></i> + </div> + </div> + </b2b-expander-heading> + <b2b-expander-body> + <div> +<!-- <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> --> +<!-- <div style="margin-left:0px"> + + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Primary Axis Label</label><BR> + <input type="text" name="prAxis" maxlength=50 ng-model="reportRunJson.primaryAxisLabel" style="width:210px"/> + </div> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Secondary Axis Label</label><BR> + <input type="text" name="secAxis" maxlength=75 ng-model="reportRunJson.secondaryAxisLabel" style="width:210px"/> + </div> + <BR> + <div class="fn-ebz-container" > + <label class="fn-ebz-text-label">Range Axis Minimum Range</label><BR> + <input type="text" name="rAxisMinRange" only-digits ng-model="reportRunJson.minRange" style="width:210px"/> + </div> + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Maximum Range</label><BR> + <input type="text" name="rAxisMaxRange" only-digits ng-model="reportRunJson.maxRange" ng-maxLength="35" style="width:210px"/> + </div><BR> + + </div> --> + +<div id="RangeTable"> +<table> + <thead> + <tr> + <th width="30%">Primary Axis Label</th> + <th width="30%">Secondary Axis Label</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td> + <input type="text" name="primaryAxisLabel" ng-model="reportRunJson.primaryAxisLabel" style="width:200px;"> + </td> + <td> + <input type="text" name="secondaryAxisLabel" ng-model="reportRunJson.secondaryAxisLabel" style="width:200px;"> + </td> + </tr> + </tbody> +</table> +<table> + <thead> + <tr> + <th width="30%">Range Axis Minimum Range</th> + <th width="30%">Maximum Range</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <td> + <input type="text" name="minRange" ng-model="reportRunJson.minRange" style="width:200px;"> + </td> + <td> + <input type="text" name="maxRange" ng-model="reportRunJson.maxRange" style="width:200px;"> + </td> + </tr> + </tbody> +</table> +</div> + </div> + </b2b-expander-body> + </b2b-expanders> + + <b2b-expanders class="mpc-expanders" is-open="commonOptionOpen"> + <b2b-expander-heading> + <div class="row"> + <div class="span6"> + <div class="heading-medium b2b-blue" ng-class=" { 'b2b-toggle-header-active': !commonOptionOpen, 'b2b-toggle-header-inactive': commonOptionOpen } ">Common Options</div> + <p class="p-small"> + </p> + </div> + <div style="position: absolute;right: 250px;" class="span1"> + <i class="pull-right b2b-toggle-header-icon" b2b-expander-toggle b2b-accessibility-click="13,32" expand-icon="icon-primary-collapsed" collapse-icon="icon-primary-expanded" tabindex="0" aria-posinset="1" aria-setsize="2"></i> + </div> + </div> + </b2b-expander-heading> + <b2b-expander-body> + <div > + <div> + <div style="border:2px;border-style:solid;border-color:#808080;margin-bottom:9px"> + <div style="margin-left:0px"> + <table> + <thead> + <tr> + <th>Legend Angle</th> + <th>Legend Position</th> + </tr> + </thead> + <tbody> + <tr> + <fieldset role="radiogroup" radio-group-accessibility> + <td> + <label for="optionsRadios1" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" id="optionsRadios1" name="optionsRadio1" value="up45"> + <i class="skin"></i> + <span>up 45°</span> + </label> + <label for="optionsRadios2" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" id="optionsRadios2" name="optionsRadio2" value="up90"> + <i class="skin"></i> + <span>up 90°</span> + </label> + <label for="optionsRadios3" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" id="optionsRadios3" name="optionsRadio3" value="down45"> + <i class="skin"></i> + <span>down 45°</span> + </label> + <label for="optionsRadios4444" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" id="optionsRadios4444" name="optionsRadio44" value="down90"> + <i class="skin"></i> + <span>down 90°</span> + </label> + <label for="optionsRadios5555" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendLabelAngle" id="optionsRadios5555" name="optionsRadio55" value="Standard"> + <i class="skin"></i> + <span>Standard</span> + </label> + </td> + </fieldset> + + <fieldset role="radiogroup" radio-group-accessibility> + <td> + <label for="optionsRadiosTop" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendPosition" id="optionsRadiosTop" name="optionsRadioTop" value="Top"> + <i class="skin"></i> + <span>Top</span> + </label> + <label for="optionsRadiosBottom" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.legendPosition" id="optionsRadiosBottom" name="optionsRadioBottom" value="Bottom"> + <i class="skin"></i> + <span>Bottom</span> + </label> + </td> + </fieldset> + </tr> + </tbody> + </table> + + + <table> + <thead> + <tr> + <th width="20%">Legend</th> + <th width="20%">Animation</th> + <th></th> + </tr> + </thead> + <tbody> + <tr> + <fieldset role="radiogroup" radio-group-accessibility> + <td> + <label for="optionsRadiosHideLegendFalse" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.hideLegend" id="optionsRadiosHideLegendFalse" name="optionsRadiosHideLegendFalse" value="false"> + <i class="skin"></i> + <span>Yes</span> + </label> + <label for="optionsRadiosHideLegendTrue" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.hideLegend" id="optionsRadiosHideLegendTrue" name="optionsRadiosHideLegendTrue" value="true"> + <i class="skin"></i> + <span>No</span> + </label> + </td> + </fieldset> + + <fieldset role="radiogroup" radio-group-accessibility> + <td> + <label for="optionsRadiosAnimateChartTrue" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.animateAnimatedChart" id="optionsRadiosAnimateChartTrue" name="optionsRadiosAnimateChartTrue" value="true"> + <i class="skin"></i> + <span>Yes</span> + </label> + <label for="optionsRadiosAnimateChartFalse" class="radio"> + <input type="radio" ng-model="reportRunJson.commonChartOptions.animateAnimatedChart" id="optionsRadiosAnimateChartFalse" name="optionsRadiosAnimateChartFalse" value="false"> + <i class="skin"></i> + <span>No</span> + </label> + </td> + </fieldset> + <td> + </td> + </tr> + </tbody> + </table> + + <table> + <thead> + <tr> + <th width="25%">Top Margin</th> + <th width="25%">Bottom Margin</th> + <th width="25%">Left Margin</th> + <th width="25%">Right Margin</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <input type="text" name="topMargin" ng-model="reportRunJson.commonChartOptions.topMargin" style="width:200px;"> + </td> + <td> + <input type="text" name="bottomMargin" ng-model="reportRunJson.commonChartOptions.bottomMargin" style="width:200px;"> + </td> + <td> + <input type="text" name="leftMargin" ng-model="reportRunJson.commonChartOptions.leftMargin" style="width:200px;"> + </td> + <td> + <input type="text" name="rightMargin" ng-model="reportRunJson.commonChartOptions.rightMargin" style="width:200px;"> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> + </b2b-expander-body> + </b2b-expanders> + +</div> +</div> + <div> + <button type="submit" style="width: 90px; height:35px;margin-top:20px; margin-left:5px;" class="btn btn-alt btn-small" ng-click="saveChartData();">Save</button> + <a href="report#/report_run/c_master={{reportRunJson.reportID}}&refresh=Y"> + <button type="submit" style="width: 90px; height:35px;margin-top:20px; margin-left:5px;" class="btn btn-alt btn-small">Run</button> + </a> + </div> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-run.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-run.html index 82b7e878..70b24925 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-run.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/report-run.html @@ -55,23 +55,28 @@ body { } </style> -<div id="page-content"> - <!-- <h1 class="heading2">{{reportData.reportName}} --> - <h1 class="heading-page">{{reportData.reportHeading}} - <a ng-href="{{reportEditURL}}" ng-show="reportData.allowEdit" class="icon-edit" style="font-size:20px;"></a> - - <a ng-href="{{reportChartURL}}" ng-show="reportData.allowEdit && reportData.chartWizardAvailable" class="icon-bar-chart-vertical" style="font-size:20px;"></a> - <span ng-show="reportData.allowEdit && showFormFields" ><input type="checkbox" ng-model="showFormFieldIds" ng-true-value="Hide_IDs" ng-false-value="Show_IDs" att-toggle-main></span> - - <!-- <a ng-href="{{reportChartURLNew}}" ng-show="reportData.allowEdit" class="icon-bar-chart-horizontal" style="font-size:20px;"></a> --> - </h1> - +<div id="page-content"> + <div style="width:100%; overflow:hidden;"> + <div style="float:left;"><h1 class="heading-page">{{reportData.reportHeading}}</h1></div> + <div style="float:left; margin-left: 10px; margin-right: 10px;"> + <a style="font-size:180%;" ng-href="report#/report_wizard/{{reportData.reportID}}" class="icon-misc-pen" ng-show="reportData.allowEdit"></a> + </div> + <div style="float:left; margin-left: 5px; margin-right: 10px;"> + <a style="font-size:180%;" ng-href="report#/report_chart/{{reportData.reportID}}" class="icon-misc-piechart" ng-show="reportData.allowEdit"></a> + </div> + + <div ng-show ="reportData.allowEdit && showFormFields" style="margin-top:5px;"> + <label for="checkbox1" class="checkbox"> + <input id="checkbox1" type="checkbox" ng-model="showFormFieldId.value" /><i class="skin"></i><span>show IDs</span> + </label> + </div> + </div> <h3 class="heading3">{{reportData.reportSubTitle}} </h3> <div ng-show="isInProgress" style="font-size:50px;color:#2ca02c">Loading...</div> <form ng-show="showFormFields" class="row section-row" style="margin: 10px"> - <form-builder ng-form-fields="reportData.formFieldList" ng-show-field-id="showFormFieldIds" ng-num-form-cols="reportData.numFormCols" ng-model="formFieldSelectedValues" ng-trigger-method="triggerOtherFormFields"></form-builder> + <form-builder ng-form-fields="reportData.formFieldList" ng-show-field-id="showFormFieldId.value" ng-num-form-cols="reportData.numFormCols" ng-model="formFieldSelectedValues" ng-trigger-method="triggerOtherFormFields"></form-builder> <br><br> <button type="submit" style="width: 90px; height:35px;margin-top:20px; margin-left:5px;" class="btn btn-alt btn-small" ng-click="runReport()">Run</button> </form> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html index 5767afb2..6665dcf2 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2-reports/wz_steps/report-step.html @@ -22,7 +22,6 @@ <h1 class="heading-page">Report Wizard</h1> - <!-- <h1 id="tabs---promo">Tabs - Promo</h1> <button class="btn btn-secondary btn-small" ng-click="gTabs[3].disabled = !gTabs[3].disabled">{{gTabs[3].disabled?'Enable':'Disable'}}</button> - Toggle 4th (Features) Tab <br><br> --> @@ -34,6 +33,13 @@ </b2b-tab> </b2b-tabset> <br><br> +<div ng-show="showLoader" class="span loader-container"> + <i class="icon-primary-spinner" role="img" + aria-label="Please wait while we load your content"></i> +</div> + +<div ng-hide="showLoader"> + <!-- <select ng-model="prj" ng-options="item.projectName for item in allProjects track by item.id" data-ng-init="getAllProjects()" ng-change="selectAction();"> @@ -92,7 +98,7 @@ <div id="stepView"> <!-- <step-form ng-model="jsonSrcName" renderForm="changeme"></step-form> --> </div> - +</div> <!-- <select id="dropdown1" name="dropdown1" b2b-dropdown placeholder-text="Select" ng-model="selectedReportType.value"> <option b2b-dropdown-list option-repeat="d in reportTypes" value="{{d.value}}">{{d.text}}</option> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html index ef847518..5c0e2bcc 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/scripts/DS2-view-models/ds2Header.html @@ -1,69 +1,69 @@ -<div style="position:relative;width: 100%;top: 0px;left: 0;background-color: #222;z-index:9999"> - <header class="b2b-header-tabs" b2b-header-responsive ng-show="{{showHeader}}"> - <ul class="header__items" role="navigation"> - <li class="header__item icon__item" tabindex="0"> - - <!-- - -TODO: needs to be this icon but is not availble - --> - - <span class="globe-text">ECOMP Portal</span> - </li> - <li b2b-header-menu class="header__item b2b-headermenu" ng-repeat="item in menuItems" role="presentation"> - <a href="#" class="menu__item" role="menuitem"></a> - <div class="header-secondary-wrapper"> - <ul class="header-secondary" role="menu"> - <li class="header-subitem" b2b-header-submenu ng-repeat="i in item.subitems" role="presentation"> - <a href="#" class="menu__item" aria-haspopup="{{i.links ? true:false}}" role="menuitem">{{i.value}}</a> - <div class="header-tertiary-wrapper" ng-if="i.links"> - <ul class="header-tertiary" role="menu"> - <li b2b-header-tertiarymenu ng-repeat="link in i.links" role="presentation"> - <label>{{link.title}}</label> - <div b2b-tertiary-link ng-repeat="title in link.value"> - <a href="{{link.href}}" class="header-tertiaryitem" ng-if="!title.subitems" aria-haspopup="false" role="menuitem"><span class="b2b-label-hide">{{link.title}}</span>{{title.title}}</a> - <a href="{{link.href}}" class="header-tertiaryitem" b2b-header-togglemenu ng-if="title.subitems" aria-haspopup="true" role="menuitem"><span class="b2b-label-hide">{{link.title}}</span>{{title.title}}</a> - <ul class="header-quarternary" role="menu" ng-if="title.subitems"> - <li b2b-header-quarternarymenu role="presentation"> - <a href="{{nav.href}}" ng-repeat="nav in title.subitems" role="menuitem" aria-haspopup="true"> - {{nav.title}} - </a> - </li> - </ul> - </div> - </li> - </ul> - </div> - </li> - </ul> - </div> - </li> - <!--<li class="header__item profile" b2b-header-responsive>--> - <li class="header__item profile"> - - <label ng-click="showInfo = !showInfo" class="headerUserName" tabindex="0" ddh-accessibility-click="13,32"> - <!-- Temporarily copied the font file from DS1 to local directory(as DS2 component is not working yet) --> - <!-- <div class="icon-user-small login-snippet-icon"></div> --> - <i class="icon-user" style="color:#FFFFFF;"></i> - <span class="header_profile">{{userFirstName}}</span> - </label> - - <div class="profile-info" ng-class="{'open': showInfo,'': !showInfo}"> - <h6 id="example_source_john-smith">{{userProfile.fullName}}</h6> - <label for='email'>Email</label> <span id='email'>{{userProfile.email}}</span> - <label for='profileId'>Organization User ID</label> <span id='profileId'>{{userProfile.orgUserId}}</span> - <!-- <label for='comp'>Company</label> <span id='comp'>{{userProfile.serviceProviderName}}</span> --> - <i class="caret"></i> - <!-- <p> - <a href="{{userProfile.userProfileUrl}}" style="float: left">My Profile</a> - <a href="{{userProfile.companyProfileUrl}}" style="float: right">Company Profile</a> - </p> --> - <p> - <a class="btn btn-alt" style="float: right" href="logout.htm">Log Out</a> - </p> - </div> - <div style="width:250px;"></div> - </li> - </ul> - </header> - - </div>
\ No newline at end of file +<div class="header-main-div" > + <header class="b2b-header-tabs" b2b-header-responsive ng-show="{{showHeader}}"> + <ul class="header__items" role="navigation"> + <li class="header__item icon__item" tabindex="0" ng-click="returnToPortal()"> + <span class="icon-primary-att-globe"></span> + <span class="globe-text">ECOMP Portal</span> + </li> + <li b2b-header-menu class="header__item b2b-headermenu" ng-repeat="item in menuItems" role="presentation"> + <a href="javascript:void(0);" class="menu__item" role="menuitem" ng-bind="item.text"></a> + <div class="header-secondary-wrapper"> + <ul class="header-secondary" role="menu"> + <li class="header-subitem" b2b-header-submenu + ng-repeat="secondLevMenu in item.children" role="presentation"> + <a href="{{secondLevMenu.action}}" ng-if="secondLevMenu.childMenus.length==0" class="menu__item" role="menuitem" ng-bind="secondLevMenu.label"></a> + <a href="javascript:void(0);" ng-if="secondLevMenu.childMenus.length!=0" class="menu__item" role="menuitem" ng-bind="secondLevMenu.label" ></a> + <div class="header-tertiary-wrapper"> + <ul class="header-tertiary" role="menu"> + <li b2b-header-tertiarymenu ng-repeat="thirdLevMenu in secondLevMenu.childMenus"role="presentation"> + <a href="{{thirdLevMenu.action}}"role="menuitem" aria-haspopup="true" ng-bind="thirdLevMenu.label"></a> + </li> + </ul> + </div> + </li> + </ul> + </div></li> + <li class="header__item profile"> + <b2b-flyout> + <div b2b-flyout-toggler class="header-profile" > + <div class="icon-people-oneperson" id="header-user-icon" tabindex="0" b2b-accessibility-click="13,32" aria-label="notifications" aria-haspopup="true" aria-expanded="{{flyoutOpened}}" role="button"></div> + <div id="login-snippet-text" class="login-snippet-text">{{userFirstName}}</div> + </div> + <b2b-flyout-content horizontal-placement="center" vertical-placement="below"> + <div> + <div id="reg-header-snippet"> + <div tabindex="0" class="reg-profileDetails" id="reg-profiledetails-id"> + <ul class="reg-Details-table"> + <li> + <div class="reg-userName-table"> + <div id="reg-userName-table-row"> + <div id="reg-userName-table-cell"> + <h3 ng-bind="userName"> </h3> + <span> </span> + </div> + </div> + </div> + </li> + <li><div class="reg-userEmail-label"><span class="reg-userEmail-label-spn" style=font-weight:bold>Email<span class="visuallyhidden">: + </span></span></div></li> + <li><div class="reg-userEmail-value"><span class="reg-userEmail-value-spn"> + {{userEmail}}</span></div></li> + <li> </li> + <li><div class="reg-userRole-label"><span class="reg-userRole-label-spn" style=font-weight:bold> + User Id<span class="visuallyhidden">:</span></span></div></li> + <li><div class="reg-userRole-value"><span class="reg-userRole-value-spn"> + {{userId}}<span class="visuallyhidden"></span></span></div></li> + </ul> + <div id="reg-logout-div" style="padding-top: 8px"> + <a href="logout.htm" id="allLogout" class="btn btn-alt btn-small"> + Log out + </a> + </div> + </div> + </div> + </div> + </b2b-flyout-content> + </b2b-flyout> + </ul> + </header> +</div> diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/styles/ecomp.css b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/styles/ecomp.css index 7b659e9c..bf5e4002 100644 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/styles/ecomp.css +++ b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/app/fusion/styles/ecomp.css @@ -11,6 +11,8 @@ .header-container { width: 100%; float: left; + position: fixed; + z-index: 100; } .menu-container { float: left; @@ -58,12 +60,28 @@ display:none; } +#header-user-icon{ + font-size:25px; + color:#FFFFFF; + +} +.header-tertiary-wrapper{ + top:52px; +} +.header-profile div{ + display:inline-block; +} +.b2b-header-tabs .header-secondary{; + width: 97%; + height:42px; +} +.b2b-header-tabs .header-tertiary{ + width:97%; +} -/* .icon-accordion-plus, .icon-accordion-minus { - float: right; - line-height: 40px; +.b2b-header-tabs .header-secondary .header-subitem a.menu__item{ + padding: 10px 0; } - */ .b2b-ln-icon-fix-pos{ margin-top:10px; } @@ -133,3 +151,16 @@ p,a{ .b2b-footer-wrapper .copyright-text-sdk a:hover { text-decoration: none; } + +.b2b-header-tabs .header__items{ + width:97%; +} + +.header-main-div{ + position: fixed; + width: 100%; + top: 0px; + left: 0; + background-color: #222; + z-index: 9999; +}
\ No newline at end of file diff --git a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/static/fusion/raptor/ebz/date_time_picker.js b/ecomp-sdk/epsdk-app-overlay/src/main/webapp/static/fusion/raptor/ebz/date_time_picker.js deleted file mode 100644 index ae69a913..00000000 --- a/ecomp-sdk/epsdk-app-overlay/src/main/webapp/static/fusion/raptor/ebz/date_time_picker.js +++ /dev/null @@ -1,277 +0,0 @@ - String.prototype.paddingLeft = function (paddingValue) { - return String(paddingValue + this).slice(-paddingValue.length); - }; - -angular.module("app/scripts/ng_js_att_tpls/datepicker/dateTimePickerPopup.html", []).run(["$templateCache", function($templateCache) { - $templateCache.put("app/scripts/ng_js_att_tpls/datepicker/dateTimePickerPopup.html", - "<div class=\"calendar\">\n" + - " <div class=\"box\" ng-class=\"{'active': isOpen}\">\n" + - " <span ng-transclude></span>\n" + - - " <i class=\"calendar-icon\" tabindex=\"0\" att-accessibility-click=\"13,32\" ng-click=\"toggle()\" alt=\"Calendar Icon\" ></i>\n" + - " </div>\n" + - - '<div class="datetimepicker datepicker-wrapper datepicker-wrapper-display-none" style="z-index:10000;width:292px" ng-style="{display: (isOpen && \'block\') || \'none\'}" aria-hidden=\"false\" role=\"dialog\" tabindex=\"-1\">' - + '<div class="datetimepicker-content">' - - + '<ul class="tabsbid--small">' - + '<li class="tabsbid__item" ng-class="{\'tabsbid__item--active\':tab==\'date\'}" ng-click="setTab(\'date\')">' - + '<a class="tabsbid__item-link" href="" tabindex="0" att-accessibility-click="32,13">Date</a>' - + '</li>' - + '<li class="tabsbid__item " ng-class="{\'tabsbid__item--active\':tab==\'time\'}" ng-click="setTab(\'time\')">' - + '<a class="tabsbid__item-link" href="" tabindex="0" att-accessibility-click="32,13">Time</a>' - + '</li>' - + '</ul>' - - + '<div class="datetimepicker-section datetimepicker-date-section" ng-if="tab==\'date\'">' - + '<div class="datetimepicker-month">' - +'<div class="icons-list left" style="margin:5px;cursor: pointer;" data-size="medium" ng-click="addMonth(-1)"><i class="icon-arrow-left-circle" ng-class="{\'disabled\': disablePrev}" alt="Left Arrow"></i></div>' - +'<div class="icons-list right" style="margin:5px;cursor: pointer;" data-size="medium" ng-click="addMonth(1)"><i class="icon-arrow-right-circle" ng-class="{\'disabled\': disableNext}" alt="Right Arrow"></i></div>' - + '<div class="datetimepicker-current-month">{{displayMonth}} {{year}}</div>' - + '</div>' - + '<div class="datetimepicker-calendar">' - + '<div class="datetimepicker-day" ng-repeat="day in dayNames">{{day | limitTo: 1}}</div>' - + '<div class="datetimepicker-day datetimepicker-leading-day" ng-repeat="d in days.leadingDays">{{d}}</div>' - + '<div class="datetimepicker-day datetimepicker-active-day" ng-class="{\'selected\':day==d}" ng-click="setDay(d)" ng-repeat="d in days.days">{{d}}</div>' - + '<div class="datetimepicker-day datetimepicker-trailing-day" ng-repeat="d in days.trailingDays">{{d}}</div>' - + '</div>' - + '</div>' - - + '<div class="datetimepicker-section datetimepicker-date-time" ng-if="tab==\'time\'">' - + '<div class="datetimepicker-month">' - + '<div class="datetimepicker-current-month">{{hour}}:{{minute}}</div>' - + '</div>' - + '<div class="time-circle-outer">' - + '<div class="time-meridian time-left" ng-click="setMeridian(\'AM\')" ng-class="{\'selected\':meridian==\'AM\'}">AM</div>' - + '<div class="time-meridian time-right" ng-click="setMeridian(\'PM\')" ng-class="{\'selected\':meridian==\'PM\'}">PM</div>' - + '<div class="time-circle-center"></div>' - + '<div class="time-circle-hand time-circle-hand-large deg-{{minute/5}}" ></div>' - + '<div class="time time-{{$index+1}}" ng-class="{\'selected\':minute==time}" ng-click="setMinutes(time)" ng-repeat="time in [5,10,15,20,25,30,35,40,45,50,55,0]">{{time}}</div>' - + '<div class="time-circle-inner">' - + '<div class="time-circle-hand deg-{{hour}}" ></div>' - + '<div class="time time-{{$index+1}}" ng-class="{\'selected\':hour==time}" ng-click="setHour(time)" ng-repeat="time in [1,2,3,4,5,6,7,8,9,10,11,12]">{{time}}</div>' - + '</div>' - + '</div>' - + '</div>' - - + '</div>' - + '</div>' + - - "</div>\n" + - ""); -}]); - -angular.module('quantum').requires.push("app/scripts/ng_js_att_tpls/datepicker/dateTimePickerPopup.html"); - -angular.module('quantum') -.directive('dateTimePickerPopup', ['$document', 'datepickerService', '$isElement', '$documentBind', function($document, datepickerService, $isElement, $documentBind) { - var link = function (scope, elem, attr) { - datepickerService.bindScope(attr, scope); - - scope.isOpen = false; - - var toggle = scope.toggle = function (show) { - if(show === true || show === false) { - scope.isOpen = show; - } else { - scope.isOpen = !scope.isOpen; - } - }; - -// scope.$watch('current', function () { -// toggle(false); -// }); - - var outsideClick = function (e) { - var isElement = $isElement(angular.element(e.target), elem, $document); - if(!isElement) { - toggle(false); - scope.$apply(); - } - }; - - $documentBind.click('isOpen', outsideClick, scope); - - scope.tabs = [{ - title: 'DATE', - url: '#option1' - }, { - title: 'TIME', - url: '#option2', - selected: true - } - ]; - - //-------------------------------------- - - scope.state = false; - scope.tab = 'time'; - scope.setTab = function(tab){ - scope.tab = tab; - }; - scope.config = { - modal: true, - color:'rgba(5, 116, 172, 1)', - backgroundColor: 'rgba(0,0,0,0.75)' - }; - scope.months = ["January","February","March","April","May","June","July","Augusta","September","October","November","December"]; - scope.dayNames = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; - scope.$watch('current',function(value){ - var m; - if(value) - m = moment(value); - else - m = moment(); - m = m.minute(5*Math.ceil(m.minute()/5)); - scope.display = m.format('YYYY-MM-DD hh:mm A'); - scope.days = scope.getDaysInMonth(m.year(),m.month()); - scope.minute = m.minute(); - scope.meridian = m.format('A'); - scope.hour = scope.meridian == 'PM' ? m.hour() - 12: m.hour(); - if(scope.hour==0) scope.hour = 12; - scope.datePreview = m.format('YYYY-MM-DD'); - scope.timePreview = m.format('hh:mm A'); - scope.displayMonth = scope.months[m.month()]; - scope.day = m.date(); - scope.year = m.year(); - - }); - - scope.setDay = function(date){ - scope.current = moment(scope.current).date(date).toDate(); - }; - - scope.setState = function(state){ - scope.state = false; - }; - - scope.setHour = function(hour){ - if(scope.meridian == 'PM' && hour < 12) - hour = hour + 12; - if(scope.meridian == 'AM' && hour == 12) - hour = hour - 12; - scope.current = moment(scope.current).hour(hour).toDate(); - }; - - scope.setMeridian = function(meridian){ - var m = moment(scope.current); - - if(meridian == 'AM'){ - if(m.hours()>=12){ - m = m.add(-12,'hours'); - scope.current = m.toDate(); - } - }else{ - if(m.hours()<12){ - m = m.add(12,'hours'); - scope.current = m.toDate(); - } - } - }; - - scope.setMinutes = function(minutes){ - scope.current = moment(scope.current).minute(minutes).toDate(); - }; - - var days = []; - for(var i=1;i<=31;i++){ - days.push(i); - } - scope.getDaysInMonth = function(year,month){ - var firstDayOfWeek = 0; - var firstDayOfMonth = new Date(year, month, 1), - lastDayOfMonth = new Date(year, month + 1, 0), - lastDayOfPreviousMonth = new Date(year, month, 0), - daysInMonth = lastDayOfMonth.getDate(), - daysInLastMonth = lastDayOfPreviousMonth.getDate(), - dayOfWeek = firstDayOfMonth.getDay(), - leadingDays = (dayOfWeek - firstDayOfWeek + 7) % 7 || 7, - trailingDays = days.slice(0, 6 * 7 - (leadingDays + daysInMonth)); - if (trailingDays.length > 7) { - trailingDays = trailingDays.slice(0, trailingDays.length-7); - } - - return { - year: year, - month: month, - days: days.slice(0, daysInMonth), - leadingDays: days.slice(- leadingDays - (31 - daysInLastMonth), daysInLastMonth), - trailingDays: trailingDays - }; - }; - - scope.addMonth = function(increment){ - scope.current = moment(scope.current).add(increment,'months').toDate(); - }; - - }; - - return { - restrict: 'EA', - replace: true, - transclude: true, - templateUrl: 'app/scripts/ng_js_att_tpls/datepicker/dateTimePickerPopup.html', - scope: { - current: "=current" - }, - compile: function (elem, attr) { - var wrapperElement = elem.find('span').eq(1); - wrapperElement.attr('current', 'current'); - datepickerService.setAttributes(attr, wrapperElement); - - return link; - } - }; -}]) -.directive('attDateTimePicker', ['$log', function($log) { - return { - restrict: 'A', - require: 'ngModel', - scope: {}, - controller: ['$scope', '$element', '$attrs', '$compile', 'datepickerConfig', 'datepickerService', function($scope, $element, $attrs, $compile, datepickerConfig, datepickerService) { - var dateFormatString = angular.isDefined($attrs.dateFormat) ? $scope.$parent.$eval($attrs.dateFormat) : datepickerConfig.dateFormat; - var selectedDateMessage = '<div class="sr-focus hidden-spoken" tabindex="-1">the date you selected is {{$parent.current | date : \'' + dateFormatString + '\'}}</div>'; - - $element.removeAttr('att-date-time-picker'); - $element.removeAttr('ng-model'); - $element.attr('ng-model', '$parent.current'); - $element.attr('aria-describedby', 'datepicker'); - $element.attr('format-date', dateFormatString); - $element.attr('att-input-deny', '[^0-9ampAMP \/:-]'); - $element.attr('maxlength', 20); - - var wrapperElement = angular.element('<div></div>'); - wrapperElement.attr('date-time-picker-popup', ''); - wrapperElement.attr('current', 'current'); - - datepickerService.setAttributes($attrs, wrapperElement); - datepickerService.bindScope($attrs, $scope); - - wrapperElement.html(''); - wrapperElement.append($element.prop('outerHTML')); - if (navigator.userAgent.match(/MSIE 8/) === null) { - wrapperElement.append(selectedDateMessage); - } - var elm = wrapperElement.prop('outerHTML'); - - elm = $compile(elm)($scope); - $element.replaceWith(elm); - }], - link: function(scope, elem, attr, ctrl) { - if (!ctrl) { - // do nothing if no ng-model - $log.error("ng-model is required."); - return; - } - - scope.$watch('current', function(value) { - ctrl.$setViewValue(value); - }); - ctrl.$render = function() { - scope.current = ctrl.$viewValue; - }; - } - }; -}]); - - |