AlgoJudge documentation0.2

Activities

What an activity is, how to find one, and how to get into it.

An activity is one contest or one course. It holds the series, the problems, your submissions, the ranking and the questions. Everything you do as a participant happens inside one.

Finding yours

Activities in the navigation lists them, five to a page. The list is not only what you have joined. It carries:

  • activities you are enrolled in,
  • activities you were invited to, badge Invited,
  • public activities you may join, badge Open to join.

An activity you may not see is not in the list at all. That is the Server's decision, not a filter you can turn off.

The filters

Two rows of chips, and you may pick several in each:

  • StateOngoing, Upcoming, Finished. Finished activities are dimmed; the other two keep full color.
  • TypeContest or Course. A trophy icon marks a contest, a school icon a course, and a question mark a type this version does not recognize.

Changing a filter takes you back to page one.

What a card shows

The icon, the name, and the slug — the short alias that appears in the address, such as AMMPZ-2019. Free lines of text beside it (Organizer: …, and anything else) are display metadata the organizer wrote.

Clicking a card opens the activity's own page where its organizer wrote a page for participants, and goes straight to the problems where they did not. There is no point stopping at a page with nothing on it, so the address does not stop either: opening it directly sends you on to the problems.

Somebody who is not enrolled gets whatever the organizer wrote for outsiders, and the form to enroll.

A lock on a card

Locked by a round

A card marked Locked by … does not open, and typing the address does not get you in either. A round that outranks the rest is running — in this activity, or across the whole installation — and everything of lower rank is out of reach while it does. The badge names the round that did it.

Nothing is lost. The activity's own page still loads, under This activity is locked, carrying the reason and the sentence The problems, submissions, questions and ranking come back when it ends.

Getting in

Three ways, and which one applies is the organizer's setting.

SettingWhat the activity page offers
closedNothing. It says Enrollment in this activity is done by its organizer.
passwordA Join password box and an Enroll button.
openAn Enroll button, no password.

Where the activity publishes rules, the form also carries I have read and accept the rules, required. Clicking that text opens the rules over the form, so going to read them does not lose what you typed.

An enrollment link looks like https://host/activities/AMMPZ-2019#thepassword. The part after the # is the join password. The page takes it, fills the field and clears it out of the address bar. A fragment is never sent to a server, so the password does not end up in a log on the way.

The link needs a session. If you are not signed in you are sent to sign in first and then brought back — fragment included, which is the part that mattered.

What you get once you are in

The navigation fills up with the activity's own entries. Each one appears only under a condition:

EntryShown when
Activity pageyou are enrolled and the organizer wrote a page for participants
Problemsyou are enrolled
Submityou are enrolled
My submissionsyou are enrolled
Rankingyou are enrolled and scores are not restricted to managers
Questions and announcementsyou are enrolled and the organizer switched the module on
Rulesthe organizer published rules — enrolled or not

Somebody who is not enrolled gets the activity's name and its rules, and nothing else. Offering Submit to somebody who is not in the activity would be offering screens that refuse.

The clock in the header

A badge counts down to the end of the round that is running now — not to the end of the activity, which for a contest of three rounds is not a deadline anybody is working against.

It appears only once a round has started. While a round is paused the badge says Paused instead of counting, because a clock ticking through an interruption is worse than one that stops.

The panel in the corner

Bottom right, collapsed when you arrive: your own last submissions in this activity, newest first, with the time, the problem's [slug] and name, the score and the state. It updates itself as verdicts arrive, so you can watch one finish without leaving the statement you are reading.

Its Send button opens the submit form in a dialog, on the problem you are looking at where you are looking at one. That button is also why the panel appears only where you are enrolled: it sends, and the Server refuses a submission from somebody who is not in the activity.

Not on a phone. At 768px and narrower the panel is not drawn at all. It is 460px pinned to a corner, which on a small screen is nearly the whole width, and it would sit on top of whatever the page put in the same corner — the submit form's own Send button included. Nothing is lost: the list is My submissions in the navigation, and the form its Send button opens is Submit beside it.

Whether it is open is remembered for the session.

On a phone

768px is the line. At that width and narrower the Client is laid out differently rather than drawn smaller. Nothing is taken away; several things sit somewhere else. The one exception is the submissions panel in the corner, which is not drawn at all — the reason is given with it above.

The bar and the navigation

The bar across the top keeps what a thumb reaches without opening anything: the three-bar menu button, the product's mark, the countdown for the round that is running, and the light and dark switch. Your account menu and the language chooser move into the navigation, at its foot, under a divider. Those two are the widest controls in the bar, and with everything else beside them they do not fit its width. The chooser is still the button marked Lang, and the account menu is still under your own name.

The menu button, top left, slides the navigation over the whole screen. It is the full navigation — there is no narrow icon rail here, and no Collapse to make one — and it closes the moment you tap an entry in it. The entry has already changed the page underneath, and there is no dimmed strip beside the panel to tap away.

Two things a wide window keeps in the navigation are not in this one: the operator's mark at the top, and the foot links to About and to the installation's legal documents. Those documents keep their own addresses — /terms, /privacy, /cookies and /accessibility — and open at any width. The operator's name beside the product's mark is dropped from the bar for the same reason: a long department name would push the clock and the menu button past the edge.

Lists become cards

A list that is a table on a desktop is one card per row here. The heading row goes, and every value carries the name of the column it came from, so a submission reads Submission date, Problem, Language, Status, Result down the screen instead of across it. A cell with nothing in it is left out rather than printed as a bare label.

Nothing is cut to make the room. A wide table on a phone either loses its right-hand columns off the edge or shrinks the type until the numbers stop being readable; a card does neither, and is taller instead.

My submissions, Questions and announcements, Printouts and the per-test table under a result are all read this way. The two ranking boards are the exception — see Ranking.

The activity list

On a card in Activities the organizer's free lines — Organizer: …, and whatever else they wrote — sit under the activity's name, across the card's whole width and in a smaller face. On a wide window they are a column beside the name; on a phone there is no width for two columns, so there is one. The Result line keeps its size wherever it is, because it is your score rather than a detail of the activity.

Inside an activity a problem's row wraps the same way. [slug] Name stays on the first line, and the status badge and Submit drop to the second instead of being squeezed in beside it.

Competing as a group

Where a manager has put you in a group, the activity page carries a You are competing as a group panel with its name, description and members. The group is the contestant: it submits, it spends the allowance and it holds the ranking row. See Competing in a group.

On this page