Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit107ae55

Browse files
feat(site): Add workspace settings page (#6612)
1 parent854bcce commit107ae55

File tree

27 files changed

+458
-1068
lines changed

27 files changed

+458
-1068
lines changed

‎site/src/AppRouter.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import GroupsPage from "pages/GroupsPage/GroupsPage"
77
importLoginPagefrom"pages/LoginPage/LoginPage"
88
import{SetupPage}from"pages/SetupPage/SetupPage"
99
import{TemplateSettingsPage}from"pages/TemplateSettingsPage/TemplateSettingsPage"
10-
import{WorkspaceBuildParametersPage}from"pages/WorkspaceBuildParametersPage/WorkspaceBuildParametersPage"
1110
importTemplatesPagefrom"pages/TemplatesPage/TemplatesPage"
1211
importUsersPagefrom"pages/UsersPage/UsersPage"
1312
importWorkspacesPagefrom"pages/WorkspacesPage/WorkspacesPage"
@@ -126,6 +125,9 @@ const CreateTemplatePage = lazy(
126125
constTemplateVariablesPage=lazy(
127126
()=>import("./pages/TemplateVariablesPage/TemplateVariablesPage"),
128127
)
128+
constWorkspaceSettingsPage=lazy(
129+
()=>import("./pages/WorkspaceSettingsPage/WorkspaceSettingsPage"),
130+
)
129131

130132
exportconstAppRouter:FC=()=>{
131133
return(
@@ -230,10 +232,7 @@ export const AppRouter: FC = () => {
230232
path="change-version"
231233
element={<WorkspaceChangeVersionPage/>}
232234
/>
233-
<Route
234-
path="build-parameters"
235-
element={<WorkspaceBuildParametersPage/>}
236-
/>
235+
<Routepath="settings"element={<WorkspaceSettingsPage/>}/>
237236
</Route>
238237
</Route>
239238
</Route>

‎site/src/api/api.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,13 @@ export const createWorkspace = async (
506506
returnresponse.data
507507
}
508508

509+
exportconstpatchWorkspace=async(
510+
workspaceId:string,
511+
data:TypesGen.UpdateWorkspaceRequest,
512+
)=>{
513+
awaitaxios.patch(`/api/v2/workspaces/${workspaceId}`,data)
514+
}
515+
509516
exportconstgetBuildInfo=async():Promise<TypesGen.BuildInfoResponse>=>{
510517
constresponse=awaitaxios.get("/api/v2/buildinfo")
511518
returnresponse.data

‎site/src/components/DropdownButton/ActionCtas.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ export const ChangeVersionButton: FC<
5454
)
5555
}
5656

57-
exportconstBuildParametersButton:FC<
58-
React.PropsWithChildren<WorkspaceAction>
59-
>=({ handleAction})=>{
57+
exportconstSettingsButton:FC<React.PropsWithChildren<WorkspaceAction>>=({
58+
handleAction,
59+
})=>{
6060
conststyles=useStyles()
6161
const{ t}=useTranslation("workspacePage")
6262

@@ -67,7 +67,7 @@ export const BuildParametersButton: FC<
6767
startIcon={<SettingsOutlined/>}
6868
onClick={handleAction}
6969
>
70-
{t("actionButton.buildParameters")}
70+
{t("actionButton.settings")}
7171
</Button>
7272
)
7373
}

‎site/src/components/Form/Form.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type FormProps = HTMLProps<HTMLFormElement> & {
2424
}
2525

2626
exportconstForm:FC<FormProps>=({ direction, className, ...formProps})=>{
27-
conststyles=useStyles()
27+
conststyles=useStyles({ direction})
2828

2929
return(
3030
<FormContext.Providervalue={{ direction}}>
@@ -136,6 +136,7 @@ const useStyles = makeStyles((theme) => ({
136136
},
137137

138138
formSectionInfo:{
139+
width:"100%",
139140
maxWidth:({ direction}:FormContextValue={})=>
140141
direction==="horizontal" ?312 :undefined,
141142
flexShrink:0,

‎site/src/components/Workspace/Workspace.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export interface WorkspaceProps {
4343
handleUpdate:()=>void
4444
handleCancel:()=>void
4545
handleChangeVersion:()=>void
46-
handleBuildParameters:()=>void
46+
handleSettings:()=>void
4747
isUpdating:boolean
4848
workspace:TypesGen.Workspace
4949
resources?:TypesGen.WorkspaceResource[]
@@ -55,7 +55,6 @@ export interface WorkspaceProps {
5555
buildInfo?:TypesGen.BuildInfoResponse
5656
applicationsHost?:string
5757
template?:TypesGen.Template
58-
templateParameters?:TypesGen.TemplateVersionParameter[]
5958
quota_budget?:number
6059
}
6160

@@ -70,7 +69,7 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
7069
handleUpdate,
7170
handleCancel,
7271
handleChangeVersion,
73-
handleBuildParameters,
72+
handleSettings,
7473
workspace,
7574
isUpdating,
7675
resources,
@@ -82,7 +81,6 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
8281
buildInfo,
8382
applicationsHost,
8483
template,
85-
templateParameters,
8684
quota_budget,
8785
})=>{
8886
conststyles=useStyles()
@@ -126,17 +124,14 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({
126124
/>
127125
<WorkspaceActions
128126
workspaceStatus={workspace.latest_build.status}
129-
hasTemplateParameters={
130-
templateParameters ?templateParameters.length>0 :false
131-
}
132127
isOutdated={workspace.outdated}
133128
handleStart={handleStart}
134129
handleStop={handleStop}
135130
handleDelete={handleDelete}
136131
handleUpdate={handleUpdate}
137132
handleCancel={handleCancel}
138133
handleChangeVersion={handleChangeVersion}
139-
handleBuildParameters={handleBuildParameters}
134+
handleSettings={handleSettings}
140135
isUpdating={isUpdating}
141136
/>
142137
</Stack>

‎site/src/components/WorkspaceActions/WorkspaceActions.test.tsx

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ const renderComponent = async (props: Partial<WorkspaceActionsProps> = {}) => {
1212
workspaceStatus={
1313
props.workspaceStatus??Mocks.MockWorkspace.latest_build.status
1414
}
15-
hasTemplateParameters={props.hasTemplateParameters??false}
1615
isOutdated={props.isOutdated??false}
1716
handleStart={jest.fn()}
1817
handleStop={jest.fn()}
1918
handleDelete={jest.fn()}
2019
handleUpdate={jest.fn()}
2120
handleCancel={jest.fn()}
2221
handleChangeVersion={jest.fn()}
23-
handleBuildParameters={jest.fn()}
22+
handleSettings={jest.fn()}
2423
isUpdating={false}
2524
/>,
2625
)
@@ -32,15 +31,14 @@ const renderAndClick = async (props: Partial<WorkspaceActionsProps> = {}) => {
3231
workspaceStatus={
3332
props.workspaceStatus??Mocks.MockWorkspace.latest_build.status
3433
}
35-
hasTemplateParameters={props.hasTemplateParameters??false}
3634
isOutdated={props.isOutdated??false}
3735
handleStart={jest.fn()}
3836
handleStop={jest.fn()}
3937
handleDelete={jest.fn()}
4038
handleUpdate={jest.fn()}
4139
handleCancel={jest.fn()}
4240
handleChangeVersion={jest.fn()}
43-
handleBuildParameters={jest.fn()}
41+
handleSettings={jest.fn()}
4442
isUpdating={false}
4543
/>,
4644
)
@@ -91,20 +89,6 @@ describe("WorkspaceActions", () => {
9189
)
9290
})
9391
})
94-
describe("when the workspace with rich parameters is started",()=>{
95-
it("primary is stop; secondary is build parameters",async()=>{
96-
awaitrenderAndClick({
97-
workspaceStatus:Mocks.MockWorkspace.latest_build.status,
98-
hasTemplateParameters:true,
99-
})
100-
expect(screen.getByTestId("primary-cta")).toHaveTextContent(
101-
t("actionButton.stop",{ns:"workspacePage"}),
102-
)
103-
expect(screen.getByTestId("secondary-ctas")).toHaveTextContent(
104-
t("actionButton.buildParameters",{ns:"workspacePage"}),
105-
)
106-
})
107-
})
10892
describe("when the workspace is stopping",()=>{
10993
it("primary is stopping; cancel is available; no secondary",async()=>{
11094
awaitrenderComponent({

‎site/src/components/WorkspaceActions/WorkspaceActions.tsx

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
ChangeVersionButton,
88
DeleteButton,
99
DisabledButton,
10-
BuildParametersButton,
10+
SettingsButton,
1111
StartButton,
1212
StopButton,
1313
UpdateButton,
@@ -16,37 +16,32 @@ import { ButtonMapping, ButtonTypesEnum, buttonAbilities } from "./constants"
1616

1717
exportinterfaceWorkspaceActionsProps{
1818
workspaceStatus:WorkspaceStatus
19-
hasTemplateParameters:boolean
2019
isOutdated:boolean
2120
handleStart:()=>void
2221
handleStop:()=>void
2322
handleDelete:()=>void
2423
handleUpdate:()=>void
2524
handleCancel:()=>void
2625
handleChangeVersion:()=>void
27-
handleBuildParameters:()=>void
26+
handleSettings:()=>void
2827
isUpdating:boolean
2928
children?:ReactNode
3029
}
3130

3231
exportconstWorkspaceActions:FC<WorkspaceActionsProps>=({
3332
workspaceStatus,
34-
hasTemplateParameters,
3533
isOutdated,
3634
handleStart,
3735
handleStop,
3836
handleDelete,
3937
handleUpdate,
4038
handleCancel,
4139
handleChangeVersion,
42-
handleBuildParameters,
40+
handleSettings,
4341
isUpdating,
4442
})=>{
4543
const{ t}=useTranslation("workspacePage")
46-
const{ canCancel, canAcceptJobs, actions}=buttonAbilities(
47-
workspaceStatus,
48-
hasTemplateParameters,
49-
)
44+
const{ canCancel, canAcceptJobs, actions}=buttonAbilities(workspaceStatus)
5045
constcanBeUpdated=isOutdated&&canAcceptJobs
5146

5247
// A mapping of button type to the corresponding React component
@@ -58,8 +53,8 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
5853
[ButtonTypesEnum.changeVersion]:(
5954
<ChangeVersionButtonhandleAction={handleChangeVersion}/>
6055
),
61-
[ButtonTypesEnum.buildParameters]:(
62-
<BuildParametersButtonhandleAction={handleBuildParameters}/>
56+
[ButtonTypesEnum.settings]:(
57+
<SettingsButtonhandleAction={handleSettings}/>
6358
),
6459
[ButtonTypesEnum.start]:<StartButtonhandleAction={handleStart}/>,
6560
[ButtonTypesEnum.starting]:(

‎site/src/components/WorkspaceActions/constants.ts

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export enum ButtonTypesEnum {
1212
update="update",
1313
updating="updating",
1414
changeVersion="changeVersion",
15-
buildParameters="buildParameters",
15+
settings="settings",
1616
// disabled buttons
1717
canceling="canceling",
1818
deleted="deleted",
@@ -31,19 +31,8 @@ interface WorkspaceAbilities {
3131

3232
exportconstbuttonAbilities=(
3333
status:WorkspaceStatus,
34-
hasTemplateParameters:boolean,
3534
):WorkspaceAbilities=>{
36-
if(hasTemplateParameters){
37-
returnstatusToAbilities[status]
38-
}
39-
40-
constall=statusToAbilities[status]
41-
return{
42-
...all,
43-
actions:all.actions.filter(
44-
(action)=>action!==ButtonTypesEnum.buildParameters,
45-
),
46-
}
35+
returnstatusToAbilities[status]
4736
}
4837

4938
conststatusToAbilities:Record<WorkspaceStatus,WorkspaceAbilities>={
@@ -55,7 +44,7 @@ const statusToAbilities: Record<WorkspaceStatus, WorkspaceAbilities> = {
5544
running:{
5645
actions:[
5746
ButtonTypesEnum.stop,
58-
ButtonTypesEnum.buildParameters,
47+
ButtonTypesEnum.settings,
5948
ButtonTypesEnum.changeVersion,
6049
ButtonTypesEnum.delete,
6150
],
@@ -70,7 +59,7 @@ const statusToAbilities: Record<WorkspaceStatus, WorkspaceAbilities> = {
7059
stopped:{
7160
actions:[
7261
ButtonTypesEnum.start,
73-
ButtonTypesEnum.buildParameters,
62+
ButtonTypesEnum.settings,
7463
ButtonTypesEnum.changeVersion,
7564
ButtonTypesEnum.delete,
7665
],
@@ -81,7 +70,7 @@ const statusToAbilities: Record<WorkspaceStatus, WorkspaceAbilities> = {
8170
actions:[
8271
ButtonTypesEnum.start,
8372
ButtonTypesEnum.stop,
84-
ButtonTypesEnum.buildParameters,
73+
ButtonTypesEnum.settings,
8574
ButtonTypesEnum.changeVersion,
8675
ButtonTypesEnum.delete,
8776
],
@@ -92,7 +81,7 @@ const statusToAbilities: Record<WorkspaceStatus, WorkspaceAbilities> = {
9281
failed:{
9382
actions:[
9483
ButtonTypesEnum.start,
95-
ButtonTypesEnum.buildParameters,
84+
ButtonTypesEnum.settings,
9685
ButtonTypesEnum.changeVersion,
9786
ButtonTypesEnum.delete,
9887
],

‎site/src/i18n/en/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import templateSettingsPage from "./templateSettingsPage.json"
1212
importtemplateVariablesPagefrom"./templateVariablesPage.json"
1313
importtemplateVersionPagefrom"./templateVersionPage.json"
1414
importloginPagefrom"./loginPage.json"
15-
importworkspaceBuildParametersPagefrom"./workspaceBuildParametersPage.json"
1615
importworkspaceChangeVersionPagefrom"./workspaceChangeVersionPage.json"
1716
importworkspaceSchedulePagefrom"./workspaceSchedulePage.json"
1817
importappearanceSettingsfrom"./appearanceSettings.json"
@@ -21,6 +20,7 @@ import starterTemplatePage from "./starterTemplatePage.json"
2120
importcreateTemplatePagefrom"./createTemplatePage.json"
2221
importuserSettingsPagefrom"./userSettingsPage.json"
2322
importtokensPagefrom"./tokensPage.json"
23+
importworkspaceSettingsPagefrom"./workspaceSettingsPage.json"
2424

2525
exportconsten={
2626
common,
@@ -37,7 +37,6 @@ export const en = {
3737
templateVariablesPage,
3838
templateVersionPage,
3939
loginPage,
40-
workspaceBuildParametersPage,
4140
workspaceChangeVersionPage,
4241
workspaceSchedulePage,
4342
appearanceSettings,
@@ -46,4 +45,5 @@ export const en = {
4645
createTemplatePage,
4746
userSettingsPage,
4847
tokensPage,
48+
workspaceSettingsPage,
4949
}

‎site/src/i18n/en/workspaceBuildParametersPage.json

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎site/src/i18n/en/workspacePage.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"stopping":"Stopping...",
3030
"deleting":"Deleting...",
3131
"changeVersion":"Change version",
32-
"buildParameters":"Build parameters"
32+
"settings":"Settings"
3333
},
3434
"disabledButton": {
3535
"canceling":"Canceling",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"title":"Workspace Settings",
3+
"defaultErrorMessage":"Error on update workspace settings",
4+
"nameLabel":"Name",
5+
"generalInfo":"General info",
6+
"generalInfoDescription":"The name of your new workspace.",
7+
"parameters":"Parameters",
8+
"parametersDescription":"Those values are provided by your template's Terraform configuration. Values can be changed after creating the workspace."
9+
}

‎site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { makeStyles } from "@material-ui/core/styles"
2424
import{
2525
selectInitialRichParametersValues,
2626
useValidationSchemaForRichParameters,
27+
workspaceBuildParameterValue,
2728
}from"util/richParameters"
2829

2930
exportenumCreateWorkspaceErrors{
@@ -401,13 +402,3 @@ const useStyles = makeStyles((theme) => ({
401402
marginRight:-theme.spacing(10),
402403
},
403404
}))
404-
405-
exportconstworkspaceBuildParameterValue=(
406-
workspaceBuildParameters:TypesGen.WorkspaceBuildParameter[],
407-
parameter:TypesGen.TemplateVersionParameter,
408-
):string=>{
409-
constbuildParameter=workspaceBuildParameters.find((buildParameter)=>{
410-
returnbuildParameter.name===parameter.name
411-
})
412-
return(buildParameter&&buildParameter.value)||""
413-
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp