This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -21,6 +21,8 @@ export interface LogResult extends Log {
|
||||
task: Task
|
||||
item: Item
|
||||
secondaryItem?: Item
|
||||
itemCounted?: boolean
|
||||
secondaryItemCounted?: boolean
|
||||
}
|
||||
|
||||
export interface LogInput {
|
||||
|
||||
Reference in New Issue
Block a user