Commit Graph
100 Commits
Author SHA1 Message Date
Jeppe Bundgaard 2f23b6ea75 Add Playwright test migration plan 2026-03-09 10:20:39 +01:00
Jeppe Bundgaard 721e942a12 Enhance link security in Orders.vue with noopener,noreferrer and add conditional slot rendering to ViewportResponsiveWrapper.vue. 2026-03-05 12:28:57 +01:00
Jeppe Bundgaard 15d1cd8558 Refactor LongPressListener to use computed props for safer reactivity and simplify MobileHeader path check logic with optional chaining adjustments. 2026-03-04 14:55:43 +01:00
Jeppe Bundgaard 88a2361ccc Increase mobile POS transaction history limit from 50 to 100 2026-03-04 11:08:42 +01:00
Jeppe Bundgaard bbedfbdf30 Refactor mobile POS steps: clear localStorage in tests, enhance vehicle type checks, improve safety seal handling logic, and adjust default wait timeout 2026-03-03 15:07:05 +01:00
Jeppe Bundgaard 9473a514da Refactor DepartmentGate and DepartmentRelay schemas: replace object types with explicit $ref definitions and add detailed configuration schemas 2026-03-03 12:27:25 +01:00
Jeppe Bundgaard 3691abd9a2 Add DepartmentGate and DepartmentRelay endpoints and schemas to OpenAPI spec 2026-03-03 12:03:36 +01:00
Jeppe Bundgaard dc84eaeac4 Hide version info from MobileNavigation footer 2026-03-03 10:28:50 +01:00
Jeppe Bundgaard de408403b2 Update superuser navigation menu: remove XLVASK module, add BIRD module 2026-03-03 10:01:40 +01:00
Jeppe Bundgaard 2f9326874b Refactor booking and product logic in Step 2: replace applyPendingBookingFromSelection with initializeStepTwo, unify booking selection methods, and add fallback handling for wash products. 2026-03-02 17:05:29 +01:00
Jeppe Bundgaard 601ab3db04 Merge remote-tracking branch 'origin/master' 2026-03-02 17:02:57 +01:00
Jeppe Bundgaard 430bc35fe9 Add conditional rendering for vehicle type selection in MyWashStart component 2026-03-02 16:41:34 +01:00
Jeppe Bundgaard f0fe848250 Improve task buttons collection and dynamic image handling in MyWashStart 2026-03-02 16:28:19 +01:00
Jeppe Bundgaard 927d66755f Refactor MyWashStart dynamic image handling with lane checks and error handling improvements 2026-03-02 16:09:02 +01:00
Jeppe Bundgaard aa38bc0c43 Fix task completion check in MyWashStart to skip completed tasks when gathering unique buttons 2026-03-02 15:58:14 +01:00
Jeppe Bundgaard 675481672c Add dynamic machine UI with step-based tasks and image rendering to MyWashStart component 2026-03-02 15:54:06 +01:00
Jeppe Bundgaard 55eac9e1f3 Add buttons editing modal and functionality to SelfServeTasksTable component 2026-03-02 15:19:43 +01:00
Jeppe Bundgaard 18ab5cb449 Remove redundant 'permissions' field from logout navigation item 2026-03-02 14:47:12 +01:00
Jeppe Bundgaard f8faf6ec5c Add dynamic image placeholders to MyWashStart self-wash component 2026-03-02 13:44:10 +01:00
Jeppe Bundgaard 187b0c5984 Refactor self-serve warning to use notification with icon and updated styling 2026-03-02 13:39:20 +01:00
Jeppe Bundgaard 18ae74012c Add conditional rendering for self-serve steps based on department selection 2026-03-02 13:27:48 +01:00
Jeppe Bundgaard 8e7be044cc Add self-serve support for departments and localized warning for staffed hours 2026-03-02 13:25:40 +01:00
Jeppe Bundgaard ac940ecf91 Add self-serve availability check and warning message for staffed hours 2026-03-02 13:21:50 +01:00
Jeppe Bundgaard 95e9283236 Fix self-serve toggle error handling by reverting to current status on failure 2026-03-02 13:14:34 +01:00
Jeppe Bundgaard 892c786a85 Add responsive language selector with desktop buttons and mobile dropdown 2026-02-27 05:39:08 +01:00
Jeppe Bundgaard c071ba0ebe Add test connection functionality and new input fields for Bird API configuration 2026-02-27 03:12:37 +01:00
Jeppe Bundgaard 6c2b2b7d96 Enhance OpenAPI documentation for configuration endpoints with detailed success messages and add Bird configuration endpoints 2026-02-27 01:58:03 +01:00
Jeppe Bundgaard 78587485df Add API endpoints for test outbound calls and number management 2026-02-27 01:29:18 +01:00
Jeppe Bundgaard 21861bf48b Add goal period calculations and update progress display for improved clarity 2026-02-27 00:53:40 +01:00
Jeppe Bundgaard 35b4f22f2e Refactor tooltip styles for goal progress to improve clarity and consistency 2026-02-27 00:49:07 +01:00
Jeppe Bundgaard b257ebbabd Enhance tooltip for department goal progress by improving styling and positioning 2026-02-27 00:47:42 +01:00
Jeppe Bundgaard e50a288be8 Enhance DepartmentGoal schema by adding date range fields and improving progress descriptions 2026-02-27 00:46:14 +01:00
Jeppe Bundgaard 6989e38e14 Refactor departmental progress target calculations to use consistent timeframe references and improve clarity in goal tracking 2026-02-27 00:44:58 +01:00
Jeppe Bundgaard adb2b90e2a Add department target unit selection and adjust target calculations for weekly inputs 2026-02-27 00:37:40 +01:00
Jeppe Bundgaard 5af10afcfa Enhance departmental goal tracking by adding yearly and to-date progress calculations 2026-02-27 00:31:24 +01:00
Jeppe Bundgaard 3ac7980d41 Round progress and target values in DepartmentGoals component for improved display accuracy 2026-02-27 00:07:24 +01:00
Jeppe Bundgaard b5c0875a6f Add image compression for LPR processing and update parsing logic 2026-02-27 00:00:48 +01:00
Jeppe Bundgaard b8deec06ae Update button IDs and API URL
- Added IDs to buttons in `NewBookingStep5.vue` for better UI automation.
- Removed IDs from buttons in `MyBookingsBook.vue`.
- Updated API URL from `truckwash.dk` to `truckwash.io`.
- Disabled service worker `devOptions` in `vite.config.js`.
2026-02-25 17:25:15 +01:00
Jeppe Bundgaard 745d0787ab Add timeframe selection and improve goal progress calculations in DepartmentGoals.vue
- Introduced timeframe selection tabs for viewing goals by different periods.
- Updated `getGoalProgress` and department progress calculations to incorporate selected timeframe.
- Enhanced goal progress display to reflect accurate departmental and overall progress based on current timeframe.
2026-02-25 15:41:01 +01:00
Jeppe Bundgaard 732707cc7e Refine goal progress calculation in DepartmentGoals.vue
- Updated `getGoalProgress` to use `all?.count` and `all?.target` properties for enhanced accuracy.
- Improved department progress display with detailed progress attributes.
2026-02-25 15:05:47 +01:00
Jeppe Bundgaard bb57a3f357 Update Goal Progress Logic in DepartmentGoals module
- Refined the `getGoalProgress` function to use new `all?.count` and `all?.target` properties for accurate progress calculation.
- Enhanced department progress display by accessing nested progress details, ensuring correct values are shown per department.
- Updated OpenAPI spec to include detailed progress structures, introducing new schemas like `GoalProgressDetails` and `DepartmentGoalProgress` for comprehensive goal tracking.
2026-02-25 14:53:05 +01:00
Jeppe Bundgaard 09fdc26438 Enhance GoalFormModal with i18n support and department daily targets
- Integrated `vue-i18n` for internationalization features in `GoalFormModal.vue`.
- Added support for custom daily targets for departments, with fallback option for even distribution.
- Updated department, product, and customer search inputs to use `t` function for localization.
- Refactored modal creation logic in `showGoalFormModal.js` to use `createApp` and manage app lifecycle with `i18n`.
2026-02-25 14:21:13 +01:00
Jeppe Bundgaard ee04e213f1 Add Connectivity Issue Page and Improve Table Semantics
- Introduced `ConnectivityIssue.vue` for handling and displaying connectivity problems.
- Added new route for the connectivity issue error page.
- Enhanced accessibility by wrapping table headers in `OrderBookingsTable.vue` with `<thead>` and `<tbody>` tags.
- Included connectivity-related internationalization keys across various locale files.
- Updated components to integrate `ConnectivityIssue` as a fallback display for connection errors.
2026-02-25 12:59:10 +01:00
Jeppe Bundgaard 61a3736ad1 Refactor goal calculation logic and update theme imports
- Simplified `getDailyGoalDepartmentTarget` by introducing custom daily target overrides and improving department target calculation.
- Removed redundant `@use` of SweetAlert themes to fix import issues.
- Corrected import extension for SweetAlert Bulma theme from `.scss` to `.css`.
- Cleaned up unused imports in `TimeBookingsElementSelectVehicles.vue`.
2026-02-25 10:03:32 +01:00
Jeppe Bundgaard d870eb9257 Update package versions to ensure compatibility
- Locked versions for `axios`, `sweetalert2`, and `vite` to specific releases.
- Updated multiple Babel helper and plugin packages to newer versions for enhanced functionality.
- Upgraded various esbuild packages and enforced Node.js version >=18 requirement.
- Added missing MIT licenses for dependencies in `package-lock.json` for clarity.
2026-02-24 15:17:09 +01:00
Jeppe Bundgaard 4e5104ab34 Revise testing guidelines: Switch from WebdriverIO to Playwright
- Updated test creation and maintenance rules to include Playwright as the primary framework.
- Simplified testing instructions with enhanced test file running and asserting methods.
- Enhanced guidelines with examples of Playwright features such as locators, page interactions, and assertions.
- Added information on mobile emulation and test structure best practices.
- Removed outdated testing framework information and examples.
2026-02-24 10:45:38 +01:00
Jeppe Bundgaard 7ed053f029 Merge remote-tracking branch 'origin/master' 2026-02-24 10:44:51 +01:00
Jeppe Bundgaard bc0002ca4e Integrate reCAPTCHA in passkey authentication
- Added `recaptchaToken` to `getAuthenticationChallenge` and `verifyAuthentication` for enhanced security.
- Simplified endpoint selection logic by removing user type distinction in `PasskeyAuthService.js`.
- Updated `LoginForm.vue` to fetch reCAPTCHA token if enabled during passkey authentication.
- Adjusted `PasskeyManagement.vue` to better align naming conventions with UI elements.
2026-02-24 10:44:41 +01:00
Jeppe Bundgaard 41c2a2575e Improve authentication and API integration
- Refined hostname handling in `PasskeyAuthService.js` for correct `rpId` assignment based on domain matching.
- Expanded OpenAPI spec with multiple production server URLs and added `g_recaptcha_response` in various API endpoints for enhanced security.
- Updated `LoginForm.vue` to ensure `customer_number` is accurately parsed as an integer for API compliance.
2026-02-24 01:26:49 +01:00
Jeppe Bundgaard 75cde6a355 Enhance Passkey Authentication Logic and Error Handling
- Added `customerNumber` parameter to `getAuthenticationChallenge` and `authenticateWithPasskey` functions.
- Introduced challenge token usage in `verifyAuthentication` to align with OpenAPI spec.
- Improved error handling in `LoginForm.vue` with detailed error checks and logging.
- Ensured support for session tokens in `SubuserLoginForm.vue`.
2026-02-24 00:34:07 +01:00
Jeppe Bundgaard 4e7def8559 Add passkey authentication endpoints and fix passkey data handling in UI
- Introduced `/auth/passkey/challenge` and `/auth/passkey/verify` endpoints for passkey authentication.
- Adjusted `PasskeyManagement.vue` to correctly parse nested passkey data.
2026-02-23 23:02:40 +01:00
Jeppe Bundgaard 0f309f6ed4 Center TwoFactorVerify component on the page with auto margins. 2026-02-23 22:30:41 +01:00
Jeppe Bundgaard b2a6ede616 Add Two-Factor Authentication (2FA) to login and profile management
- Integrated 2FA check and handling in user and employee login workflows with `TwoFactorVerify` component.
- Added 2FA setup, enable, and disable functionalities in `UserProfile` and related management views.
- Enhanced internationalization files with 2FA-related translations for multiple locales.
- Created `TwoFactorAuthService.js` to handle API calls for 2FA setup and verification processes.
2026-02-23 22:22:36 +01:00
Jeppe Bundgaard be60ce8fdf Integrate passkey authentication and management
- Added passkey support for secure, passwordless authentication using WebAuthn.
- Implemented passkey management in user profiles, enabling users to add, rename, and delete passkeys.
- Updated authentication forms to support passkey login, including feature detection and login flow.
- Enhanced internationalization files with passkey-related translations for multiple locales.
- Introduced new components and services for handling passkey operations and WebAuthn interactions.
2026-02-23 21:59:01 +01:00
Jeppe Bundgaard af7b02bc79 Add ID attributes to improve component interactability
- Added `id="book-wash-button"` for better identification of the book button.
- Included dynamic ID `department-option-${dept.id}` for departments to enhance interaction specificity.
2026-02-23 20:01:41 +01:00
Jeppe Bundgaard 7614ef482d Add force enable/disable machine actions to ActionSettingsWheelButton
- Implemented new actions for force enabling and disabling machines in `ActionSettingsWheelButton.vue`.
- Display success message on login in `LoginForm.vue` and handle reload with delay.
- Adjusted form input handling and error/success message display across auth-related components and forms.
- Included form ID attributes and improved message visibility for user feedback.
2026-02-23 19:44:29 +01:00
Jeppe Bundgaard 159445467a Merge remote-tracking branch 'origin/master' 2026-02-19 16:46:15 +01:00
Jeppe Bundgaard 2ede884959 Add force enable/disable machine functionality for department lanes
- Introduced endpoints to handle force enable/disable machine actions (`/modules/self-serve/lane/force/machine/enable`, `/disable`).
- Updated OpenAPI spec to document the new endpoints.
- Extended `DepartmentLane.vue` and `departmentLanesTable.vue` with buttons for force enable/disable, including loading states and toast notifications.
- Added corresponding i18n translations for force control actions.
- Created E2E tests to verify translation keys, non-empty values, and source file functionality in `department-lane-force-machine.spec.js`.
2026-02-19 11:39:36 +01:00
Jeppe Bundgaard fe5140f74a Add dynamic image and button handling for department lanes and self-serve tasks
- Updated i18n files to include "Dynamic Image ID" translations.
- Extended `SelfServeTasks` and `DepartmentLanes` with columns for dynamic image and button configurations.
- Integrated new OpenAPI endpoint to generate dynamic images for department lanes.
- Enhanced tables, forms, and dashboards to display and manage new attributes.
2026-02-18 16:53:13 +01:00
Jeppe Bundgaard d2f2354efd Extend OpenAPI spec and refine self-serve wash logic
- Updated OpenAPI schemas to include dynamic button IDs and vehicle type overrides for tasks.
- Refined `isMachineAvailable` type definition in `MyWashStart.vue` to improve type safety.
- Simplified lane selection watcher logic in `MyWashStart.vue` by removing redundant step condition.
2026-02-18 16:36:46 +01:00
Jeppe Bundgaard ba45ba21a3 Update lane selection and allowed services handling in self-serve wash flow
- Adjusted visibility conditions in `MyWashStart.vue` to include the `VEHICLE` step for lane selection.
- Refined `allowedServices` parsing in `useSelfServeLogic.js` to handle nested API response structures correctly.
2026-02-18 15:47:50 +01:00
Jeppe Bundgaard 8a8f44bab9 Update self-serve wash flow to dynamically manage allowed services per lane
- Refactored `handleConfirmNext` in `MyWashStart.vue` to fetch and update allowed services before lane selection.
- Modified `isMachineAvailable` logic to use server-defined allowed services.
- Added watcher for `radioLaneOption` to fetch services dynamically on lane selection.
- Incorporated `isLoadingSelfServeData` check in `shouldDisableNext` to ensure data readiness.
- Introduced new tests for service logic (`updateLaneAllowedServices`, `isServiceAllowed`, `isMachineAvailable`) and added E2E coverage for guided self-serve wash flow.
2026-02-18 15:20:37 +01:00
Jeppe Bundgaard ea1a605505 Enable machine relay during wash start for machine washes
- Added `enableMachineRelay` function in `useSelfServeLogic.js` for activating machine relays.
- Integrated machine relay logic in `MyWashStart.vue` with error handling to avoid wash start failure.
2026-02-18 14:33:08 +01:00
Jeppe Bundgaard c1e4d9b8c4 Add multi-select tests for services in SelfServeTasks and enhance form generation
- Introduced a new test suite for verifying multi-select functionality in `services` column of `SelfServeTasks`.
- Added tests for `type`, `options`, `parse`, and `set.services` functions.
- Enhanced `ObjectsGlobal` form generation to include multi-select checkboxes and pre-checked values for better usability.
2026-02-18 14:16:37 +01:00
Jeppe Bundgaard a29b978bc5 Add guidelines for creating and maintaining tests in .aiassistant/rules/Creating and maintaining tests.md
- Introduced detailed instructions for test development using WebdriverIO, covering structure, naming conventions, and best practices.
- Added examples for browser interactions, assertions, and handling internationalization (i18n) in tests.
- Documented prerequisites for mobile testing and best practices for maintaining test cases.

