Skip to content

Commit e4f58b6

Browse files
committed
feat: use general _scores object
1 parent 22d707e commit e4f58b6

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ app.get("/projects/:id/optimisation", function(req, res, next) {
450450
// Project page (experiments)
451451
app.get("/projects/:id/experiments", function(req, res, next) {
452452
var projP = db.projects.findByIdAsync(req.params.id);
453-
var expP = db.experiments.find({_project_id: db.toObjectID(req.params.id)}, {"_val.score": 1, "_test.score": 1, _status: 1, _options: 1, _started: 1, _finished: 1}).toArrayAsync(); // Sort experiment scores for this project
453+
var expP = db.experiments.find({_project_id: db.toObjectID(req.params.id)}, {_scores: 1, _status: 1, _options: 1, _started: 1, _finished: 1}).toArrayAsync();
454454
Promise.all([projP, expP])
455455
.then(function(results) {
456456
res.render("experiments", {project: results[0], experiments: results[1]});

views/experiment.jade

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,18 @@ block content
2626
dd#experiment-finished.col-sm-9
2727
dt.col-sm-3 Options
2828
dd.col-sm-9= JSON.stringify(experiment._options)
29+
if experiment._scores
30+
each val, prop in experiment._scores
31+
dt.col-sm-3 #{prop}
32+
dd.col-sm-9 #{val}
2933
- if (experiment._files.length > 0)
3034
dt.col-sm-3 Files
3135
dd.col-sm-9
3236
ul.list-unstyled(style="margin-bottom: 0;")
3337
- each file in experiment._files
3438
li #[a(href="/files/#{file._id}") #{file.filename}]
3539
if experiment._val
36-
dt.col-sm-3 Val Score
37-
dd.col-sm-9 #{experiment._val.score}
40+
3841
if experiment._test
3942
dt.col-sm-3 Test Loss
4043
dd.col-sm-9 #{experiment._test.loss}

views/experiments.jade

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ block scripts
1515
script(src="/bower_components/bootstrap/dist/js/bootstrap.min.js")
1616
script(src="/bower_components/bootstrap-table/dist/bootstrap-table.min.js")
1717
script(src="/bower_components/bootstrap-table/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js")
18+
script(src="/bower_components/lodash/lodash.min.js")
1819
script(src="/bower_components/moment/min/moment.min.js")
1920
script.
2021
// Flattens JSON objects
@@ -65,9 +66,20 @@ block scripts
6566
}
6667
return "<span class='" + iconClass + "'></span>";
6768
}},
68-
{field: "_val.score", title: "Val Score", sortable: "true"},
69-
{field: "_test.score", title: "Test Score", sortable: "true"}
7069
];
70+
// Loop over scores
71+
var scoreLength = 0;
72+
var scoreProps = {};
73+
// TODO Remove "maximum props" assumption and add props as found
74+
for (var i = 0; i < experiments.length; i++) {
75+
if (experiments[i]._scores && _.keys(experiments[i]._scores).length > scoreLength) {
76+
scoreLength = _.keys(experiments[i]._scores).length;
77+
scoreProps = experiments[i]._scores;
78+
}
79+
}
80+
for (var prop in scoreProps) {
81+
columns.push({field: "_scores." + prop, title: prop, sortable: true});
82+
}
7183
// Utilises 2 functions to solve loop scope problem
7284
for (var key in schema) {
7385
columns.push({field: "_options." + key, title: key, sortable: true, formatter: function(k) {return function(val) {
@@ -79,8 +91,9 @@ block scripts
7991
return "<span class='" + textClass + "'>" + val + "</span>";
8092
}}(key)});
8193
}
82-
columns.push({field: "_started", title: "Started", sortable: "true", formatter: function(val) {return moment().format(val);}});
83-
columns.push({field: "_finished", title: "Finished", sortable: "true", formatter: function(val) {return moment().format(val);}});
94+
columns.push({field: "_started", title: "Started", sortable: "true", formatter: function(val) {return val ? moment().format(val) : "";}});
95+
columns.push({field: "_finished", title: "Finished", sortable: "true", formatter: function(val) {return val ? moment().format(val) : "";}});
96+
// TODO Loop over custom properties
8497

8598
// Flatten each experiment
8699
for (var i = 0; i < experiments.length; i++) {
@@ -93,7 +106,7 @@ block scripts
93106
classes: "table",
94107
undefinedText: "",
95108
striped: true,
96-
sortName: "_test.score",
109+
sortName: "_started",
97110
sortOrder: "desc",
98111
iconsPrefix: "octicon",
99112
search: true,

0 commit comments

Comments
 (0)