tests/TreeBuilder.vala
[app.Builder.js] / builder.html.js
index 59e219a..ec722e5 100644 (file)
@@ -12,20 +12,28 @@ Builder  = {
     
     id : 1,
     
-    render : function(data)
+    render : function(data, clsname)
     {
+        
+       // console.log(data);
+        console.log(clsname);
         // for debugging 
-        //console.log(data);        return; 
-         
+        // console.log(data);        return; 
+        //Roo.log(data);
+        //Roo.log(data);
         // This would be alot simpler if we just use the XComponent code...
         // data should now be dialog or xcomponent..
         // only snag here is that we do not know the name currently..
-         
-        
-         
-         
-        Roo.log(data);return;
-         
+        //Roo.log(clsname);
+        var  ix = '_src_' + this.id++;
+        // should replace module name with Builder._src_{id}
+        data =  data.replace(clsname, 'Builder.' + ix);
+        // next.. we need to ensure that parent is set correctly..
+        // done by sender... otherwise building becomes difficult..
+        //data  += "\n" + 'Builder.' + ix + ".parent = '#renderel';\n";
+        console.log(data);
+        //Roo.log(data);return;
+        //Roo.log(data);
         if (this.scriptTag) { 
             document.body.removeChild(this.scriptTag);
             this.scriptTag = false;
@@ -37,18 +45,21 @@ Builder  = {
         this.id++;
         this.scriptTag.appendChild(
                     document.createTextNode(
-                            'Builder._src_' + this.id + ' =  ' + JSON.stringify(data, null,4)
+                            data 
         ));
          
         
-        Roo.log(this.tree);
+        //Roo.log(this.tree);
         MODULE = { isBuilder : true }; 
         _this = MODULE;
         if (!Builder.click) {
             Builder.click= Roo.get(document.body).on('click', this.onclick, this);
         }
+        Roo.log('Builder.'+ ix);
+        Roo.XComponent.build();
+        return;
         
-        var  ix = '_src_' + this.id;
+        return;
         var  wait_for_tree = function() {
             
             Builder.tree = Builder[ix];
@@ -548,8 +559,66 @@ Builder  = {
        var bid = id.length ? 'builder-' + id : '';
        console.log('{ "hover-node" :  "' + bid + '"}');
        this.lastID = id;
+    },
+    clearBootstrap : function()
+    {
+        // if the page is not bootstrap
+        
+        if ( typeof(BuilderUseBootstrap) != 'undefined' ) {
+            Roo.log("it's boostrap - BuilderUseBootstrap is defined ");
+            // it's bootstrap - probably remove roo's css..
+            return;
+        }
+        Roo.log("remove css = BuilderUseBootstrap is not defined");
+        var rem = [];
+        var ar = document.getElementsByTagName('link');
+        for (var i = 0; i < ar.length;i++) {
+            var l = ar[i];
+            Roo.log(l.getAttribute('href'));
+            if (l.getAttribute('href').match(/bootstrap/)) {
+                rem.push(l);
+                
+                
+            }
+            //code
+        }
+        Roo.each(rem, function(l) { l.parentNode.removeChild(l);});
+    },
+    
+    applyFlexy: function(tree)
+    {
+        if (typeof(tree['flexy:foreach']) != 'undefined') {
+            //Roo.log("add flexy:foreach");
+            tree.el.attr('flexy:foreach', tree['flexy:foreach']);
+        }
+        if (typeof(tree['flexy:if']) != 'undefined') {
+            //Roo.log("add flexy:if");
+            tree.el.attr('flexy:if', tree['flexy:if']);
+        }
+        if (typeof(tree['flexy:include']) != 'undefined') {
+            //Roo.log("add flexy:if");
+            tree.el.attr('flexy:include', tree['flexy:include']);
+        }
+        
+        if (typeof(tree['xtype-bootstrap']) != 'undefined') {
+            //Roo.log("add flexy:if");
+            tree.el.attr('xtype', tree['xtype-bootstrap']);
+        }
+        
+        
+        if (!tree.items || !tree.items.length) { return; }
+        
+        for (var i = 0; i < tree.items.length; i++){
+            this.applyFlexy(tree.items[i]);
+        }
     }
-            
+    
+     
     
 };
-    
\ No newline at end of file
+Roo.onReady(function() { Builder.clearBootstrap(); });
+Roo.XComponent.on('buildcomplete', function() {
+    Roo.log("xcomponent built!");
+    
+    Builder.applyFlexy(Roo.XComponent.modules[0].el);
+});
\ No newline at end of file