<%- include('../partials/header') %><div class="row g-4"><div class="col-xl-8"><div class="card panel-card"><div class="card-header"><div><h5><%= model.name %></h5><small><%= model.capa_no||'Standalone' %></small></div></div><div class="card-body"><h6>States</h6><div class="d-flex flex-wrap gap-2 mb-4"><% states.forEach(s=>{ %><span class="badge text-bg-light p-2"><%= s.code %> · <%= s.name %></span><% }) %></div><h6>Transition Matrix</h6><div class="table-responsive"><table class="table matrix-table"><thead><tr><th>From \ To</th><% states.forEach(s=>{ %><th><%= s.code %></th><% }) %></tr></thead><tbody><% states.forEach(f=>{ %><tr><th><%= f.code %></th><% states.forEach(t=>{const x=trans.find(z=>z.from_state_id===f.id&&z.to_state_id===t.id); %><td><%= x?(Number(x.probability)*100).toFixed(1)+'%':'—' %></td><% }) %></tr><% }) %></tbody></table></div></div></div></div><div class="col-xl-4"><div class="card panel-card"><div class="card-header"><h5>Add Transition</h5></div><div class="card-body"><form method="post" action="/markov/<%= model.id %>/transition"><select class="form-select mb-2" name="from_state_id"><% states.forEach(s=>{ %><option value="<%= s.id %>"><%= s.code %></option><% }) %></select><select class="form-select mb-2" name="to_state_id"><% states.forEach(s=>{ %><option value="<%= s.id %>"><%= s.code %></option><% }) %></select><input class="form-control mb-2" type="number" step="0.0001" min="0" max="1" name="probability" placeholder="0 to 1" required><button class="btn btn-primary w-100">Save transition</button></form><hr><form method="post" action="/markov/<%= model.id %>/state"><input class="form-control mb-2" name="code" placeholder="Code" required><input class="form-control mb-2" name="name" placeholder="State name" required><input class="form-control mb-2" type="number" name="sort_order" placeholder="Order"><button class="btn btn-outline-primary w-100">Add state</button></form></div></div></div></div><%- include('../partials/footer') %>
