Replace external berth dashboard with native Vue interface

- Replace iframe embed with full-featured berth status dashboard
- Add BerthDetailsModal and BerthStatusBadge components
- Implement search, filtering, and multiple view modes
- Add berth management API endpoints (get-by-id, update)
- Include measurement conversion utilities and type definitions
- Provide status summaries and visual berth overview
This commit is contained in:
2025-06-17 15:59:39 +02:00
parent 0b881a2588
commit 0e85cb40bc
9 changed files with 2167 additions and 36 deletions

View File

@@ -1,28 +1,110 @@
// Berth Status Enum
export enum BerthStatus {
Available = 'Available',
Waitlist = 'Waitlist',
Reserved = 'Reserved',
Sold = 'Sold'
}
// Berth Area Enum
export enum BerthArea {
A = 'A',
B = 'B',
C = 'C',
D = 'D',
E = 'E'
}
// Side Pontoon Options
export enum SidePontoon {
No = 'No',
QuaySB = 'Quay SB',
QuayPT = 'Quay PT',
QuaySBYesPT = 'Quay SB, Yes PT',
QuayPTYesSB = 'Quay PT, Yes SB',
YesSB = 'Yes SB',
YesPT = 'Yes PT'
}
// Mooring Type Options
export enum MooringType {
SidePierMed = 'Side Pier / Med Mooring',
DoubleMed = '2x Med Mooring',
SidePierFinger = 'Side Pier / Finger',
FingerMed = 'Finger / Med Mooring',
DoubleFinger = '2x Finger'
}
// Cleat Type Options
export enum CleatType {
A3 = 'A3',
A5 = 'A5'
}
// Cleat Capacity Options
export enum CleatCapacity {
TwentyToTwentyFour = '20-24 ton break load',
TenToFourteen = '10-14 ton break load'
}
// Bollard Type Options
export enum BollardType {
TypeA = 'Bull bollard type A',
TypeB = 'Bull bollard type B'
}
// Bollard Capacity Options
export enum BollardCapacity {
Twenty = '20 ton break load',
Forty = '40 ton break load'
}
// Access Options
export enum Access {
CarThreeTonToVessel = 'Car (3t) to Vessel',
CarToVessel = 'Car to Vessel',
CarToQuaiCartToVessel = 'Car to Quai, Cart to Vessel',
CartToVessel = 'Cart to Vessel',
CarThreeAndHalfTonToVessel = 'Car (3.5t) to Vessel'
}
// Interested Party with status info
export interface InterestedParty extends Interest {
linkId?: number; // ID of the link record if needed
}
export interface Berth {
Id: number;
"Mooring Number": string;
Length: string;
Draft: string;
"Side Pontoon": string;
"Mooring Number": string; // e.g., 'A5'
Area: string; // Area enum values: A, B, C, D, E
Status: string; // BerthStatus enum values
"Nominal Boat Size": number; // in feet (imperial)
"Water Depth": number; // in feet
Length: number; // in feet
Width: number; // in feet
Depth: number; // in feet
"Side Pontoon": string; // SidePontoon enum values
"Power Capacity": number;
Voltage: number;
Status: string;
Width: string;
Area: string;
"Map Data": {};
"Nominal Boat Size": number;
"Water Depth": string;
"Water Depth Is Minimum": boolean;
"Width Is Minimum": boolean;
"Mooring Type": string;
"Cleat Type": string;
"Cleat Capacity": string;
"Bollard Type": string;
"Bollard Capacity": string;
Access: string;
Price: string;
"Mooring Type": string; // MooringType enum values
"Cleat Type": string; // CleatType enum values
"Cleat Capacity": string; // CleatCapacity enum values
"Bollard Type": string; // BollardType enum values
"Bollard Capacity": string; // BollardCapacity enum values
"Bow Facing": string;
"Berth Approved": boolean;
Access: string; // Access enum values
Price: number;
"Interested Parties"?: InterestedParty[];
"Map Data"?: {};
"Water Depth Is Minimum"?: boolean;
"Width Is Minimum"?: boolean;
"Berth Approved"?: boolean;
"Created At"?: string;
"Updated At"?: string;
}
export interface BerthsResponse {
list: Berth[];
}
export interface EOIDocument {