Enhance SelfServeTasks capabilities by introducing `services` management

- Added `services` property to `SelfServeTasks` for task-specific service handling.
- Implemented logic to determine and update allowed services dynamically based on active tasks.
- Extended machine availability check (`isMachineAvailable`) to consider services allowed per task.

Expand backend support for lane services

- Added new endpoints to manage lane services (`/modules/self-serve/lane/services/allowed` and `/modules/self-serve/lane/relay/machine/enable`).
- Extended OpenAPI specifications to include service configuration for tasks and validation of lane services.

Modify SelfServe UI components for displaying allowed services

- Updated multiple screens to show allowed services based on active tasks.
- Added tags for visualizing allowed task services in `SelfServeTryModal` and `SelfServeTasksTable`.

Add `i18n-settings-wheel.spec.js` for translation key verification

- Added new test suite to ensure i18n translation parity between English and Danish locale files for `settings_wheel`.
- Implemented checks to validate key presence and exact match across both languages.
2026-02-18 14:12:12 +01:00
Jeppe Bundgaard 21b222674a Remove unnecessary console.log from LoginEmployeeForm.vue 2026-02-18 13:16:47 +01:00
Jeppe Bundgaard 601d4ad2a0 Merge remote-tracking branch 'origin/master' 2026-02-18 13:15:53 +01:00
Jeppe Bundgaard ab1e6b8c44 Add "Sign out" button to subuser security settings in UserProfile.vue
- Introduced a new section for subuser security in the user profile.
- Added a "Sign out" button with a confirmation dialog for improved security and functionality.
2026-02-18 13:12:26 +01:00
Jeppe Bundgaard 887c0df238 Auto-select single grant for subusers and improve phone input handling
- Added logic in `SubuserGrantSelector.vue` to auto-select the grant if the subuser only has one available.
- Replaced country code sanitization watcher in `SubuserLoginForm.vue` with a focusout handler for improved performance and simplicity.
- Updated styles and input attributes in login form for better usability and layout consistency.
2026-02-18 13:10:57 +01:00
Jeppe Bundgaard a8862cfa22 Expand Swedish translations and improve phone login usability in SubuserLoginForm
- Added new Swedish translations for `auth` section in `sv.json` and aligned with `en.json` for consistency.
- Enhanced phone login fields with sanitized country code input handling in `SubuserLoginForm.vue`.
- Improved layout for country code and phone number inputs for better user experience.
2026-02-18 12:55:36 +01:00
Jeppe Bundgaard 3129d9398f Update Danish translations and refactor i18n usage in subuser login form
- Expanded and improved Danish translations in `da.json` for `auth` and `common` sections.
- Refactored `SubuserLoginForm.vue` to utilize `useI18n` for dynamic text rendering.
- Enhanced i18n key usage for labels and placeholders in the form.
2026-02-18 12:50:05 +01:00
Jeppe Bundgaard 9b55b7bc37 Enhance LoadButtonWhileAwait with reactive loading state
- Used `computed` to synchronize `isLoading` fallback to local state when prop not provided.
- Improved prop handling and reactive property alignment for better state management.
2026-02-18 12:15:16 +01:00
Jeppe Bundgaard a2b809a468 Restructure wash steps and refactor dependent logic
- Reordered wash steps to place "Questions" before "Select wash lane."
- Updated navigation and validation logic to adhere to the new flow.
- Refactored lane selection logic for better visibility and functionality.
- Fixed reactive property usage in daily report counts for improved accuracy.
2026-02-18 12:10:32 +01:00
Jeppe Bundgaard ee670b9f5e Add Buefy loading component and refine Danish translations
- Introduced `b-loading` component from Buefy for improved loading state visualization in `UserDashboard.vue`.
- Added computed property `isPermissionsLoading` to manage permission loading states dynamically.
- Updated Danish translations in `da.json` for improved clarity and consistency (`customer_creation`, `customer_login`).
2026-02-18 11:27:57 +01:00
Jeppe Bundgaard 472883f1ad Improve Swedish translations in sv.json
- Refined language for customer and operator modules, making text clearer and terminology more consistent.
- Updated translations for dashboards, reports, and POS components to improve user understanding.
- Improved alignment with key structures in `en.json` for better internationalization consistency.
2026-02-18 11:00:01 +01:00
Jeppe Bundgaard a26d33b714 Update default vehicle data and refactor i18n usage in MassDataInserterModal
- Adjusted default values in `VehicleDataStructure.vue` (`customer_id` and `type`).
- Refactored i18n integration in `MassDataInserterModal.vue` to use `i18n.global.t` for improved consistency.
2026-02-18 10:59:49 +01:00
Jeppe Bundgaard a978675899 Filter restricted products and add-ons based on customer attributes in POS components
- Introduced logic to filter out restricted products and add-ons using new utility methods (`isProductRestricted`, `isAddonRestricted`, `canBuyAdditionalServices`) based on customer attributes.
- Updated relevant POS components to replace unfiltered lists with computed properties for restricted items.
- Enhanced maintainability by centralizing restriction checks in `POSDepartmentProcess.vue`.
2026-02-17 17:21:19 +01:00
Jeppe Bundgaard 382d9e6f6b Add and organize comprehensive Swedish translations (sv.json)
- Added extensive Swedish translations for dashboards, reports, bookings, POS components, settings, and common actions.
- Reorganized and expanded i18n keys for greater maintainability and consistency across multilingual support.
- Aligned sv.json with existing `en.json` and `da.json` structures to ensure seamless integration.
2026-02-17 17:21:09 +01:00
Jeppe Bundgaard ecaa183ac3 Add Swedish and German language options to LanguageSwitcher and LanguageSelector components 2026-02-17 16:39:22 +01:00
Jeppe Bundgaard 52e3d8fea0 Add Swedish (sv.json) and German (de.json) locale files for extended multilingual support
- Introduced comprehensive translation keys for dashboards, reports, bookings, POS components, settings, and common actions.
- Improved multilingual consistency and maintainability by aligning with existing i18n integration in `en.json` and `da.json`.
2026-02-17 16:37:55 +01:00
Jeppe Bundgaard 7fc889dd75 Refactor LoadButtonWhileAwait to use Buefy components and enhance loading/disabled state handling 2026-02-17 16:22:43 +01:00
Jeppe Bundgaard 8aa6fcf17f Refactor DepartmentPos pagination component to use TableLabeledPagination and enhance i18n integration 2026-02-17 15:57:22 +01:00
Jeppe Bundgaard 9f5fba3400 Extend i18n integration for department SMS notifications and labels
- Replaced hardcoded text with dynamic translations using `$t` and `i18n.global.t`.
- Updated `en.json` and `da.json` with new translation keys for SMS notifications, country codes, and related labels.
- Improved multilingual consistency and maintainability across components.
2026-02-17 15:50:28 +01:00
Jeppe Bundgaard ca26751b9f Add i18n keys for department reports (revenue, washes, avg revenue per wash) in en.json 2026-02-17 15:41:17 +01:00
Jeppe Bundgaard 66298d7d45 Make DatePeriodSelector shortcuts reactive to language changes
- Replaced static shortcut arrays with computed properties for dynamic reactivity to language changes.
- Improved i18n maintainability by using `SessionUser.objects.global.language
2026-02-17 15:39:50 +01:00
Jeppe Bundgaard 76e5b03bc2 Extend i18n integration in DepartmentDailyReport components
- Added new translation keys (`quantity_sold`) in `en.json` and `da.json` for improved multilingual support.
- Replaced hardcoded labels in `DepartmentDailyReportCount.vue` with computed properties using dynamic translations from `useI18n`.
- Improved maintainability and consistency by centralizing reusable strings.
2026-02-17 15:35:52 +01:00
Jeppe Bundgaard 731ba09696 Extend i18n integration in DepartmentDailyReport components
- Replaced hardcoded strings with dynamic translations using `useI18n` and `$t`.
- Localized titles, subtitles, placeholders, labels, and error messages across daily report components for multilingual consistency.
- Added new scalable translation keys to enhance maintainability.
2026-02-17 15:26:26 +01:00
Jeppe Bundgaard fe3f4b10f0 Extend i18n integration across dashboards, reports, and components
- Updated `en.json` and `da.json` with comprehensive translation keys for department dashboards, booking reports, tables, and POS components.
- Replaced hardcoded strings with dynamic translations using `$t` in multiple components for multilingual consistency.
- Improved maintainability by organizing and centralizing reusable translation keys.
2026-02-17 15:25:32 +01:00
Jeppe Bundgaard 2266e3908f Extend i18n integration for time bookings and POS components
- Added new translation keys in `en.json` and `da.json` for time bookings (placeholders, labels, and actions) and POS component buttons.
- Improved localization for registration numbers, license plate inputs, and booking flows.
2026-02-17 15:13:21 +01:00
Jeppe Bundgaard b0a2c0216f Expand i18n integration across component actions and admin settings
- Replaced hardcoded texts in `ActionSettingsWheelButton.vue` and related components with dynamic translations using `useI18n` for improved multilingual consistency.
- Updated `en.json` with new translation keys for buttons, modals, and action labels.
- Consolidated unused translation keys and improved maintainability by centralizing reusable strings.
2026-02-17 14:57:13 +01:00
Jeppe Bundgaard 16d63a2710 Expand i18n integration across dashboards and components
- Replaced hardcoded text with dynamic translations using `useI18n` or `$t` across multiple dashboards and components.
- Localized labels, placeholders, titles, subtitles, error messages, table headers, buttons, and actions.
- Extended and centralized translation keys for improved multilingual support and maintainability.
2026-02-17 14:16:41 +01:00
Jeppe Bundgaard fe3318e6ac Extend i18n integration across components
- Replaced hardcoded text with dynamic translations using `useI18n` or global `i18n` in multiple components and dashboards.
- Localized buttons, placeholders, labels, table headers, error messages, and object metadata, enhancing multilingual support.
- Improved maintainability by introducing and centralizing new translation keys.
2026-02-17 13:39:43 +01:00
Jeppe Bundgaard d6be146d91 Refactor i18n integration in superuser navigation menu items
- Replaced `useI18n` with global `i18n` instance for consistency.
- Adjusted translation function to `i18n.global.t` for improved maintainability.
2026-02-17 13:18:05 +01:00
Jeppe Bundgaard 27f6de8b42 Localize titles, subtitles, and error messages across dashboards and tables
- Replaced hardcoded titles, subtitles, and error messages with dynamic translations using `$t` across dashboard and table components.
- Enhanced i18n support by introducing new translation keys for improved multilingual consistency.
2026-02-17 13:16:55 +01:00
Jeppe Bundgaard 6c2ca85dee Localize tables and improve i18n integration
- Replaced hardcoded labels and placeholders with dynamic translations using `i18n` across multiple table components (`PosLastScannedLicensePlates.vue`, `InvoiceCollectionsTable.vue`, `ordersSyncTable.vue`, etc.).
- Added comprehensive translation keys for table headers, actions, and states to improve multilingual support.
- Enhanced maintainability by centralizing reusable translation keys.
2026-02-17 13:06:39 +01:00
Jeppe Bundgaard fd8b86987f Localize objects and enhance i18n integration
- Replaced hardcoded labels in `Bookings.vue`, `Orders.vue`, and `Vehicles.vue` with dynamic translations using `i18n`.
- Added comprehensive translation keys for `objects` in `en.json` and `da.json`.
- Improved multilingual support for objects metadata, columns, and labels.
2026-02-17 12:56:40 +01:00
Jeppe Bundgaard 665dc61d98 Localize global objects and extend i18n support
- Replaced hardcoded text in `ObjectsGlobal.vue` with dynamic translations using `i18n`.
- Centralized global translation keys in `en.json` and `da.json` under the `global` namespace.
- Improved multilingual support and maintainability for global object labels and actions.
2026-02-17 12:52:12 +01:00
Jeppe Bundgaard 33c64659c7 Localize admin and user navigation menus
- Replaced hardcoded navigation labels in `NavigationMenuItemsUser.vue`, `NavigationMenuItemsAdmin.vue`, and `NavigationMenuItemsGlobal.vue` with dynamic translations using `i18n`.
- Added new translation keys for navigation items in `en.json` and `da.json`, improving multilingual support.
2026-02-17 12:47:29 +01:00
Jeppe Bundgaard bb8ae993eb Localize user dashboard and enhance translation support
- Replaced hardcoded dashboard text in `UserDashboard.vue` with dynamic translations using `$t`.
- Added new translation keys in `en.json` and `da.json` for user dashboard actions, descriptions, and messages.
- Improved multilingual support for subuser actions, empty state messages, and contact information.
2026-02-17 12:44:45 +01:00
Jeppe Bundgaard 3f71fb85f4 Add language selector and localize user navigation menus
- Introduced a new `LanguageSelector` component for switching between languages with persisted user preference.
- Localized navigation items in `UserLeftMenu.vue` using translation keys in `en.json` and `da.json`.
- Updated `DesktopNavigationBuefy.vue` and `UserLeftMenu.vue` to include the `LanguageSelector` component.
2026-02-17 12:43:06 +01:00