1
0
mirror of https://github.com/ohwgiles/laminar.git synced 2026-11-02 08:34:44 +00:00

show active jobs on Jobs page

Rows on the jobs page now updated also during their execution. This
improvement was discussed in #8 and #9
This commit is contained in:
Oliver Giles
2017-11-07 08:21:01 +02:00
parent 022aa0d804
commit d3e4db1f29
3 changed files with 59 additions and 5 deletions

View File

@@ -246,11 +246,14 @@ void Laminar::sendStatus(LaminarClient* client) {
} else if(client->scope.type == MonitorScope::ALL) {
j.startArray("jobs");
db->stmt("SELECT name,number,startedAt,result FROM builds GROUP BY name ORDER BY number DESC")
.fetch<str,int,time_t,int>([&](str name,int number, time_t started, int result){
db->stmt("SELECT name,number,startedAt,completedAt,result FROM builds GROUP BY name ORDER BY number DESC")
.fetch<str,int,time_t,time_t,int>([&](str name,int number, time_t started, time_t completed, int result){
j.StartObject();
j.set("name", name);
j.set("number", number).set("result", to_string(RunState(result))).set("started", started);
j.set("number", number);
j.set("result", to_string(RunState(result)));
j.set("started", started);
j.set("completed", completed);
j.startArray("tags");
for(const str& t: jobTags[name]) {
j.String(t.c_str());
@@ -259,6 +262,21 @@ void Laminar::sendStatus(LaminarClient* client) {
j.EndObject();
});
j.EndArray();
j.startArray("running");
for(const std::shared_ptr<Run> run : activeJobs.get<3>()) {
j.StartObject();
j.set("name", run->name);
j.set("number", run->build);
j.set("node", run->node->name);
j.set("started", run->startedAt);
j.startArray("tags");
for(const str& t: jobTags[run->name]) {
j.String(t.c_str());
}
j.EndArray();
j.EndObject();
}
j.EndArray();
} else { // Home page
j.startArray("recent");
db->stmt("SELECT * FROM builds ORDER BY completedAt DESC LIMIT 15")