This commit is contained in:
@@ -6,6 +6,10 @@
|
||||
import { formatFormTime, nextMonth } from "../utils/time";
|
||||
import GroupSelect from "../components/GroupSelect.svelte";
|
||||
import markStale from "../stores/markStale";
|
||||
import Checkbox from "../components/Checkbox.svelte";
|
||||
import GroupItemSelect from "../components/GroupItemSelect.svelte";
|
||||
import groupStore from "../stores/group";
|
||||
import type { GroupResult } from "../models/group";
|
||||
|
||||
export let deletion = false;
|
||||
export let creation = false;
|
||||
@@ -21,6 +25,9 @@
|
||||
name: "",
|
||||
description: "",
|
||||
completedAmount: 0,
|
||||
unweighted: false,
|
||||
compositionMode: "item",
|
||||
itemId: null,
|
||||
group: {id: "", name: "", icon: "question", description: ""},
|
||||
items: [],
|
||||
logs: [],
|
||||
@@ -37,11 +44,15 @@
|
||||
let description = goal.description;
|
||||
let groupId = goal.groupId;
|
||||
let amount = goal.amount;
|
||||
let unweighted = goal.unweighted;
|
||||
let itemId = goal.itemId || "";
|
||||
let compositionMode = goal.compositionMode;
|
||||
let startTime = formatFormTime(goal.startTime);
|
||||
let endTime = formatFormTime(goal.endTime);
|
||||
|
||||
let error = null;
|
||||
let loading = false;
|
||||
let selectedGroup: GroupResult = null;
|
||||
|
||||
function onSubmit() {
|
||||
loading = true;
|
||||
@@ -50,7 +61,8 @@
|
||||
stuffLogClient.createGoal({
|
||||
startTime: new Date(startTime),
|
||||
endTime: new Date(endTime),
|
||||
groupId, name, description, amount,
|
||||
itemId: itemId || null,
|
||||
groupId, name, description, amount, unweighted, compositionMode
|
||||
}).then(() => {
|
||||
markStale("goal");
|
||||
modalStore.close();
|
||||
@@ -72,7 +84,9 @@
|
||||
stuffLogClient.updateGoal(goal.id, {
|
||||
startTime: new Date(startTime),
|
||||
endTime: new Date(endTime),
|
||||
name, description, amount,
|
||||
itemId: itemId || null,
|
||||
clearItemId: itemId === "",
|
||||
name, description, amount, compositionMode, unweighted,
|
||||
}).then(() => {
|
||||
markStale("goal");
|
||||
modalStore.close();
|
||||
@@ -89,6 +103,8 @@
|
||||
function onClose() {
|
||||
modalStore.close();
|
||||
}
|
||||
|
||||
$: selectedGroup = $groupStore.groups.find(g => g.id === groupId);
|
||||
</script>
|
||||
|
||||
<Modal show title="{verb} Goal" error={error} closable on:close={onClose}>
|
||||
@@ -99,12 +115,20 @@
|
||||
<textarea disabled={deletion} name="description" bind:value={description} />
|
||||
<label for="groupId">Group</label>
|
||||
<GroupSelect disabled={!creation} name="groupId" bind:value={groupId}/>
|
||||
<label for="groupId">Specific Item</label>
|
||||
<GroupItemSelect disabled={deletion} optional optionalLabel="Whole Group" group={selectedGroup} name="itemId" bind:value={itemId}/>
|
||||
<label for="amount">Amount</label>
|
||||
<input disabled={deletion} name="amount" type="number" bind:value={amount} />
|
||||
<label for="compositionMode">Composition Mode (does nothing right now)</label>
|
||||
<select name="compositionMode" bind:value={compositionMode} disabled={deletion}>
|
||||
<option value="item" selected={"item" === compositionMode}>Item</option>
|
||||
<option value="task" selected={"task" === compositionMode}>Task</option>
|
||||
</select>
|
||||
<label for="startTime">Start Time</label>
|
||||
<input disabled={deletion} name="startTime" type="datetime-local" bind:value={startTime} />
|
||||
<label for="endTime">End Time</label>
|
||||
<input disabled={deletion} name="endTime" type="datetime-local" bind:value={endTime} />
|
||||
<Checkbox bind:checked={unweighted} label="Unweighted (All items count as 1)" />
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<script lang="ts">
|
||||
import stuffLogClient from "../clients/stufflog";
|
||||
import Checkbox from "../components/Checkbox.svelte";
|
||||
import ItemSelect from "../components/ItemSelect.svelte";
|
||||
import Modal from "../components/Modal.svelte";
|
||||
import type { LogResult } from "../models/log";
|
||||
import markStale from "../stores/markStale";
|
||||
@@ -17,8 +18,12 @@
|
||||
itemId: "",
|
||||
loggedTime: new Date().toISOString(),
|
||||
description: "",
|
||||
itemAmount: 1,
|
||||
secondaryItemAmount: 0,
|
||||
secondaryItemId: null,
|
||||
task: null,
|
||||
item: null,
|
||||
secondaryItem: null,
|
||||
}
|
||||
let defaultMarkInactive = false;
|
||||
let verb = "Add";
|
||||
@@ -34,6 +39,9 @@
|
||||
|
||||
let loggedTime = formatFormTime(log.loggedTime);
|
||||
let description = log.description;
|
||||
let itemAmount = log.itemAmount;
|
||||
let secondaryItemId = log.secondaryItemId || "";
|
||||
let secondaryItemAmount = log.secondaryItemAmount;
|
||||
let markInactive = defaultMarkInactive;
|
||||
let error = null;
|
||||
let loading = false;
|
||||
@@ -46,7 +54,8 @@
|
||||
stuffLogClient.createLog({
|
||||
taskId: log.task.id,
|
||||
loggedTime: new Date(loggedTime).toISOString(),
|
||||
description,
|
||||
secondaryItemId: secondaryItemId || null,
|
||||
description, itemAmount, secondaryItemAmount,
|
||||
}).then(() => {
|
||||
markStale("project", "task", "goal", "log");
|
||||
|
||||
@@ -74,7 +83,9 @@
|
||||
} else {
|
||||
stuffLogClient.updateLog(log.id, {
|
||||
loggedTime: new Date(loggedTime).toISOString(),
|
||||
description,
|
||||
secondaryItemId: secondaryItemId || null,
|
||||
clearSecondaryItemId: secondaryItemId == "",
|
||||
description, itemAmount, secondaryItemAmount
|
||||
}).then(() => {
|
||||
markStale("project", "task", "goal", "log");
|
||||
modalStore.close();
|
||||
@@ -97,8 +108,17 @@
|
||||
<input disabled name="taskName" type="text" value={log.task.name} />
|
||||
<label for="loggedTime">Logged Time</label>
|
||||
<input disabled={deletion} name="loggedTime" type="datetime-local" bind:value={loggedTime} />
|
||||
<label for="itemAmount">Item Amount</label>
|
||||
<input disabled={deletion} name="itemAmount" type="number" bind:value={itemAmount} />
|
||||
<label for="description">Description</label>
|
||||
<textarea disabled={deletion} name="description" bind:value={description} />
|
||||
<label for="secondaryItemId">Secondary Item</label>
|
||||
<ItemSelect name="secondaryItemId" disabled={deletion} optional bind:value={secondaryItemId} />
|
||||
{#if secondaryItemId != ""}
|
||||
<label for="secondaryItemAmount">Secondary Item Amount</label>
|
||||
<input disabled={deletion} name="secondaryItemAmount" type="number" bind:value={secondaryItemAmount} />
|
||||
{/if}
|
||||
|
||||
<Checkbox disabled={deletion} bind:checked={markInactive} label="Mark task inactive/completed." />
|
||||
|
||||
<hr />
|
||||
|
||||
Reference in New Issue
Block a user