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