diff --git a/site/src/components/WorkspaceSchedule/WorkspaceSchedule.tsx b/site/src/components/WorkspaceSchedule/WorkspaceSchedule.tsx index 8ea1cc01c67c9..335043fb1da74 100644 --- a/site/src/components/WorkspaceSchedule/WorkspaceSchedule.tsx +++ b/site/src/components/WorkspaceSchedule/WorkspaceSchedule.tsx @@ -4,8 +4,10 @@ import Typography from "@material-ui/core/Typography" import ScheduleIcon from "@material-ui/icons/Schedule" import cronstrue from "cronstrue" import dayjs from "dayjs" +import advancedFormat from "dayjs/plugin/advancedFormat" import duration from "dayjs/plugin/duration" import relativeTime from "dayjs/plugin/relativeTime" +import timezone from "dayjs/plugin/timezone" import utc from "dayjs/plugin/utc" import { FC } from "react" import { Link as RouterLink } from "react-router-dom" @@ -15,27 +17,32 @@ import { extractTimezone, stripTimezone } from "../../util/schedule" import { isWorkspaceOn } from "../../util/workspace" import { Stack } from "../Stack/Stack" +dayjs.extend(advancedFormat) dayjs.extend(utc) dayjs.extend(duration) dayjs.extend(relativeTime) +dayjs.extend(timezone) export const Language = { autoStartDisplay: (schedule: string | undefined): string => { if (schedule) { return cronstrue.toString(stripTimezone(schedule), { throwExceptionOnParseError: false }) + } else { + return "Manual" } - return "Manual" }, autoStartLabel: (schedule: string | undefined): string => { const prefix = "Start" + const timezone = schedule ? extractTimezone(schedule) : dayjs.tz.guess() if (schedule) { - return `${prefix} (${extractTimezone(schedule)})` + return `${prefix} (${dayjs().tz(timezone).format("z")})` } else { return prefix } }, autoStopDisplay: (workspace: Workspace): string => { + const schedule = workspace.autostart_schedule const deadline = dayjs(workspace.latest_build.deadline).utc() // a mannual shutdown has a deadline of '"0001-01-01T00:00:00Z"' // SEE: #1834 @@ -52,7 +59,8 @@ export const Language = { if (now.isAfter(deadline)) { return "Workspace is shutting down" } else { - return now.to(deadline) + const timezone = schedule ? extractTimezone(schedule) : dayjs.tz.guess() + return deadline.tz(timezone).format("HH:mm A") } } else if (!ttl || ttl < 1) { // If the workspace is not on, and the ttl is 0 or undefined, then the pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy