seqdiag {
=== show ===
browser -> client [label="open group info"]
client -> server [label="get last protocol for that group"]
server -> server [label="collect ids + info of metacategories in current protocol"]
client <- server [label="list of indexed metacategories"]
browser <- client [label="render list of metacategories in current protocol"]
=== edit ===
browser -> client [label="edit existing metacategory"]
client -> client [label="stack changes"]
browser <- client [label="activate submit button"]
browser -> client [label="add new metacategory"]
client -> client [label="add new line to list of metacategories"]
browser <- client [label="(if not) activate submit button"]
=== submit ===
browser -> client [label="submit new list of metacategories"];
client --> browser [label="set form as not editable and notify loading"];
client -> server [label="write new protocol"]
server -> server [label="generate new protocol id"]
server --> server [label="create new metacategories"]
server -> server [label="create new version of updated metacategories"]
client <- server [label="return new protocol id and list of indexed metacategories"]
browser <-- client [label="set form as editable but not submitable (no change)"]
}