- Added `SelfServeLaneStatus` and `SelfServeConfig` schemas to improve data handling and API responses.
- Enhanced `/modules/self-serve/lane/command` to support `RESERVE`, `RELEASE`, and `license_plate`.
- Updated `/modules/self-serve/config` endpoints to include request/response schemas for configuration management.
- Introduced `fetchPreviousAnswers` function to retrieve and populate previous answers based on license plate and customer number.
- Added logic to clear answers state when license plate or customer number changes.
- Updated watchers to trigger data fetching and ensure answers reflect the latest state.
- Replaced pre-fetching of all condition rules with conditional fetching based on relevant condition IDs.
- Updated question rendering in `MyWashStart.vue` to use `WhiteBoxCard` for improved UI structure.
- Introduced new "Vehicle Configuration" step with dynamic question and task visibility.
- Enhanced `onStartWash` to persist user answers before starting the wash.
- Added `answers` state and related handling for vehicle condition questions.
- Updated navigation logic and UI to incorporate vehicle confirmation.
- Introduced `executeSelfServeCommand` for shared command execution logic across wash actions.
- Replaced custom command handling in `onStartWash`, `onStopWash`, `onReserveWashLane`, and `onReleaseWashLane` with `executeSelfServeCommand`.
- Added new vehicle confirmation step and related UI updates.
- Adjusted default `forceNearestDepartmentEvaluationId` to `6`.
- Updated default behavior and validation logic in `VehicleDataStructure.vue`.
- Removed unnecessary visibility check for `DesktopNavigationBuefy`.
- Introduced `watch` in `Viewport` to dynamically update header height on state changes.
- Adjusted grid column spans to handle hidden states and ultra-wide screen devices.
- Introduced `SelfServeVehicleConditions` object and related CRUD operations for managing vehicle-specific conditions.
- Added pagination, table, and detail views for managing vehicle conditions within the Department dashboard.
- Updated routing and navigation to include `selfservevehicleconditions` path and entry points.
- Extended `openapi.yaml` to document new endpoints for vehicle condition management.
- Added `BTooltip` from Buefy for displaying detailed information about conditions and rules.
- Implemented `getRuleTypeLabel` and `getConditionById` methods for improved condition and rule handling.
- Updated UI to include tooltips with rule descriptions, evaluation states, and fallback text for missing rules.
- Extended `SelfServeConditionRules` and its UI to support new rule types.
- Updated `openapi.yaml` to document the newly added options.
- Refactored `evaluateCondition` logic to handle nested evaluation with added rule types.
- Updated `DepartmentWashLane` to include a "Prøv" button for opening `SelfServeTryModal`.
- Enhanced modal logic to support filtering by department, vehicle type, and lane.
- Improved UI with lane-specific context in the modal's title and dynamic data handling.
- Introduced `SelfServeTryModal` component for handling department and vehicle-type-specific test flows.
- Added a "Prøv" button in `DepartmentSelfServeQuestions` for opening the modal.
- Implemented logic for fetching and filtering questions, conditions, rules, and tasks based on department and vehicle type.
- Enhanced UI to support answering questions, evaluating conditions, and managing tasks within the modal.
- Extended condition rules with `IS_SET` and `IS_NOT_SET` options.
- Added "Tilføj betingelsesregel" button in `SelfServeConditionRulesModal` for enhanced rule management.
- Renamed `question_condition` to `condition_id` for consistency across `SelfServeConditions`, `SelfServeTasks`, and `SelfServeQuestions`.
- Introduced CRUD operations for `SelfServeConditionRules` with logic for managing condition rules.
- Enhanced existing components to support `condition_id`, including dynamic filtering and table parsing.
- Updated UI elements to reflect changes, including new rule creation options and improved field handling for `condition_id`.
- Replaced navigation link with a modal for managing condition rules.
- Added `SelfServeConditionRulesModal` component with rule creation and pagination support.
- Improved user interaction with dynamic modal handling (`openModal`, `closeModal`).
- Implemented asynchronous `onchange` events in `creation` config to dynamically update fields based on selected object type.
- Enhanced modal behavior in `ObjectsGlobal` to attach and trigger `onchange` events for configured inputs during initialization.
- Improved user experience with auto-filled `name` and `description` fields for questions and tasks.
- Introduced `condition_id` field for managing conditional logic in `SelfServeConditions`.
- Enhanced dynamic filtering using `department_id` and `product_id` dependencies.
- Added default "Ingen" option for `condition_id`.
- Updated `SelfServeConditionsTable` with editable `condition_id` column.
- Improved pagination and object creation logic to support `condition_id`.
- Introduced `getTaskText` function with local task caching for optimized task text retrieval.
- Enhanced `SelfServeConditionRules` options handling to support combined question and task selections.
- Updated `DepartmentSelfServeConditionRules` to include separate buttons for adding question and task rules.
- Improved table parsing logic in `SelfServeConditionRulesTable` to handle tasks alongside questions.
- Introduced `SelfServeConditions` and `SelfServeConditionRules` modules for managing conditions and rules.
- Added routing, components, and backend integration for CRUD operations.
- Implemented dynamic filtering based on `department_id`, `lane_id`, and `vehicle_type`.
- Enhanced self-serve workflows with condition and rule management for questions and tasks.
- Updated related navigation, tables, and pagination components for seamless integration.
- Introduced `question_condition` field for conditional question handling.
- Enhanced question filtering logic using `department_id` and `product_id`.
- Added default "Ingen" option for `question_condition`.
- Updated `SelfServeQuestionsTable` to include editable `question_condition` column.
- Removed deprecated `image` and `vehicle_type` column handlers.
- Added `question_condition` handling in the backend update logic.
- Implemented attachment management (list, upload, download, delete) within a modal interface.
- Integrated file-handling logic with `SessionUser` for authenticated requests.
- Added real-time updates for attachment actions with success/error feedback via `Swal`.
- Designed a responsive modal layout for efficient user interaction.
- Introduced attachment management (list, upload, delete, download) via `authenticatedRequest`.
- Added `SelfServeTaskAttachmentsModal` for viewing and managing task attachments.
- Updated `SelfServeTasksTable` to include attachment actions with modal integration.
- Adjusted default nearest department evaluation ID in `MyWashStart.vue`.
- Made `question` selection mandatory during task creation.
- Enhanced dynamic filtering by including `department_id` and `product_id`.
- Added a default "Altid" option for question selection.
- Improved `showEditObjectFieldForm` by supporting extra `options` parameters for contextual edits.
- Introduced `SelfServeTasks` module with backend integration for tasks CRUD operations.
- Added `SelfServeTasksPagination` and `SelfServeTasksTable` components to handle task listing, filtering, and reordering.
- Enabled dynamic filtering with `department`, `lane`, `product`, and `question`.
- Enhanced drag-and-drop functionality for reordering tasks with immediate visual feedback.
- Added routing and navigation updates for `SelfServeTasks` under department dashboard.
- Integrated `order_priority` handling for task creation and updates.
- Improved consistency with `SelfServeQuestions` by implementing shared logic and components where applicable.
- Enabled dynamic `order_priority` assignment during question creation based on `totalItems`.
- Updated button slot in SelfServeQuestionsPagination and related components to expose `totalItems`.
- Replaced the `id` column with the `order_priority` column for better ordering functionality.
- Removed redundant definitions of `order_priority` column for cleaner code structure.
- Introduced computed `sortedList` for dynamic sorting by `order_priority` in `SelfServeQuestionsPagination`.
- Enhanced drag-and-drop implementation with optimistic updates and immediate feedback by using `setList`.
- Added drag-and-drop handling for row reordering in `SelfServeQuestionsTable`.
- Introduced `setOrder` for managing question order in `SelfServeQuestionsPagination`.
- Added error handling with `Swal.showValidationMessage` across `add`, `set`, and `delete` operations in `ObjectsGlobal.vue`.
- Exposed `loadList` function to `buttons` slot in `TableLabeledPagination.vue` and `PaginationDisplayGeneralSearchReload.vue`.
- Replaced `vehicle_type` with `product` in forms and logic.
- Removed `vehicle_type` column and handling across components.
- Adjusted `add` method and table definitions accordingly.
- Added `SessionUser` import to expand options data handling.
- Updated `SelfServeQuestions` fields (`product`, `vehicle_type`) to use dynamic `select` types with async options and filtering.
- Enhanced `add` and `set` methods with explicit parameter handling (`department`, `lane`, etc.).
- Refined options handling using locked values and async calls.
- Adjusted `ObjectsGlobal` methods for consistent request formatting and error handling.
- Standardized `buttons` slot structure in pagination templates.
- Removed redundant button definitions in `DepartmentWashLane.vue`.
- Updated button styles and layouts for consistency across components.
- Updated `showCreateObjectForm` to accept `initialData` for pre-filling forms dynamically.
- Exposed `loadList` in `SelfServeQuestionsPagination.vue` for external access.
- Integrated `selfServeQuestionsPagination` ref and dynamic filtering into `DepartmentWashLane.vue`.
- Introduced vehicle type filter support across Self-Serve Questions components, including `SelfServeQuestionsPagination`, `SelfServeQuestionsTable`, and `DepartmentSelfServeQuestions`.
- Added `selectedVehicleType` logic and `MyWashStartVehicleTypeSelection` for enhanced filter functionality.
- Updated filtering and pagination logic to handle dynamic vehicle type selection and modifications.
- Added new `SelfServeQuestionsPagination.vue` and `SelfServeQuestionsTable.vue` components for managing self-service questions with pagination support.
- Introduced routing for self-service questions in the "Self-Serve" module under admin dashboard.
- Updated `NavigationMenuItemsAdmin.vue` to include "Self-Serve Questions" navigation item.
- Integrated filtering and auto-load functionality to support department and lane-specific views.
- Introduced `DepartmentWashLane.vue` for viewing and managing individual wash lane details.
- Added new route for accessing specific wash lanes under the "Wash Lanes" module.
- Updated `ActionSettingsWheelButton.vue` and `departmentLanesTable.vue` to include navigation to detailed wash lane view.
- Refined permissions logic for displaying lane-related actions based on user roles.
- Introduced `SelfServeQuestions` object for managing self-service questions with metadata, columns, and CRUD operations.
- Integrated `SelfServeQuestions` module into `SessionUser.vue` and its global objects mapping.
- Introduced `advancedView` prop to enable additional data display and configuration options across `DepartmentLanes` components.
- Updated `DepartmentLanesPagination.vue` and `departmentLanesTable.vue` templates to conditionally render advanced data based on `advancedView`.
- Propagated `advancedView` prop through relevant parent components for consistent functionality.
- Refactored `DepartmentLanesPagination.vue` to simplify structure using `TableLabeledPagination`.
- Introduced the "Wash Lanes" module with new routing (`DepartmentWashLanes.vue`) and navigation integration.
- Introduced a new "Vaskebaner" module with navigation and routing functionality.
- Updated layout to display modules in a 4-column grid instead of 3.
- Simplified "Dagsopgørelse" module description.
- Introduced `MyWashStartVehicleTypeSelection.vue` for vehicle type selection with enhanced UI and dynamic fetching.
- Replaced deprecated "Type of vehicle" field with the new selection component.
- Updated logic to handle vehicle type fetching, selection, and state updates in `MyWashStart.vue`.
- Introduced `includeSystemOrders` prop in `InvoiceOrdersPagination.vue` to enable inclusion of system orders in pagination.
- Updated logic to add query parameter `show_wash_subscription` when `includeSystemOrders` is true.
- Adjusted `collectedOrderInvoice.vue` to utilize the new prop for enhanced filtering options.
- Added `exemptFromAdministrationFee` property to customer settings in `PosSelectedCustomer.vue`.
- Enabled toggle to exclude customers from monthly fees with descriptive tooltip and icon.
- Added `ConfigurationInputNumber` for setting `feeProductId` in `ConfigurationEconomic.vue`.
- Extended `Economic/Config` with getter and setter methods for `feeProductId`.
- Updated `EditableTableColumn.vue` to improve handling of `virtualColumn` for hover text rendering.
- Added safeguard in `getProductOptions` to return an empty array when the `product` argument is null or undefined.
- Introduced `ConfigurationInputNumber` component for setting `adminFeeMonthly` and `adminFeeOrder` in `ConfigurationEconomic.vue`.
- Extended `Economic/Config` module to include getter and setter methods for fee management.
- Added `usePaginatedList` composable to centralize pagination logic, enabling cleaner and reusable code.
- Replaced direct imports of pagination logic with composable injections across multiple components for consistency.
- Updated components to support the new pagination instance-based structure for better maintainability.
- Simplified `paginatedList.vue` and introduced dependency injection using `PaginatedListKey`.
- Updated `ModuleActionLogsTable.vue` to handle null or undefined `created_at` and `data` fields gracefully.
- Improved "no logs found" message with localized text using `SessionUser.objects.global.language.no_data`.
- Removed unused `onMounted` lifecycle hook from `ModulesPagination.vue` for cleanup.
- Added `ModulesPagination.vue` for handling paginated action logs with dynamic filtering, sorting, and endpoint configuration.
- Replaced `ModuleActionLogsTable` in `DepartmentLane.vue` with `ModulesPagination` for better abstraction and reuse.
- Simplified `ModuleActionLogsTable.vue` to function as a pure presentation component with external data injection.
- Replaced inline logs table in `DepartmentLane.vue` with reusable `ModuleActionLogsTable` for better modularity.
- Enhanced `ModuleActionLogs` to support pagination and dynamic filtering.
- Introduced new `ModuleActionLogsTable.vue` component to centralize log display logic.
- Introduced `ModuleActionLogs` component under `SessionUser.Objects` for handling action logs.
- Updated `DepartmentLane.vue` to fetch and display module action logs for "selfserve" under a new "Handlingslogs" section.
- Enhanced user experience by providing detailed log data with sortable columns (e.g., action, status code, creation time).
- Added `DepartmentLane.vue` for viewing lane details, including configuration and status indicators.
- Extended router with dynamic `/superuser/department/lanes/:id` route for lane-specific pages.
- Updated `ActionSettingsWheelButton` to modify lane redirect paths for consistency.
- Enhanced `DepartmentLanesTable` to include washing actions (`stopWashing` and status checks) with improved UI.
- Added utility functions (`isWashing`, `stopWashing`) to `SessionUser.Objects.DepartmentLanes`.
- Added `department_lane_id` prop to `ActionSettingsWheelButton` for department lane-specific actions.
- Implemented "View lane in new tab" action and conditional visibility logic.
- Enhanced `DepartmentLanesTable` with status indicators for operational, non-operational, and unconfigured states.
- Introduced status enumerations and utility methods (`isOperational`, `isConfigured`, `isFaulty`) in `SessionUser.Objects.DepartmentLanes`.
- Added `try-catch` block to gracefully handle errors when calling the server API.
- Improved logging for both success and failure cases to aid debugging.
- Introduced `.junie/guidelines.md` to outline project setup, code conventions, and structure.
- Updated `env.d.ts` and `vite.config.js` to standardize `VITE_COMMIT_HASH` usage.
- Updated `module` bindings to account for mobile devices by displaying empty strings when accessed on mobile.
- Introduced a logout button with confirmation dialog functionality for improved user experience.
- Introduced `ScrollableSteps.vue` component with configurable maxHeight and slot-based structure for enhanced reusability.
- Moved phone call functionality to `SessionUser.vue` under reusable `contact` property.
- Updated `MobileHeader.vue` to utilize centralized phone call logic for consistency.
- Implemented a phone call button for quick access with `tel` protocol.
- Added conditional rendering of the button based on `showProfile`.
- Applied dynamic icon styling for development and production modes.
- Extracted `showFooterInContent` into a shared module for reusability.
- Updated `MobileHeader.vue` to use a computed property (`showProfile`) for improved route-based condition handling.
- Renamed `showFooterInContent` to `isFooterInContent` in `Viewport.vue` for clarity and consistency.
- Adjusted `showFooterInContent` logic to conditionally render footer only on mobile devices using new device detection.
- Updated footer layout to include copyright text and refined styling for improved presentation.
- Modified `independentScrollMaxHeight` to include `footerHeight` for accurate layout adjustment.
- Added spacer element to prevent content overlap with the fixed header.
- Updated `.independent-scroll` styles for consistency in max-height calculation.
- Updated `OrderBookings.vue`, `Orders.vue`, and `ObjectsGlobal.vue` to include `order: 'id:DESC'` in pagination options, ensuring consistent sorting by ID in descending order.
- Included user profile button in `MobileHeader.vue` with authentication check and styling for development mode.
- Updated `Viewport.vue` to conditionally show footer content based on route using new computed property.
- Adjusted layout styles, added new color filter classes, and refined footer handling logic for specific paths.
- Added `MobileFooter.vue` for improved mobile navigation with dedicated page links.
- Updated `MyWashStart.vue` to refine customer number step validation and clickable state logic.
- Set default `forceNearestDepartmentEvaluationId` to 0 for consistency.