Add VES Collector GUI
[clamp.git] / src / main / resources / META-INF / resources / designer / scripts / CldsModelService.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License"); 
9  * you may not use this file except in compliance with the License. 
10  * You may obtain a copy of the License at
11  * 
12  * http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software 
15  * distributed under the License is distributed on an "AS IS" BASIS, 
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
17  * See the License for the specific language governing permissions and 
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ===================================================================
21  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23
24 app.service('cldsModelService', ['alertService','$http', '$q', function (alertService,$http, $q) {
25   
26   function checkIfElementType(name){
27       //This will open the methods located in the app.js
28       mapping = {
29           'stringmatch': StringMatchWindow,
30           'tca': TCAWindow,
31           'policy': PolicyWindow,
32           'collector': CollectorsWindow,
33           'vescollector': VesCollectorWindow,
34       };
35
36       key = name.split('_')[0].toLowerCase()
37       if (key in mapping) {
38           mapping[key]();
39       }
40   }
41
42   this.toggleDeploy = function  (uiAction, modelName, controlNamePrefixIn, 
43     bpmnTextIn, propTextIn, svgXmlIn, templateName, typeID, controlNameUuid, modelEventService, deploymentId) {
44      
45     var def = $q.defer();
46     var sets = [];
47     var action = uiAction.toLowerCase();
48    var deployUrl = "/restservices/clds/v1/clds/"+action+"/"+modelName; 
49    var requestData = {name: modelName, 
50     controlNamePrefix: controlNamePrefixIn, 
51     bpmnText: bpmnTextIn, 
52    propText: propTextIn, 
53    imageText:svgXmlIn, 
54    templateName:templateName,
55    typeId:typeID,
56    controlNameUuid: controlNameUuid,
57    event:modelEventService,
58    deploymentId:deploymentId};
59     
60    $http.put(deployUrl,requestData)
61         .success(function(data){ 
62           deploymentId = data.deploymentId;           
63           def.resolve(data);          
64           alertService.alertMessage("Action Successful:"+uiAction,1)
65         })
66         .error(function(data){  
67         alertService.alertMessage("Action Failure:"+uiAction,2)              
68           def.reject("Save Model not successful");
69         });
70         
71       return def.promise;
72   };
73   
74   this.getASDCServices = function(){
75       
76       
77       var def = $q.defer();
78       var sets = [];
79       
80       var svcUrl = "/restservices/clds/v1/clds/sdc/services/";                
81       
82         $http.get(svcUrl)
83         .success(function(data){          
84           def.resolve(data);   
85           
86           
87         })
88         .error(function(data){                
89           def.reject("sdc Services not found");
90           
91         });
92         
93         return def.promise;
94     };
95     
96     
97 this.getASDCService = function(uuid){
98       
99       
100       var def = $q.defer();
101       var sets = [];
102       
103       var svcUrl = "/restservices/clds/v1/clds/sdc/services/" + uuid;                
104       
105         $http.get(svcUrl)
106         .success(function(data){   
107           def.resolve(data);          
108           
109         })
110         .error(function(data){                
111           def.reject("SDC service not found");
112         });
113         
114         return def.promise;
115     };
116     this.getModel = function(modelName){
117       
118       
119       var def = $q.defer();
120       var sets = [];
121       var svcUrl = "/restservices/clds/v1/clds/model/" + modelName;                
122       
123         $http.get(svcUrl)
124         .success(function(data){          
125           def.resolve(data);          
126           
127         })
128         .error(function(data){                
129           def.reject("Open Model not successful");
130         });
131         
132         return def.promise;
133     };
134     this.getSavedModel=function(){
135       
136       var def = $q.defer();
137       var sets = [];
138       
139       var svcUrl = "/restservices/clds/v1/clds/model-names";                
140       
141         $http.get(svcUrl)
142         .success(function(data){          
143           def.resolve(data);          
144           
145         })
146         .error(function(data){                
147           def.reject("Open Model not successful");
148         });
149         
150         return def.promise;
151     };
152     this.setModel = function(modelName, controlNamePrefixIn, bpmnTextIn, propTextIn){
153       
154       
155       var def = $q.defer();
156       var sets = [];
157       var svcUrl = "/restservices/clds/v1/clds/model/" + modelName;        
158         var svcRequest = {name: modelName, controlNamePrefix: controlNamePrefixIn, bpmnText: bpmnTextIn, propText: propTextIn};
159         
160       
161         $http.put(svcUrl, svcRequest)
162         .success(function(data){          
163           def.resolve(data);          
164           
165         })
166         .error(function(data){                
167           def.reject("Save Model not successful");
168         });
169         
170         return def.promise;
171     };
172     this.processAction = function(uiAction, modelName, controlNamePrefixIn, bpmnTextIn, propTextIn,svgXmlIn,templateName,typeID,deploymentId){
173       
174       
175       var def = $q.defer();
176       var sets = [];
177       
178       //console.log(svgXmlIn);
179       var svcUrl = "/restservices/clds/v1/clds/";        
180       var svcAction = uiAction.toLowerCase();
181       if ( svcAction == "save" || svcAction == "refresh" ) {
182         svcUrl = svcUrl + "model/" + modelName;
183       } else if ( svcAction == "test" ) {
184         svcUrl = svcUrl + "action/submit/" + modelName + "?test=true";
185       } else {
186           svcUrl = svcUrl + "action/" + svcAction + "/" + modelName;
187         }
188       
189       var svcRequest = {name: modelName, controlNamePrefix: controlNamePrefixIn, bpmnText: bpmnTextIn, propText: propTextIn, imageText:svgXmlIn, templateName:templateName, typeId:typeID, deploymentId:deploymentId};      
190       
191         $http.put(svcUrl, svcRequest)
192         .success(function(data){
193           def.resolve(data);   
194           alertService.alertMessage("Action Successful:"+uiAction,1)        
195           
196         })
197         .error(function(data){  
198           alertService.alertMessage("Action Failure:"+uiAction,2);
199           //def         alertService.alertMessage("Action Successful:"+uiAction,1);
200           def.reject(svcAction + " not successful");
201         });
202         
203         return def.promise;
204     };
205     this.manageAction = function(modelName,typeId,typeName){
206       var def = $q.defer();
207       var sets = [];
208
209       var config = {
210        url: "/restservices/clds/v1/clds/getDispatcherInfo",
211        method: "GET",
212        params:{model:modelName,typeId:typeId,typeName:typeName}
213      };
214        $http(config)
215         .success(function(data){          
216           def.resolve(data);          
217           
218         })
219         .error(function(data){                
220           def.reject("manage action not successful");
221         });
222         
223         return def.promise;
224
225     };
226     this.checkPermittedActionCd = function(permittedActionCd, menuText, actionCd){
227         if ( permittedActionCd.indexOf(actionCd) > -1 ) {
228           document.getElementById(menuText).classList.remove('ThisLink');
229         } else {
230           document.getElementById(menuText).classList.add('ThisLink');
231         }
232     };        
233     this.processActionResponse = function(modelName, pars){
234       
235       // populate control name (prefix and uuid here)
236         var controlNamePrefix = pars.controlNamePrefix;
237         var controlNameUuid = pars.controlNameUuid;
238         deploymentId = pars.deploymentId;
239         var modelEventService = pars.modelEventService;
240         typeID = pars.typeId;
241         
242         var headerText = "Closed Loop Modeler - " +  modelName;
243         if ( controlNameUuid != null ) {
244           var actionCd = pars.event.actionCd;
245           var actionStateCd = pars.event.actionStateCd;
246           //headerText = headerText + " [" + controlNamePrefix + controlNameUuid + "] [" + actionCd + ":" + actionStateCd + "]";
247           headerText = headerText + " [" + controlNamePrefix + controlNameUuid + "]";
248         }
249           
250       document.getElementById("modeler_name").textContent = headerText;
251       document.getElementById("templa_name").textContent = ("Template Used - " + selected_template);
252       setStatus(pars)
253       disableBPMNAddSVG(pars);
254         this.enableDisableMenuOptions(pars);
255     
256         
257     };
258     
259     this.processRefresh=function(pars){
260       typeID = pars.typeId;
261       deploymentId = pars.deploymentId;
262       setStatus(pars);
263       this.enableDisableMenuOptions(pars);
264     }
265     function setStatus(pars){
266       
267       var status = pars.status;
268       // apply color to status
269     var statusColor='white';
270         if(status.trim()==="DESIGN"){
271           statusColor='gray'
272         } else if(status.trim()==="DISTRIBUTED"){
273           statusColor='blue'
274         } else if(status.trim()==="ACTIVE"){
275           statusColor='green'
276         } else if(status.trim()==="STOPPED"){
277           statusColor='red'
278         } else if(status.trim()==="DELETING"){
279           statusColor='pink'
280         } else if(status.trim()==="ERROR"){
281           statusColor='orange'
282         } else if(status.trim()==="UNKNOWN"){
283           statusColor='blue'
284         } else{
285           statusColor=null;
286         }
287         
288
289         var statusMsg='<span style="background-color:' + statusColor + ';-moz-border-radius: 50px;  -webkit-border-radius: 50px;  border-radius: 50px;">&nbsp;&nbsp;&nbsp;'+status+'&nbsp;&nbsp;&nbsp;</span>';
290         // display status
291         if ($("#status_clds").length>=1)
292           $("#status_clds").remove();
293         $("#activity_modeler").append('<span id="status_clds" style="position: absolute;  left: 61%;top: 51px; font-size:20px;">Status: '+statusMsg+'</span>');
294
295         
296     }
297     function disableBPMNAddSVG(pars){
298       
299       var svg=pars.imageText.substring(pars.imageText.indexOf("<svg"))
300       if($("#svgContainer").length>0)
301           $("#svgContainer").remove();
302         $("#js-canvas").append("<span id=\"svgContainer\">"+svg+"</span>");
303         /* added code for height width viewBox */
304         $("#svgContainer svg").removeAttr("height");
305         $("#svgContainer svg").removeAttr('viewBox');
306         $("#svgContainer svg").removeAttr('width');
307         
308         $("#svgContainer svg").attr('width','100%');
309         $("#svgContainer svg").attr('height','100%');
310
311         $("#svgContainer").click(function(event){
312           //console.log($(event.target).parent().html())
313           //console.log($($(event.target).parent()).attr("data-element-id"))
314           var name=$($(event.target).parent()).attr("data-element-id")
315           lastElementSelected=$($(event.target).parent()).attr("data-element-id")
316           checkIfElementType(name)
317           
318         })
319         $(".bjs-container").attr("hidden","");
320     }
321     this.enableDisableMenuOptions=function(pars){
322       
323       var permittedActionCd = pars.permittedActionCd;
324       
325       //dropdown options - always true
326       document.getElementById('Open Template').classList.remove('ThisLink');
327           document.getElementById('Open CL').classList.remove('ThisLink');
328           document.getElementById('Save Template').classList.add('ThisLink');
329           document.getElementById('Template Properties').classList.add('ThisLink');
330           document.getElementById('Revert Template Changes').classList.add('ThisLink');
331           document.getElementById('Close Template').classList.add('ThisLink'); 
332                 
333       if (readOnly||readMOnly){
334         //enable model options
335                 document.getElementById('Properties CL').classList.remove('ThisLink');
336                 document.getElementById('Close Model').classList.remove('ThisLink');
337                 
338                 //disable models options
339                 document.getElementById('Create CL').classList.add('ThisLink');
340                 document.getElementById('Save CL').classList.add('ThisLink');
341         document.getElementById('Revert Model Changes').classList.add('ThisLink');                      
342           } else {
343               // enable menu options
344                   document.getElementById('Create CL').classList.remove('ThisLink');
345               document.getElementById('Save CL').classList.remove('ThisLink');
346               document.getElementById('Properties CL').classList.remove('ThisLink');
347               document.getElementById('Revert Model Changes').classList.remove('ThisLink');
348               document.getElementById('Close Model').classList.remove('ThisLink');
349               
350               
351               document.getElementById('Validation Test').classList.remove('ThisLink');
352               document.getElementById('Refresh Status').classList.remove('ThisLink');      
353               document.getElementById('Refresh ASDC').classList.remove('ThisLink');     
354           } 
355       if (readTOnly){
356                 document.getElementById('Create Template').classList.add('ThisLink');
357           } else {
358                 document.getElementById('Create Template').classList.remove('ThisLink');
359           }
360       
361                 // enable/disable menu options based on permittedActionCd list
362                 this.checkPermittedActionCd(permittedActionCd, 'Validation Test', 'TEST');
363                 this.checkPermittedActionCd(permittedActionCd, 'Submit', 'SUBMIT');
364                 this.checkPermittedActionCd(permittedActionCd, 'Resubmit', 'RESUBMIT');
365                 this.checkPermittedActionCd(permittedActionCd, 'Update', 'UPDATE');
366                 this.checkPermittedActionCd(permittedActionCd, 'Stop', 'STOP');
367                 this.checkPermittedActionCd(permittedActionCd, 'Restart', 'RESTART');
368                 this.checkPermittedActionCd(permittedActionCd, 'Delete', 'DELETE');
369                 this.checkPermittedActionCd(permittedActionCd, 'Deploy', 'DEPLOY');
370                 this.checkPermittedActionCd(permittedActionCd, 'UnDeploy', 'UNDEPLOY');
371                 
372         }
373     
374    
375     this.getASDCServices().then(function(pars){
376       
377       var services=pars.service;
378       asdc_Services=services
379     });
380     
381  }]);