add task and item filters to goals.
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-01-19 22:12:10 +01:00
parent 99cc6fac3c
commit a187e91c3c
8 changed files with 122 additions and 21 deletions
+10 -9
View File
@@ -1,7 +1,6 @@
<script lang="ts">
import type { GoalCompositionMode } from "../models/goal";
import type { GoalCompositionMode, GoalLogResult } from "../models/goal";
import type { LogResult } from "../models/log";
import type { TaskResult } from "../models/task";
interface CompositionItem {
link: string
@@ -19,14 +18,16 @@ import type { TaskResult } from "../models/task";
if (mode === "item") {
for (const log of logs) {
const item = log.item;
if (!map[item.id]) {
map[item.id] = {name: item.name, amount: log.itemAmount, link: `/items#${item.id}`};
} else {
map[item.id].amount += log.itemAmount;
if (log.itemCounted !== false) {
const item = log.item;
if (!map[item.id]) {
map[item.id] = {name: item.name, amount: log.itemAmount, link: `/items#${item.id}`};
} else {
map[item.id].amount += log.itemAmount;
}
}
if (log.secondaryItem) {
if (log.secondaryItem && log.secondaryItemCounted !== false) {
const item = log.secondaryItem;
if (!map[item.id]) {
map[item.id] = {name: item.name, amount: log.secondaryItemAmount, link: `/items#${item.id}`};
@@ -49,7 +50,7 @@ import type { TaskResult } from "../models/task";
}
}
list = Object.keys(map).sort((a, b) => map[b].amount - map[a].amount).map(k => map[k]);
list = Object.keys(map).sort((a, b) => map[b].amount - map[a].amount).map(k => map[k]).filter(e => e.amount > 0);
}
</script>
+13 -1
View File
@@ -49,7 +49,9 @@ import type { GroupResult } from "../models/group";
let compositionMode = goal.compositionMode;
let startTime = formatFormTime(goal.startTime);
let endTime = formatFormTime(goal.endTime);
let taskFilter = goal.taskFilter || "";
let itemFilter = goal.itemFilter || "";
let error = null;
let loading = false;
let selectedGroup: GroupResult = null;
@@ -62,6 +64,8 @@ import type { GroupResult } from "../models/group";
startTime: new Date(startTime),
endTime: new Date(endTime),
itemId: itemId || null,
taskFilter: taskFilter.toLowerCase() || null,
itemFilter: itemFilter.toLowerCase() || null,
groupId, name, description, amount, unweighted, compositionMode
}).then(() => {
markStale("goal");
@@ -86,6 +90,10 @@ import type { GroupResult } from "../models/group";
endTime: new Date(endTime),
itemId: itemId || null,
clearItemId: itemId === "",
taskFilter: taskFilter.toLowerCase() || null,
clearTaskFilter: taskFilter === "",
itemFilter: itemFilter.toLowerCase() || null,
clearItemFilter: itemFilter === "",
name, description, amount, compositionMode, unweighted,
}).then(() => {
markStale("goal");
@@ -128,6 +136,10 @@ import type { GroupResult } from "../models/group";
<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} />
<label for="taskFilter">Task Filter (Optional)</label>
<input disabled={deletion} name="taskFilter" type="text" bind:value={taskFilter} />
<label for="itemFilter">Item Filter (Optional)</label>
<input disabled={deletion} name="itemFilter" type="text" bind:value={itemFilter} />
<Checkbox bind:checked={unweighted} label="Unweighted (All items count as 1)" />
<hr />
+14 -1
View File
@@ -15,6 +15,8 @@ export default interface Goal {
description: string
unweighted: boolean
compositionMode: GoalCompositionMode
taskFilter?: string
itemFilter?: string
}
export interface GoalFilter {
@@ -26,10 +28,15 @@ export interface GoalFilter {
export interface GoalResult extends Goal {
group: Group
items: GoalResultItem[]
logs: LogResult[]
logs: GoalLogResult[]
completedAmount: number
}
export interface GoalLogResult extends LogResult {
itemCounted: boolean
secondaryItemCounted: boolean
}
interface GoalResultItem extends Item {
completedAmount: number
}
@@ -44,6 +51,8 @@ export interface GoalInput {
description: string
unweighted: boolean
compositionMode: string
taskFilter?: string
itemFilter?: string
}
export interface GoalUpdate {
@@ -56,4 +65,8 @@ export interface GoalUpdate {
unweighted?: boolean
compositionMode?: string
clearItemId?: boolean
taskFilter?: string
clearTaskFilter: boolean
itemFilter?: string
clearItemFilter: boolean
}
+2
View File
@@ -21,6 +21,8 @@ export interface LogResult extends Log {
task: Task
item: Item
secondaryItem?: Item
itemCounted?: boolean
secondaryItemCounted?: boolean
}
export interface LogInput {