Moves chart data to JSON file for better separation of concerns Implements lazy chart initialization in reports module Updates build script and npm dependencies Removes hardcoded chart scripts from Razor page
79 lines
2.3 KiB
TypeScript
79 lines
2.3 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 { 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 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.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;
|