PlanTempusApp/PlanTempus.Application/wwwroot/ts/app.ts
Janus C. H. Knudsen dc2bab5702 Adds suppliers feature to application
Introduces comprehensive suppliers management with mock data, localization, and UI components

Implements:
- Suppliers page with data table
- Localization for Danish and English
- Search and filtering functionality
- Responsive table design
- Mock data for initial population
2026-01-24 00:13:05 +01:00

82 lines
2.4 KiB
TypeScript

/**
* Salon OS App
*
* Main application class that orchestrates all UI controllers
*/
import { SidebarController } from './modules/sidebar';
import { DrawerController } from './modules/drawers';
import { ThemeController } from './modules/theme';
import { SearchController } from './modules/search';
import { LockScreenController } from './modules/lockscreen';
import { CashController } from './modules/cash';
import { EmployeesController } from './modules/employees';
import { ControlsController } from './modules/controls';
import { ServicesController } from './modules/services';
import { CustomersController } from './modules/customers';
import { SuppliersController } from './modules/suppliers';
import { TrackingController } from './modules/tracking';
import { ReportsController } from './modules/reports';
/**
* Main application class
*/
export class App {
readonly sidebar: SidebarController;
readonly drawers: DrawerController;
readonly theme: ThemeController;
readonly search: SearchController;
readonly lockScreen: LockScreenController;
readonly cash: CashController;
readonly employees: EmployeesController;
readonly controls: ControlsController;
readonly services: ServicesController;
readonly customers: CustomersController;
readonly suppliers: SuppliersController;
readonly tracking: TrackingController;
readonly reports: ReportsController;
constructor() {
// Initialize controllers
this.sidebar = new SidebarController();
this.drawers = new DrawerController();
this.theme = new ThemeController();
this.search = new SearchController();
this.lockScreen = new LockScreenController(this.drawers);
this.cash = new CashController();
this.employees = new EmployeesController();
this.controls = new ControlsController();
this.services = new ServicesController();
this.customers = new CustomersController();
this.suppliers = new SuppliersController();
this.tracking = new TrackingController();
this.reports = new ReportsController();
}
}
/**
* Global app instance
*/
let app: App;
/**
* Initialize the application
*/
function init(): void {
app = new App();
// Expose app to window for debugging
if (typeof window !== 'undefined') {
(window as unknown as { app: App }).app = app;
}
}
// Wait for DOM ready
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
export { app };
export default App;