diff --git a/src/Modal.vue b/src/Modal.vue new file mode 100644 index 0000000..2f31cd5 --- /dev/null +++ b/src/Modal.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/market/appraisal.ts b/src/market/appraisal.ts new file mode 100644 index 0000000..e277501 --- /dev/null +++ b/src/market/appraisal.ts @@ -0,0 +1,15 @@ +import { evepraisalAxiosInstance } from '@/service'; +import { MarketType } from "./type"; + +export type MarketTypePrice = { + type: MarketType; + buy: number, + sell: number +} + +export const getPrice = async (type: MarketType): Promise => (await getPrices([type]))[0]; +export const getPrices = async (types: MarketType[]): Promise => (await evepraisalAxiosInstance.post(`/appraisal.json?market=jita&persist=no&raw_textarea=${types.map(t => t.name).join("%0A")}`)).data.appraisal.items.map((item: any) => ({ + type: types.find(t => t.name === item.typeName), + buy: item.prices.buy.max, + sell: item.prices.sell.min +})); \ No newline at end of file diff --git a/src/market/index.ts b/src/market/index.ts index 29b9d97..5939b8c 100644 --- a/src/market/index.ts +++ b/src/market/index.ts @@ -1,4 +1,6 @@ -export * from './MarketOrderHistory'; -export * from './market'; export * from './type'; +export * from './MarketOrderHistory'; +export * from './appraisal'; +export * from './market'; + diff --git a/src/market/scan/BuyModal.vue b/src/market/scan/BuyModal.vue new file mode 100644 index 0000000..79c5deb --- /dev/null +++ b/src/market/scan/BuyModal.vue @@ -0,0 +1,87 @@ + + + \ No newline at end of file diff --git a/src/market/scan/ScanResultTable.vue b/src/market/scan/ScanResultTable.vue index c68617b..93fb211 100644 --- a/src/market/scan/ScanResultTable.vue +++ b/src/market/scan/ScanResultTable.vue @@ -2,7 +2,7 @@ import { formatIsk, percentFormater } from '@/formaters'; import { MarketType, MarketTypeLabel } from "@/market"; import { SortableHeader, useSort } from '@/table'; -import { ArrowPathIcon } from '@heroicons/vue/24/outline'; +import { ArrowPathIcon, ShoppingCartIcon } from '@heroicons/vue/24/outline'; import { useStorage } from '@vueuse/core'; import { computed, ref } from 'vue'; import { ScanResult, getHistoryQuartils } from '.'; @@ -26,6 +26,7 @@ interface Props { interface Emits { (e: 'relaod', type: MarketType): void; (e: 'relaodAll'): void; + (e: 'buy', type: MarketType, buy: number, sell: number): void; } const props = withDefaults(defineProps(), { @@ -113,7 +114,8 @@ const getLineColor = (result: Result) => { {{ formatIsk(r.q3) }} {{ percentFormater.format(r.profit) }} - + + diff --git a/src/market/scan/index.ts b/src/market/scan/index.ts index 7348e2d..dfc6363 100644 --- a/src/market/scan/index.ts +++ b/src/market/scan/index.ts @@ -1,4 +1,6 @@ export * from './HistoryQuartils'; export * from './scan'; +export { default as BuyModal } from './BuyModal.vue'; export { default as ScanResultTable } from './ScanResultTable.vue'; + diff --git a/src/market/track/SellModal.vue b/src/market/track/SellModal.vue new file mode 100644 index 0000000..626c392 --- /dev/null +++ b/src/market/track/SellModal.vue @@ -0,0 +1,68 @@ + + + \ No newline at end of file diff --git a/src/market/track/TrackResultTable.vue b/src/market/track/TrackResultTable.vue new file mode 100644 index 0000000..53ceccd --- /dev/null +++ b/src/market/track/TrackResultTable.vue @@ -0,0 +1,116 @@ + + + + + \ No newline at end of file diff --git a/src/market/track/TrackedItem.ts b/src/market/track/TrackedItem.ts new file mode 100644 index 0000000..77a0289 --- /dev/null +++ b/src/market/track/TrackedItem.ts @@ -0,0 +1,9 @@ +import { MarketType } from "@/market"; + +export type TrackedItem = { + type: MarketType; + count: number; + averagePrice: number; + buy: number, + sell: number +} \ No newline at end of file diff --git a/src/market/track/index.ts b/src/market/track/index.ts new file mode 100644 index 0000000..701bcef --- /dev/null +++ b/src/market/track/index.ts @@ -0,0 +1,6 @@ +export * from './TrackedItem'; +export * from './storage'; + +export { default as SellModal } from './SellModal.vue'; +export { default as TrackResultTable } from './TrackResultTable.vue'; + diff --git a/src/market/track/storage.ts b/src/market/track/storage.ts new file mode 100644 index 0000000..cfd5596 --- /dev/null +++ b/src/market/track/storage.ts @@ -0,0 +1,9 @@ +import { createSharedComposable, useLocalStorage } from '@vueuse/core'; + +export type TrackedMarketItemStorage = { + typeID: number; + count: number; + averagePrice: number; +} + +export const useTrackedItemsStorage = createSharedComposable(() => useLocalStorage('market-track-items', [])); \ No newline at end of file diff --git a/src/pages/Market.vue b/src/pages/Market.vue index 911831b..06270fc 100644 --- a/src/pages/Market.vue +++ b/src/pages/Market.vue @@ -5,7 +5,7 @@ import { RouterLink, RouterView } from 'vue-router';