Created modular system for calculators, added soap and candles calculators, universal components, updated backend
47 lines
1.8 KiB
TypeScript
47 lines
1.8 KiB
TypeScript
// Система регистрации и управления калькуляторами
|
||
import { CalculatorConfig } from './calculator-types';
|
||
import { soapCalculatorConfig } from '@/calculators/soap/config';
|
||
import { candlesCalculatorConfig } from '@/calculators/candles/config';
|
||
|
||
// Реестр всех доступных калькуляторов
|
||
const calculators: Map<string, CalculatorConfig> = new Map();
|
||
|
||
// Регистрация калькуляторов
|
||
export function registerCalculator(config: CalculatorConfig): void {
|
||
if (calculators.has(config.id)) {
|
||
console.warn(`Калькулятор с ID "${config.id}" уже зарегистрирован. Перезаписываем.`);
|
||
}
|
||
calculators.set(config.id, config);
|
||
}
|
||
|
||
// Получить калькулятор по ID
|
||
export function getCalculator(id: string): CalculatorConfig | undefined {
|
||
return calculators.get(id);
|
||
}
|
||
|
||
// Получить список всех калькуляторов
|
||
export function getAllCalculators(): CalculatorConfig[] {
|
||
return Array.from(calculators.values());
|
||
}
|
||
|
||
// Получить список ID всех калькуляторов
|
||
export function getAllCalculatorIds(): string[] {
|
||
return Array.from(calculators.keys());
|
||
}
|
||
|
||
// Инициализация: регистрация всех калькуляторов
|
||
export function initializeCalculators(): void {
|
||
// Регистрируем калькулятор мыла
|
||
registerCalculator(soapCalculatorConfig);
|
||
|
||
// Регистрируем калькулятор свечей
|
||
registerCalculator(candlesCalculatorConfig);
|
||
|
||
// Здесь будут регистрироваться другие калькуляторы
|
||
// registerCalculator(otherCalculatorConfig);
|
||
}
|
||
|
||
// Автоматическая инициализация при импорте модуля
|
||
initializeCalculators();
|
||
|