Skip to content

Commit

Permalink
fix: job display not refresh
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelncui committed Oct 11, 2023
1 parent 030a6d9 commit 7a2fb83
Showing 1 changed file with 35 additions and 32 deletions.
67 changes: 35 additions & 32 deletions frontend/src/pages/jobs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,29 +58,43 @@ export const JobsBrowser = () => {

const refresh = useCallback(
async (refresh?: boolean) => {
var results = Array.from(jobs || []);
const req: JobListRequest = refresh
? { param: { oneofKind: "list", list: {} } }
: { param: { oneofKind: "recentlyUpdate", recentlyUpdate: { updateSinceNs: latestUpdateTimeNs } } };

const reply = await cli.jobList(req).response;
if (reply.jobs.length === 0) {
if (refresh) {
setJobs([]);
const results = await (async () => {
const req: JobListRequest = refresh
? { param: { oneofKind: "list", list: {} } }
: { param: { oneofKind: "recentlyUpdate", recentlyUpdate: { updateSinceNs: latestUpdateTimeNs } } };

const reply = await cli.jobList(req).response;
if (reply.jobs.length === 0) {
if (refresh) {
return [];
}
return Array.from(jobs || []);
}
return;
}

for (const job of reply.jobs) {
const foundIdx = results.findIndex((target) => target.id === job.id);
if (foundIdx >= 0) {
results[foundIdx] = job;
continue;
const latest = reply.jobs.reduce((latest, job) => {
if (!job || !job.updateTimeNs) {
return latest;
}
if (job.updateTimeNs > latest) {
return job.updateTimeNs;
}
return latest;
}, 0n);
console.log("refresh jobs list, set latest update, latest=", latest);
setLatestUpdateTimeNs(latest);

const results = Array.from(jobs || []);
for (const job of reply.jobs) {
const foundIdx = results.findIndex((target) => target.id === job.id);
if (foundIdx >= 0) {
results[foundIdx] = job;
continue;
}

results.push(job);
}

results.push(job);
}
results = results.filter((job) => job && job.status < JOB_STATUS_VISIBLE).sort((a, b) => Number(b.createTimeNs - a.createTimeNs));
return results.filter((job) => job && job.status < JOB_STATUS_VISIBLE).sort((a, b) => Number(b.createTimeNs - a.createTimeNs));
})();

const displays = new Map<BigInt, JobDisplay>();
for (const reply of await Promise.all(
Expand All @@ -96,18 +110,7 @@ export const JobsBrowser = () => {
}

const targets = results.map((job) => ({ ...job, ...displays.get(job.id) }));
const latest = reply.jobs.reduce((latest, job) => {
if (!job || !job.updateTimeNs) {
return latest;
}
if (job.updateTimeNs > latest) {
return job.updateTimeNs;
}
return latest;
}, 0n);
console.log("refresh jobs list, targets=", targets, "latest=", latest);

setLatestUpdateTimeNs(latest);
console.log("refresh jobs list, set jobs, jobs=", targets);
setJobs(targets);
},
[jobs, setJobs, latestUpdateTimeNs, setLatestUpdateTimeNs],
Expand Down

0 comments on commit 7a2fb83

Please sign in to comment.