Browse Source

editor: autosave

mj-deploy
Vašek Šraier 4 years ago
parent
commit
911f1030cc
  1. 50
      frontend/src/Editor.svelte

50
frontend/src/Editor.svelte

@ -8,7 +8,10 @@
import TaskDisplay from "./TaskDisplay.svelte"; import TaskDisplay from "./TaskDisplay.svelte";
import TaskDetailEditor from "./TaskDetailEditor.svelte"; import TaskDetailEditor from "./TaskDetailEditor.svelte";
import { forceSimulation } from "./force-simulation"; import { forceSimulation } from "./force-simulation";
import { refresh as refreshTaskStatuses, taskStatuses } from './task-status-cache' import {
refresh as refreshTaskStatuses,
taskStatuses,
} from "./task-status-cache";
import { isLoggedIn } from "./ksp-task-grabber"; import { isLoggedIn } from "./ksp-task-grabber";
export let tasks: TasksFile; export let tasks: TasksFile;
@ -64,6 +67,18 @@ import { isLoggedIn } from "./ksp-task-grabber";
await saveTasks(tasks); await saveTasks(tasks);
} }
// autosave ;)
let saveTimeoutHandle: number | null = null;
function autosave() {
if (saveTimeoutHandle != null) clearTimeout(saveTimeoutHandle);
saveTimeoutHandle = setTimeout(async () => {
saveTimeoutHandle = null;
await saveTasks(tasks);
}, 5000);
}
$: { tasks; autosave(); };
function saveLocally() { function saveLocally() {
saveToLocalDisk("tasks.json", tasksToString(tasks)); saveToLocalDisk("tasks.json", tasksToString(tasks));
} }
@ -160,22 +175,27 @@ import { isLoggedIn } from "./ksp-task-grabber";
async function loadYear() { async function loadYear() {
if (!isLoggedIn()) { if (!isLoggedIn()) {
alert("Musíš se přihlásit") alert("Musíš se přihlásit");
return return;
} }
const y = prompt("Který ročník (číslo 26...X)") const y = prompt("Který ročník (číslo 26...X)");
await refreshTaskStatuses([`${y}-Z1-1`]) await refreshTaskStatuses([`${y}-Z1-1`]);
const newTasks = Array.from($taskStatuses.values()).filter(t => t.id.startsWith(y + "-") && !tasks.tasks.find(tt => tt.type == "open-data" && tt.taskReference == t.id)) const newTasks = Array.from($taskStatuses.values()).filter(
const newDescriptors: TaskDescriptor[] = (t) =>
newTasks.map(t => ({ t.id.startsWith(y + "-") &&
!tasks.tasks.find(
(tt) => tt.type == "open-data" && tt.taskReference == t.id
)
);
const newDescriptors: TaskDescriptor[] = newTasks.map((t) => ({
type: "open-data", type: "open-data",
id: t.id, id: t.id,
taskReference: t.id, taskReference: t.id,
requires: [], requires: [],
position: [0, 0], position: [0, 0],
title: t.name title: t.name,
})) }));
tasks.tasks = [...tasks.tasks, ...newDescriptors] tasks.tasks = [...tasks.tasks, ...newDescriptors];
} }
</script> </script>
@ -332,7 +352,11 @@ import { isLoggedIn } from "./ksp-task-grabber";
</div> </div>
{/if} {/if}
<div> <div>
<button on:click={loadYear} disabled={!isLoggedIn()} title={isLoggedIn() ? "Nahraje všechny úlohy z jednoho ročníku, které tu ještě nejsou" : "Je nutné být přihlášený a na stránce v KSP template."}>Nahrát celý ročník</button> <button
on:click={loadYear}
disabled={!isLoggedIn()}
title={isLoggedIn() ? 'Nahraje všechny úlohy z jednoho ročníku, které tu ještě nejsou' : 'Je nutné být přihlášený a na stránce v KSP template.'}>Nahrát
celý ročník</button>
</div> </div>
</div> </div>