From 629bf20d79cf5759f9d6d68edb8a6299da9d3e39 Mon Sep 17 00:00:00 2001 From: Herpaderp Aldent Date: Wed, 6 May 2026 17:39:45 +0200 Subject: [PATCH 01/18] feat: migrate frontend from Ziggy to Laravel Wayfinder Replace all route() calls across 57 Vue files with typed Wayfinder imports from @/routes/... TypeScript modules. Changes: - vite.config.js: add wayfinder run plugin entry - app.js: remove ZiggyVue import and .use(ZiggyVue) - All 57 Vue/JS files: replace route('x.y.z', params) with typed function imports, e.g. import { foo } from '@/routes/x/y' Key migration notes: - dead routes (acl.edit, acl.update, acl.delete, schedules.delete, update.acl.affiliations) mapped to correct Wayfinder equivalents - type-based ACL update routing uses lookup map in EditGroup.vue and ManageControlGroup.vue - query params wrapped in { query: {...} } for DispatchUpdate, DispatchableEntry, EsiAutosuggest, RequiredScopesWarning - change.main_character: character_id moves from POST body to URL path param - DispatchUpdateButton: removed dead computed url() referencing undefined dispatch_transfer_object Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- resources/js/.gitignore | 4 + .../AccessControl/AclTypes/Applicants.vue | 5 +- .../AclTypes/CreateGroupButton.vue | 3 +- .../js/Pages/AccessControl/ControlGroup.vue | 12 +-- .../Pages/AccessControl/Edit/EditSettings.vue | 9 +- .../js/Pages/AccessControl/EditGroup.vue | 10 ++- .../AccessControl/ManageControlGroup.vue | 7 +- .../Pages/AccessControl/ModerateMembers.vue | 7 +- resources/js/Pages/Auth/Login.vue | 3 +- .../Character/Contract/ContractDetails.vue | 3 +- .../js/Pages/Character/Contract/Index.vue | 3 +- resources/js/Pages/Character/ItemDetails.vue | 7 +- resources/js/Pages/Configuration/Commands.vue | 3 +- .../js/Pages/Configuration/HorizonStats.vue | 7 +- .../ManualLocationComponent.vue | 3 +- .../Schedules/SchedulesCreate.vue | 3 +- .../Schedules/SchedulesDetails.vue | 5 +- .../Schedules/SchedulesIndex.vue | 5 +- .../Scopes/OverviewScopeSettings.vue | 12 ++- .../Configuration/Scopes/ScopeSettings.vue | 8 +- resources/js/Pages/Configuration/Settings.vue | 3 +- .../Pages/Configuration/UserListElement.vue | 3 +- .../js/Pages/Configuration/UserSettings.vue | 6 +- .../MemberComplianceListElement.vue | 3 +- .../MemberCompliance/ReviewUser.vue | 3 +- .../Corporation/Recruitment/Application.vue | 6 +- .../ApplicationsTable/ActivityLogModal.vue | 3 +- .../ApplicationsTable/ApplicationsTable.vue | 3 +- .../Configuration/EnlistmentConfig.vue | 3 +- .../Recruitment/Configuration/Index.vue | 9 +- .../Configuration/ItemsWatchlist.vue | 3 +- .../Recruitment/CorporationList.vue | 3 +- .../Recruitment/CorporationRecruitment.vue | 3 +- .../Corporation/Recruitment/Tabs/LogTab.vue | 3 +- .../Recruitment/UpdateCharacterComponent.vue | 6 +- .../Pages/Dashboard/CharacterApplication.vue | 6 +- resources/js/Pages/Dashboard/Characters.vue | 3 +- resources/js/Pages/Dashboard/Enlistment.vue | 6 +- resources/js/Pages/Error.vue | 3 +- .../js/Pages/Onboarding/AddCharacters.vue | 3 +- .../Assets/AddManualLocationModal.vue | 3 +- .../Assets/CompactAssetListElement.vue | 3 +- .../Shared/Components/Assets/LocationName.vue | 3 +- .../Assets/WideAssetListComponent.vue | 3 +- .../Contracts/ExpandContractComponent.vue | 3 +- .../js/Shared/Components/EsiAutosuggest.vue | 8 +- .../js/Shared/Components/LocationSlot.vue | 3 +- .../Components/Mails/MailRepresentation.vue | 3 +- .../Components/SlideOver/DispatchUpdate.vue | 5 +- .../SlideOver/DispatchUpdateButton.vue | 5 -- .../SlideOver/DispatchableEntry.vue | 8 +- resources/js/Shared/EveImage.vue | 5 +- .../js/Shared/Layout/Eve/EntityByIdBlock.vue | 3 +- .../js/Shared/Modals/CharacterFilterModal.vue | 3 +- resources/js/Shared/ResolveIdToName.vue | 3 +- .../js/Shared/SidebarLayout/DarkSidebar.vue | 5 +- .../SidebarLayout/ImpersonatingBanner.vue | 3 +- .../SidebarLayout/RequiredScopesWarning.vue | 3 +- resources/js/app.js | 2 - vite.config.js | 82 ++++++++++++++----- 60 files changed, 236 insertions(+), 120 deletions(-) create mode 100644 resources/js/.gitignore diff --git a/resources/js/.gitignore b/resources/js/.gitignore new file mode 100644 index 00000000..a543adbe --- /dev/null +++ b/resources/js/.gitignore @@ -0,0 +1,4 @@ +/routes/ +/actions/ +/wayfinder.ts +/wayfinder/ diff --git a/resources/js/Pages/AccessControl/AclTypes/Applicants.vue b/resources/js/Pages/AccessControl/AclTypes/Applicants.vue index 383403d4..d3253516 100644 --- a/resources/js/Pages/AccessControl/AclTypes/Applicants.vue +++ b/resources/js/Pages/AccessControl/AclTypes/Applicants.vue @@ -69,6 +69,7 @@ diff --git a/resources/js/Shared/Components/SlideOver/DispatchableEntry.vue b/resources/js/Shared/Components/SlideOver/DispatchableEntry.vue index 05835d0f..f0fc6f35 100644 --- a/resources/js/Shared/Components/SlideOver/DispatchableEntry.vue +++ b/resources/js/Shared/Components/SlideOver/DispatchableEntry.vue @@ -58,6 +58,8 @@ import { PlayIcon, CheckCircleIcon, XCircleIcon} from "@heroicons/vue/24/outlin import { computed, onBeforeMount, onUnmounted, ref, watch } from "vue"; import axios from "axios"; import { usePage } from "@inertiajs/vue3"; +import { job as dispatchJob } from '@/routes/dispatch' +import { batch_status as getBatchStatus } from '@/routes/get' export default { name: "DispatchableEntry", @@ -73,15 +75,15 @@ export default { const batch_id = ref(_.get(props.entry, 'batch.batch_id')) const updateStatus = ref() const dispatch_transfer_object = computed(() => usePage().props.dispatchTransferObject) - const url = computed(() => route('dispatch.job', { + const url = computed(() => dispatchJob({ query: { character_id: props.entry.character_id, corporation_id: props.entry.corporation_id, - })) + }}).url) const time = computed(() => _.get(props.entry, 'batch.time')) function getStatus() { axios - .get(route('get.batch_status', batch_id.value)) + .get(getBatchStatus(batch_id.value).url) .then(result => status.value = result.data.state) } diff --git a/resources/js/Shared/EveImage.vue b/resources/js/Shared/EveImage.vue index 31c34104..84ea4861 100644 --- a/resources/js/Shared/EveImage.vue +++ b/resources/js/Shared/EveImage.vue @@ -25,6 +25,7 @@ diff --git a/resources/js/Pages/AccessControl/ControlGroup.vue b/resources/js/Pages/AccessControl/ControlGroup.vue index c9ef2bf0..fe8f21af 100644 --- a/resources/js/Pages/AccessControl/ControlGroup.vue +++ b/resources/js/Pages/AccessControl/ControlGroup.vue @@ -162,6 +162,9 @@ export default { return {role_id: this.role.id, user_id: user_id} } } + setup() { + return { join, leave, manage, detail, manageAclMembers } + }, } diff --git a/resources/js/Pages/Auth/Login.vue b/resources/js/Pages/Auth/Login.vue index 9b275cd0..e15f27c4 100644 --- a/resources/js/Pages/Auth/Login.vue +++ b/resources/js/Pages/Auth/Login.vue @@ -51,7 +51,9 @@ export default { name: "Login", components: {AppHead}, layout: (h, page) => h(EmptyLayout, [page]), - + setup() { + return { eve } + }, } diff --git a/resources/js/Pages/Configuration/HorizonStats.vue b/resources/js/Pages/Configuration/HorizonStats.vue index dbead86c..0eae082c 100644 --- a/resources/js/Pages/Configuration/HorizonStats.vue +++ b/resources/js/Pages/Configuration/HorizonStats.vue @@ -194,7 +194,10 @@ beforeUnmount () { clearInterval(this.timer) } - } + setup() { + return { horizonIndex } + }, +}