From 79814b18b120359cb641ef6c56d3a02b893e5f7a Mon Sep 17 00:00:00 2001 From: Katarina Date: Tue, 15 Jul 2025 11:04:21 +0200 Subject: [PATCH] Amend dynamic imports --- package-lock.json | 18 ++++++++ package.json | 1 + src/api/openapi/docs/Card.md | 2 +- src/api/openapi/docs/MonsterCard.md | 2 +- src/api/openapi/docs/SpellCard.md | 2 +- src/api/openapi/docs/TrapCard.md | 2 +- src/api/openapi/model/monster-card.ts | 4 +- src/api/openapi/model/spell-card.ts | 4 +- src/api/openapi/model/trap-card.ts | 4 +- src/components.d.ts | 16 +------ src/components/CardFilterPanel.vue | 34 ++++---------- src/components/CardListExpansion.vue | 17 ++++--- src/components/CardTable.vue | 10 ++-- src/components/DynamicAsset.vue | 66 +++++++++++++++++++++++++++ src/util/assets.ts | 19 ++++++++ src/util/card-type-util.ts | 12 +---- src/views/JobsView.vue | 9 ++-- src/views/card/CardsView.vue | 13 +++--- src/views/set/SetsView.vue | 18 +++++--- tsconfig.app.json | 7 ++- vite.config.ts | 41 ++++++++++++----- 21 files changed, 203 insertions(+), 98 deletions(-) create mode 100644 src/components/DynamicAsset.vue create mode 100644 src/util/assets.ts diff --git a/package-lock.json b/package-lock.json index 439a94f..4ce9154 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ }, "devDependencies": { "@openapitools/openapi-generator-cli": "^2.20.2", + "@types/node": "^24.0.14", "@vitejs/plugin-vue": "^6.0.0", "@vue/tsconfig": "^0.7.0", "typescript": "~5.7.2", @@ -1381,6 +1382,16 @@ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "license": "MIT" }, + "node_modules/@types/node": { + "version": "24.0.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.14.tgz", + "integrity": "sha512-4zXMWD91vBLGRtHK3YbIoFMia+1nqEz72coM42C5ETjnNCa/heoj7NT1G67iAfOqMmcfhuCZ4uNpyz8EjlAejw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, "node_modules/@types/web-bluetooth": { "version": "0.0.21", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz", @@ -4531,6 +4542,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "devOptional": true, + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", diff --git a/package.json b/package.json index 9d957e5..412494a 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ }, "devDependencies": { "@openapitools/openapi-generator-cli": "^2.20.2", + "@types/node": "^24.0.14", "@vitejs/plugin-vue": "^6.0.0", "@vue/tsconfig": "^0.7.0", "typescript": "~5.7.2", diff --git a/src/api/openapi/docs/Card.md b/src/api/openapi/docs/Card.md index 5ef3e0c..1aec590 100644 --- a/src/api/openapi/docs/Card.md +++ b/src/api/openapi/docs/Card.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **cardType** | [**CardType**](CardType.md) | | [default to undefined] **description** | **string** | | [default to undefined] **name** | **string** | | [default to undefined] -**cardPrints** | [**Set<CardPrint>**](CardPrint.md) | | [default to undefined] +**cardPrints** | [**Array<CardPrint>**](CardPrint.md) | | [default to undefined] **monsterEffect** | **string** | | [optional] [default to undefined] **attack** | **number** | | [optional] [default to undefined] **defense** | **number** | | [optional] [default to undefined] diff --git a/src/api/openapi/docs/MonsterCard.md b/src/api/openapi/docs/MonsterCard.md index 72ab6f5..9a77447 100644 --- a/src/api/openapi/docs/MonsterCard.md +++ b/src/api/openapi/docs/MonsterCard.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **cardType** | [**CardType**](CardType.md) | | [default to undefined] **description** | **string** | | [default to undefined] **name** | **string** | | [default to undefined] -**cardPrints** | [**Set<CardPrint>**](CardPrint.md) | | [default to undefined] +**cardPrints** | [**Array<CardPrint>**](CardPrint.md) | | [default to undefined] **monsterEffect** | **string** | | [optional] [default to undefined] **attack** | **number** | | [optional] [default to undefined] **defense** | **number** | | [optional] [default to undefined] diff --git a/src/api/openapi/docs/SpellCard.md b/src/api/openapi/docs/SpellCard.md index 0157a10..732cbc1 100644 --- a/src/api/openapi/docs/SpellCard.md +++ b/src/api/openapi/docs/SpellCard.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **cardType** | [**CardType**](CardType.md) | | [default to undefined] **description** | **string** | | [default to undefined] **name** | **string** | | [default to undefined] -**cardPrints** | [**Set<CardPrint>**](CardPrint.md) | | [default to undefined] +**cardPrints** | [**Array<CardPrint>**](CardPrint.md) | | [default to undefined] **type** | [**SpellCardType**](SpellCardType.md) | | [default to undefined] ## Example diff --git a/src/api/openapi/docs/TrapCard.md b/src/api/openapi/docs/TrapCard.md index f32c501..dc0c9b0 100644 --- a/src/api/openapi/docs/TrapCard.md +++ b/src/api/openapi/docs/TrapCard.md @@ -9,7 +9,7 @@ Name | Type | Description | Notes **cardType** | [**CardType**](CardType.md) | | [default to undefined] **description** | **string** | | [default to undefined] **name** | **string** | | [default to undefined] -**cardPrints** | [**Set<CardPrint>**](CardPrint.md) | | [default to undefined] +**cardPrints** | [**Array<CardPrint>**](CardPrint.md) | | [default to undefined] **type** | [**TrapCardType**](TrapCardType.md) | | [default to undefined] ## Example diff --git a/src/api/openapi/model/monster-card.ts b/src/api/openapi/model/monster-card.ts index 9cebaf2..3070cf6 100644 --- a/src/api/openapi/model/monster-card.ts +++ b/src/api/openapi/model/monster-card.ts @@ -67,10 +67,10 @@ export interface MonsterCard { 'name': string; /** * - * @type {Set} + * @type {Array} * @memberof MonsterCard */ - 'cardPrints': Set; + 'cardPrints': Array; /** * * @type {string} diff --git a/src/api/openapi/model/spell-card.ts b/src/api/openapi/model/spell-card.ts index 89e5909..a5c621f 100644 --- a/src/api/openapi/model/spell-card.ts +++ b/src/api/openapi/model/spell-card.ts @@ -55,10 +55,10 @@ export interface SpellCard { 'name': string; /** * - * @type {Set} + * @type {Array} * @memberof SpellCard */ - 'cardPrints': Set; + 'cardPrints': Array; /** * * @type {SpellCardType} diff --git a/src/api/openapi/model/trap-card.ts b/src/api/openapi/model/trap-card.ts index 1f67327..750c1c5 100644 --- a/src/api/openapi/model/trap-card.ts +++ b/src/api/openapi/model/trap-card.ts @@ -55,10 +55,10 @@ export interface TrapCard { 'name': string; /** * - * @type {Set} + * @type {Array} * @memberof TrapCard */ - 'cardPrints': Set; + 'cardPrints': Array; /** * * @type {TrapCardType} diff --git a/src/components.d.ts b/src/components.d.ts index 153ce41..ebadcd4 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -8,50 +8,36 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { - Accordion: typeof import('primevue/accordion')['default'] Avatar: typeof import('primevue/avatar')['default'] Badge: typeof import('primevue/badge')['default'] Button: typeof import('primevue/button')['default'] - Card: typeof import('primevue/card')['default'] CardFilterPanel: typeof import('./components/CardFilterPanel.vue')['default'] CardListComponent: typeof import('./components/CardListComponent.vue')['default'] CardListExpansion: typeof import('./components/CardListExpansion.vue')['default'] CardTable: typeof import('./components/CardTable.vue')['default'] Carousel: typeof import('primevue/carousel')['default'] - Checkbox: typeof import('primevue/checkbox')['default'] Column: typeof import('primevue/column')['default'] CustomTag: typeof import('./components/CustomTag.vue')['default'] DataTable: typeof import('primevue/datatable')['default'] - DataView: typeof import('primevue/dataview')['default'] - DeckIcon: typeof import('./components/DeckIcon.vue')['default'] Divider: typeof import('primevue/divider')['default'] + DynamicAsset: typeof import('./components/DynamicAsset.vue')['default'] Fieldset: typeof import('primevue/fieldset')['default'] FloatLabel: typeof import('primevue/floatlabel')['default'] - HelloWorld: typeof import('./components/HelloWorld.vue')['default'] - IconField: typeof import('primevue/iconfield')['default'] Image: typeof import('primevue/image')['default'] - InputIcon: typeof import('primevue/inputicon')['default'] InputNumber: typeof import('primevue/inputnumber')['default'] InputText: typeof import('primevue/inputtext')['default'] LinkArrowsComponent: typeof import('./components/LinkArrowsComponent.vue')['default'] - Listbox: typeof import('primevue/listbox')['default'] Menubar: typeof import('primevue/menubar')['default'] MonsterCardTypeTag: typeof import('./components/MonsterCardTypeTag.vue')['default'] - MultiSelect: typeof import('primevue/multiselect')['default'] Panel: typeof import('primevue/panel')['default'] ProgressBar: typeof import('primevue/progressbar')['default'] - Rating: typeof import('primevue/rating')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] ScrollPanel: typeof import('primevue/scrollpanel')['default'] SelectButton: typeof import('primevue/selectbutton')['default'] Slider: typeof import('primevue/slider')['default'] SplitButton: typeof import('primevue/splitbutton')['default'] - Splitter: typeof import('primevue/splitter')['default'] - SplitterPanel: typeof import('primevue/splitterpanel')['default'] - TabPanel: typeof import('primevue/tabpanel')['default'] Tag: typeof import('primevue/tag')['default'] Textarea: typeof import('primevue/textarea')['default'] - VirtualScroller: typeof import('primevue/virtualscroller')['default'] } } diff --git a/src/components/CardFilterPanel.vue b/src/components/CardFilterPanel.vue index d9c407a..972c41d 100644 --- a/src/components/CardFilterPanel.vue +++ b/src/components/CardFilterPanel.vue @@ -94,11 +94,12 @@ > @@ -174,12 +175,12 @@ \ No newline at end of file diff --git a/src/components/CardTable.vue b/src/components/CardTable.vue index 60cb47b..2fa1597 100644 --- a/src/components/CardTable.vue +++ b/src/components/CardTable.vue @@ -31,7 +31,11 @@ image @@ -117,11 +121,11 @@ const handlePaging = async (e: DataTablePageEvent) => { } -const handleSorting = (e: DataTableSortEvent) => { +const handleSorting = (_: DataTableSortEvent) => { console.log('sort') } -const handleFiltering = (e: DataTableFilterEvent) => { +const handleFiltering = (_: DataTableFilterEvent) => { console.log('filter') } diff --git a/src/components/DynamicAsset.vue b/src/components/DynamicAsset.vue new file mode 100644 index 0000000..d644cd9 --- /dev/null +++ b/src/components/DynamicAsset.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/src/util/assets.ts b/src/util/assets.ts new file mode 100644 index 0000000..42170b6 --- /dev/null +++ b/src/util/assets.ts @@ -0,0 +1,19 @@ +import darkAttribute from "/src/assets/DARK.svg" +import divineAttribute from "/src/assets/DIVINE.svg" +import earthAttribute from "/src/assets/EARTH.svg" +import fireAttribute from "/src/assets/FIRE.svg" +import laughAttribute from "/src/assets/LAUGH.svg" +import lightAttribute from "/src/assets/LIGHT.svg" +import waterAttribute from "/src/assets/WATER.svg" +import windAttribute from "/src/assets/WIND.svg" + +export { + darkAttribute, + divineAttribute, + earthAttribute, + fireAttribute, + laughAttribute, + lightAttribute, + waterAttribute, + windAttribute +} diff --git a/src/util/card-type-util.ts b/src/util/card-type-util.ts index 0ff48fd..eb9f41f 100644 --- a/src/util/card-type-util.ts +++ b/src/util/card-type-util.ts @@ -1,14 +1,12 @@ import type { Card, CardType, - MonsterCard, MonsterCardSubType, + MonsterCard, MonsterCardType, SpellCard, SpellCardType, TrapCard, TrapCardType } from "../api/openapi"; -type CardSubTypes = MonsterCardType | TrapCardType | SpellCardType - export const getCardType = (card: Card) => { switch (card.cardType) { case "MONSTER": @@ -26,14 +24,6 @@ export const isMonsterCard = (card: Card): card is MonsterCard => { return card.cardType === "MONSTER" } -export const isTrapCard = (card: Card): card is TrapCard => { - return card.cardType === "TRAP" -} - -export const isSpellCard = (card: Card): card is SpellCard => { - return card.cardType === "SPELL" -} - export const getMonsterCardType = (monsterCard: MonsterCard) => { return `${monsterCard.type} MONSTER ` } diff --git a/src/views/JobsView.vue b/src/views/JobsView.vue index 920e2a0..8ba1a03 100644 --- a/src/views/JobsView.vue +++ b/src/views/JobsView.vue @@ -44,7 +44,7 @@ const jobTypeOptions: Ref = ref( Object.values(JobType) ) -const getJobTypeSeverity = (job: JobDto) => { +const getJobTypeSeverity = (_: JobDto) => { return "primary" } @@ -70,9 +70,10 @@ const getCompletionPercentage = (job: JobDto) => { } onMounted(async () => { - jobs.value = (await jobService.getCardSetImportJobPage( - page.value, - pageSize.value + jobs.value = (await jobService.getCardSetImportJobPage({ + page: page.value, + pageSize: pageSize.value + } )).data.content console.log(jobs.value) diff --git a/src/views/card/CardsView.vue b/src/views/card/CardsView.vue index 54f0755..4c8844b 100644 --- a/src/views/card/CardsView.vue +++ b/src/views/card/CardsView.vue @@ -34,7 +34,11 @@ image @@ -100,14 +104,11 @@ import type {MutableCardRequest} from "../../api/mutableTypes.ts"; const cardService: CardService = inject(CardServiceKey) as CardService; const cards: Ref = ref([]) -const page: Ref = ref(0); -const pageSize = ref(10); const pageCount: Ref = ref(0); const totalRecords: Ref = ref(0); const loading: Ref = ref(true); const first = ref(0); const expandedCardRows: Ref = ref([]); -const searchValue: Ref = ref(""); const filters: Ref = ref({ name: null, @@ -158,11 +159,11 @@ const handlePaging = async (e: DataTablePageEvent) => { await getGetCardPage(filters.value) } -const handleSorting = (e: DataTableSortEvent) => { +const handleSorting = (_: DataTableSortEvent) => { console.log('sort') } -const handleFiltering = (e: DataTableFilterEvent) => { +const handleFiltering = (_: DataTableFilterEvent) => { console.log('filter') } diff --git a/src/views/set/SetsView.vue b/src/views/set/SetsView.vue index 15b0044..0d52d2d 100644 --- a/src/views/set/SetsView.vue +++ b/src/views/set/SetsView.vue @@ -28,7 +28,12 @@ @@ -67,10 +72,11 @@ const first = ref(0); const fetchCardSetPage = async (page: number, pageSize: number): Promise => { loading.value = true; - const cardPage = (await setService.getCardSetPage( - null, - page, - pageSize + const cardPage = (await setService.getCardSetPage({ + name: null, + page: page, + pageSize: pageSize + } )).data sets.value = cardPage.content @@ -85,7 +91,7 @@ const handlePaging = async (e: DataTablePageEvent) => { await fetchCardSetPage(page.value, pageSize.value) } -const handleSorting = (e: DataTableSortEvent) => { +const handleSorting = (_: DataTableSortEvent) => { console.log('sort') } diff --git a/tsconfig.app.json b/tsconfig.app.json index 7fb078c..643137c 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -8,7 +8,12 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true + "noUncheckedSideEffectImports": true, + "paths": { + "@/*": [ + "./src/*" + ] + } }, "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] } diff --git a/vite.config.ts b/vite.config.ts index 00c7755..5019edb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,21 +1,40 @@ -import { defineConfig } from 'vite' +import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' import tailwindcss from "@tailwindcss/vite"; import Components from 'unplugin-vue-components/vite' import {PrimeVueResolver} from "unplugin-vue-components/resolvers"; +import path from 'path'; // https://vite.dev/config/ export default defineConfig({ plugins: [ - vue(), - tailwindcss(), - Components({ - extensions: ['vue', 'md'], - include: [/\.vue$/, /\.vue\?vue/, /\.md$/], - dts: 'src/components.d.ts', - resolvers: [ - PrimeVueResolver() - ] - }), + vue(), + tailwindcss(), + Components({ + extensions: ['vue', 'md'], + include: [/\.vue$/, /\.vue\?vue/, /\.md$/], + dts: 'src/components.d.ts', + resolvers: [ + PrimeVueResolver() + ] + }), ], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + } + }, + build: { + // @ts-ignore + assetsInclude: [ + '**/*.svg' + ], + rollupOptions: { + output: { + assetFileNames: 'assets/[name]-[hash][extname]', + chunkFileNames: 'chunks/[name].js', + entryFileNames: 'js/[name].js' + } + } + } })