Let reviews be stopped, and fail stuck reviewers automatically
This commit is contained in:
Vendored
+15
-1
@@ -40,7 +40,21 @@ function stateText(r) {
|
||||
}
|
||||
}
|
||||
export function reviewCard(r, taskId) {
|
||||
return h("article", { class: `review ${r.state}` }, h("header", {}, h("span", { class: "review-snapshot" }, `snapshot #${r.snapshot_n}`), h("span", { class: `review-state ${r.state}` }, stateText(r)), h("time", { dateTime: r.created_at, title: r.created_at }, ago(r.created_at))), r.state === "failed" ? h("p", { class: "error-text" }, r.error) : null, r.state === "done" ? reviewResult(r, taskId) : null);
|
||||
return h("article", { class: `review ${r.state}` }, h("header", {}, h("span", { class: "review-snapshot" }, `snapshot #${r.snapshot_n}`), h("span", { class: `review-state ${r.state}` }, stateText(r)), h("time", { dateTime: r.created_at, title: r.created_at }, ago(r.created_at)), r.state === "running" ? stopButton(r) : null), r.state === "failed" ? h("p", { class: "error-text" }, r.error) : null, r.state === "done" ? reviewResult(r, taskId) : null);
|
||||
}
|
||||
function stopButton(r) {
|
||||
const b = h("button", { type: "button", class: "danger review-stop", title: "End the reviewer and record this review as failed" }, "Stop");
|
||||
b.onclick = async () => {
|
||||
b.disabled = true;
|
||||
try {
|
||||
await post("/api/reviews/{reviewId}/stop", { path: { reviewId: r.id } });
|
||||
}
|
||||
catch (err) {
|
||||
b.disabled = false;
|
||||
void showAlert(errorText(err));
|
||||
}
|
||||
};
|
||||
return b;
|
||||
}
|
||||
function reviewResult(r, taskId) {
|
||||
const res = (r.result ?? {});
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
@@ -664,6 +664,25 @@ export interface paths {
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/reviews/{reviewId}/stop": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
reviewId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
get?: never;
|
||||
put?: never;
|
||||
/** @description Ends a running review's reviewer and records the review as failed. Refused unless the review is running. */
|
||||
post: operations["stopReview"];
|
||||
delete?: never;
|
||||
options?: never;
|
||||
head?: never;
|
||||
patch?: never;
|
||||
trace?: never;
|
||||
};
|
||||
"/api/tasks/{taskId}/snapshots/{n}/fork": {
|
||||
parameters: {
|
||||
query?: never;
|
||||
@@ -2549,6 +2568,30 @@ export interface operations {
|
||||
404: components["responses"]["Error"];
|
||||
};
|
||||
};
|
||||
stopReview: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
header?: never;
|
||||
path: {
|
||||
reviewId: string;
|
||||
};
|
||||
cookie?: never;
|
||||
};
|
||||
requestBody?: never;
|
||||
responses: {
|
||||
/** @description The review. */
|
||||
200: {
|
||||
headers: {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"application/json": components["schemas"]["Review"];
|
||||
};
|
||||
};
|
||||
404: components["responses"]["Error"];
|
||||
409: components["responses"]["Error"];
|
||||
};
|
||||
};
|
||||
forkSnapshot: {
|
||||
parameters: {
|
||||
query?: never;
|
||||
|
||||
@@ -62,12 +62,27 @@ export function reviewCard(r: Review, taskId: string | undefined): HTMLElement {
|
||||
h("span", { class: "review-snapshot" }, `snapshot #${r.snapshot_n}`),
|
||||
h("span", { class: `review-state ${r.state}` }, stateText(r)),
|
||||
h("time", { dateTime: r.created_at, title: r.created_at }, ago(r.created_at)),
|
||||
r.state === "running" ? stopButton(r) : null,
|
||||
),
|
||||
r.state === "failed" ? h("p", { class: "error-text" }, r.error) : null,
|
||||
r.state === "done" ? reviewResult(r, taskId) : null,
|
||||
);
|
||||
}
|
||||
|
||||
function stopButton(r: Review): HTMLElement {
|
||||
const b = h("button", { type: "button", class: "danger review-stop", title: "End the reviewer and record this review as failed" }, "Stop");
|
||||
b.onclick = async () => {
|
||||
b.disabled = true;
|
||||
try {
|
||||
await post("/api/reviews/{reviewId}/stop", { path: { reviewId: r.id } });
|
||||
} catch (err) {
|
||||
b.disabled = false;
|
||||
void showAlert(errorText(err));
|
||||
}
|
||||
};
|
||||
return b;
|
||||
}
|
||||
|
||||
function reviewResult(r: Review, taskId: string | undefined): HTMLElement {
|
||||
const res = (r.result ?? {}) as Record<string, unknown>;
|
||||
const findings = findingsOf(r);
|
||||
|
||||
@@ -1904,6 +1904,10 @@ pre.file-text .line::before {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.review-stop {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.review-snapshot {
|
||||
font-weight: 700;
|
||||
color: var(--text);
|
||||
|
||||
Reference in New Issue
Block a user