## ================================================================= ## ThoughtFrame: FSM Viewer (Velocity + Bootstrap + Mermaid) ## ================================================================= #set($fsm = $testbench.getFrameManager().getStateMachine("git/build")) #set($frame = $testbench.getFrameManager().loadFrame("AZkGa0J6boiDT-g06uIv")) $frame._state $frame.findValue("repositoryid") #set($fsmAnalysis = $testbench.getFrameManager().analyzeStateMachine($fsm))
flowchart LR
%% Build edges with labels (nodes are created implicitly)
#foreach($edge in $fsmAnalysis.edges)
#if($edge.to)
#if($edge.via)
$edge.from -- "$edge.via" --> $edge.to
#else
$edge.from --> $edge.to
#end
#else
#if($edge.via)
$edge.from -- "$edge.via" --> X((End))
#else
$edge.from --> X((End))
#end
#end
#end
%% Click bindings to descriptions
#foreach($stateName in $fsmAnalysis.states)
click $stateName "/$frame.get('framesource')/descriptions/$stateName.html" "Open description for $stateName"
#end
%% Highlight active state
#if($frame.get("state"))
style $frame.get("state") fill:#E8FAD7,stroke:#22c55e,stroke-width:2px,color:#065f46
#end
$fsmAnalysis.className$e.from → $e.to#if($e.via) ($e.via)#end#if($foreach.count < $fsmAnalysis.edges.size()), #end
#end