New eveal #32
@@ -1,3 +1,4 @@
|
|||||||
export {default as SourceLabel} from './SourceLabel.vue';
|
export {default as SourceLabel} from './SourceLabel.vue';
|
||||||
export {onActivitiesProcessed} from './activitiesProcessed';
|
export {onActivitiesProcessed} from './activitiesProcessed';
|
||||||
export {useActivitiesProcessed} from './useActivitiesProcessed';
|
export {useActivitiesProcessed} from './useActivitiesProcessed';
|
||||||
|
export {useProcessedResource} from './useProcessedResource';
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import {ref, type Ref, watchEffect} from "vue";
|
||||||
|
import {useActivitiesProcessed} from "./useActivitiesProcessed";
|
||||||
|
|
||||||
|
export const useProcessedResource = <T>(loader: () => Promise<T>, initial: T): Ref<T> => {
|
||||||
|
const data = ref(initial) as Ref<T>;
|
||||||
|
|
||||||
|
const load = async () => {
|
||||||
|
data.value = await loader();
|
||||||
|
};
|
||||||
|
|
||||||
|
watchEffect(load);
|
||||||
|
useActivitiesProcessed(load);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
};
|
||||||
@@ -13,6 +13,7 @@ import {defineStore} from "pinia";
|
|||||||
import {computed, ref, triggerRef} from "vue";
|
import {computed, ref, triggerRef} from "vue";
|
||||||
import {ledgerApi, transactionApi} from "@/mammon";
|
import {ledgerApi, transactionApi} from "@/mammon";
|
||||||
import {useRouteParams} from "@vueuse/router";
|
import {useRouteParams} from "@vueuse/router";
|
||||||
|
import {onActivitiesProcessed} from "@/activity";
|
||||||
|
|
||||||
export const LedgerTypes = {
|
export const LedgerTypes = {
|
||||||
Main: 'MAIN',
|
Main: 'MAIN',
|
||||||
@@ -71,6 +72,8 @@ export const useLedgersStore = defineStore('ledgers', () => {
|
|||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
|
onActivitiesProcessed(refresh);
|
||||||
|
|
||||||
return {ledgers, findById, findAllById, createMain, createCombined, updateMain, updateCombined, refresh};
|
return {ledgers, findById, findAllById, createMain, createCombined, updateMain, updateCombined, refresh};
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -7,19 +7,17 @@ import {IskLabel} from "@/market";
|
|||||||
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
|
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
|
||||||
import {TransferList, TransferTypes} from "@/transaction";
|
import {TransferList, TransferTypes} from "@/transaction";
|
||||||
import {Dropdown} from "@/components";
|
import {Dropdown} from "@/components";
|
||||||
import {SourceLabel} from "@/activity";
|
import {SourceLabel, useProcessedResource} from "@/activity";
|
||||||
import {useCharactersStore} from "@/characters";
|
import {useCharactersStore} from "@/characters";
|
||||||
import {formatEveDate} from "@/formaters.ts";
|
import {formatEveDate} from "@/formaters.ts";
|
||||||
|
|
||||||
const {ledgerId} = useLedgerParam();
|
const {ledgerId} = useLedgerParam();
|
||||||
const charactersStore = useCharactersStore();
|
const charactersStore = useCharactersStore();
|
||||||
|
|
||||||
const transactions = computedAsync<TransactionResponse[]>(async () => {
|
const transactions = useProcessedResource<TransactionResponse[]>(
|
||||||
if (ledgerId.value) {
|
() => ledgerId.value ? findAllTransactionInLeger(ledgerId.value) : Promise.resolve([]),
|
||||||
return await findAllTransactionInLeger(ledgerId.value);
|
[],
|
||||||
}
|
);
|
||||||
return [];
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const { sortedArray, headerProps } = useSort(computedAsync(() => Promise.all(transactions.value.map(async transaction => {
|
const { sortedArray, headerProps } = useSort(computedAsync(() => Promise.all(transactions.value.map(async transaction => {
|
||||||
const source = transaction.source;
|
const source = transaction.source;
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ const editLedgerModal = ref<typeof EditLedgerModal>();
|
|||||||
const processActivities = async () => {
|
const processActivities = async () => {
|
||||||
await activityApi.fetchAllNewActivities();
|
await activityApi.fetchAllNewActivities();
|
||||||
await activityApi.processNewActivities();
|
await activityApi.processNewActivities();
|
||||||
await ledgersStore.refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const { sortedArray, headerProps } = useSort<Ledger>(() => ledgersStore.ledgers);
|
const { sortedArray, headerProps } = useSort<Ledger>(() => ledgersStore.ledgers);
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {AcquisitionsPanel, toAcquiredType} from '@/market/acquisition';
|
import {AcquisitionsPanel, RawAcquiredType, toAcquiredType} from '@/market/acquisition';
|
||||||
import {useLedgerParam} from "@/ledger";
|
import {useLedgerParam} from "@/ledger";
|
||||||
import {acquisitionApi} from "@/mammon";
|
import {acquisitionApi} from "@/mammon";
|
||||||
import {computedAsync} from "@vueuse/core";
|
import {useProcessedResource} from "@/activity";
|
||||||
|
|
||||||
const {ledgerId} = useLedgerParam();
|
const {ledgerId} = useLedgerParam();
|
||||||
|
|
||||||
const items = computedAsync(async () => {
|
const items = useProcessedResource<RawAcquiredType[]>(async () => {
|
||||||
if (!ledgerId.value) {
|
if (!ledgerId.value) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,15 +4,14 @@ import {computedAsync} from "@vueuse/core";
|
|||||||
import {BalanceResponse} from "@/generated/mammon";
|
import {BalanceResponse} from "@/generated/mammon";
|
||||||
import {getMarketType, MarketTypeLabel} from "@/market";
|
import {getMarketType, MarketTypeLabel} from "@/market";
|
||||||
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
|
import {SortableHeader, useSort, VirtualScrollTable} from "@/components/table";
|
||||||
|
import {useProcessedResource} from "@/activity";
|
||||||
|
|
||||||
const {ledgerId} = useLedgerParam();
|
const {ledgerId} = useLedgerParam();
|
||||||
|
|
||||||
const balance = computedAsync<BalanceResponse>(async () => {
|
const balance = useProcessedResource<BalanceResponse | undefined>(
|
||||||
if (ledgerId.value) {
|
() => ledgerId.value ? getLedgerBalance(ledgerId.value) : Promise.resolve(undefined),
|
||||||
return await getLedgerBalance(ledgerId.value);
|
undefined,
|
||||||
}
|
);
|
||||||
return undefined;
|
|
||||||
});
|
|
||||||
|
|
||||||
const { sortedArray, headerProps } = useSort(computedAsync(async () => {
|
const { sortedArray, headerProps } = useSort(computedAsync(async () => {
|
||||||
const itemBalances = balance.value?.itemBalances;
|
const itemBalances = balance.value?.itemBalances;
|
||||||
|
|||||||
Reference in New Issue
Block a user