resources/roo.builder.js
[app.Builder.js] / resources / roo.builder.js
1 //<script type="text/javascript">
2  
3
4 var MODULE = { isBuilder : true };
5 // BC
6 var _this = MODULE;
7
8 // the apprenderer.
9 Builder  = {
10      
11     scriptTag : false,
12     
13     id : 1,
14     
15      
16     findNode : function(ftg , method) {
17         if (!ftg) {
18             return; false
19         }
20       // console.log(ftg.id);
21         if (ftg.id && typeof(ftg.id) == 'string' && ftg.id.match(/builder-/)) {
22             var nid = ftg.id.replace('builder-', '').replace('x-form-el-', '');
23             this[method]( nid );
24             return true;
25         }
26         // needs fixing..
27         if (ftg.dom.className.match(/[0-9]+/)) {
28             //console.log(ftg.dom.className);
29             var cmat = ftg.dom.className.match(/x-grid-hd-builder-(form-gen-[0-9:]+)/);
30             if (cmat) {
31                 this[method]( cmat[1] );
32                 return true;
33             }
34         }
35         
36         
37         
38         
39         return false;
40     },
41     
42     overPos: function(x,y) 
43     {
44         
45         var el = document.elementFromPoint(x,y);
46        // //console.log(el.id);
47        // console.log(document.body.innerHTML);
48         this.hover( {
49             getTarget : function () {
50                 return el;
51             },
52             stopEvent : function() {
53                 
54             }
55         });
56         
57         
58     },
59     onclick: function(e) {
60         var tg = Roo.get(e.getTarget());
61         if (!tg) {
62             //console.log('no target');
63             return;
64            }
65          
66         if (this.findNode(tg,'logClick')) {
67             return;
68         }
69         var dp = Roo.get(tg.up(''));
70         if (dp && this.findNode(dp,'logClick')) {
71             return;
72         }
73         
74         var ns = Roo.get(tg.getNextSibling());
75         if (ns && this.findNode(ns,'logClick')) {
76           
77             return;
78         }
79         if (ns && ns.down('') && this.findNode(Roo.get(ns.down('')) ,'logClick') ) {
80             return;
81         }
82         
83         for(var i =0; i < 5; i++) {
84             tg = Roo.get(tg.up(''));
85             if (!tg) {
86                 //console.log('no parent' + i);
87                 return;
88             }
89             if (tg && this.findNode(tg,'logClick')) {
90                 return;
91             }
92         }
93         //console.log('no target in parents');
94         
95     },
96     logClick : function(id) 
97     {
98          var bid = id.length ? 'builder-' + id : '';
99          console.log('{ "id" :  "' + bid + '"}');
100     },
101     
102     
103     hover : function(e) {
104         
105        
106         var tg = Roo.get(e.getTarget());
107         if (!tg) {
108             //console.log('no target');
109             this.logMove('');
110             return;
111            }
112          
113         if (this.findNode(tg,'logMove')) {
114             e.stopEvent();
115             return;
116         }
117         var dp = Roo.get(tg.up(''));
118         if (dp && this.findNode(dp,'logMove')) {
119             e.stopEvent();
120             return;
121         }
122         
123         var ns = Roo.get(tg.getNextSibling());
124         if (ns && this.findNode(ns,'logMove')) {
125             e.stopEvent();
126             return;
127         }
128         if (ns && ns.down('') && this.findNode(Roo.get(ns.down('')) ,'logMove' )) {
129             e.stopEvent();
130             return;
131         }
132         
133         for(var i =0; i < 5; i++) {
134             tg = Roo.get(tg.up(''));
135             if (!tg) {
136                 //console.log('no parent' + i);
137                 this.logMove('');
138                 return;
139             }
140             if (tg && this.findNode(tg,'logMove')) {
141                 e.stopEvent();
142                 return;
143             }
144         }
145         //console.log('no target in parents');
146         this.logMove('');
147     },
148     logMove : function (id) {
149         //console.log("LOGMOVE: " + id);
150         
151         if (this.lastID === id) {
152             return;
153        }
154        id = ''+ id;
155        var bid = id.length ? 'builder-' + id : '';
156        console.log('{ "hover-node" :  "' + bid + '"}');
157        this.lastID = id;
158     },
159     clearBootstrap : function()
160     {
161         // if the page is not bootstrap
162         
163         if ( typeof(BuilderUseBootstrap) != 'undefined' ) {
164             Roo.log("it's boostrap - BuilderUseBootstrap is defined ");
165             // it's bootstrap - probably remove roo's css..
166             return;
167         }
168         Roo.log("remove css = BuilderUseBootstrap is not defined");
169         var rem = [];
170         var ar = document.getElementsByTagName('link');
171         for (var i = 0; i < ar.length;i++) {
172             var l = ar[i];
173             Roo.log(l.getAttribute('href'));
174             if (l.getAttribute('href').match(/bootstrap/)) {
175                 rem.push(l);
176                 
177                 
178             }
179             //code
180         }
181         Roo.each(rem, function(l) { l.parentNode.removeChild(l);});
182     },
183     
184     applyFlexy: function(tree)
185     {
186         if (typeof(tree['flexy:foreach']) != 'undefined') {
187             //Roo.log("add flexy:foreach");
188             tree.el.attr('flexy:foreach', tree['flexy:foreach']);
189         }
190         if (typeof(tree['flexy:if']) != 'undefined') {
191             //Roo.log("add flexy:if");
192             tree.el.attr('flexy:if', tree['flexy:if']);
193         }
194         if (typeof(tree['xtype-bootstrap']) != 'undefined') {
195             //Roo.log("add flexy:if");
196             tree.el.attr('xtype', tree['xtype-bootstrap']);
197         }
198         
199         
200         if (!tree.items || !tree.items.length) { return; }
201         
202         for (var i = 0; i < tree.items.length; i++){
203             this.applyFlexy(tree.items[i]);
204         }
205     }
206     
207      
208     
209 };
210 Roo.onReady(function() { Builder.clearBootstrap(); });
211 Roo.XComponent.on('buildcomplete', function() {
212     Roo.log("xcomponent built!");
213     
214     Builder.applyFlexy(Roo.XComponent.modules[0].el);
215 });