use constant CONTEST_PUBLIC_COLUMNS => [qw/id name description start stop owner/];
use constant PROBLEM_PUBLIC_COLUMNS => [qw/id author writer level name owner private timeout olimit value/];
use constant USER_PUBLIC_COLUMNS => [qw/id admin name town university country level/];
-use constant JOBS_PER_PAGE => 10;
+use constant JOBS_PER_PAGE => 50;
sub dynsub{
our ($name, $sub) = @_;
}
$contests{$_->rawowner}++ for $self->contest_statuses->all;
- [ sort { $b->{solved} <=> $a->{solved} or $b->{attempted} <=> $a->{attempted} } ## no critic (ProhibitReverseSort)
- grep { $_->{solved} || $_->{attempted} } map {
+ my @users = sort { $b->{solved} <=> $a->{solved} or $b->{attempted} <=> $a->{attempted} } ## no critic (ProhibitReverseSort)
+ map {
my $id = $_->id;
+{ $_->get_columns,
solved => ($solved{$id} // 0),
attempted => ($attempted{$id} // 0),
contests => ($contests{$id} // 0) }
- } $rs->all ]
+ } $rs->all;
+ @users = @users[0 .. 199] if @users > 200;
+ \@users
}
sub user_entry {
push @columns, 'statement';
push @columns, 'solution' unless $running;
my $pb = $self->problems->find($id, {columns => \@columns, prefetch => 'owner'});
+ my @limits = map { +{
+ format => $_->format,
+ timeout => $_->timeout,
+ } } $self->limits->search({problem => $id});
my $open;
$open = $self->opens->find_or_create({
contest => $contest,
$contest &&= $self->contest($contest);
+{
$pb->get_columns,
+ @limits ? (limits => \@limits) : (),
owner_name => $pb->owner->name,
cansubmit => !$contest || !$contest->is_finished,
$running ? (