[Rt-commit] rt branch, lcore, updated. 7a3e55c02d93fcfeee024a4e41b947a9023f1fcd

clkao at bestpractical.com clkao at bestpractical.com
Tue Oct 6 06:22:03 EDT 2009


The branch, lcore has been updated
       via  7a3e55c02d93fcfeee024a4e41b947a9023f1fcd (commit)
       via  4836edd974dfe6d1c6ba1602c0972cebb8b9ca24 (commit)
       via  23384d48ea42387a4fd241389e2bcf0d31f94a60 (commit)
       via  7982918b83656ace4be02a1f87b817e1b085bbe9 (commit)
       via  215b56dd9f55aefb5d3e334583d5de2afe15e951 (commit)
       via  6c38b24a96e4725b0fd7ab6e8a8f2aad2ef0f42a (commit)
       via  d38c83cbbac7886177155313a94843c3254316ca (commit)
      from  6141ae9d2f7e6dc4a909027baef370231685c788 (commit)

Summary of changes:
 share/web/static/css/rulebuilder.css |    4 +-
 share/web/static/js/rulebuilder.js   |  102 +++++++++++++++++++---------------
 2 files changed, 59 insertions(+), 47 deletions(-)

- Log -----------------------------------------------------------------
commit d38c83cbbac7886177155313a94843c3254316ca
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Fri Oct 2 14:56:11 2009 +0800

    Fix array add/remove index.

diff --git a/share/web/static/js/rulebuilder.js b/share/web/static/js/rulebuilder.js
index 28e85bc..f279b54 100644
--- a/share/web/static/js/rulebuilder.js
+++ b/share/web/static/js/rulebuilder.js
@@ -350,34 +350,36 @@ RuleBuilder.Context.prototype.array_item_idx = function()
 {
     for (var i in this.parent.children) {
         if (this.parent.children[i] == this)
-            return i;
+            return parseInt(i);
     }
     return -1;
 }
 
 RuleBuilder.Context.prototype.mk_array_item_context = function(type, container, idx) {
     var li = jQuery._div_({'class': 'array-item'});
-    if (idx)
+    if (idx) {
         jQuery("div.array-item:nth-child("+(idx)+")", this.arraybuilder).after(li);
+    }
     else
         li.appendTo(container);
     var x = jQuery._div_({'class': 'context'})
         .appendTo(li);
     var child = new RuleBuilder.Context(type, x.get(0), this, this.rb);
-    var that = this; // parent
     jQuery._span_({'class': 'add-icon'})
         .text("+")
         .appendTo(li)
         .click(function(e) {
-            var idx = child.array_item_idx();
+            var that = child.parent;
+            var idx = child.array_item_idx()+1;
             var newchild = that.mk_array_item_context(that.inner_type,
-                                                      jQuery('div.array-item-container', that.arraybuilder), idx+1);
-            that.children.splice(idx+1, 0, newchild);
+                                                      jQuery('div.array-item-container', that.arraybuilder), idx);
+            that.children.splice(idx, 0, newchild);
         });
     jQuery._span_({'class': 'delete-icon'})
         .text("-")
         .appendTo(li)
         .click(function(e) {
+            var that = child.parent;
             var idx = child.array_item_idx();
             jQuery("div.array-item:nth-child("+(idx+1)+")", that.arraybuilder).remove();
             that.children.splice(idx, 1);
@@ -413,19 +415,25 @@ RuleBuilder.Context.prototype.transform = function(func_name) {
         var second_param = parent.children.length > 1 ? parent.children[1] : null;
 
         if (first_param.inner_type) {
+            //   Bool "or"                 (......)  <- parent
+            //        |--- ArrayRef[Bool]  (parent)  <- first_param
+            //              |- first_param           <- 
+            //              |- second_param          <- 
             parent = first_param;
             var builder = jQuery('div.arraybuilder', parent.element).show();
-            jQuery("span.arraybuilder-icon", builder).hide();
+            jQuery("span.arraybuilder-icon", parent.element).hide();
             parent.arraybuilder = builder;
+            var container = jQuery('div.array-item-container', builder);
             first_param = parent.mk_array_item_context(parent.inner_type,
-                                                       jQuery('div.array-item-container', builder), 0);
+                                                       container, 0);
 
             second_param = parent.mk_array_item_context(parent.inner_type,
-                                                      jQuery('div.array-item-container', parent.arraybuilder), 1);
-            parent.children.push(second_param);
+                                                        container, 1);
+            parent.children = [ first_param, second_param ];
         }
 
         parent.children[0] = this;
+        this.parent = parent;
         this.expected_type = first_param.expected_type;
 
         jQuery('span.return-type:first', this.element)

commit 6c38b24a96e4725b0fd7ab6e8a8f2aad2ef0f42a
Merge: d38c83c 6141ae9
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 15:10:43 2009 +0800

    Merge branch 'lcore' of diesel.bestpractical.com:/git/rt into lcore


commit 215b56dd9f55aefb5d3e334583d5de2afe15e951
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 16:43:28 2009 +0800

    bring offset back for now to avoid library panel cluttering.

diff --git a/share/web/static/css/rulebuilder.css b/share/web/static/css/rulebuilder.css
index 5f8491a..cccd397 100644
--- a/share/web/static/css/rulebuilder.css
+++ b/share/web/static/css/rulebuilder.css
@@ -54,8 +54,8 @@ div.function span.return-type,
   overflow: hidden;
 }
 
