]> source.dussan.org Git - svg.js.git/commitdiff
Added position()
authorwout <wout@impinc.co.uk>
Mon, 31 Dec 2012 13:43:26 +0000 (14:43 +0100)
committerwout <wout@impinc.co.uk>
Mon, 31 Dec 2012 13:43:26 +0000 (14:43 +0100)
README.md
src/arrange.js
src/element.js

index 857bf8dfcf63f8bbda5d99cb9a2c9f47c595c471..554303ec208e38cb308540c47a2e9b8747dc8832 100644 (file)
--- a/README.md
+++ b/README.md
@@ -356,6 +356,14 @@ rect.forward();
 rect.backward();
 ```
 
+The arrange.js module brings some additional methods:
+
+```javascript
+// returns the position (a number) of the element between its siblings
+rect.position();
+```
+
+
 _This functionality requires the arrange.js module which is included in the default distribution._
 
 
index ac53e4395cdaae373112f59f8a1535cc0fd491ee..ff255be33ae1077d114fdda83c55668ae2674ff8 100644 (file)
@@ -7,6 +7,11 @@ SVG.extend(SVG.Element, {
     return this.parent.children();
   },
   
+  // get the curent position siblings
+  position: function() {
+    return this.siblings().indexOf(this);
+  },
+  
   // send given element one step forwards
   forward: function() {
     var i = this.siblings().indexOf(this);
@@ -18,7 +23,7 @@ SVG.extend(SVG.Element, {
   backward: function() {
     var i, p = this.parent.level();
     
-    i = this.siblings().indexOf(this);
+    i = this.position();
     
     if (i > 1)
       p.remove(this).add(this, i - 1);
@@ -33,11 +38,9 @@ SVG.extend(SVG.Element, {
   
   // send given element all the way to the back
   back: function() {
-    var i, p = this.parent.level();
+    var p = this.parent.level();
     
-    i = this.siblings().indexOf(this);
-    
-    if (i > 1)
+    if (this.position() > 1)
       p.remove(this).add(this, 0);
     
     return this;
index 3f1afa3a8883639ab7b639353fbe5c7a71cb05cf..a9cd7cd1a7bfca992feb7aa8fa223f6b377d01a3 100644 (file)
@@ -43,6 +43,7 @@ SVG.extend(SVG.Element, {
     var c,
         n = this.node.nodeName;
     
+    // invoke shape method with shape-specific arguments
     c = n == 'rect' ?
       this.parent[n](this.attrs.width, this.attrs.height) :
     n == 'ellipse' ?
@@ -53,7 +54,11 @@ SVG.extend(SVG.Element, {
       this.parent[n](this.content) :
       this.parent[n]();
     
-    return c.attr(this.attrs);
+    // copy translations
+    c.trans = this.trans;
+    
+    // apply attributes and translations
+    return c.attr(this.attrs).transform({});
   },
   
   // remove element