feat(#9): Add button to filter acquisitions to unlisted stock

This commit is contained in:
Sirttas
2026-07-05 16:39:34 +02:00
parent fbe0861c29
commit 2a145bbbe7
6 changed files with 139 additions and 43 deletions
@@ -1,6 +1,7 @@
<script setup lang="ts">
import {SliderCheckbox} from '@/components';
import {SortableHeader, useSort, VirtualScrollTable} from '@/components/table';
import {MarketType, MarketTypeLabel, TaxInput, useMarketTaxStore} from "@/market";
import {MarketType, MarketTypeLabel, TaxInput, useMarketOrdersStore, useMarketTaxStore} from "@/market";
import {MinusIcon, PlusIcon} from '@heroicons/vue/24/outline';
import {useStorage} from '@vueuse/core';
import {computed, ref} from 'vue';
@@ -65,11 +66,16 @@ const columnsToIgnore = computed(() => {
const marketTaxStore = useMarketTaxStore();
const ledgersStore = useLedgersStore();
const marketOrdersStore = useMarketOrdersStore();
const threshold = useStorage('market-acquisition-threshold', 10);
const filter = ref("");
const unlistedOnly = ref(false);
const matchesFilter = (r: AcquiredType) =>
r.type.name.toLowerCase().includes(filter.value.toLowerCase())
&& (!unlistedOnly.value || !marketOrdersStore.listedTypeIds.has(r.type.id));
const { sortedArray, headerProps, showColumn } = useSort<Result>(computed(() => {
const filteredItems = props.items.filter(r => r.type.name.toLowerCase().includes(filter.value.toLowerCase()));
const filteredItems = props.items.filter(matchesFilter);
if (props.showAll) {
return filteredItems.map(r => {
@@ -172,6 +178,9 @@ const total = computed(() => {
<div class="flex" v-if="!infoOnly">
<div class="flex justify-self-end mb-2 mt-4 ms-auto">
<TaxInput />
<div class="end flex items-center" title="Show only acquisitions with no open sell order">
<SliderCheckbox class="me-1" v-model="unlistedOnly" /> Unlisted only
</div>
<div class="end">
<span>Profit Threshold: </span>
<input type="number" min="0" max="1000" step="1" v-model="threshold" />