Per-circuit cross-section recommendation as a separate module attached to the circuit list. It never writes project data itself: "Übernehmen" applies cable type, cross-section and length through the regular circuit.update command, so revisions and Undo/Redo stay intact. - Pure domain module (src/cable-sizing) with IEC 60364-5-52:2009 Annex B tables for PVC and XLPE, copper and aluminium, methods A1, A2, B1, B2, C, D1, D2 and E. Every value was cross-checked against public reproductions; where sources differ the lower value is used (docs/cable-sizing-module.md). - Temperature and grouping between table values round to the safer value; values outside the tables return no result instead of a factor of 1. Ground methods use B.52.18 (D2) and B.52.19 A (D1). - Overload protection: circuit-breakers In <= Iz; gG fuses additionally I2 <= 1.45 Iz with I2 = 1.6/1.9/2.1 In. - Inputs prefilled from the circuit: power, phase (group or device rows), project voltage, power-weighted cos phi, length and protective device. - Opened from a "Leitungsberechnung" button in the row actions, not from a grid cell, so cable cells keep the spreadsheet behavior. - Stateless API under /api/cable-sizing; no database table or migration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 lines
525 B
TypeScript
9 lines
525 B
TypeScript
import express from "express";
|
|
import * as cableSizingController from "../controllers/cable-sizing.controller.js";
|
|
|
|
// Stateless calculator endpoints; no project data is read or written here.
|
|
export const cableSizingRouter = express.Router();
|
|
|
|
cableSizingRouter.post("/calculate", cableSizingController.calculateCableSizingHandler);
|
|
cableSizingRouter.get("/laying-methods", cableSizingController.listLayingMethodsHandler);
|
|
cableSizingRouter.get("/insulation-materials", cableSizingController.listInsulationMaterialsHandler);
|