Merge branch 'md/gitweb-sort-by-age' into maint
* md/gitweb-sort-by-age: gitweb: Sort projects with undefined ages last
This commit is contained in:
commit
2601298f43
@ -5528,23 +5528,30 @@ sub fill_project_list_info {
|
|||||||
|
|
||||||
sub sort_projects_list {
|
sub sort_projects_list {
|
||||||
my ($projlist, $order) = @_;
|
my ($projlist, $order) = @_;
|
||||||
my @projects;
|
|
||||||
|
|
||||||
my %order_info = (
|
sub order_str {
|
||||||
project => { key => 'path', type => 'str' },
|
my $key = shift;
|
||||||
descr => { key => 'descr_long', type => 'str' },
|
return sub { $a->{$key} cmp $b->{$key} };
|
||||||
owner => { key => 'owner', type => 'str' },
|
|
||||||
age => { key => 'age', type => 'num' }
|
|
||||||
);
|
|
||||||
my $oi = $order_info{$order};
|
|
||||||
return @$projlist unless defined $oi;
|
|
||||||
if ($oi->{'type'} eq 'str') {
|
|
||||||
@projects = sort {$a->{$oi->{'key'}} cmp $b->{$oi->{'key'}}} @$projlist;
|
|
||||||
} else {
|
|
||||||
@projects = sort {$a->{$oi->{'key'}} <=> $b->{$oi->{'key'}}} @$projlist;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return @projects;
|
sub order_num_then_undef {
|
||||||
|
my $key = shift;
|
||||||
|
return sub {
|
||||||
|
defined $a->{$key} ?
|
||||||
|
(defined $b->{$key} ? $a->{$key} <=> $b->{$key} : -1) :
|
||||||
|
(defined $b->{$key} ? 1 : 0)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
my %orderings = (
|
||||||
|
project => order_str('path'),
|
||||||
|
descr => order_str('descr_long'),
|
||||||
|
owner => order_str('owner'),
|
||||||
|
age => order_num_then_undef('age'),
|
||||||
|
);
|
||||||
|
|
||||||
|
my $ordering = $orderings{$order};
|
||||||
|
return defined $ordering ? sort $ordering @$projlist : @$projlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
# returns a hash of categories, containing the list of project
|
# returns a hash of categories, containing the list of project
|
||||||
|
Loading…
Reference in New Issue
Block a user