Adds resource-based calendar view mode
Introduces new ResourceColumnDataSource and ResourceHeaderRenderer to support column rendering by resources instead of dates Enables dynamic calendar mode switching between date and resource views Updates core managers and services to support async column retrieval Refactors data source interfaces to use Promise-based methods Improves calendar flexibility and resource management capabilities
This commit is contained in:
parent
a7d365b186
commit
eeaeddeef8
19 changed files with 765 additions and 991 deletions
|
|
@ -302,5 +302,213 @@
|
|||
],
|
||||
"totalPrice": 500,
|
||||
"notes": "Kunde mødte ikke op"
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV22-001",
|
||||
"customerId": "CUST001",
|
||||
"status": "arrived",
|
||||
"createdAt": "2025-11-20T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-WASH", "serviceName": "Hårvask", "baseDuration": 30, "basePrice": 100, "resourceId": "STUDENT001" },
|
||||
{ "serviceId": "SRV-BAL", "serviceName": "Balayage", "baseDuration": 90, "basePrice": 1200, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 1300,
|
||||
"notes": "Split: Elev vasker, Camilla farver"
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV22-002",
|
||||
"customerId": "CUST002",
|
||||
"status": "arrived",
|
||||
"createdAt": "2025-11-20T11:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-HERREKLIP", "serviceName": "Herreklipning", "baseDuration": 30, "basePrice": 350, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 350
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV22-003",
|
||||
"customerId": "CUST003",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-20T12:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-FARVE", "serviceName": "Farvning", "baseDuration": 120, "basePrice": 900, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 900
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV22-004",
|
||||
"customerId": "CUST004",
|
||||
"status": "arrived",
|
||||
"createdAt": "2025-11-20T13:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-KLIP", "serviceName": "Dameklipning", "baseDuration": 60, "basePrice": 450, "resourceId": "EMP004" }
|
||||
],
|
||||
"totalPrice": 450
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV22-005",
|
||||
"customerId": "CUST005",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-20T14:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-STYLE", "serviceName": "Styling", "baseDuration": 60, "basePrice": 400, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 400
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV23-001",
|
||||
"customerId": "CUST006",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-21T09:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-PERM", "serviceName": "Permanent", "baseDuration": 150, "basePrice": 1100, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 1100
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV23-002",
|
||||
"customerId": "CUST007",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-21T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-SKAEG", "serviceName": "Skæg trimning", "baseDuration": 30, "basePrice": 200, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 200
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV23-003",
|
||||
"customerId": "CUST008",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-21T11:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-WASH", "serviceName": "Hårvask", "baseDuration": 30, "basePrice": 100, "resourceId": "STUDENT002" },
|
||||
{ "serviceId": "SRV-HIGH", "serviceName": "Highlights", "baseDuration": 120, "basePrice": 1000, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 1100,
|
||||
"notes": "Split: Elev vasker, Camilla laver highlights"
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV24-001",
|
||||
"customerId": "CUST001",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-22T08:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-BRYLLUP1", "serviceName": "Bryllupsfrisure Del 1", "baseDuration": 60, "basePrice": 750, "resourceId": "EMP001" },
|
||||
{ "serviceId": "SRV-BRYLLUP2", "serviceName": "Bryllupsfrisure Del 2", "baseDuration": 60, "basePrice": 750, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 1500,
|
||||
"notes": "Equal split: Camilla og Isabella arbejder sammen"
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV24-002",
|
||||
"customerId": "CUST002",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-22T09:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-FADE", "serviceName": "Fade klipning", "baseDuration": 45, "basePrice": 400, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 400
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV24-003",
|
||||
"customerId": "CUST003",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-22T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-KLIPVASK", "serviceName": "Klipning og vask", "baseDuration": 60, "basePrice": 500, "resourceId": "EMP004" }
|
||||
],
|
||||
"totalPrice": 500
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV25-001",
|
||||
"customerId": "CUST004",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-23T08:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-BALKORT", "serviceName": "Balayage kort hår", "baseDuration": 90, "basePrice": 900, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 900
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV25-002",
|
||||
"customerId": "CUST005",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-23T09:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-EXT", "serviceName": "Extensions", "baseDuration": 180, "basePrice": 2500, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 2500
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV25-003",
|
||||
"customerId": "CUST006",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-23T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-HERRESKAEG", "serviceName": "Herreklipning + skæg", "baseDuration": 60, "basePrice": 500, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 500
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV26-001",
|
||||
"customerId": "CUST007",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-24T08:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-FARVKOR", "serviceName": "Farvekorrektion", "baseDuration": 180, "basePrice": 1800, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 1800
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV26-002",
|
||||
"customerId": "CUST008",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-24T09:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-KERATIN", "serviceName": "Keratinbehandling", "baseDuration": 150, "basePrice": 1400, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 1400
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV26-003",
|
||||
"customerId": "CUST001",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-24T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-SKINFADE", "serviceName": "Skin fade", "baseDuration": 45, "basePrice": 450, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 450
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV27-001",
|
||||
"customerId": "CUST002",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-25T08:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-FULLCOLOR", "serviceName": "Full color", "baseDuration": 120, "basePrice": 1000, "resourceId": "EMP001" }
|
||||
],
|
||||
"totalPrice": 1000
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV27-002",
|
||||
"customerId": "CUST003",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-25T09:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-WASH", "serviceName": "Hårvask", "baseDuration": 30, "basePrice": 100, "resourceId": "STUDENT001" },
|
||||
{ "serviceId": "SRV-BABY", "serviceName": "Babylights", "baseDuration": 180, "basePrice": 1500, "resourceId": "EMP002" }
|
||||
],
|
||||
"totalPrice": 1600,
|
||||
"notes": "Split: Elev vasker, Isabella laver babylights"
|
||||
},
|
||||
{
|
||||
"id": "BOOK-NOV27-003",
|
||||
"customerId": "CUST004",
|
||||
"status": "created",
|
||||
"createdAt": "2025-11-25T10:00:00Z",
|
||||
"services": [
|
||||
{ "serviceId": "SRV-KLASSISK", "serviceName": "Klassisk herreklip", "baseDuration": 30, "basePrice": 300, "resourceId": "EMP003" }
|
||||
],
|
||||
"totalPrice": 300
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue