Commit Graph
1130 Commits
Author SHA1 Message Date
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 B a91d103de5 Add Qodana configuration upload workflow 2026-02-24 10:41:19 +01:00
Jeppe B 34ed0b9312 Add Qodana configuration upload workflow 2026-02-24 10:39:55 +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
gold-dev 266cb4cced Feat: Slide 7 2026-02-18 17:29:36 +02: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
gold-dev 46e0d0e747 Feat: Some fixes from slide 20260217_truckwash_dk_and_truckwash_io_edits_6th_edition_V2 2026-02-18 12:56:45 +02: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