New Optimization Policy
[policy/engine.git] / POLICY-SDK-APP / src / main / webapp / app / policyApp / controller / dictionaryGridController / OptimizationModelDictGridController.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
4  * ================================================================================
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20 app.controller('optimizationModelsDictGridController', function ($scope, PolicyAppService, modalService, $modal){
21     $( "#dialog" ).hide();
22     
23     PolicyAppService.getData('getDictionary/get_OptimizationModelsData').then(function (data) {
24         var j = data;
25         $scope.data = JSON.parse(j.data);
26         console.log($scope.data);
27         $scope.optimizationModelsDictionaryDatas = JSON.parse($scope.data.optimizationModelsDictionaryDatas);
28         console.log($scope.optimizationModelsDictionaryDatas);
29     }, function (error) {
30         console.log("failed");
31     });
32
33     PolicyAppService.getData('get_LockDownData').then(function(data){
34         var j = data;
35         $scope.data = JSON.parse(j.data);
36         $scope.lockdowndata = JSON.parse($scope.data.lockdowndata);
37         if($scope.lockdowndata[0].lockdown == true){
38                 $scope.optimizationModelsDictionaryGrid.columnDefs[0].visible = false;
39                 $scope.gridApi.grid.refresh();
40         }else{
41                 $scope.optimizationModelsDictionaryGrid.columnDefs[0].visible = true;
42                 $scope.gridApi.grid.refresh();
43         }
44     },function(error){
45         console.log("failed");
46     });
47         
48     $scope.optimizationModelsDictionaryGrid = {
49             data : 'optimizationModelsDictionaryDatas',
50             enableFiltering: true,
51                 exporterCsvFilename: 'OptimizationPolicyDictionary.csv',
52                 enableGridMenu: true,
53                 enableSelectAll: true,
54             columnDefs: [{
55                 field: 'id', 
56                 enableFiltering: false, headerCellTemplate: '' +
57                 '<button id=\'New\' ng-click="grid.appScope.createNewOptimizationModelsWindow()" class="btn btn-success">' + 'Create</button>',
58                 cellTemplate:
59                     '<button  type="button"  class="btn btn-danger"  ng-click="grid.appScope.deleteOptimizationModels(row.entity)" ><i class="fa fa-trash-o"></i></button> ',  width: '8%'
60             },{ field: 'modelName', displayName : 'ONAP Optimization Model', sort: { direction: 'asc', priority: 0 }},
61                 { field: 'description' },
62                 { field: 'version', displayName : 'Model Version' },
63                 {field: 'userCreatedBy.userName', displayName : 'Imported By' },
64                 {field: 'dependency', visible: false}, 
65                 {field: 'attributes', visible: false},
66                 {field: 'enumValues', visible: false},
67                 {field: 'ref_attributes',visible: false},
68                 {field: 'sub_attributes', visible: false}
69             ],
70                 exporterMenuPdf: false,
71                 exporterPdfDefaultStyle: {fontSize: 9},
72                 exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
73                 exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'},
74                 exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
75                 exporterPdfFooter: function ( currentPage, pageCount ) {
76                         return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
77                 },
78                 exporterPdfCustomFormatter: function ( docDefinition ) {
79                         docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
80                         docDefinition.styles.footerStyle = { fontSize: 10, bold: true };
81                         return docDefinition;
82                 },
83                 exporterFieldCallback: function(grid, row, col, input) {
84                  if( col.name == 'createdDate' || col.name == 'modifiedDate') {
85                          var date = new Date(input);
86                          return date.toString("yyyy-MM-dd HH:MM:ss a");
87                  } else {
88                          return input;
89                  }
90                 },
91                 exporterPdfOrientation: 'portrait',
92                 exporterPdfPageSize: 'LETTER',
93                 exporterPdfMaxGridWidth: 500,
94                 exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),
95                 onRegisterApi: function(gridApi){
96                         $scope.gridApi = gridApi;
97                 }
98     };
99     
100     $scope.editOptimizationModelName = null;
101     $scope.createNewOptimizationModelsWindow = function(){
102         $scope.editOptimizationModelName = null;
103         var modalInstance = $modal.open({
104                 backdrop: 'static', keyboard: false,
105             templateUrl : 'add_optimizationModel_popup.html',
106             controller: 'editOptimizationModelController',
107             resolve: {
108                 message: function () {
109                     var message = {
110                         optimizationModelsDictionaryDatas: $scope.editOptimizationModelName
111                     };
112                     return message;
113                 }
114             }
115         });
116         modalInstance.result.then(function(response){
117             console.log('response', response);
118             $scope.optimizationModelsDictionaryDatas=response.optimizationModelsDictionaryDatas;
119         });
120     };
121
122     $scope.editOptimizationModelsWindow = function(optimizationModelsDictionaryData) {
123         $scope.editOptimizationModelName = optimizationModelsDictionaryData;
124         var modalInstance = $modal.open({
125                 backdrop: 'static', keyboard: false,
126             templateUrl : 'add_optimizationModel_popup.html',
127             controller: 'editOptimizationModelController',
128             resolve: {
129                 message: function () {
130                     var message = {
131                         optimizationModelsDictionaryData: $scope.editOptimizationModelName
132                     };
133                     return message;
134                 }
135             }
136         });
137         modalInstance.result.then(function(response){
138             console.log('response', response);
139             $scope.optimizationModelsDictionaryDatas = response.optimizationModelsDictionaryDatas;
140         });
141     };
142
143     $scope.deleteOptimizationModels = function(data) {
144         modalService.popupConfirmWin("Confirm","You are about to delete the Optimization Model : "+data.modelName+". Do you want to continue?",
145             function(){
146                 var uuu = "deleteDictionary/oof_dictionary/remove_model";
147                 var postData={data: data};
148                 $.ajax({
149                     type : 'POST',
150                     url : uuu,
151                     dataType: 'json',
152                     contentType: 'application/json',
153                     data: JSON.stringify(postData),
154                     success : function(data){
155                         $scope.$apply(function(){$scope.optimizationModelsDictionaryDatas=data.optimizationModelsDictionaryDatas;});
156                     },
157                     error : function(data){
158                         console.log(data);
159                         modalService.showFailure("Fail","Error while deleting: "+ data.responseText);
160                     }
161                 });
162
163             })
164     };
165
166 });