[Jifty-commit] r6022 - in jifty/trunk: lib/Jifty/Plugin/Chart/Renderer

Jifty commits jifty-commit at lists.jifty.org
Tue Nov 18 16:17:28 EST 2008


Author: sartak
Date: Tue Nov 18 16:17:28 2008
New Revision: 6022

Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/lib/Jifty/Plugin/Chart/Renderer/GoogleViz.pm

Log:
 r75720 at onn:  sartak | 2008-11-18 16:17:24 -0500
 Encode values with the context of a column; DateTime encoding


Modified: jifty/trunk/lib/Jifty/Plugin/Chart/Renderer/GoogleViz.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Plugin/Chart/Renderer/GoogleViz.pm	(original)
+++ jifty/trunk/lib/Jifty/Plugin/Chart/Renderer/GoogleViz.pm	Tue Nov 18 16:17:28 2008
@@ -140,13 +140,18 @@
     my %args = @_;
 
     my @data = @{ $args{data} };
+    my %cols = %{ $args{columns} };
 
     Jifty->web->out('data.addRows(' . scalar(@data) . ");\n");
 
     my $row = 0;
     for my $datapoint (@data) {
         for my $column (keys %$datapoint) {
-            my $value = $datapoint->{$column};
+            my $value = $self->encode_value(
+                value  => $datapoint->{$column},
+                column => $cols{$column},
+            );
+
             my $encoded = objToJson($value);
 
             Jifty->web->out("data.setValue($row, '$column', $encoded);\n");
@@ -156,5 +161,45 @@
     }
 }
 
+=head2 encode_value
+
+=cut
+
+sub encode_value {
+    my $self = shift;
+    my %args = @_;
+
+    my $value  = $args{value};
+    my $column = $args{column};
+
+    if ($column->{type} eq 'date') {
+        if (!ref($value)) {
+            $value = Jifty::DateTime->new_from_string($value);
+        }
+
+        if (ref($value)) {
+            if ($value->isa('Jifty::DateTime') && $value->is_date) {
+                return sprintf 'new Date(%d, %d, %d)',
+                    $value->year,
+                    $value->month,
+                    $value->day;
+            }
+            elsif ($value->isa('DateTime')) {
+                return sprintf 'new Date(%d, %d, %d, %d, %d, %d)',
+                    $value->year,
+                    $value->month,
+                    $value->day,
+                    $value->hour,
+                    $value->minute,
+                    $value->second;
+            }
+        }
+
+        die "Can't handle the date '$value'";
+    }
+
+    return objToJson($value);
+}
+
 1;
 


More information about the Jifty-commit mailing list