Files
diffuser/diffuser.html
znetsixe 2c5704b5c0 feat(diffuser): resolve supplier curves via assetResolver + wire asset menu
_loadSpecs() now calls loadCurve(model) instead of returning a hardcoded
literal. Default model 'gva-elastox-r' keeps the legacy GVA numbers; the
editor cascade (supplier → type → model → unit) lets users pick Jäger,
Aerostrip, or PIK/PRK once those curve files land in generalFunctions.

Editor changes:
- diffuser.js serves /diffuser/menu.js + /diffuser/configData.js
- diffuser.html loads the shared MenuManager scripts, includes
  asset-fields-placeholder + logger-fields-placeholder, and runs the
  shared init/save lifecycle.
- Density field re-labelled "Bottom coverage [%]" — semantics were
  always meant to be % surface-area coverage; "elements per m²" was a
  prior mis-conversion. Default flipped 2.4 → 15 (typical fine-bubble).
- New defaults: model, unit, assetTagNumber.

specificClass:
- buildDomainConfig now forwards uiConfig.model/unit/assetTagNumber
  under config.asset.* so _loadSpecs can resolve it.
- _loadSpecs walks config.asset.model || config.model || DEFAULT, falls
  through to GVA on a missing curve file (with a clear error if neither
  resolves to a usable otr_curve + p_curve).

All 8 unit + structure tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:11:50 +02:00

5.1 KiB