From 127315189f8c6b1d0a5046010be5b9d99e2a674b Mon Sep 17 00:00:00 2001 From: Emma Segal-Grossman Date: Mon, 22 Apr 2024 16:44:59 -0400 Subject: [PATCH] Frontend QA: show currently sorted heuristic percentages in page list (#1720) Closes #1690 Swaps out the "+n" number for a percentage when sorting by percentage values --- .../features/qa/page-list/helpers/severity.ts | 14 ++++++++ .../features/qa/page-list/ui/page-details.ts | 4 +-- frontend/src/features/qa/page-list/ui/page.ts | 35 +++++++++++++------ 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/frontend/src/features/qa/page-list/helpers/severity.ts b/frontend/src/features/qa/page-list/helpers/severity.ts index 5dcf52d6..a0136932 100644 --- a/frontend/src/features/qa/page-list/helpers/severity.ts +++ b/frontend/src/features/qa/page-list/helpers/severity.ts @@ -1,3 +1,4 @@ +import { tw } from "@/utils/tailwind"; import { cached } from "@/utils/weakCache"; export type Severity = "severe" | "moderate" | "good" | null; @@ -22,3 +23,16 @@ export const severityFromResourceCounts = cached( return "good"; }, ); + +export const textColorFromSeverity = cached((severity: Severity) => { + switch (severity) { + case "good": + return tw`text-green-600`; + case "moderate": + return tw`text-yellow-600`; + case "severe": + return tw`text-red-600`; + default: + return ""; + } +}); diff --git a/frontend/src/features/qa/page-list/ui/page-details.ts b/frontend/src/features/qa/page-list/ui/page-details.ts index 4fbcc550..d080f398 100644 --- a/frontend/src/features/qa/page-list/ui/page-details.ts +++ b/frontend/src/features/qa/page-list/ui/page-details.ts @@ -11,11 +11,11 @@ import { import type { ArchivedItemQAPage } from "@/types/qa"; import { tw } from "@/utils/tailwind"; -export function formatPercentage(n: number) { +export function formatPercentage(n: number, fractionDigits = 2) { if (Number.isNaN(n)) { return "n/a"; } - return (n * 100).toFixed(2).replace(/[.,]00$/, ""); + return (n * 100).toFixed(fractionDigits).replace(/[.,]00$/, ""); } export const pageDetails = (page: ArchivedItemQAPage) => diff --git a/frontend/src/features/qa/page-list/ui/page.ts b/frontend/src/features/qa/page-list/ui/page.ts index 81adb9b3..7460419f 100644 --- a/frontend/src/features/qa/page-list/ui/page.ts +++ b/frontend/src/features/qa/page-list/ui/page.ts @@ -1,6 +1,7 @@ import { localized } from "@lit/localize"; import type { SlTooltip } from "@shoelace-style/shoelace"; -import { html, nothing, type PropertyValues } from "lit"; +import clsx from "clsx"; +import { html, type PropertyValues } from "lit"; import { customElement, property, query } from "lit/decorators.js"; import { @@ -8,11 +9,12 @@ import { issueCounts, maxSeverity, severityFromMatch, + textColorFromSeverity, } from "../helpers"; import { approvalFromPage } from "../helpers/approval"; import { animateTo, shimKeyframesHeightAuto } from "./animate"; -import { pageDetails } from "./page-details"; +import { formatPercentage, pageDetails } from "./page-details"; import { TailwindElement } from "@/classes/TailwindElement"; import { type ArchivedItemQAPage } from "@/types/qa"; @@ -142,15 +144,28 @@ export class QaPage extends TailwindElement { class="absolute -left-4 top-[50%] flex w-8 translate-y-[-50%] flex-col place-items-center gap-1 rounded-full border border-gray-300 bg-neutral-0 p-2 leading-[14px] shadow transition-transform hover:scale-110" > ${iconFor(statusIcon)} - ${severe > 0 - ? html`+${severe}${formatPercentage( + page.qa[this.statusField] ?? 0, + 0, + )}%` - : moderate > 0 - ? html`+${moderate}` - : nothing} + : html` 0 ? "severe" : "moderate"), + severe === 0 && moderate === 0 && "hidden", + )}" + >+${severe || moderate}`} ${page.notes?.[0] && html`