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.
|
|
<script lang="ts"> import { sl3 } from "$lib/clients/sl3"; import Modal from "$lib/components/common/Modal.svelte"; import ModalBody from "$lib/components/common/ModalBody.svelte"; import { getItemListContext } from "$lib/components/contexts/ItemListContext.svelte"; import { getItemMultiListContext } from "$lib/components/contexts/ItemMultiListContext.svelte"; import { getModalContext } from "$lib/components/contexts/ModalContext.svelte"; import { getProjectContext } from "$lib/components/contexts/ProjectContext.svelte"; import { getSprintListContext } from "$lib/components/contexts/SprintListContext.svelte"; import ScheduledDateInput from "$lib/components/controls/ScheduledDateInput.svelte"; import type Item from "$lib/models/item";
const {currentModal, closeModal} = getModalContext(); const {reloadProject} = getProjectContext(); const {reloadItemList} = getItemListContext(); const {reloadSprintList} = getSprintListContext(); const {reloadItemLists} = getItemMultiListContext();
let items: Item[] let openedDate: Date let scheduleDate: string;
let error: string let loading: boolean let show: boolean
$: switch ($currentModal.name) { case "item.multischedule": init($currentModal.items) break;
default: loading = false; error = null; show = false; }
function init(selectedItems: Item[]) { openedDate = new Date(); items = selectedItems.map(i => ({...i})); show = true; scheduleDate = selectedItems.find(i => i.scheduledDate)?.scheduledDate || ""; }
async function submit() { error = null; loading = true;
try { for (const item of items) { await sl3(fetch).updateItem(item.scopeId, item.id, { scheduledDate: scheduleDate || void(0), clearScheduledDate: scheduleDate === "", }); }
reloadItemLists();
await reloadProject(); await reloadItemList(); await reloadSprintList();
closeModal(); } catch(err) { if (err.statusCode != null) { error = err.statusMessage; } else { error = err }
} finally { loading = false; } } </script>
<form on:submit|preventDefault={submit}> <Modal closable show={show} verb="Schedule" noun="Items" disabled={loading} error={error}> <ModalBody> <label for="stats">Date</label> <ScheduledDateInput notScheduledText="Clear Scheduled Date" openDate={openedDate} bind:value={scheduleDate} /> <p>This changes the scheduled date on all items in the requirement, regardless of whether they already have a scheduled date.</p> </ModalBody> </Modal> </form>
|