Adds resource scheduling and unavailability tracking
Introduces comprehensive schedule management for resources: - Adds DateService with advanced time and date utilities - Implements ResourceScheduleService for managing work hours - Creates ScheduleRenderer to visualize unavailable time zones - Extends resource model to support default weekly schedules Enables granular tracking of resource availability and working hours
This commit is contained in:
parent
400de8c9d5
commit
a2b95515fd
17 changed files with 563 additions and 36 deletions
|
|
@ -4,6 +4,7 @@ import { IGroupingStore } from './core/IGroupingStore';
|
|||
import { DateRenderer } from './features/date/DateRenderer';
|
||||
import { DateService } from './core/DateService';
|
||||
import { ITimeFormatConfig } from './core/ITimeFormatConfig';
|
||||
import { IGridConfig } from './core/IGridConfig';
|
||||
import { ResourceRenderer } from './features/resource/ResourceRenderer';
|
||||
import { TeamRenderer } from './features/team/TeamRenderer';
|
||||
import { CalendarOrchestrator } from './core/CalendarOrchestrator';
|
||||
|
|
@ -42,6 +43,12 @@ import { DataSeeder } from './workers/DataSeeder';
|
|||
|
||||
// Features
|
||||
import { EventRenderer } from './features/event/EventRenderer';
|
||||
import { ScheduleRenderer } from './features/schedule/ScheduleRenderer';
|
||||
|
||||
// Schedule
|
||||
import { ScheduleOverrideStore } from './storage/schedules/ScheduleOverrideStore';
|
||||
import { ScheduleOverrideService } from './storage/schedules/ScheduleOverrideService';
|
||||
import { ResourceScheduleService } from './storage/schedules/ResourceScheduleService';
|
||||
|
||||
const defaultTimeFormatConfig: ITimeFormatConfig = {
|
||||
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
|
|
@ -51,12 +58,20 @@ const defaultTimeFormatConfig: ITimeFormatConfig = {
|
|||
showSeconds: false
|
||||
};
|
||||
|
||||
const defaultGridConfig: IGridConfig = {
|
||||
hourHeight: 64,
|
||||
dayStartHour: 6,
|
||||
dayEndHour: 18,
|
||||
snapInterval: 15
|
||||
};
|
||||
|
||||
export function createV2Container(): Container {
|
||||
const container = new Container();
|
||||
const builder = container.builder();
|
||||
|
||||
// Config
|
||||
builder.registerInstance(defaultTimeFormatConfig).as<ITimeFormatConfig>();
|
||||
builder.registerInstance(defaultGridConfig).as<IGridConfig>();
|
||||
|
||||
// Core - EventBus
|
||||
builder.registerType(EventBus).as<EventBus>();
|
||||
|
|
@ -73,6 +88,7 @@ export function createV2Container(): Container {
|
|||
builder.registerType(ResourceStore).as<IStore>();
|
||||
builder.registerType(BookingStore).as<IStore>();
|
||||
builder.registerType(CustomerStore).as<IStore>();
|
||||
builder.registerType(ScheduleOverrideStore).as<IStore>();
|
||||
|
||||
// Entity services (for DataSeeder polymorphic array)
|
||||
builder.registerType(EventService).as<IEntityService<ICalendarEvent>>();
|
||||
|
|
@ -107,8 +123,13 @@ export function createV2Container(): Container {
|
|||
// Workers
|
||||
builder.registerType(DataSeeder).as<DataSeeder>();
|
||||
|
||||
// Schedule services
|
||||
builder.registerType(ScheduleOverrideService).as<ScheduleOverrideService>();
|
||||
builder.registerType(ResourceScheduleService).as<ResourceScheduleService>();
|
||||
|
||||
// Features
|
||||
builder.registerType(EventRenderer).as<EventRenderer>();
|
||||
builder.registerType(ScheduleRenderer).as<ScheduleRenderer>();
|
||||
|
||||
// Renderers - registreres som Renderer (array injection til CalendarOrchestrator)
|
||||
builder.registerType(DateRenderer).as<IRenderer>();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue