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