feat: workspace view for schedules (#991)

Summary:

This adds the client-side implementation to match the types introduced
in #879 and #844 as well as a card in the Workspaces page to present
workspace the data.

Details:

* Added a convenient line break in the example schedule.Weekly
* Added missing `json:""` annotations in codersdk/workspaces.go
* Installed cronstrue for displaying human-friendly cron strings
* Adjusted/Added client-side types to match codersdk/workspaces.go
* Added new component WorkspaceSchedule.tsx

Next Steps:

The WorkspaceSchedule.tsx card only presents data (on purpose). In order
to make it PUT/modify data, a few changes will be made:

- a form for updating workspace schedule will be created
- the form will wrapped in a dialog or modal
- the WorkspaceSchedule card will have a way of opening the modal which
will likely be generalized up to WorkspaceSection.tsx

Impact:

This is user-facing

This does not fully resolve either #274 or #275 (I may further decompose
that work to reflect reality and keep things in small deliverable
increments), but adds significant progress towards both.
This commit is contained in:
G r e y
2022-04-13 20:35:47 -04:00
committed by GitHub
parent 027d89dd9b
commit 42e9956779
13 changed files with 235 additions and 3 deletions

View File

@ -7,6 +7,7 @@ import React from "react"
import { Link } from "react-router-dom"
import * as Types from "../../api/types"
import * as Constants from "./constants"
import { WorkspaceSchedule } from "./WorkspaceSchedule"
import { WorkspaceSection } from "./WorkspaceSection"
export interface WorkspaceProps {
@ -30,6 +31,7 @@ export const Workspace: React.FC<WorkspaceProps> = ({ organization, template, wo
<WorkspaceSection title="Applications">
<Placeholder />
</WorkspaceSection>
<WorkspaceSchedule autostart={workspace.autostart_schedule} autostop={workspace.autostop_schedule} />
<WorkspaceSection title="Dev URLs">
<Placeholder />
</WorkspaceSection>