function set_style(name){
$('#stylesheet').attr("href", "/css/" + name + ".css");
localStorage.setItem("theme", name);
+ $(document).ready(function() {
+ if(name == 'slate' || name == 'cyborg')
+ $('.logo').removeClass('logo-light');
+ else
+ $('.logo').addClass('logo-light');
+ });
}
$( document ).ready(function() {
- $('#theme-selector').removeClass('hidden');
$('#theme_slate' ).on('click', function () { set_style("slate"); });
$('#theme_cerulean').on('click', function () { set_style("cerulean"); });
$('#theme_cyborg' ).on('click', function () { set_style("cyborg"); });
}
sub HTML::Element::fid { shift->look_down(id => shift) }
- sub HTML::Element::fclass { shift->look_down(class => shift) }
+ sub HTML::Element::fclass { shift->look_down(class => qr/\b$_[0]\b/) }
sub HTML::Element::namedlink {
my ($self, $id, $name) = @_;
sub process_ct_entry {
my ($tree, %args) = @_;
$_->edit_href (sub {s/contest_id/$args{id}/}) for $tree->find('a');
+ $tree->fid('editorial')->detach unless $args{finished};
$tree->fid('links')->detach unless $args{started};
+ my $status = ($args{time} < $args{start} ? 'starts' : 'ends');
+ $tree->fclass('timer')->attr('data-stop', $status eq 'ends' ? $args{stop} : $args{start});
$tree->content_handler(
start => ftime $args{start},
stop => ftime $args{stop},
+ status => $status,
description => literal $args{description});
+ $tree->fid('ctcountdown')->detach if $args{time} >= $args{stop};
}
sub process_ct {
if ($args{contest_stop}) {
$tree->fid('solution')->detach;
$tree->fid('solution_modal')->detach;
- my $countdown = $tree->fid('countdown');
- $countdown->attr('data-start' => $args{open_time});
- $countdown->attr('data-stop' => $args{contest_stop});
- $countdown->attr('data-time' => $args{time});
- my $left = $args{contest_stop} - $args{time};
- $countdown->replace_content(sprintf '%02d:%02d:%02d', $left/60/60, $left/60%60, $left%60);
- $tree->fid('score')->attr('data-value' => $args{value});
- $tree->fid('score')->replace_content(Gruntmaster::Data::Result::Contest::calc_score($args{value}, $args{time} - $args{open_time}, 0, $args{contest_stop} - $args{contest_start}));
+ my $score = $tree->fid('score');
+ $score->attr('data-start' => $args{open_time});
+ $score->attr('data-stop' => $args{contest_stop});
+ $score->attr('data-value' => $args{value});
+ $tree->fid('countdown')->attr('data-stop' => $args{contest_stop});
} else {
$tree->fid('solution')->detach unless $args{solution};
$_->detach for $tree->fclass('rc'); # requires contest
$tree->fid('solution_modal')->fclass('modal-body')->replace_content(literal $args{solution});
}
if ($args{cansubmit}) {
+ $tree->fid('nosubmit')->detach;
$tree->look_down(name => 'problem')->attr(value => $args{id});
my $contest = $tree->look_down(name => 'contest');
$contest->attr(value => $args{contest}) if $args{contest};
$contest->detach unless $args{contest}
} else {
+ $tree->fid('nosubmit')->find('a')->edit_href(sub{s/id/$args{id}/});
$tree->fid('submit')->detach
}
}
<dt>Contest stop time</dt> <dd id="stop">stop</dd>
</dl>
+ <div id="ctcountdown" class="reqjs">
+ Contest <span id="status">starts/ends</span> in: <span class="timer" data-stop="...">
+ </div>
<div id="description">description</div>
<div id="links">
<a href="/pb/?contest=contest_id">Problems</a><br>
-<a href="/ed/contest_id">Editorial</a><br>
+<a href="/ed/contest_id" id="editorial">Editorial</a><br>
<a href="/log/?contest=contest_id">Job log</a><br>
<a href="/st/contest_id">Standings</a>
</div>
<dt>Owner</dt> <dd id="owner">owner</dd>
<dt>Level</dt> <dd id="level">Easy</dd>
<dt>Time limit (seconds)</dt> <dd smap="timeout">1</dd>
- <dt class="rc">Score</dt> <dd id="score" data-value="100" class="rc">50</dd>
- <dt class="rc">Contest ends in</dt> <dd id="countdown" data-start="..." data-time="..." data-stop="..." class="rc">01:30</dd>
+ <dt class="rc reqjs">Score</dt> <dd id="score" class="timer reqjs rc" data-start="..." data-stop="..." data-value="100">50</dd>
+ <dt class="rc reqjs">Contest ends in</dt> <dd id="countdown" class="timer reqjs rc" data-stop="...">01:30</dd>
</dl>
<a href="/log/?problem=problem_id" id="job_log">Job log</a><br>
<a href="/sol/problem_id" id="solution" data-toggle="modal" data-target="#solution_modal">Solution</a>
- <div id="submit">
<h1>Submit solution</h1>
+
+ <div id="nosubmit">
+ The contest has finished.<br>
+ To submit solutions to this problem, please visit the problem <a href="/pb/id">outside the contest</a>.
+ </div>
+
+ <div id="submit">
<form action="/action/submit" method="POST" enctype="multipart/form-data" role="form">
<input type="hidden" name="problem" value="problem_id">
<input type="hidden" name="contest" value="contest_id">
<div class="form-group"><label for="prog">File:</label><input id="prog" name="prog" type="file"></div>
<div class="form-group"><label for="source_code">Source code:</label> <textarea class="form-control" id="source_code" name="source_code"></textarea></div>
<div class="form-group"><label for="prog_format">File format:</label><select id="prog_format" name="prog_format" class="form-control" required>
-<option value="C">C (gcc)</option>
-<option value="CPP" selected>C++ (g++)</option>
-<option value="GCCGO">Go (gccgo)</option>
-<option value="GOLANG">Go (gc)</option>
-<option value="HASKELL">Haskell (ghc)</option>
-<option value="JAVA">Java (javac)</option>
-<option value="PASCAL">Pascal (fpc)</option>
-<option value="PERL">Perl (perl)</option>
-<option value="PYTHON">Python (python)</option>
+<option value="C">C (gcc 4.7.2)</option>
+<option value="CPP" selected>C++ (g++ 4.7.2)</option>
+<option value="GCCGO">Go (gccgo 4.7.2)</option>
+<option value="GOLANG">Go (gc 1.0.2)</option>
+<option value="HASKELL">Haskell (ghc 7.4.1)</option>
+<option value="JAVA">Java (javac 6b34)</option>
+<option value="PASCAL">Pascal (fpc 2.6.0)</option>
+<option value="PERL">Perl (perl 5.14.2)</option>
+<option value="PYTHON">Python (python 2.7.3)</option>
</select></div>
<input type="submit" value="Submit job" class="btn btn-primary">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
-<link rel="stylesheet" href="/css/cyborg.css" id="stylesheet">
+<link rel="stylesheet" href="/css/slate.css" id="stylesheet">
<script src="/js.js" type="text/javascript"></script>
<body>
<nav role="navigation">
<div class="container-fluid">
<ul class="nav nav-pills nav-justified">
-<li id="nav-home"><a href="/">Gruntmaster 6000</a>
+<li id="nav-home"><a href="/">Home</a>
<li id="nav-pb"><a href="/pb/">Problems</a>
<li id="nav-ct"><a href="/ct/">Contests</a>
<li id="nav-log"><a href="/log/">Job log</a>
<li id="nav-us"><a href="/us/">Users</a>
<li id="nav-account"><a href="/account">Account</a>
- <li id="theme-selector" class="hidden"><a class="dropdown-toggle" data-toggle="dropdown"> Theme <span class="caret"></span></a>
+<li id="nav-about"><a href="/about">About / Help</a>
+ <li id="theme-selector" class="reqjs"><a class="dropdown-toggle" data-toggle="dropdown"> Theme <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#" id="theme_slate">Gunmetal gray</a>
<li><a href="#" id="theme_cyborg">Black</a>
</nav>
<div class="container-fluid">
-
+<div class="logo logo-mindcoding center-block"></div>
<h1 id="title">TITLE</h1>
<div id="result"></div>
<div id="content">Content goes here</div>
- <div id="login" class="hidden"><a href="/login">Log in</a></div>
+ <div id="login" class="reqjs"><a href="/login">Log in</a></div>
+<div id="webchat"><a href="http://webchat.oftc.net/?channels=%23mindcoding" target="_blank">Webchat</a></div>
- <div id="tracker" class="hidden">
+ <div id="tracker" class="reqjs">
<h3>Track user</h3>
<div id="tracker_form">
<div class="form-group">
</div>
</div>
+<div id="sponsors">
+<h3>Official sponsors</h3>
+<a class="logo logo-emag" href="http://www.fundatiaemag.ro/"></a>
+<a class="logo logo-easyhost" href="http://ro.easyhost.com/"></a>
+<a class="logo logo-takeofflabs" href="http://www.takeofflabs.com/"></a>
+<a class="logo logo-bigstep" href="http://www.bigstep.com/"></a>
+</div>
+
<footer>
-Dilmom: Why don't you call your product the Gruntmaster 6000?<br>
-Dilbert: What kind of product do you see when you imagine a Gruntmaster 6000?<br>
-Dilmom: Well, it's a stripped-down version of the Gruntmaster 9000, of course. But it's software-upgradeable.
+<div class="row">
+<div class="col-md-6 column text-center">
+<a class="logo logo-hermes" href="http://www.societatea-hermes.ro"></a>
+</div>
+
+<div class="col-md-6 column text-center">
+<a class="logo logo-facebook" href="http://www.facebook.com/mindcodingcluj"></a>
+</div>
+</div>
+
+<h3>Partners</h3>
+<a href="https://www.facebook.com/spyhce?fref=ts" class="logo logo-spyhce"></a>
+<a href="https://www.facebook.com/telenav?fref=ts" class="logo logo-telenav"></a>
+<h3>Media Partners</h3>
+<a href="http://cs.ubbcluj.ro" class="logo logo-csf"></a>
+<a href="http://www.uniunea.ro" class="logo logo-usr"></a>
+<a href="http://www.coscj.ro" class="logo logo-cos"></a>
+<a href="http://www.cluj2015.ro/romana" class="logo logo-eyc"></a>
</footer>