Author: spadkins
Date: Thu Nov  9 09:41:47 2006
New Revision: 8031

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

Log:
allow graphs with {objects} supplied rather than an {object_set}

Modified: p5ee/trunk/App-Widget/lib/App/Widget/Graph.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/Graph.pm       (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/Graph.pm       Thu Nov  9 09:41:47 2006
@@ -144,21 +144,32 @@
     &App::sub_entry if ($App::trace);
     my ($self, $spec) = @_;
 
+    my $context = $self->{context};
+
     # the following four fields need to be set to bind
     my $columns = $spec->{columns};
     $columns = [ split(/,/, $columns) ] if (!ref($columns));
     die "no columns in graph" if ($#$columns == -1);
-    my $context = $self->{context};
-    my $object_set = $self->get_object_set($spec);
-    if (!$object_set) {
-        die "No known way to get data";
+
+    my ($objects, $keys, $column_defs, $object_set);
+    if ($self->{objects}) {
+        $keys        = $self->{keys};
+        $objects     = $self->{objects};
+        $column_defs = $self->{column_defs};
     }
+    else {
+        $object_set = $self->get_object_set($spec);
+        if (!$object_set) {
+            die "No known way to get data";
+        }
 
-    # make sure that the columns we need for the graph are in the
-    # list of columns in the dataset
-    $object_set->include_columns($columns);
+        # make sure that the columns we need for the graph are in the
+        # list of columns in the dataset
+        $object_set->include_columns($columns);
 
-    my $keys = $object_set->get_key_columns();  # get the columns that are keys
+        $keys = $object_set->get_key_columns();  # get the columns that are 
keys
+        $column_defs = $object_set->get_column_defs();
+    }
 
     my $column_dims = (($#$columns > 0) ? 1 : 0);
     my $data_dims   = ($#$keys + 1) + $column_dims;
@@ -166,27 +177,32 @@
     if ($graph_dims > $data_dims) {
         $graph_dims = $data_dims;
     }
-    my ($objects);
-    if ($graph_dims < $data_dims) {
-        $graph_dims = $data_dims;
-        my $max_key_idx = $data_dims - $graph_dims;
-        my (@index_keys);
-        my $index = $object_set->get_index([EMAIL PROTECTED]);
-        my $key = $spec->{key};
-        if (!$key) {
-            my @keys = (sort keys %$index);
-            $key = $keys[0];
+
+    if ($self->{objects}) {
+        if ($graph_dims < $data_dims) {
+            $graph_dims = $data_dims;
         }
-        $objects = $index->{$key};
     }
     else {
-        $graph_dims = $data_dims;
-        $objects = $object_set->get_objects();
+        if ($graph_dims < $data_dims) {
+            $graph_dims = $data_dims;
+            my (@index_keys);
+            my $index = $object_set->get_index([EMAIL PROTECTED]);
+            my $key = $spec->{key};
+            if (!$key) {
+                my @keys = (sort keys %$index);
+                $key = $keys[0];
+            }
+            $objects = $index->{$key};
+        }
+        else {
+            $graph_dims = $data_dims;
+            $objects = $object_set->get_objects();
+        }
     }
 
     my (@x, @yn, $object, $column);
     my ($label);
-    my $column_defs = $object_set->get_column_defs();
 
     if ($#$columns > 0 || $graph_dims < 2) {
         for (my $i = 0; $i <= $#$objects; $i++) {

Reply via email to