[PORTAL-16 PORTAL-18] Widget ms; staging
[portal.git] / ecomp-portal-widget-ms / src / main / resources / framework-template.js
1 var ARUGMENT1 = (function(window, undefined) {                                                                                      
2                                                                                                                                     
3         var ARUGMENT1 = ARUGMENT1 || {};                                                                                                
4         function extractHostPortApp(src) {                                                                                                  
5                 ARUGMENT1.microserviceId = MICROSERVICE_ID;                                                                                 
6                 ARUGMENT1.pathArray = src.split( '/' );                                                                                     
7                 ARUGMENT1.widgetName = ARUGMENT1.pathArray[ARUGMENT1.pathArray.length - 2];                                                 
8                 ARUGMENT1.serviceSeperator = ARUGMENT1.pathArray[ARUGMENT1.pathArray.length - 4];                                           
9                 ARUGMENT1.commonUrl = src.substring(0, src.lastIndexOf("/" + ARUGMENT1.widgetName));                                      
10                 ARUGMENT1.recipientDivDataAttrib = 'data-' + ARUGMENT1.widgetName;                                                          
11                 ARUGMENT1.controllerName = 'ARUGMENT2';                                                                                     
12                 ARUGMENT1.readyCssFlag = 'ARUGMENT3';                                                                                       
13                 ARUGMENT1.readyCssFlagExpectedValue = '#bada55';                                                                            
14                 ARUGMENT1.serviceURL = src.substring(0, src.lastIndexOf("/" + ARUGMENT1.serviceSeperator)) + '/portalApi/microservice/proxy/parameter/' + WIDGET_ID;  
15         }                                                                                                                              
16                                                                                                                                        
17         extractHostPortApp(document.currentScript.src);                                                                                
18                                                                                                                                        
19         function loadStylesheet(url) {                                                                                                 
20                 var link = document.createElement('link');                                                                                 
21                 link.rel = 'stylesheet';                                                                                                   
22                 link.type = 'text/css';                                                                                                    
23                 link.href = url;                                                                                                           
24                 var entry = document.getElementsByTagName('script')[0];                                                                    
25                 entry.parentNode.insertBefore(link, entry);                                                                                
26         }                                                                                                                              
27                                                                                                                                    
28         function isCssReady(callback) {                                                                                                
29                 var testElem = document.createElement('span');                                                                             
30                 testElem.id = ARUGMENT1.readyCssFlag;                                                                                      
31                 testElem.style = 'CSS_ARG1';                                                                       
32                 var entry = document.getElementsByTagName('script')[0];                                                                    
33                 entry.parentNode.insertBefore(testElem, entry);                                                                            
34                                                                                                                                        
35                 (function poll() {                                                                                                         
36                         var node = document.getElementById('css-ready');                                                                       
37                         var value;                                                                                                             
38                         if (window.getComputedStyle) {                                                                                         
39                                 value = document.defaultView.getComputedStyle(testElem, null)                                                      
40                                                 .getPropertyValue('color');                                                                                
41                         }                                                                                                                      
42                         else if (node.currentStyle) {                                                                                          
43                                 value = node.currentStyle.color;                                                                                   
44                         }                                                                                                                      
45                         if (value && value === 'rgb(186, 218, 85)' || value.toLowerCase() === ARUGMENT1.readyCssFlagExpectedValue) {           
46                                 callback();                                                                                                        
47                         } else {                                                                                                               
48                                 setTimeout(poll, 500);                                                                                             
49                         }                                                                                                                      
50                 })();                                                                                                                      
51         }                                                                                                                              
52                                                                                                                                        
53         function injectCss(css) {                                                                                                      
54                 var style = document.createElement('style');                                                                               
55                 style.type = 'text/css';                                                                                                   
56                 css = css.replace(/\}/g, "}\n");                                                                                           
57                                                                                                                                        
58                 if (style.styleSheet) {                                                                                                    
59                         style.styleSheet.cssText = css;                                                                                        
60                 } else {                                                                                                                   
61                         style.appendChild(document.createTextNode(css));                                                                       
62                 }                                                                                                                          
63                 var entry = document.getElementsByTagName('script')[0];                                                                    
64                 entry.parentNode.insertBefore(style, entry);                                                                               
65         }                                                                                                                              
66                                                                                                                                        
67         function loadScript(url, callback) {                                                                                           
68                 var script = document.createElement('script');                                                                             
69                 script.src = url;                                                                                                          
70                 var entry = document.getElementsByTagName('script')[0];                                                                    
71                 entry.parentNode.insertBefore(script, entry);                                                                              
72                 script.onload = script.onreadystatechange = function() {                                                                   
73                         var rdyState = script.readyState;                                                                                      
74                         if (!rdyState || /complete|loaded/.test(script.readyState)) {                                                          
75                                 callback();                                                                                                        
76                                 script.onload = null;                                                                                              
77                                 script.onreadystatechange = null;                                                                                  
78                         }                                                                                                                      
79                 };                                                                                                                         
80         }                                                                                                                              
81                                                                                                                                    
82         function loadSupportingFiles(callback) {                                                                                       
83                 callback();                                                                                                                
84         }                                                                                                                              
85                                                                                                                                        
86         function getWidgetParams() {                                                                                                   
87                                                                                                                                            
88         }                                                                                                                              
89                                                                                                                                        
90         function getWidgetData(widgetUrl, callback) {                                                                                      
91         var responseData;                                                                                                                                                                                                  
92         try{                                                                                                                                                                                                               
93                 jQuery.ajax({                                                                                                                                                                                              
94                         url: widgetUrl,                                                                                                                                                                                            
95                         method: "GET",                                                                                                                                                                                                     
96                         xhrFields: {                                                                                                                                                                                                       
97                                 withCredentials: true                                                                                                                                                                              
98                         },    
99                         crossDomain: true,                      
100                         success: function (result) {                                                                                                                                                                               
101                                 if (result.isOk == false){                                                                                                                                                                         
102                                                                                                                                                                                                                                    
103                                 }else{                                                                                                                                                                                             
104                                         callback(result);                                                                                                                                                                                          
105                                 }                                                                                                                                                                                                  
106                         }                                                                                                                                                                                                  
107                 });                                                                                                                                                                                                
108         }                                                                                                                                                                                                                  
109         catch(e){                                                                                                                                                                                                          
110         
111         }                                                                                                                                                                                                                  
112                                                                                                                                                                                            
113         }                                                                                                   
114                                                                                                                                        
115         function getMarkupContent(markupLocation, target){                                                                             
116                                                                                                                                            
117                 jQuery.ajax({                                                                                                              
118                 url: markupLocation,                                                                                                   
119                 success: function (result) {                                                                                           
120                     if (result.isOk == false){                                                                                         
121                                                                                                                                        
122                     }else{                                                                                                             
123                         target.innerHTML = result;                                                                                     
124                                 }                                                                                                                  
125                 },                                                                                                                     
126                 async: false                                                                                                           
127             });                                                                                                                        
128         }                                                                                                                              
129                                                                                                                                        
130         function renderWidget(data, location, $controllerProvider) {                                                                   
131                 var div = document.createElement('div');                                                                                   
132                 getMarkupContent(ARUGMENT1.commonUrl + "/markup/" + ARUGMENT1.widgetName, div);                                          
133                 location.append(div);                                                                                                      
134                  ARUGMENT1.widgetData = data;                                                                                              
135                 app.controllerProvider.register(ARUGMENT1.controllerName, ARUGMENT1.controller);                                           
136                 var mController = angular.element(document.getElementById("widgets"));                                                   
137                 mController.scope().activateThis(location);                                                                                
138         }                                                                                                                              
139                                                                                                                                        
140         function printAllArtifacts(moduleName, controllerName) {                                                                       
141             var queue = angular.module(moduleName)._invokeQueue;                                                                       
142             for(var i=0;i<queue.length;i++) {                                                                                          
143                 var call = queue[i];                                                                                                   
144                 console.log(i + '. ' + call[0] + ' - ' + call[1] + ' - ' + call[2][0]);                                                
145             }                                                                                                                          
146         }                                                                                                                              
147                                                                                                                                        
148         function get(name){                                                                                                            
149            if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))                                     
150               return decodeURIComponent(name[1]);                                                                                      
151         }                                                                                                                              
152                                                                                                                                    
153         loadSupportingFiles(function() {                                                                                               
154                 loadStylesheet(ARUGMENT1.commonUrl + '/' + ARUGMENT1.widgetName + '/style.css');                                           
155                 loadScript(ARUGMENT1.commonUrl + '/' + ARUGMENT1.widgetName + '/controller.js',                                            
156                         function() {                                                                                                           
157                                 $('['+ ARUGMENT1.recipientDivDataAttrib + ']').each(function() {                                                   
158                                         var location = jQuery(this);                                                                                   
159                                         location.removeAttr(ARUGMENT1.recipientDivDataAttrib);                                                         
160                                         var id = location.attr(ARUGMENT1.recipientDivDataAttrib);                                                      
161                                         getWidgetData(ARUGMENT1.serviceURL, function(data) {                                                           
162                                                 isCssReady(function(){                                                                                     
163                                                         renderWidget(data, location);                                                                          
164                                                 });                                                                                                                                        
165                                         });                                                                                                            
166                                 });                                                                                                                
167                         }                                                                                                                      
168                 );                                                                                                                         
169         });                                                                                                                            
170                                                                                                                                        
171         return ARUGMENT1;                                                                                                                  
172 })(window);                                                                                                                        
173