Fixed Calendar sorting and slight speed improvements
This commit is contained in:
parent
d0631f5ce3
commit
6c51f5fef9
1 changed files with 19 additions and 12 deletions
|
|
@ -261,17 +261,27 @@ sub view {
|
||||||
$events = WebGUI::Asset::getRoot($session)->getLineage(['descendants'],
|
$events = WebGUI::Asset::getRoot($session)->getLineage(['descendants'],
|
||||||
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
{returnObjects=>1,includeOnlyClasses=>['WebGUI::Asset::Event']});
|
||||||
}
|
}
|
||||||
|
# Sort events by startDate, then endDate
|
||||||
|
my @sortedEvents = sort {
|
||||||
|
my $x = int($a->get('eventStartDate'));
|
||||||
|
my $y = int($b->get('eventStartDate'));
|
||||||
|
if ($x == $y) {
|
||||||
|
$x = int($a->get('eventEndDate'));
|
||||||
|
$y = int($b->get('eventEndDate'));
|
||||||
|
}
|
||||||
|
return $x cmp $y;
|
||||||
|
} @{$events};
|
||||||
|
|
||||||
# Get first/last event date
|
# Get first/last event date
|
||||||
my $firstEventDate = 2147483647; # far into the future (~2038)
|
my $firstEventDate = 2147483647; # far into the future (~2038)
|
||||||
my $lastEventDate = 0; # far into the past (~1970)
|
my $lastEventDate = 0; # far into the past (~1970)
|
||||||
foreach my $event (@{$events}) {
|
foreach my $event (@sortedEvents) {
|
||||||
my $eventStartDate = $event->get('eventStartDate');
|
|
||||||
my $eventEndDate = $event->get('eventEndDate');
|
|
||||||
|
|
||||||
# ignore events we can't view
|
# ignore events we can't view
|
||||||
next unless $event->canView;
|
next unless $event->canView;
|
||||||
|
|
||||||
|
my $eventStartDate = $event->get('eventStartDate');
|
||||||
|
my $eventEndDate = $event->get('eventEndDate');
|
||||||
|
|
||||||
# update first and last event date
|
# update first and last event date
|
||||||
$firstEventDate = $eventStartDate if ($eventStartDate < $firstEventDate);
|
$firstEventDate = $eventStartDate if ($eventStartDate < $firstEventDate);
|
||||||
$lastEventDate = $eventEndDate if ($eventEndDate > $lastEventDate);
|
$lastEventDate = $eventEndDate if ($eventEndDate > $lastEventDate);
|
||||||
|
|
@ -320,13 +330,14 @@ sub view {
|
||||||
# Filter events
|
# Filter events
|
||||||
my %filteredEvents;
|
my %filteredEvents;
|
||||||
my $previousDate;
|
my $previousDate;
|
||||||
foreach my $event (@{$events}) {
|
foreach my $event (@sortedEvents) {
|
||||||
my $eventStartDate = $event->get('eventStartDate');
|
|
||||||
my $eventEndDate = $event->get('eventEndDate');
|
|
||||||
|
|
||||||
# ignore events we're not allowed to see
|
# ignore events we're not allowed to see
|
||||||
next unless $event->canView;
|
next unless $event->canView;
|
||||||
|
# get and check start date
|
||||||
|
my $eventStartDate = $event->get('eventStartDate');
|
||||||
next if ($eventStartDate > $maxDate);
|
next if ($eventStartDate > $maxDate);
|
||||||
|
# get and check end date
|
||||||
|
my $eventEndDate = $event->get('eventEndDate');
|
||||||
next if ($eventEndDate < $minDate);
|
next if ($eventEndDate < $minDate);
|
||||||
|
|
||||||
# get date/time info
|
# get date/time info
|
||||||
|
|
@ -334,8 +345,6 @@ sub view {
|
||||||
split '_', $dt->epochToHuman($eventStartDate, '%y_%c_%D_%z_%Z_%w_%M');
|
split '_', $dt->epochToHuman($eventStartDate, '%y_%c_%D_%z_%Z_%w_%M');
|
||||||
my ($endYear, $endMonth, $endDay, $endDateHuman, $endTimeHuman, $endDayOfWeek) =
|
my ($endYear, $endMonth, $endDay, $endDateHuman, $endTimeHuman, $endDayOfWeek) =
|
||||||
split '_', $dt->epochToHuman($eventEndDate, '%y_%c_%D_%z_%Z_%w');
|
split '_', $dt->epochToHuman($eventEndDate, '%y_%c_%D_%z_%Z_%w');
|
||||||
# remove leading space before startDay
|
|
||||||
$startDay =~ s/ (.*)/$1/;
|
|
||||||
|
|
||||||
# set first and last day to start of those days (to make comparison of days easier)
|
# set first and last day to start of those days (to make comparison of days easier)
|
||||||
my ($firstDay, $lastDay);
|
my ($firstDay, $lastDay);
|
||||||
|
|
@ -378,8 +387,6 @@ sub view {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
$previousDate = "$firstDay-$lastDay";
|
$previousDate = "$firstDay-$lastDay";
|
||||||
# NOTE: This currently does not work as intended, because the
|
|
||||||
# events are not sorted. This still has to be done.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set view range
|
# Set view range
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue