ui: Prepare ui for public interface
This commit is contained in:
parent
d010b86fa0
commit
56d8d49304
7 changed files with 118 additions and 27 deletions
|
|
@ -47,6 +47,7 @@
|
|||
|
||||
export let theme;
|
||||
export let exercice;
|
||||
let solved = {};
|
||||
|
||||
export let refresh_my;
|
||||
export let refresh_teams;
|
||||
|
|
@ -158,11 +159,12 @@
|
|||
</Col>
|
||||
{/if}
|
||||
<Col lg="6" class="mb-5">
|
||||
{#if !$my.exercices[exercice.id].solved_rank}
|
||||
{#if !$my.exercices[exercice.id].solved_rank && !solved[exercice.id]}
|
||||
<ExerciceFlags
|
||||
{refresh_my}
|
||||
{refresh_teams}
|
||||
exercice={$my.exercices[exercice.id]}
|
||||
bind:forcesolved={solved[exercice.id]}
|
||||
flags={$my.exercices[exercice.id].flags}
|
||||
/>
|
||||
{:else}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
import { themesStore } from '../stores/themes.js';
|
||||
import { settings, time } from '../stores/settings.js';
|
||||
|
||||
let stop_refresh = false;
|
||||
|
||||
let refresh_interval_settings = null;
|
||||
async function refresh_settings(cb=null, interval=null) {
|
||||
if (refresh_interval_settings)
|
||||
|
|
@ -12,6 +14,9 @@
|
|||
if (interval === null) {
|
||||
interval = Math.floor(Math.random() * 24000) + 32000;
|
||||
}
|
||||
if (stop_refresh) {
|
||||
return;
|
||||
}
|
||||
refresh_interval_settings = setInterval(refresh_settings, interval);
|
||||
|
||||
if (!cb) {
|
||||
|
|
@ -43,6 +48,9 @@
|
|||
if (interval === null) {
|
||||
interval = Math.floor(Math.random() * 24000) + 32000;
|
||||
}
|
||||
if (stop_refresh) {
|
||||
return;
|
||||
}
|
||||
refresh_interval_teams = setInterval(refresh_teams, interval);
|
||||
|
||||
teamsStore.update(await fetch('teams.json', {headers: {'Accept': 'application/json'}}), cb);
|
||||
|
|
@ -55,6 +63,9 @@
|
|||
if (interval === null) {
|
||||
interval = Math.floor(Math.random() * 24000) + 32000;
|
||||
}
|
||||
if (stop_refresh) {
|
||||
return;
|
||||
}
|
||||
refresh_interval_themes = setInterval(refresh_themes, interval);
|
||||
|
||||
await themesStore.update(await fetch('themes.json', {headers: {'Accept': 'application/json'}}), cb);
|
||||
|
|
@ -67,6 +78,9 @@
|
|||
if (interval === null) {
|
||||
interval = Math.floor(Math.random() * 24000) + 24000;
|
||||
}
|
||||
if (stop_refresh) {
|
||||
return;
|
||||
}
|
||||
refresh_interval_my = setInterval(refresh_my, interval);
|
||||
|
||||
my.update(await fetch('my.json', {headers: {'Accept': 'application/json'}}), cb);
|
||||
|
|
@ -79,6 +93,9 @@
|
|||
if (interval === null) {
|
||||
interval = Math.floor(Math.random() * 24000) + 32000;
|
||||
}
|
||||
if (stop_refresh) {
|
||||
return;
|
||||
}
|
||||
refresh_interval_issues = setInterval(refresh_issues, interval);
|
||||
|
||||
issuesStore.update(await fetch('issues.json', {headers: {'Accept': 'application/json'}}), cb);
|
||||
|
|
@ -88,7 +105,11 @@
|
|||
await refresh_settings();
|
||||
await refresh_themes();
|
||||
refresh_teams();
|
||||
refresh_my();
|
||||
refresh_my((my) => {
|
||||
if (my && my.team_id === 0) {
|
||||
stop_refresh = true;
|
||||
}
|
||||
});
|
||||
refresh_issues();
|
||||
|
||||
return {
|
||||
|
|
|
|||
Reference in a new issue