Warning: session_start(): open(/var/lib/php/sessions/sess_0ge3t124foh5257o4peabpbbc6, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
concept Scenario {
S name;
LS conditions;
LS actions;
}
cmodule Scenarios > DynCRUD {
transient Scenario selected;
new L undoList;
abstract class Undo { abstract S undo(); }
class UndoCreateConcept > Undo {
long conceptID;
S undo() {
Concept c = getConcept(conceptID);
deleteConcept(conceptID);
ret "Deleted " + c + " again";
}
}
class UndoDeleteConcept > Undo {
Concept concept;
S undo() {
registerConcept(concept);
ret "Restored " + c;
}
}
class UndoSetConceptField > Undo {
long conceptID;
S field;
O value;
S undo() {
Concept c = getConcept(conceptID);
S result = "Reset " + field + " of " + c + " to " + value;
cset(c, field, value);
ret result;
}
}
S answer(S s) {
ret dm_q(() -> {
print("answering: " + s);
new Matches m;
if "how many scenarios"
ret str(countConcepts(Scenario));
if "delete scenario *" {
S name = $1;
setField(selected := null);
if (nempty(deleteConceptsWhereCI Scenario(+name)))
ret format("Scenario * deleted", name);
else
ret format("Scenario * not found", name);
}
if "new scenario *" {
S name = $1;
Scenario sc = conceptWhereCI Scenario(+name);
if (sc != null)
ret format("Scenario * exists", name);
setField(selected := uniqCI Scenario(+name));
ret format("Scenario * created", name);
}
if "list scenarios"
ret or2(joinWithComma(collect name(list(Scenario))), "No scenarios defined");
if "rename scenario * to *" {
S name1 = $1, name2 = $2;
if (!eqic(name1, name2)
&& conceptWhereCI Scenario(name := name2) != null)
ret format("A scenario named * exists", name2);
Scenario sc = conceptWhereCI Scenario(name := name1);
if (sc == null)
ret format("Scenario * not found", name1);
cset(sc, name := name2);
ret format("Scenario * renamed to *", name1, name2);
}
});
}
afterVisualize {
addComponent(crud.buttons, jbutton("Talk to me", rThread talkToMe));
}
void talkToMe enter { dm_showConversationPopupForModule(); }
}