app/dashboard.tsx (122 lines of code) (raw):
import {
experimentColumns,
FxMSMessageInfo,
fxmsMessageColumns,
} from "./columns";
import { _isAboutWelcomeTemplate } from "../lib/messageUtils.ts";
import { _substituteLocalizations } from "../lib/experimentUtils.ts";
import { MessageTable } from "./message-table";
import { MenuButton } from "@/components/ui/menubutton.tsx";
import { InfoPopover } from "@/components/ui/infopopover.tsx";
import { Timeline } from "@/components/ui/timeline.tsx";
import { Platform } from "@/lib/types";
import { platformDictionary } from "@/lib/platformInfo.ts";
const hidden_message_impression_threshold =
process.env.HIDDEN_MESSAGE_IMPRESSION_THRESHOLD;
interface ReleasedTableProps {
platformDisplayName: string;
localData: FxMSMessageInfo[];
}
const ReleasedTable = async ({
platformDisplayName,
localData,
}: ReleasedTableProps) => {
return (
<div>
<h5
id="firefox"
data-testid="firefox"
className="scroll-m-20 text-xl font-semibold text-center pt-6 flex items-center justify-center gap-x-1"
>
{platformDisplayName} Messages Released on Firefox
<InfoPopover
content="All messages listed in this table are in the release channel and are either currently live or have been live on Firefox at one time."
iconStyle="h-7 w-7 p-1 rounded-full cursor-pointer border-0 bg-slate-100 hover:bg-slate-200"
/>
</h5>
<div className="sticky top-24 z-10 bg-background py-2 flex justify-center">
<Timeline active="firefox" />
</div>
<div className="container mx-auto py-10">
<MessageTable
columns={fxmsMessageColumns}
data={localData}
canHideMessages={true}
impressionsThreshold={hidden_message_impression_threshold}
/>
</div>
</div>
);
};
interface DashboardProps {
platform?: Platform;
localData?: FxMSMessageInfo[];
experimentAndBranchInfo: any[];
totalExperiments: number;
msgRolloutInfo: any[];
totalRolloutExperiments: number;
}
export const Dashboard = async ({
platform = "firefox-desktop",
localData,
experimentAndBranchInfo,
totalExperiments,
msgRolloutInfo,
totalRolloutExperiments,
}: DashboardProps) => {
const platformDisplayName = platformDictionary[platform].displayName;
return (
<div role="main" data-testid="dashboard">
<div className="sticky top-0 z-50 bg-background flex justify-between px-20 py-8">
<h4 className="scroll-m-20 text-3xl font-semibold">Skylight</h4>
<MenuButton isComplete={false} />
</div>
{localData ? (
<ReleasedTable
platformDisplayName={platformDisplayName}
localData={localData}
/>
) : null}
<h5 className="scroll-m-20 text-xl font-semibold text-center pt-4">
Current {platformDisplayName} Message Rollouts
</h5>
<h5
id="live_rollouts"
data-testid="live_rollouts"
className="scroll-m-20 text-sm text-center"
>
Total: {totalRolloutExperiments}
</h5>
<div className="sticky top-24 z-10 bg-background py-2 flex justify-center">
<Timeline active="rollout" />
</div>
<div className="container mx-auto py-10">
<MessageTable
columns={experimentColumns}
data={msgRolloutInfo}
defaultExpanded={true}
/>
</div>
<h5 className="scroll-m-20 text-xl font-semibold text-center pt-4">
Current {platformDisplayName} Message Experiments
</h5>
<h5
id="live_experiments"
data-testid="live_experiments"
className="scroll-m-20 text-sm text-center"
>
Total: {totalExperiments}
</h5>
<div className="sticky top-24 z-10 bg-background py-2 flex justify-center">
<Timeline active="experiment" />
</div>
<div className="space-y-5 container mx-auto py-10">
<MessageTable
columns={experimentColumns}
data={experimentAndBranchInfo}
defaultExpanded={true}
/>
</div>
</div>
);
};