You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.4 KiB
56 lines
1.4 KiB
<script lang="ts">
|
|
import { tick } from "svelte";
|
|
|
|
import { navigate } from "svelte-routing";
|
|
|
|
import QuestLog from "../components/QuestLog.svelte";
|
|
import RefreshSelection from "../components/RefreshSelection.svelte";
|
|
import projectGroupStore from "../stores/projectGroup";
|
|
import { sortProjects } from "../utils/sorters";
|
|
|
|
export let groupId = "";
|
|
export let projectId = "";
|
|
|
|
$: {
|
|
if ($projectGroupStore.stale && !$projectGroupStore.loading) {
|
|
projectGroupStore.load();
|
|
}
|
|
}
|
|
|
|
$: {
|
|
if ($projectGroupStore.groups.length > 0 && groupId === "") {
|
|
const group = $projectGroupStore.groups[0];
|
|
|
|
if (group.projects.length > 0) {
|
|
const projects = [...group.projects].sort(sortProjects);
|
|
|
|
navigate(`/questlog/${group.id}/${projects[0].id}`, {replace: true});
|
|
|
|
// There's some weirdness with navigate. This hack will just do a
|
|
// groups = [...groups] in the sttore to get the page to update.
|
|
tick().then(() => {
|
|
projectGroupStore.fakeRefresh();
|
|
})
|
|
} else {
|
|
navigate(`/questlog/${group.id}`);
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<div class="page">
|
|
<QuestLog groups={$projectGroupStore.groups} groupId={groupId} projectId={projectId} />
|
|
</div>
|
|
<RefreshSelection />
|
|
|
|
|
|
<style>
|
|
div.page {
|
|
display: block;
|
|
margin: auto;
|
|
max-width: 100%;
|
|
width: 1020px;
|
|
margin-top: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
</style>
|