add new fields to logs and goals.
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-01-17 19:01:13 +01:00
parent 3085b8c025
commit eeba5bc9c8
20 changed files with 342 additions and 67 deletions
+26 -2
View File
@@ -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 />
+22 -2
View File
@@ -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 />