diff --git a/src/market/acquisition/AcquisitionResultTable.vue b/src/market/acquisition/AcquisitionResultTable.vue index 7fb52ad..76183aa 100644 --- a/src/market/acquisition/AcquisitionResultTable.vue +++ b/src/market/acquisition/AcquisitionResultTable.vue @@ -41,24 +41,36 @@ const marketTaxStore = useMarketTaxStore(); const threshold = useStorage('market-acquisition-threshold', 10); const filter = ref(""); -const { sortedArray, headerProps } = useSort(computed(() => props.items - .filter(r => r.type.name.toLowerCase().includes(filter.value.toLowerCase())) - .map(r => { - const precentProfit = marketTaxStore.calculateProfit(r.price, r.sell); +const { sortedArray, headerProps } = useSort(computed(() => { + const list: Result[] = []; + const groups = Map.groupBy(props.items.filter(r => r.type.name.toLowerCase().includes(filter.value.toLowerCase())), r => r.type); - return { - type: r, - typeID: r.type.id, - name: r.type.name, - buy: r.buy, - sell: r.sell, - price: r.price, - remaining: r.remaining, - quantity: r.quantity, - precentProfit, - iskProfit: r.price * precentProfit * r.remaining - }; - })), { + groups.forEach((group, type) => { + const oldest = group.reduce((acc: AcquiredType | undefined, r: AcquiredType) => (acc && acc.date < r.date) ? acc : r, undefined); + + if (!oldest) { + return; + } + + const total = group.reduce((acc, r) => acc + r.quantity, 0); + const totalRemaining = group.reduce((acc, r) => acc + r.remaining, 0); + const price = group.reduce((acc, r) => acc + r.price * r.remaining, 0) / totalRemaining; + const precentProfit = marketTaxStore.calculateProfit(price, group[0].sell); + list.push({ + type: oldest, + typeID: type.id, + name: type.name, + buy: group[0].buy, + sell: group[0].sell, + price: price, + remaining: totalRemaining, + quantity: total, + precentProfit, + iskProfit: price * precentProfit * totalRemaining + }); + }); + return list; + }), { defaultSortKey: 'precentProfit', defaultSortDirection: 'desc' }) diff --git a/tsconfig.json b/tsconfig.json index ae07ea0..ab800dd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,9 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ESNext", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ESNext", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */