Created
October 9, 2009 02:04
-
-
Save daviddelikat/205632 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- EventManagementSystem.pm.sub 2009-10-08 06:26:03.000000000 -0500 | |
+++ EventManagementSystem.pm.sched 2009-10-08 06:30:39.000000000 -0500 | |
@@ -386,23 +397,12 @@ | |
my %hash; | |
my %hashDate; | |
+ my %h; | |
my $tickets = $self->getTickets; | |
- for my $ticket ( @$tickets ) { | |
- my $name = $ticket->get('location'); | |
- my $date = $ticket->get('startDate'); | |
- $hash{$name} = 1 if defined $name; | |
- # cut off the time from the startDate. | |
- $date =~ s/\s*\d+:\d+(:\d+)?// if defined $date; | |
- $hashDate{$date} = 1 if defined $date; | |
- } | |
- my @locations = sort keys %hash; | |
- push @$dateRef, sort keys %hashDate ; | |
-# @locations = $self->session->db->read(q{ | |
-# select distinct(EMSTicket.location) | |
-# from EMSTicket join asset using (assetId) | |
-# where asset.parentId = ? | |
-# order by EMSTicket.location | |
-# },[$self->getId])->array; | |
+# this is a really compact 'uniq' operation | |
+ my @locations = map { $h{$_}++ == 0 ? $_ : () } ( map { $_->get('location') } ( @$tickets ) ); | |
+# the dates have the time data removed with a pattern substitution | |
+ push @$dateRef, map { s/\s*\d+:\d+(:\d+)?//; $h{$_}++ == 0 ? $_ : () } ( map { $_->get('startDate') } ( @$tickets ) ); | |
return @locations; | |
} | |
@@ -1336,7 +1336,7 @@ | |
and ( assetData.status = 'approved' | |
or assetData.tagId = ? ) | |
) | |
- order by EMSTicket.startDate | |
+ order by EMSTicket.startDate, eventNumber asc | |
},[ $self->getId, $currentDate, | |
$session->scratch->get("versionTag") | |
]); | |
@@ -1344,8 +1344,10 @@ | |
tie %hash, 'Tie::IxHash'; | |
while( my $row = $tickets->hashRef ) { | |
$row->{type} = 'ticket'; | |
- $hash{$row->{startDate}}{$row->{location}} = $row; | |
+ $row->{location} = ' ' if $row->{location} eq ''; | |
+ push @{$hash{$row->{startDate}}{$row->{location}}}, $row; | |
} | |
+ grep { $_ = ' ' if defined $_ && $_ eq '' } @ticketLocations; | |
my %results = (); | |
$results{records} = []; ##Initialize to an empty array | |
my $ctr = 0; | |
@@ -1353,20 +1355,25 @@ | |
# fill out the columns in the table | |
while( $ctr < $locationsPerPage ) { $locationMap{ 'col' . ++$ctr } = '' }; | |
push @{$results{records}}, { colDate => '' , map { $_ , { type => 'label', title => $locationMap{$_} || '' } } ( keys %locationMap ) }; | |
+ my $redo = 0; | |
for my $startDate ( keys %hash ) { | |
+ $redo = 0; | |
my $row = { colDate => $startDate }; | |
my $empty = 1; | |
for my $col ( keys %locationMap ) { | |
my $location = $locationMap{$col}; | |
if( exists $hash{$startDate}{$location} ) { | |
- $row->{$col} = $hash{$startDate}{$location}; | |
+ $row->{$col} = pop @{$hash{$startDate}{$location}}; | |
$empty = 0; | |
+ $redo = 1 if scalar(@{$hash{$startDate}{$location}}) > 0; | |
+ delete $hash{$startDate}{$location} if scalar(@{$hash{$startDate}{$location}}) == 0; | |
} else { | |
$row->{$col} = { type => 'empty' }; | |
} | |
} | |
next if $empty; | |
push @{$results{records}}, $row; | |
+ redo if $redo; | |
} | |
my $rowCount = scalar(@{$results{records}}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment