DoSoapCalc/frontend/lib/calculator-registry.ts
DosAi 02c7520c90 Refactor: Modular calculator architecture
Created modular system for calculators, added soap and candles calculators, universal components, updated backend
2025-11-02 15:45:07 +03:00

47 lines
1.8 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Система регистрации и управления калькуляторами
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();