-#expression-filter input[type=text] {
-	display: block;
+div#expressionbuilder {
+    margin-left: 24em;
 }
 
 #expressionbuilder {

commit 7982918b83656ace4be02a1f87b817e1b085bbe9
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 17:41:33 2009 +0800

    implement tranform for non-top entries.

diff --git a/share/web/static/js/rulebuilder.js b/share/web/static/js/rulebuilder.js
index f279b54..2ba138c 100644
--- a/share/web/static/js/rulebuilder.js
+++ b/share/web/static/js/rulebuilder.js
@@ -394,57 +394,66 @@ RuleBuilder.Context.prototype.return_type_from_val = function(val) {
 }
 
 RuleBuilder.Context.prototype.transform = function(func_name) {
+    var rb = this.rb;
+    var func = rb.functions[func_name];
+    var parent;
     if (this.parent) {
-        alert('not yet');
+        var new_entry = jQuery._div_({'class': 'context'})
+            .insertAfter(this.element);
+        jQuery(this.element).remove();
+        parent = new RuleBuilder.Context(this.expected_type,
+                                         new_entry.get(0), this.parent, rb);
+        var idx = this.array_item_idx();
+        this.parent.children[idx] = parent;
     }
     else {
-        var rb = this.rb;
-        var func = rb.functions[func_name];
-        jQuery(rb.top_context.element).removeClass('top-context').remove();
         var tc = jQuery._div_({'class': 'context top-context'})
             .prependTo(this.rb.ebuilder);
+        jQuery(rb.top_context.element).removeClass('top-context').remove();
 
-        var parent = new RuleBuilder.Context(this.expected_type,
-                                             tc.get(0), null, rb);
-        this.parent = rb.top_context = parent;
-
-        parent.set_application(func_name, func);
-
-        jQuery(this.element).unbind('click');
-        var first_param = parent.children[0];
-        var second_param = parent.children.length > 1 ? parent.children[1] : null;
-
-        if (first_param.inner_type) {
-            //   Bool "or"                 (......)  <- parent
-            //        |--- ArrayRef[Bool]  (parent)  <- first_param
-            //              |- first_param           <- 
-            //              |- second_param          <- 
-            parent = first_param;
-            var builder = jQuery('div.arraybuilder', parent.element).show();
-            jQuery("span.arraybuilder-icon", parent.element).hide();
-            parent.arraybuilder = builder;
-            var container = jQuery('div.array-item-container', builder);
-            first_param = parent.mk_array_item_context(parent.inner_type,
-                                                       container, 0);
-
-            second_param = parent.mk_array_item_context(parent.inner_type,
-                                                        container, 1);
-            parent.children = [ first_param, second_param ];
-        }
+        parent = new RuleBuilder.Context(this.expected_type,
+                                         tc.get(0), null, rb);
+        rb.top_context = parent;
+    }
+
+    this.parent = parent;
 
-        parent.children[0] = this;
-        this.parent = parent;
-        this.expected_type = first_param.expected_type;
-
-        jQuery('span.return-type:first', this.element)
-            .text(first_param.expected_type);
-        jQuery(first_param.element).replaceWith(this.element);
-        var that = this;
-        jQuery(this.element).click(function(e) { rb.focus(that); return false });
-        this.update_return_type(this.return_type);
-        if (second_param)
-            this.rb.focus(second_param);
+    parent.set_application(func_name, func);
+
+    jQuery(this.element).unbind('click');
+    var first_param = parent.children[0];
+    var second_param = parent.children.length > 1 ? parent.children[1] : null;
+
+    if (first_param.inner_type) {
+        //   Bool "or"                 (......)  <- parent
+        //        |--- ArrayRef[Bool]  (parent)  <- first_param
+        //              |- first_param           <- 
+        //              |- second_param          <- 
+        parent = first_param;
+        var builder = jQuery('div.arraybuilder', parent.element).show();
+        jQuery("span.arraybuilder-icon", parent.element).hide();
+        parent.arraybuilder = builder;
+        var container = jQuery('div.array-item-container', builder);
+        first_param = parent.mk_array_item_context(parent.inner_type,
+                                                   container, 0);
+
+        second_param = parent.mk_array_item_context(parent.inner_type,
+                                                        container, 1);
+        parent.children = [ first_param, second_param ];
     }
+
+    parent.children[0] = this;
+    this.parent = parent;
+    this.expected_type = first_param.expected_type;
+
+    jQuery('span.return-type:first', this.element)
+        .text(first_param.expected_type);
+    jQuery(first_param.element).replaceWith(this.element);
+    var that = this;
+    jQuery(this.element).click(function(e) { rb.focus(that); return false });
+    this.update_return_type(this.return_type);
+    if (second_param)
+        this.rb.focus(second_param);
 }
 
 RuleBuilder.Context.prototype.transformMenu = function(el) {

commit 23384d48ea42387a4fd241389e2bcf0d31f94a60
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 17:47:57 2009 +0800

    cleanup transform outter element handling.

diff --git a/share/web/static/js/rulebuilder.js b/share/web/static/js/rulebuilder.js
index 2ba138c..afe3403 100644
--- a/share/web/static/js/rulebuilder.js
+++ b/share/web/static/js/rulebuilder.js
@@ -396,23 +396,19 @@ RuleBuilder.Context.prototype.return_type_from_val = function(val) {
 RuleBuilder.Context.prototype.transform = function(func_name) {
     var rb = this.rb;
     var func = rb.functions[func_name];
-    var parent;
+    var new_element = jQuery._div_({'class': 'context'});
+    var parent = new RuleBuilder.Context(this.expected_type,
+                                         new_element.get(0), this.parent, rb);
     if (this.parent) {
-        var new_entry = jQuery._div_({'class': 'context'})
-            .insertAfter(this.element);
+        new_element.insertAfter(this.element);
         jQuery(this.element).remove();
-        parent = new RuleBuilder.Context(this.expected_type,
-                                         new_entry.get(0), this.parent, rb);
-        var idx = this.array_item_idx();
-        this.parent.children[idx] = parent;
+
+        this.parent.children[this.array_item_idx()] = parent;
     }
     else {
-        var tc = jQuery._div_({'class': 'context top-context'})
-            .prependTo(this.rb.ebuilder);
         jQuery(rb.top_context.element).removeClass('top-context').remove();
+        new_element.addClass('top-context').prependTo(rb.ebuilder);
 
-        parent = new RuleBuilder.Context(this.expected_type,
-                                         tc.get(0), null, rb);
         rb.top_context = parent;
     }
 

commit 4836edd974dfe6d1c6ba1602c0972cebb8b9ca24
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 18:16:30 2009 +0800

    more robust arraybuilder, plus/minus should mostly work.

diff --git a/share/web/static/js/rulebuilder.js b/share/web/static/js/rulebuilder.js
index afe3403..2f70ca5 100644
--- a/share/web/static/js/rulebuilder.js
+++ b/share/web/static/js/rulebuilder.js
@@ -355,11 +355,10 @@ RuleBuilder.Context.prototype.array_item_idx = function()
     return -1;
 }
 
-RuleBuilder.Context.prototype.mk_array_item_context = function(type, container, idx) {
+RuleBuilder.Context.prototype.mk_array_item_context = function(type, container, insert_after) {
     var li = jQuery._div_({'class': 'array-item'});
-    if (idx) {
-        jQuery("div.array-item:nth-child("+(idx)+")", this.arraybuilder).after(li);
-    }
+    if (insert_after)
+        li.insertAfter(jQuery(insert_after).parent(".array-item"));
     else
         li.appendTo(container);
     var x = jQuery._div_({'class': 'context'})
@@ -372,7 +371,7 @@ RuleBuilder.Context.prototype.mk_array_item_context = function(type, container,
             var that = child.parent;
             var idx = child.array_item_idx()+1;
             var newchild = that.mk_array_item_context(that.inner_type,
-                                                      jQuery('div.array-item-container', that.arraybuilder), idx);
+                                                      jQuery('div.array-item-container', that.arraybuilder), child.element);
             that.children.splice(idx, 0, newchild);
         });
     jQuery._span_({'class': 'delete-icon'})
@@ -381,7 +380,7 @@ RuleBuilder.Context.prototype.mk_array_item_context = function(type, container,
         .click(function(e) {
             var that = child.parent;
             var idx = child.array_item_idx();
-            jQuery("div.array-item:nth-child("+(idx+1)+")", that.arraybuilder).remove();
+            jQuery(child.element).parent('.array-item').remove();
             that.children.splice(idx, 1);
         });
 
@@ -431,10 +430,9 @@ RuleBuilder.Context.prototype.transform = function(func_name) {
         parent.arraybuilder = builder;
         var container = jQuery('div.array-item-container', builder);
         first_param = parent.mk_array_item_context(parent.inner_type,
-                                                   container, 0);
-
+                                                   container, null);
         second_param = parent.mk_array_item_context(parent.inner_type,
-                                                        container, 1);
+                                                    container, first_param.element);
         parent.children = [ first_param, second_param ];
     }
 

commit 7a3e55c02d93fcfeee024a4e41b947a9023f1fcd
Author: Chia-liang Kao <clkao at bestpractical.com>
Date:   Tue Oct 6 18:21:27 2009 +0800

    fix plus/minus for first item in array.

diff --git a/share/web/static/js/rulebuilder.js b/share/web/static/js/rulebuilder.js
index 2f70ca5..992b78d 100644
--- a/share/web/static/js/rulebuilder.js
+++ b/share/web/static/js/rulebuilder.js
@@ -443,6 +443,7 @@ RuleBuilder.Context.prototype.transform = function(func_name) {
     jQuery('span.return-type:first', this.element)
         .text(first_param.expected_type);
     jQuery(first_param.element).replaceWith(this.element);
+    first_param.element = this.element;
     var that = this;
     jQuery(this.element).click(function(e) { rb.focus(that); return false });
     this.update_return_type(this.return_type);

-----------------------------------------------------------------------


More information about the Rt-commit mailing list