opslaanNodeResultaten method

Future<void> opslaanNodeResultaten(
  1. String nodeId,
  2. Invoer invoer,
  3. Resultaten resultaten
)

Sla invoer + resultaten op voor nodeId. Nakomelingen worden ongeldig verklaard (hun upstream-Z is veranderd).

Implementation

Future<void> opslaanNodeResultaten(
  String nodeId,
  Invoer invoer,
  Resultaten resultaten,
) async {
  final idx = _nodeIdx(nodeId);
  if (idx < 0) return;
  final updated = List<LeidingNode>.from(_boom!.nodes);
  // Sla invoer op ZONDER auto-berekende upstream-Z (die wordt herberekend).
  updated[idx] = updated[idx].copyWith(
    invoer: invoer.copyWith(
      clearZUpstream: true,
      bronimpedantieActief: false,
    ),
    resultaten: resultaten,
  );
  // Nakomelingen ongeldig maken.
  for (final dId in _alleNakomelingsIds(nodeId)) {
    final dIdx = updated.indexWhere((n) => n.id == dId);
    if (dIdx >= 0) {
      updated[dIdx] = updated[dIdx].copyWith(clearResultaten: true);
    }
  }
  _boom = _boom!.copyWith(nodes: updated);
  notifyListeners();
  await _slaOp();
}