45 Commits
Author SHA1 Message Date
Presley Pizzo 73f145e45f fix: error messages from workspaceScheduleXService (#3255)
* Update color palette

* Edit dialog error colors

* Format

* Lighten links

* Lighten link just in ErrorSummary

* Format

* Fix errors in schedule xservice

* Add error summary to form for generic message

* Format

* Extend getFormHelpers to remap field name

* Add mock error and use in storybook

* Format
2022-07-28 13:18:51 -04:00
Abhineet Jain 0128ca6bd1 fix: manage backend authXService errors (#3190) 2022-07-26 15:39:45 -04:00
Bruno Quaresma ca93614c3f refactor: Make workspace status more visible (#3130) 2022-07-22 19:18:52 +00:00
Kira Pilot 471564df7d feat: improve update button visibility (#3115)
* feat: give update button primary focus when applicable

resolves #3024

* added update tooltip

* cleanup

* prettier

* PR feedback
2022-07-22 14:28:52 -04:00
Bruno Quaresma c8d04aff6b feat: Add status badge to the favicon (#2978) 2022-07-14 14:45:03 +00:00
Abhineet Jain b692b7ea14 fix: remove system user highlighting (#2973) 2022-07-13 11:48:26 -07:00
Abhineet Jain b0bab3e432 feat: show last build initiator for workspaces (#2921) 2022-07-12 10:14:36 -07:00
Bruno Quaresma 2d0ea00ffd refactor: Move schedule to the header (#2775) 2022-07-01 18:26:27 +00:00
Abhineet Jain 0d25e1752f feat: Add filter on Users page (#2653)
This commit adds a new filter feature to the Users page.

- adds a filter to the getUsers API call and users state machine.
- adds filter UI to Users page view.
- addresses error handling in the filter component, users page and machine.
- refactors user table code.
- refactors common code for workspace filter.
- adds and updates unit tests and stories.
2022-06-28 19:12:15 -04:00
Abhineet Jain 82938944e7 refactor: update Prettier printWidth to 100 (#2684) 2022-06-27 10:53:44 -04:00
Abhineet Jain 8a853a64a5 Show build initiator on Workspace Build page (#2446)
* show build initiator in ui

* update autostop story
2022-06-20 10:38:57 -04:00
Steven MasleyandGarrett dc1de58857 feat: workspace filter query supported in backend (#2232)
* feat: add support for template in workspace filter
* feat: Implement workspace search filter to support names
* Use new query param parser for pagination fields
* Remove excessive calls, use filters on a single query

Co-authored-by: Garrett <garrett@coder.com>
2022-06-14 08:46:33 -05:00
Kira Pilot 518495a6c5 feat: show deleted workspace after delete action (#2208)
* added deleted workspace banner

* x state pass

* added include_deleted param

* clean up x state

* added teests

* cleaning up unneeded xstate service
2022-06-09 11:43:49 -04:00
G r e y b390250e2e fix: increase default extension time (#2172)
This does not fully close #2141, but builds upon #2171 to fulfill each
of the UX requests.

A next step (probably as a separate ticket) is to allow customizing
extension time pre-emptively.
2022-06-08 12:00:09 -04:00
Garrett Delfosse 7258d6acc8 fix: Show correct 'no results' message on workspace filters (#2103) 2022-06-07 13:54:59 -05:00
Bruno Quaresma 3616c629c7 refactor: Update status for build logs (#2087) 2022-06-07 08:24:27 -05:00
Garrett Delfosse 3be3bc261e fix: handle owner but no name syntax (#2045) 2022-06-06 10:38:38 -04:00
Kyle Carberry 0ac37b146d feat: Add page titles (#2070) 2022-06-06 08:34:10 -05:00
8b03e2b0e1 feat: Workspaces filtering (#1972)
Co-authored-by: G r e y <grey@coder.com>
Co-authored-by: Kira Pilot <kira@coder.com>
2022-06-03 17:20:28 +00:00
G r e y 37aff0c8a9 fix: FE parsing of schedule with day strings (#2006)
Resolves: #1901

Summary:

We had a homegrown parser that only understood numbers, not strings like
MON or TUES. We replace the homegrown parser with cron-parser.

Details:

This was nearly a straight drop-in.

Impact:

Much less code/maintenance burden :D

What I learned:

Don't trust the README, sometimes you just gotta read the code or import
it and try it out. The `fields` representation of the parsed expression
was missing from their docs. I might open an issue or PR to update them!
2022-06-03 11:08:57 -04:00
G r e y 0b59ed30d0 feat: ui autostop extension (#1987)
Resolves: #1460

Summary:

An 'Extend' CTA on workspace schedule banner is added so that a user can
extend their workspace lease from the UI.

Details:

* feat: putWorkspaceExtension handler

* refactor: TypesGen dflt import in workspace.ts

* feat: defaultWorkspaceExtension util

Impact:

This completes the UI<-->CLI parity epic in an MVP way. Of course, a
future improvement to make is extending by times other than the default
90 minutes.
2022-06-02 15:44:11 -04:00
Oxylibrium 1a07d021fe ux: change colors for inflight workspace actions (#1986) 2022-06-02 12:52:20 -04:00
G r e y 56ec53d04b fix: derive running ws stop time from deadline (#1920)
* refactor: isWorkspaceOn utility

Summary:

A utility is function is added that answers the question if a workspace
is on.

Impact:

This is a shared piece of logic in workspace scheduling presentations.
In particular it unblocks work in 1779, or at least allows an
implementation that shares details with the WorkspaceScheduleBanner.

Notes:

We could possibly instead return whether the workspace is "ON",
"UNKNOWN", or "OFF". Maybe a future improvement for that could be made
as the neds arrises.

* fix: derive running ws stop time from deadline

Summary:

When a workspace is on, the remaining time until shutdown needs to be
derived from the deadline timestamp, not implied from the TTL
2022-05-31 15:50:03 -04:00
Oxylibrium 14cdd85b66 fix(site): username validation in forms (#1851)
* refactor(site): move name validation to utils
* fix(site): username validation in forms
2022-05-27 17:02:56 +00:00
G r e y 7c59ec4a2b feat: edit workspace schedule page (#1701)
Resolves: #1455 
Resolves: #1456

Summary:

Adds a page (accessible from Workspace Schedule section on a workspace) to edit a schedule.

Impact:

General parity with CLI for autostart/autostop: that is you can update your schedule from the UI
2022-05-26 12:11:30 -04:00
Presley Pizzo 841d9f277c feat: UI for canceling workspace builds (#1735)
* Start hooking up cancel

* Update xservice

* Render cancel

Changes behavior of other buttons too

* Make outdated workspace story show max buttons

* Remove retry code

* Remove loading button state

* Fix type, extend tests

* Update story
2022-05-25 17:58:00 -04:00
G r e y 4f75291446 feat: form for editing ws schedule (#1634)
* feat: ui for editing ws schedule

Summary:

This presents a form component and storybook. The UI will be a routed
page and added into the dashboard in a separate PR. It is likely a
XService will be used at the page level to supply errors and actions to
this form.

Impact of Change:

Further progress on #1455

Squashed Commits:

* refactor: add className prop to Stack

combine classes with internal classes and an optional external className
to better control the Stack.

* fix: getFormHelpers helperText

the helperText logic was incorrect, the helperText would only show if not touched.
2022-05-20 20:26:43 +00:00
Presley Pizzo e40c68399d feat: resources card (#1627)
* Set up table

* Format

* Hook up api and test - bug assigning resources

* Remove debugging code

* Format

* Remove unnecessary cards

* Fix test

* Fix assignment

* Fix tests

* Lint
2022-05-20 18:29:42 +00:00
Bruno Quaresma ce7bf0b847 feat: Redesign the workspace page (#1620) 2022-05-20 17:05:00 +00:00
Bruno Quaresma 0b1a35f7b8 feat: Add workspace build logs page (#1598) 2022-05-19 15:34:42 -05:00
Bruno Quaresma b7481489b1 feat: Add timeline in the workspace page (#1533) 2022-05-18 13:54:06 +00:00
Kyle Carberry 22ec366535 feat: Redesign workspaces page (#1450)
* feat: Improve navbar to be more compact

The navbar was unnecessarily large before, which made
the UI feel a bit bloaty from my perspective.

* Attempt to remove overrides

* Update theme

* Add text field

* Update theme to dark!

* Fix import ordering

* Fix page location

* Fix requested changes

* Add storybook for workspaces page view

* Add empty view

* Add tests for empty view

* Remove templates page

* Fix local port

* Remove templates from nav

* Fix e2e test

* Remove time.ts

* Remove dep

* Add background color to margins

* Merge status checking from workspace page

* Fix requested changes

* Fix workspace status tests
2022-05-16 16:52:54 -05:00
G r e y 9d4182b189 fix: CreateWorkspaceForm name validation (#1453)
* refactor: allow helperText in getFormHelpers

By passing in helperText, we will not accidentally overwrite it.

* fix: CreateWorkspaceForm name validation

Resolves: #1421
2022-05-16 15:29:59 -04:00
Bruno Quaresma cf5aca799d Add reset user password action (#1320) 2022-05-06 13:23:03 -05:00
Presley Pizzo bdc17f49e4 refactor: curry GetFormHelpers (#1156) 2022-04-25 15:45:33 -04:00
Asher 3151befb38 chore: un-nest components (#1090)
Closes #936.
2022-04-19 14:16:11 -05:00
Bruno Quaresma b9933d493a refactor: camel case files (#1081) 2022-04-19 11:18:12 -05:00
Cian Johnston af672803a2 autostart/autostop: move to traditional 5-valued cron string for compatibility (#1049)
This PR modfies the original 3-valued cron strings used in package schedule to be traditional 5-valued cron strings.

- schedule.Weekly will validate that the month and dom fields are equal to *
- cli autostart/autostop will attempt to detect local timezone using TZ env var, defaulting to UTC
- cli autostart/autostop no longer accepts a raw schedule -- instead use the --minute, --hour, --dow, and --tz arguments.
- Default schedules are provided that should suffice for most users.

Fixes #993
2022-04-18 11:04:48 -05:00
G r e y 42e9956779 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.
2022-04-13 20:35:47 -04:00
Bruno Quaresma 300c6d0824 feat: add global notification component (#996)
* feat: add global notification component

* fix: update yarn.lock

* fix: pin @testing-library/react-hooks

* fix: update yarn.lock

* refactor: remove displayError
2022-04-13 13:34:06 -05:00
Presley Pizzo 3f21ea472f feat(site): Add Admin Dropdown menu (#885)
* Start porting components for Admin menu

* More porting, wip

* Add icons

* Extract arrow components, navHeight

* Add Admin Dropdown

* Format

* Delete types

* Fix styles

* Lint

* Add stub pages

* Use navHeight constant

* Move files

* Add and organize stories

* Storybook and organize text stories

* Add test

* Lint

* Lint

* Fix double navigation

* Lint

* Wrap new routes in AuthAndNav

* Undo unrelated storybook changes

* Refactor according to conventions
2022-04-08 18:25:53 -04:00
Bruno Quaresma abddd64497 feat: Add sidebar and panel (#866)
* feat: Add sidebar and panel

* fix: fix sidebar values
2022-04-05 14:01:45 -03:00
G r e y 6560f2e340 refactor(site): generalize UserCell component (#484)
Summary:

This is a first step in porting over v1 AuditLog in a refactored/cleaned
up fashion. The existing `UserCell` component was generalized for re-use
across various tables (AuditLog, Users, Orgs).

Details:

- Move UserCell to `components/Table/Cells`
- Add tests and stories for UserCell


Impact:

This unblocks future work in list views like the audit log, user management
panel and organizations management panel.

Relations:

- This commit relates to https://github.com/coder/coder/issues/472, but does not finish it.
- This commit should not merge until after https://github.com/coder/coder/pull/465 and https://github.com/coder/coder/pull/483 because it's
based on them.
2022-03-23 10:28:34 -04:00
Presley Pizzo f2ac81cc2e chore(site): Add unit tests, mocks (#514)
* Extract and unit test redirect functions

* Move router to make app more testable

* Make mock entities more consistent

* Use labels instead of placeholders

* Fill out handlers

* Lint

* Reorganize App

* Make mock entities reference each other

* Add describes in tests

* Clean up api and mocks
2022-03-23 10:09:43 -04:00
Bryan d8e530e1ec refactor: Add 'src' folder in 'site' (#445)
This refactoring re-organizes the `site` folder to have a nested `src` folder.

Originally, [we wanted to keep the directory structure shallow](https://github.com/coder/coder/pull/8#issuecomment-1009578910) - but there were two points that motivated this change to introduce the `src` level.

1. We have several non-`src` folders now (`e2e`, `static`, `html_templates`, `.storybook`)
2. Having a `src` folder makes it easier to run XState Typegen

So given those two data points - I believe it makes sense to revisit that and introduce a `src` folder.
2022-03-16 04:06:03 +00:00