Warning: session_start(): open(/var/lib/php/sessions/sess_cdi4hva930u7nldsiqnjacacr9, 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
srecord noeq Entry(
O candidate,
double score,
S comment,
Map individualScores) {}
cmodule ScoreMatrix > DynObjectTable {
transient JTable tblDetails;
start {
itemToMap = func(Entry e) -> Map {
litorderedmap(
"Candidate" := e.candidate,
"Score" := formatDouble(e.score, 2),
"Comment" := nullIfEmpty(e.comment),
"Tests performed" := nullIfZero(l(e.individualScores)))
};
}
O comparator() { ret func(Entry a, Entry b) { cmp(b.score, a.score) }; }
void add(Entry a) { syncAddToSortedList(comparator(), data, a); fireDataChanged(); }
void setData(Cl l) { super.setData(sorted(l, comparator()); }
visualize {
JComponent sup = super.visualize();
onTableSelectionChanged(table, r { showDetails(selected()) });
ret jvsplit(sup, jCenteredSection("Details",
jscroll(tblDetails = sexyTable())));
}
void showDetails(Entry e) enter {
if (e == null) clearTable(tblDetails);
else dataToTable(tblDetails, map(
e.individualScores, (test, score) -> litorderedmap("Test" := strOrNull(test), "Score" := score)));
}
// API
Entry newEntry(
O candidate,
double score,
S comment,
Map individualScores) {
ret Entry(candidate, score, comment, individualScores);
}
Entry newEntry(
O candidate,
double score,
Map individualScores) {
ret Entry(candidate, score, null, individualScores);
}
}