Warning: session_start(): open(/var/lib/php/sessions/sess_tu73r2vkv2ihbcqtpfmtb9108t, 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
sclass Entry {
//S originalRule, replacements, modifiedRule;
S rule;
S judgement = "";
S ruleID;
S struct;
sS _fieldOrder = "rule judgement ruleID";
}
module TestRuleEngine2 > DynObjectTable {
S input;
start {
set fieldsInOrder;
hideFields = litset('struct);
}
visualize {
ret northCenterAndSouthWithMargins(
dm_textFieldAndSubmit_q('input, 'calc),
super.visualize(),
rightAlignedButtons(
tableDependentButton(table(), "Mark good", rMark('good)),
tableDependentButton(table(), "Mark bad", rMark('bad))
}));
}
Runnable rMark(fS judgement) {
ret rThread {
Entry e = selected();
e.judgement = judgement;
saveEntry(e);
};
}
void calc {
S input = this.input;
new RuleEngine2 engine;
engine.addRules2(dm_allRulesFromRulesModuleWithCommentsAndIDs());
L l = ai_ruleEngine2_rulesForInput_3(engine, input);
l = sortByMethodDesc qualitySum(l);
setList(map(l, func(RuleEngine2_MatchedRule r) -> Entry {
S modifiedRule = r.applyMapping().asText();
ret nu(Entry,
rule := modifiedRule,
ruleID := r.rule.globalID,
struct := struct(r));
}));
}
void saveEntry(Entry e) {
dm_requireAndCall("#1021413/AppliedRules", 'uniqConcept,
litobjarray(
modifiedRule := e.rule,
judgement := e.judgement,
matchedRuleStruct := e.struct));
}
}