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