diff --git a/components/graph-update-view.jsx b/components/graph-update-view.jsx index 78f9bcd..23a0109 100644 --- a/components/graph-update-view.jsx +++ b/components/graph-update-view.jsx @@ -23,12 +23,17 @@ export default function GraphUpdateView({ updateResult }) { affectedNodeIds, previousActiveUnknownNodeId, newActiveUnknownNodeId, + selectedQuestion, changesApplied, proposal, previousSituationGraph, updatedSituationGraph, } = updateResult; + const newlySurfacedUnknownNodeIds = (proposal.addedNodes || []) + .filter((node) => node.kind === "unknown") + .map((node) => node.id); + const previousNodesById = new Map( (previousSituationGraph?.nodes || []).map((node) => [node.id, node]), ); @@ -123,10 +128,15 @@ export default function GraphUpdateView({ updateResult }) { {resolveActiveUnknown(newActiveUnknownNodeId)} )} - {!newActiveUnknownNodeId && previousActiveUnknownNodeId && ( + {selectedQuestion?.question && (
- Next question status: No next - question selected yet. + Next question:{" "} + {selectedQuestion.question} +
+ )} + {!selectedQuestion?.question && !newActiveUnknownNodeId && previousActiveUnknownNodeId && ( +
+ Next question status: No next question selected yet.
)} @@ -137,6 +147,11 @@ export default function GraphUpdateView({ updateResult }) { items={resolvedUnknownNodeIds} renderItem={resolveNodePresentation} /> + )} @@ -192,7 +200,12 @@ export default function ScenarioForm() { setResult((current) => ({ ...current, situationGraph: outcome.updatedSituationGraph, - selectedQuestion: null, + selectedQuestion: normaliseUpdateSelectedQuestion( + outcome.selectedQuestion, + ), + newlySurfacedNodeIds: (outcome.proposal?.addedNodes || []) + .filter((node) => node.kind === "unknown") + .map((node) => node.id), diagnostics: outcome.diagnostics, })); setAnswer(""); @@ -208,9 +221,14 @@ export default function ScenarioForm() { const canRenderAnswerForm = status === "success" && + updateStatus === "idle" && Boolean(result?.situationGraph) && Boolean(result?.selectedQuestion); + const canRenderDisabledFollowUpForm = + updateStatus === "success" && + Boolean(updateResult?.selectedQuestion?.question || result?.selectedQuestion); + return (
@@ -277,8 +295,44 @@ export default function ScenarioForm() { {updateStatus === "success" && updateResult && ( <>
- No next question selected yet. + {updateResult.selectedQuestion?.question + ? updateResult.selectedQuestion.question + : "No next question selected yet."}
+ {canRenderDisabledFollowUpForm && ( + +
+

Selected Question

+

+ {updateResult.selectedQuestion?.question || result?.selectedQuestion} +

+
+
+ +