diff --git a/package-lock.json b/package-lock.json
index fe96b24..541ae94 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,7 @@
"name": "eveal-frontend",
"version": "0.0.0",
"dependencies": {
+ "@heroicons/vue": "^2.0.18",
"@vueuse/core": "^10.2.1",
"@vueuse/integrations": "^10.2.1",
"axios": "^1.4.0",
@@ -400,6 +401,14 @@
"node": ">=12"
}
},
+ "node_modules/@heroicons/vue": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.0.18.tgz",
+ "integrity": "sha512-BcTC9nq2TkwNSfQuqo96J7ehx4etezypc2YeTq7KsXWxrcrerhkgjLrxGRBnStN0wrXo0Gv4BInybqz5uBG6Cw==",
+ "peerDependencies": {
+ "vue": ">= 3"
+ }
+ },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
diff --git a/package.json b/package.json
index 876704d..5c3dcb7 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"preview": "vite preview"
},
"dependencies": {
+ "@heroicons/vue": "^2.0.18",
"@vueuse/core": "^10.2.1",
"@vueuse/integrations": "^10.2.1",
"axios": "^1.4.0",
diff --git a/src/market/Market.vue b/src/market/Market.vue
index cd93a48..615187c 100644
--- a/src/market/Market.vue
+++ b/src/market/Market.vue
@@ -1,22 +1,45 @@
@@ -24,12 +47,12 @@ const addItem = async () => {
-
+ addOrRelaod(id)" />
\ No newline at end of file
diff --git a/src/market/MarketResultTable.vue b/src/market/MarketResultTable.vue
index e518426..e188924 100644
--- a/src/market/MarketResultTable.vue
+++ b/src/market/MarketResultTable.vue
@@ -2,6 +2,7 @@
import { formatIsk, percentFormater } from '@/formaters';
import { SortableHeader, useSort } from '@/table';
import { copyToClipboard } from '@/utils';
+import { ArrowPathIcon } from '@heroicons/vue/24/outline';
import { computed } from 'vue';
import { MarketResult } from ".";
import { MarketTypeLabel } from "./type";
@@ -10,9 +11,15 @@ interface Props {
result?: MarketResult[];
}
+interface Emits {
+ (e: 'relaod', typeID: number): void;
+}
+
const props = withDefaults(defineProps(), {
result: () => []
});
+defineEmits();
+
const { sortedArray, headerProps } = useSort(computed(() => props.result.map(r => ({
typeID: r.type.id,
name: r.type.name,
@@ -24,7 +31,6 @@ const { sortedArray, headerProps } = useSort(computed(() => props.result.map(r =
defaultSortKey: 'name',
defaultSortDirection: 'asc'
})
-
@@ -37,6 +43,7 @@ const { sortedArray, headerProps } = useSort(computed(() => props.result.map(r =
Median
Q3
Percent
+ |
@@ -48,6 +55,9 @@ const { sortedArray, headerProps } = useSort(computed(() => props.result.map(r =
{{ formatIsk(r.mmedian) }} |
{{ formatIsk(r.q3) }} |
{{ percentFormater.format(r.percent) }} |
+
+
+ |
diff --git a/src/market/market.ts b/src/market/market.ts
index 0a52bfe..da7c449 100644
--- a/src/market/market.ts
+++ b/src/market/market.ts
@@ -19,10 +19,16 @@ export type MarketResult = {
q3: number,
}
+export type HistoryQuartils = {
+ totalVolume: number,
+ q1: number,
+ median: number,
+ q3: number,
+}
+
export const getHistory = async (regionId: number, tyeId: number): Promise => (await esiAxiosInstance.get(`/markets/${regionId}/history/`, { params: { type_id: tyeId } })).data;
-export const getHistoryQuartils = async (regionId: number, tyeId: number): Promise<[number, number, number]> => {
- const history = await getHistory(regionId, tyeId);
+export const getHistoryQuartils = async (history: MarketOrderHistory[]): Promise => {
const volumes = history
.flatMap(h => {
const volume = h.volume;
@@ -56,7 +62,12 @@ export const getHistoryQuartils = async (regionId: number, tyeId: number): Promi
quartil++;
}
}
- return quartils;
+ return {
+ totalVolume,
+ q1: quartils[0],
+ median: quartils[1],
+ q3: quartils[2],
+ };
}
const estimateVolume = (history: MarketOrderHistory): number => {
diff --git a/src/market/type/MarketType.ts b/src/market/type/MarketType.ts
index b7c9d02..054d4c0 100644
--- a/src/market/type/MarketType.ts
+++ b/src/market/type/MarketType.ts
@@ -13,4 +13,5 @@ export type MarketType = {
portionSize: number;
}
+export const getMarketType = async (id: number): Promise => (await apiAxiosInstance.get(`/sde/types/${id}`)).data;
export const searchMarketType = async (name: string): Promise => (await apiAxiosInstance.post("/sde/types/search", [["name", name]])).data[0];
diff --git a/src/table/SortableHeader.vue b/src/table/SortableHeader.vue
index 60ddedf..4a755c2 100644
--- a/src/table/SortableHeader.vue
+++ b/src/table/SortableHeader.vue
@@ -17,8 +17,9 @@ const emit = defineEmits();
- ▲
+ ▲
+
▼
|