From 457d2a5161ab3767dedcbfb8b4649aef07c7c8c2 Mon Sep 17 00:00:00 2001 From: Sirttas Date: Sun, 31 May 2026 18:57:10 +0200 Subject: [PATCH] cleanup rules --- docs/mammon-api.yml | 4 ++-- src/components/Dropdown.vue | 37 +++++++++++++++++++++------- src/generated/mammon/api.ts | 2 +- src/pages/rules/EditRuleBook.vue | 24 ++++++++++++++++--- src/rules/RuleInput.vue | 41 ++++++++++++++++++-------------- src/rules/rules.ts | 6 +++-- 6 files changed, 79 insertions(+), 35 deletions(-) diff --git a/docs/mammon-api.yml b/docs/mammon-api.yml index ea3c8a1..2105228 100644 --- a/docs/mammon-api.yml +++ b/docs/mammon-api.yml @@ -367,12 +367,12 @@ components: RuleResponse: type: object properties: - rules: + clauses: type: array items: $ref: "#/components/schemas/RuleClauseResponse" required: - - rules + - clauses UpdateRuleBookRequest: type: object properties: diff --git a/src/components/Dropdown.vue b/src/components/Dropdown.vue index e97865e..047259e 100644 --- a/src/components/Dropdown.vue +++ b/src/components/Dropdown.vue @@ -1,22 +1,37 @@ \ No newline at end of file + + + \ No newline at end of file diff --git a/src/rules/RuleInput.vue b/src/rules/RuleInput.vue index b0f9e58..5066156 100644 --- a/src/rules/RuleInput.vue +++ b/src/rules/RuleInput.vue @@ -5,6 +5,7 @@ import RuleClauseInput from "@/rules/RuleClauseInput.vue"; import {computed, useTemplateRef} from "vue"; import {Bars4Icon, PlusIcon, TrashIcon} from '@heroicons/vue/24/outline'; import {useSortable} from "@vueuse/integrations/useSortable"; +import {systemLedgerRef} from "@/ledger"; interface Props { ledgerRefs: string[]; @@ -12,49 +13,54 @@ interface Props { const props = defineProps() -const rule = defineModel({default: {rules:{}}}); -const rules = computed({ - get: () => rule.value && rule.value.rules ? rule.value.rules : [], - set: value => rule.value = {rules: value} +const rule = defineModel({default: {clauses:[]}}); +const clauses = computed({ + get: () => rule.value && rule.value.clauses ? rule.value.clauses : [], + set: value => rule.value = {clauses: value} }) -const addRule = () => { - rules.value = [...rules.value, {rate: RuleClauseResponseRateEnum.None}] +const addClause = () => { + clauses.value = [...clauses.value, { + rate: RuleClauseResponseRateEnum.None, + fromLedgerRef: systemLedgerRef, + toLedgerRef: systemLedgerRef + }] } -const setRule = (index: number, rule?: RuleClauseResponse) => { - if (!rule) { +const setClause = (index: number, clause?: RuleClauseResponse) => { + if (!clause) { return; } - rules.value = rules.value.with(index, rule) + clauses.value = clauses.value.with(index, clause) } -const removeRule = (index: number) => { - rules.value = rules.value.toSpliced(index, 1) +const removeClause = (index: number) => { + clauses.value = clauses.value.toSpliced(index, 1) } const sortableContainer = useTemplateRef('sortable-container') -useSortable(sortableContainer, rules, { handle: '.sortable-handle'}); +useSortable(sortableContainer, clauses, { handle: '.sortable-handle'}); \ No newline at end of file + diff --git a/src/rules/rules.ts b/src/rules/rules.ts index 4ac2b55..56bcb56 100644 --- a/src/rules/rules.ts +++ b/src/rules/rules.ts @@ -1,4 +1,4 @@ -import {characterRuleBookApi, ledgerApi, ruleBookApi} from "@/mammon"; +import {characterRuleBookApi, ruleBookApi} from "@/mammon"; import { CharacterRuleBookResponse, CreateRuleBookRequest, @@ -13,6 +13,8 @@ import {ref, triggerRef} from "vue"; export const activityTypes = { itemBought: {key: "ITEM_BOUGHT", name: "Item Bought"}, itemSold: {key: "ITEM_SOLD", name: "Item Sold"}, + itemAcquiredManually: {key: "ITEM_ACQUIRED_MANUALLY", name: "Item Acquired Manually"}, + itemConsumedManually: {key: "ITEM_CONSUME_MANUALLY", name: "Item Consumed Manually"}, // bountyEarned: {id: "BOUNTY_EARNED", name: "Bounty Earned"}, // itemManufactured: {id: "ITEM_MANUFACTURED", name: "Item Manufactured"} } as const; @@ -53,7 +55,7 @@ export const useRuleBooksStore = defineStore('rule-books', () => { const findById = (ruleBookId: string): RuleBook | undefined => ruleBooks.value.find(rb => rb.ruleBookId === ruleBookId); const create = (ruleBook: CreateRuleBookRequest) => ruleBookApi.createRuleBook(ruleBook).then(response => addRuleBook(response.data)); - const update = (ruleBookId: string, ruleBook: CreateRuleBookRequest) => ledgerApi.updateMainLedger(ruleBookId, ruleBook).then(response => replaceRuleBook(response.data)); + const update = (ruleBookId: string, ruleBook: CreateRuleBookRequest) => ruleBookApi.updateRuleBook(ruleBookId, ruleBook).then(response => replaceRuleBook(response.data)); const refresh = () => ruleBookApi.findAllRuleBooks().then(response => ruleBooks.value = response.data as RuleBook[]);