Author: spadkins
Date: Tue Jul 11 10:54:18 2006
New Revision: 6633

Modified:
   p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm

Log:
added {jsapp_conf} and {jsapp_values_labels} options

Modified: p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm
==============================================================================
--- p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm (original)
+++ p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm Tue Jul 11 10:54:18 2006
@@ -41,13 +41,14 @@
 
     $self->init_jsapp();
 
+    my %jsapp_special = ( attrib => 1, domain => 1, conf => 1, values_labels 
=> 1 );
     my (@attrib);
     foreach my $key (keys %$self) {
         if ($key =~ /^jsapp_(.+)/) {
-            push(@attrib, $1, $self->{$key}) if (!ref($self->{$key}));
+            push(@attrib, $1, $self->{$key}) if (!$jsapp_special{$1});
         }
     }
-    if (! defined $self->{jsapp_submittable}) {
+    if (! defined $self->{jsapp_submittable} || $self->{jsapp_submittable}) {
         push(@attrib, "submittable", 1);
     }
     my $value = $context->so_get($name);
@@ -56,12 +57,16 @@
     push(@attrib, "default", $value);
     my $js_conf = "";
     if ($#attrib > -1) {
-        $js_conf = ", {";
+        $js_conf .= ", {" if (!$js_conf);
         for (my $i = 0; $i < $#attrib; $i += 2) {
             $js_conf .= "," if ($i > 0);
             $js_conf .= " \"$attrib[$i]\" : \"" . 
$self->escape_double_quoted_value($attrib[$i+1]) . "\"";
         }
     }
+    if ($self->{jsapp_conf}) {
+        $js_conf .= ($js_conf) ? ",\n" : ", {\n";
+        $js_conf .= $self->{jsapp_conf};
+    }
 
     if (defined $self->{jsapp_attrib}) {
         my ($value, $so_name);
@@ -117,6 +122,39 @@
             $js_conf .= $labels_text;
         }
     }
+
+    if ($self->{jsapp_values_labels}) {
+        my ($values, $labels) = $self->values_labels();
+        my ($values_text, $i);
+        my $labels_text = "";
+    
+        if ($#$values > -1) {
+            $values_text = ",\n    \"values\" : [";
+            for ($i = 0; $i <= $#$values; $i++) {
+                $values_text .= "," if ($i > 0);
+                $values_text .= "\n     " if ($i % 10 == 0);
+                $values_text .= " \"$values->[$i]\"";
+            }
+            $values_text .= "\n    ]";
+    
+            if ($labels && %$labels) {
+                $labels_text = ",\n    \"labels\" : {";
+                for ($i = 0; $i <= $#$values; $i++) {
+                    next if (! defined $labels->{$values->[$i]});
+                    $labels_text .= "," if ($i > 0);
+                    $labels_text .= "\n     " if ($i % 10 == 0);
+                    $labels_text .= " \"$values->[$i]\" : 
\"$labels->{$values->[$i]}\"";
+                }
+                $labels_text .= "\n    }";
+            }
+        }
+        else {
+            $values_text = ",\n    values : [ ]";
+        }
+        $js_conf .= $values_text;
+        $js_conf .= $labels_text;
+    }
+
     if ($js_conf) {
         $js_conf .= " }";
     }

Reply via email to