feat(#8): Handle polymorphic activity source
This commit is contained in:
@@ -2,12 +2,13 @@
|
||||
|
||||
import {findAllTransactionInLeger, useLedgerParam} from "@/ledger";
|
||||
import {computedAsync} from "@vueuse/core";
|
||||
import {TransactionResponse} from "@/generated/mammon";
|
||||
import {ActivitySourceResponseTypeEnum, TransactionResponse} from "@/generated/mammon";
|
||||
import {IskLabel} from "@/market";
|
||||
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
|
||||
import {TransferList, TransferTypes} from "@/transaction";
|
||||
import {Dropdown} from "@/components";
|
||||
import {CharacterLabel, useCharactersStore} from "@/characters";
|
||||
import {SourceLabel} from "@/activity";
|
||||
import {useCharactersStore} from "@/characters";
|
||||
import {formatEveDate} from "@/formaters.ts";
|
||||
|
||||
const {ledgerId} = useLedgerParam();
|
||||
@@ -21,10 +22,13 @@ const transactions = computedAsync<TransactionResponse[]>(async () => {
|
||||
}, []);
|
||||
|
||||
const { sortedArray, headerProps } = useSort(computedAsync(() => Promise.all(transactions.value.map(async transaction => {
|
||||
const character = await charactersStore.findById(transaction.characterId);
|
||||
const source = transaction.source;
|
||||
const character = source.type === ActivitySourceResponseTypeEnum.Character && source.characterId
|
||||
? await charactersStore.findById(source.characterId)
|
||||
: undefined;
|
||||
return {
|
||||
character,
|
||||
characterName: character?.name ?? "",
|
||||
source,
|
||||
sourceName: character?.name ?? (source.type === ActivitySourceResponseTypeEnum.Corporation ? "Corporation" : ""),
|
||||
transactionId: transaction.transactionId,
|
||||
description: transaction.description,
|
||||
date: new Date(transaction.datetime),
|
||||
@@ -59,7 +63,7 @@ const getIskBalance = (transaction: TransactionResponse) => {
|
||||
<template #default="{ list }">
|
||||
<thead>
|
||||
<tr>
|
||||
<SortableHeader v-bind="headerProps" sortKey="characterName">Character</SortableHeader>
|
||||
<SortableHeader v-bind="headerProps" sortKey="sourceName">Source</SortableHeader>
|
||||
<SortableHeader v-bind="headerProps" sortKey="date">Date</SortableHeader>
|
||||
<SortableHeader v-bind="headerProps" sortKey="balance">Isk Change</SortableHeader>
|
||||
<SortableHeader v-bind="headerProps" sortKey="description">Description</SortableHeader>
|
||||
@@ -68,7 +72,7 @@ const getIskBalance = (transaction: TransactionResponse) => {
|
||||
<tbody>
|
||||
<tr v-for="t in list" :key="t.data.transactionId">
|
||||
<td>
|
||||
<CharacterLabel v-if="t.data.character" :character="t.data.character" />
|
||||
<SourceLabel :source="t.data.source" />
|
||||
</td>
|
||||
<td>
|
||||
<Dropdown class="transfer-dropdown">
|
||||
|
||||
Reference in New Issue
Block a user