Author: simoneg
Date: Wed Feb 16 04:33:42 2011
New Revision: 1071141

URL: http://svn.apache.org/viewvc?rev=1071141&view=rev
Log:
Better way to understand proper order of elements in the dom after updates

Modified:
    
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js

Modified: 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js?rev=1071141&r1=1071140&r2=1071141&view=diff
==============================================================================
--- 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
 (original)
+++ 
labs/magma/trunk/website-autoajax/src/main/resources/org/apache/magma/website/autoajax/autoajax.js
 Wed Feb 16 04:33:42 2011
@@ -59,15 +59,12 @@ magma.autoajax = new function() {
         * other methods work correctly. 
         */
        this.updateState = function(statepart) {
-               var cnt=0;
                for (var id in statepart) {
                        var grp = statepart[id];
                        var ele = document.getElementById(id);
                        if (ele) {
                                grp.domElement=ele;
                        }
-                       grp.order = cnt;
-                       cnt++;
                        this.state.elements[id] = grp;
                }
        }
@@ -115,31 +112,45 @@ magma.autoajax = new function() {
                                }
                        }
                }
+               
+               function zeropad(str) {
+                       while (str.length % 3 != 0) str = '0' + str;
+                       return str;
+               }
+               
                // Find parents and children
                for (var id in this.state.elements) {
                        var stategrp = this.state.elements[id];
                        if (stategrp.type == 'tpl') continue;
-                       var ele = stategrp.domElement;
-                       ele = ele.parentNode;
-                       while (ele) {
-                               if (this.state.elements[ele.id]) {
-                                       
stategrp.parent=this.state.elements[ele.id];
-                                       
this.state.elements[ele.id].children.push(stategrp);
+                       var indexstr = '';
+                       var ele = $(stategrp.domElement);
+                       indexstr = zeropad(ele.index() + indexstr);
+                       ele = ele.parent();
+                       while (ele.length > 0) {
+                               indexstr = zeropad(ele.index() + indexstr);
+                               var pid = ele[0].id;
+                               var ps = this.state.elements[ele[0].id] 
+                               if (ps) {
+                                       stategrp.parent=ps;
+                                       ps.children.push(stategrp);
                                        break;
                                };
-                               ele = ele.parentNode;
+                               ele = ele.parent();
                        }
                        if (stategrp.parent == null) {
                                stategrp.parent = this.state.root;
                                this.state.root.children.push(stategrp);
                        }
+                       stategrp.order = indexstr;
                }               
                
                for (var id in this.state.elements) {
                        var stategrp = this.state.elements[id];
                        if (stategrp.children && stategrp.children.length > 0) {
                                stategrp.children.sort(function(a,b) {
-                                       return a.order - b.order;
+                                       if (a.order < b.order) return -1;
+                                       if (b.order < a.order) return 1;
+                                       return 0;
                                });
                        }
                }               



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to