Author: spadkins
Date: Mon Jan  8 14:30:13 2007
New Revision: 8525

Modified:
   p5ee/trunk/App-Repository/lib/App/Repository.pm
   p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm

Log:
support for alternate column labels and sorting

Modified: p5ee/trunk/App-Repository/lib/App/Repository.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/Repository.pm     (original)
+++ p5ee/trunk/App-Repository/lib/App/Repository.pm     Mon Jan  8 14:30:13 2007
@@ -2324,9 +2324,20 @@
 =cut
 
 sub get_column_labels {
-    my ($self, $table) = @_;
+    my ($self, $table, $labelcolumn) = @_;
     $self->_load_table_metadata($table) if (! defined 
$self->{table}{$table}{loaded});
-    $self->{table}{$table}{column_labels};
+    my ($labels);
+    if (!$labelcolumn) {
+        $labels = $self->{table}{$table}{column_labels};
+    }
+    else {
+        $labels = {};
+        my $column_defs = $self->{table}{$table}{column};
+        foreach my $column (keys %$column_defs) {
+            $labels->{$column} = $column_defs->{$column}{$labelcolumn};
+        }
+    }
+    return($labels);
 }
 
 #############################################################################

Modified: 
p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm
==============================================================================
--- p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm     
(original)
+++ p5ee/trunk/App-Repository/lib/App/ValueDomain/RepositoryTableColumns.pm     
Mon Jan  8 14:30:13 2007
@@ -76,16 +76,20 @@
     my $rep = $context->repository($self->{repository});
     my $table = $self->{table} || die "No table specified in $self->{name} 
ValueDomain";
     my $values = $rep->get_column_names($table);
-    my $labels = $rep->get_column_labels($table);
+    my $labels = $rep->get_column_labels($table, $self->{labelcolumn});
+    my $column_defs = $rep->{table}{$table}{column};
     $values = [ @$values ];    # make a copy
     $labels = { %$labels };    # make a copy
-    if ($self->{sort}) {
+    if ($self->{sortcolumn}) {
+        my $sortcolumn = $self->{sortcolumn};
+        @$values = sort { $column_defs->{$a}{$sortcolumn} <=> 
$column_defs->{$b}{$sortcolumn} } @$values;
+    }
+    elsif ($self->{sort}) {
         @$values = sort { $labels->{$a} cmp $labels->{$b} } @$values;
     }
     if (defined $self->{is_key}) {
         my $is_key = $self->{is_key};
         my @values = ();
-        my $column_defs = $rep->{table}{$table}{column};
         foreach my $col (@$values) {
             if (($is_key && $column_defs->{$col}{is_key}) ||
                 (!$is_key && !$column_defs->{$col}{is_key})) {

Reply via email to