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

Commit1517b83

Browse files
committed
Feat: move org dropdown and add orgId search param
1 parent9244e8c commit1517b83

File tree

16 files changed

+103
-70
lines changed

16 files changed

+103
-70
lines changed

‎site/src/modules/templates/TemplateCard/TemplateCard.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ export const TemplateCard: FC<TemplateCardProps> = ({
1717
...divProps
1818
})=>{
1919
constnavigate=useNavigate();
20-
consttemplatePageLink=`/templates/${template.name}`;
20+
constorganizationId=
21+
template.organization_id||"00000000-0000-0000-0000-000000000000";
22+
consttemplatePageLink=`/templates/${template.name}?orgId=${organizationId}`;
2123
consthasIcon=template.icon&&template.icon!=="";
2224

2325
consthandleKeyDown=(e:React.KeyboardEvent)=>{

‎site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import TextField from "@mui/material/TextField";
22
import{useFormik}from"formik";
33
importcamelCasefrom"lodash/camelCase";
44
importcapitalizefrom"lodash/capitalize";
5-
importtype{FC}from"react";
5+
import{useState,typeFC}from"react";
66
import{useSearchParams}from"react-router-dom";
77
import*asYupfrom"yup";
88
importtype{
9+
Organization,
910
ProvisionerJobLog,
1011
ProvisionerType,
1112
Template,
@@ -20,6 +21,7 @@ import {
2021
FormFooter,
2122
}from"components/Form/Form";
2223
import{IconField}from"components/IconField/IconField";
24+
import{OrganizationAutocomplete}from"components/OrganizationAutocomplete/OrganizationAutocomplete";
2325
import{SelectedTemplate}from"pages/CreateWorkspacePage/SelectedTemplate";
2426
import{
2527
nameValidator,
@@ -53,6 +55,7 @@ export interface CreateTemplateData {
5355
user_variable_values?:VariableValue[];
5456
allow_everyone_group_access:boolean;
5557
provisioner_type:ProvisionerType;
58+
organization_id:string;
5659
}
5760

5861
constvalidationSchema=Yup.object({
@@ -85,6 +88,7 @@ const defaultInitialValues: CreateTemplateData = {
8588
allow_user_autostop:false,
8689
allow_everyone_group_access:true,
8790
provisioner_type:"terraform",
91+
organization_id:"",
8892
};
8993

9094
typeGetInitialValuesParams={
@@ -176,6 +180,7 @@ export type CreateTemplateFormProps = (
176180

177181
exportconstCreateTemplateForm:FC<CreateTemplateFormProps>=(props)=>{
178182
const[searchParams]=useSearchParams();
183+
const[selectedOrg,setSelectedOrg]=useState<Organization|null>(null);
179184
const{
180185
onCancel,
181186
onSubmit,
@@ -188,6 +193,7 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = (props) => {
188193
allowAdvancedScheduling,
189194
variablesSectionRef,
190195
}=props;
196+
// TODO: if there is only 1 organization, set the dropdown to the default organizationId or hide it
191197

192198
constform=useFormik<CreateTemplateData>({
193199
initialValues:getInitialValues({
@@ -227,11 +233,20 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = (props) => {
227233
/>
228234
)}
229235

236+
<OrganizationAutocomplete
237+
{...getFieldHelpers("organization_id")}
238+
value={selectedOrg}
239+
onChange={(newValue)=>{
240+
setSelectedOrg(newValue);
241+
returnform.setFieldValue("organization_id",newValue?.id||"");
242+
}}
243+
size="medium"
244+
/>
245+
230246
<TextField
231247
{...getFieldHelpers("name")}
232248
disabled={isSubmitting}
233249
onChange={onChangeTrimmed(form)}
234-
autoFocus
235250
fullWidth
236251
required
237252
label="Name"

‎site/src/pages/CreateTemplatePage/CreateTemplatePage.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,14 @@ const CreateTemplatePage: FC = () => {
3232
onCreateVersion:setTemplateVersion,
3333
onTemplateVersionChanges:setTemplateVersion,
3434
});
35-
navigate(`/templates/${template.name}/files`);
35+
navigate(
36+
`/templates/${template.name}/files?orgId=${options.organizationId}`,
37+
);
3638
},
3739
onOpenBuildLogsDrawer:()=>setIsBuildLogsOpen(true),
3840
error:createTemplateMutation.error,
3941
isCreating:createTemplateMutation.isLoading,
4042
variablesSectionRef,
41-
organizationId:
42-
searchParams.get("organizationId")||
43-
"00000000-0000-0000-0000-000000000000",
4443
};
4544

4645
return(

‎site/src/pages/CreateTemplatePage/DuplicateTemplateView.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@ export const DuplicateTemplateView: FC<CreateTemplatePageViewProps> = ({
2121
variablesSectionRef,
2222
error,
2323
isCreating,
24-
organizationId,
2524
})=>{
2625
constnavigate=useNavigate();
2726
const{ entitlements}=useDashboard();
2827
const[searchParams]=useSearchParams();
28+
constorganizationId=
29+
searchParams.get("orgId")||"00000000-0000-0000-0000-000000000000";
2930
consttemplateByNameQuery=useQuery(
3031
templateByName(organizationId,searchParams.get("fromTemplate")!),
3132
);
@@ -77,7 +78,7 @@ export const DuplicateTemplateView: FC<CreateTemplatePageViewProps> = ({
7778
logs={templateVersionLogsQuery.data}
7879
onSubmit={async(formData)=>{
7980
awaitonCreateTemplate({
80-
organizationId,
81+
organizationId:formData.organization_id,
8182
version:firstVersionFromFile(
8283
templateVersionQuery.data!.job.file_id,
8384
formData.user_variable_values,

‎site/src/pages/CreateTemplatePage/ImportStarterTemplateView.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ export const ImportStarterTemplateView: FC<CreateTemplatePageViewProps> = ({
2424
variablesSectionRef,
2525
error,
2626
isCreating,
27-
organizationId,
2827
})=>{
2928
constnavigate=useNavigate();
3029
const{ entitlements}=useDashboard();
@@ -74,7 +73,7 @@ export const ImportStarterTemplateView: FC<CreateTemplatePageViewProps> = ({
7473
logs={templateVersionLogsQuery.data}
7574
onSubmit={async(formData)=>{
7675
awaitonCreateTemplate({
77-
organizationId,
76+
organizationId:formData.organization_id,
7877
version:firstVersionFromExample(
7978
templateExample!,
8079
formData.user_variable_values,

‎site/src/pages/CreateTemplatePage/UploadTemplateView.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export const UploadTemplateView: FC<CreateTemplatePageViewProps> = ({
1818
variablesSectionRef,
1919
isCreating,
2020
error,
21-
organizationId,
2221
})=>{
2322
constnavigate=useNavigate();
2423

@@ -59,7 +58,7 @@ export const UploadTemplateView: FC<CreateTemplatePageViewProps> = ({
5958
}}
6059
onSubmit={async(formData)=>{
6160
awaitonCreateTemplate({
62-
organizationId,
61+
organizationId:formData.organization_id,
6362
version:firstVersionFromFile(
6463
uploadedFile!.hash,
6564
formData.user_variable_values,

‎site/src/pages/CreateTemplatePage/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@ export type CreateTemplatePageViewProps = {
66
variablesSectionRef:React.RefObject<HTMLDivElement>;
77
error:unknown;
88
isCreating:boolean;
9-
organizationId:string;
109
};

‎site/src/pages/CreateTemplatesGalleryPage/CreateTemplatesPageView.tsx

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@ import Card from "@mui/material/Card";
33
importCardActionAreafrom"@mui/material/CardActionArea";
44
importCardContentfrom"@mui/material/CardContent";
55
importStackfrom"@mui/material/Stack";
6-
import{useState,typeFC}from"react";
6+
importtype{FC}from"react";
77
import{LinkasRouterLink}from"react-router-dom";
8-
importtype{Organization}from"api/typesGenerated";
98
import{ErrorAlert}from"components/Alert/ErrorAlert";
109
import{ExternalImage}from"components/ExternalImage/ExternalImage";
1110
import{Loader}from"components/Loader/Loader";
1211
import{Margins}from"components/Margins/Margins";
13-
import{OrganizationAutocomplete}from"components/OrganizationAutocomplete/OrganizationAutocomplete";
1412
import{PageHeader,PageHeaderTitle}from"components/PageHeader/PageHeader";
15-
// import { useDashboard } from "modules/dashboard/useDashboard";
1613
importtype{StarterTemplatesByTag}from"utils/templateAggregators";
1714
import{StarterTemplates}from"./StarterTemplates";
1815

@@ -25,28 +22,12 @@ export const CreateTemplatesPageView: FC<CreateTemplatePageViewProps> = ({
2522
starterTemplatesByTag,
2623
error,
2724
})=>{
28-
const[selectedOrg,setSelectedOrg]=useState<Organization|null>(null);
29-
constorganizationId=
30-
selectedOrg?.id||"00000000-0000-0000-0000-000000000000";
31-
// TODO: if there is only 1 organization, set the dropdown to the default organizationId
32-
3325
return(
3426
<Margins>
3527
<PageHeader>
3628
<PageHeaderTitle>Create a Template</PageHeaderTitle>
3729
</PageHeader>
3830
<Stackspacing={8}>
39-
<Stackdirection="row"spacing={7}>
40-
<h2css={styles.sectionTitle}>Choose an Organization</h2>
41-
<OrganizationAutocomplete
42-
css={styles.autoComplete}
43-
value={selectedOrg}
44-
onChange={(newValue)=>{
45-
setSelectedOrg(newValue);
46-
}}
47-
/>
48-
</Stack>
49-
5031
<Stackdirection="row"spacing={7}>
5132
<h2css={styles.sectionTitle}>Choose a starting point</h2>
5233
<div
@@ -60,7 +41,7 @@ export const CreateTemplatesPageView: FC<CreateTemplatePageViewProps> = ({
6041
<Cardvariant="outlined"sx={{width:320}}>
6142
<CardActionArea
6243
component={RouterLink}
63-
to={`../templates/new?exampleId=scratch&organizationId=${organizationId}`}
44+
to="../templates/new?exampleId=scratch"
6445
sx={{height:115,padding:1}}
6546
>
6647
<CardContent>
@@ -91,7 +72,7 @@ export const CreateTemplatesPageView: FC<CreateTemplatePageViewProps> = ({
9172
<Cardvariant="outlined"sx={{width:320}}>
9273
<CardActionArea
9374
component={RouterLink}
94-
to={`../templates/new?organizationId=${organizationId}`}
75+
to="../templates/new"
9576
sx={{height:115,padding:1}}
9677
>
9778
<CardContent>
@@ -126,20 +107,13 @@ export const CreateTemplatesPageView: FC<CreateTemplatePageViewProps> = ({
126107

127108
{Boolean(!starterTemplatesByTag)&&<Loader/>}
128109

129-
<StarterTemplates
130-
starterTemplatesByTag={starterTemplatesByTag}
131-
organizationId={organizationId}
132-
/>
110+
<StarterTemplatesstarterTemplatesByTag={starterTemplatesByTag}/>
133111
</Stack>
134112
</Margins>
135113
);
136114
};
137115

138116
conststyles={
139-
autoComplete:{
140-
width:415,
141-
},
142-
143117
sectionTitle:(theme)=>({
144118
color:theme.palette.text.primary,
145119
fontSize:16,

‎site/src/pages/TemplatePage/TemplateLayout.tsx

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import {
66
useContext,
77
}from"react";
88
import{useQuery}from"react-query";
9-
import{Outlet,useLocation,useNavigate,useParams}from"react-router-dom";
9+
import{
10+
Outlet,
11+
useLocation,
12+
useNavigate,
13+
useParams,
14+
useSearchParams,
15+
}from"react-router-dom";
1016
import{API}from"api/api";
1117
importtype{AuthorizationRequest}from"api/typesGenerated";
1218
import{ErrorAlert}from"components/Alert/ErrorAlert";
@@ -72,8 +78,10 @@ export const TemplateLayout: FC<PropsWithChildren> = ({
7278
children=<Outlet/>,
7379
})=>{
7480
constnavigate=useNavigate();
75-
const{ organizationId}=useDashboard();
7681
const{template:templateName}=useParams()as{template:string};
82+
const[searchParams]=useSearchParams();
83+
constorganizationId=
84+
searchParams.get("orgId")||"00000000-0000-0000-0000-000000000000";
7785
const{ data, error, isLoading}=useQuery({
7886
queryKey:["template",templateName],
7987
queryFn:()=>fetchTemplate(organizationId,templateName),
@@ -115,29 +123,41 @@ export const TemplateLayout: FC<PropsWithChildren> = ({
115123
>
116124
<Margins>
117125
<TabsList>
118-
<TabLinkto={`/templates/${templateName}`}value="summary">
126+
<TabLink
127+
to={`/templates/${templateName}?orgId=${organizationId}`}
128+
value="summary"
129+
>
119130
Summary
120131
</TabLink>
121-
<TabLinkto={`/templates/${templateName}/docs`}value="docs">
132+
<TabLink
133+
to={`/templates/${templateName}/docs?orgId=${organizationId}`}
134+
value="docs"
135+
>
122136
Docs
123137
</TabLink>
124138
{data.permissions.canUpdateTemplate&&(
125-
<TabLinkto={`/templates/${templateName}/files`}value="files">
139+
<TabLink
140+
to={`/templates/${templateName}/files?orgId=${organizationId}`}
141+
value="files"
142+
>
126143
Source Code
127144
</TabLink>
128145
)}
129146
<TabLink
130-
to={`/templates/${templateName}/versions`}
147+
to={`/templates/${templateName}/versions?orgId=${organizationId}`}
131148
value="versions"
132149
>
133150
Versions
134151
</TabLink>
135-
<TabLinkto={`/templates/${templateName}/embed`}value="embed">
152+
<TabLink
153+
to={`/templates/${templateName}/embed?orgId=${organizationId}`}
154+
value="embed"
155+
>
136156
Embed
137157
</TabLink>
138158
{shouldShowInsights&&(
139159
<TabLink
140-
to={`/templates/${templateName}/insights`}
160+
to={`/templates/${templateName}/insights?orgId=${organizationId}`}
141161
value="insights"
142162
>
143163
Insights

‎site/src/pages/TemplatePage/TemplatePageHeader.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@ type TemplateMenuProps = {
3939
templateName:string;
4040
templateVersion:string;
4141
templateId:string;
42+
organizationId:string;
4243
onDelete:()=>void;
4344
};
4445

4546
constTemplateMenu:FC<TemplateMenuProps>=({
4647
templateName,
4748
templateVersion,
4849
templateId,
50+
organizationId,
4951
onDelete,
5052
})=>{
5153
constdialogState=useDeletionDialogState(templateId,onDelete);
@@ -66,7 +68,9 @@ const TemplateMenu: FC<TemplateMenuProps> = ({
6668
<MoreMenuContent>
6769
<MoreMenuItem
6870
onClick={()=>{
69-
navigate(`/templates/${templateName}/settings`);
71+
navigate(
72+
`/templates/${templateName}/settings?orgId=${organizationId}`,
73+
);
7074
}}
7175
>
7276
<SettingsIcon/>
@@ -76,7 +80,7 @@ const TemplateMenu: FC<TemplateMenuProps> = ({
7680
<MoreMenuItem
7781
onClick={()=>{
7882
navigate(
79-
`/templates/${templateName}/versions/${templateVersion}/edit`,
83+
`/templates/${templateName}/versions/${templateVersion}/edit?orgId=${organizationId}`,
8084
);
8185
}}
8286
>
@@ -86,7 +90,9 @@ const TemplateMenu: FC<TemplateMenuProps> = ({
8690

8791
<MoreMenuItem
8892
onClick={()=>{
89-
navigate(`/templates/new?fromTemplate=${templateName}`);
93+
navigate(
94+
`/templates/new?fromTemplate=${templateName}&orgId=${organizationId}`,
95+
);
9096
}}
9197
>
9298
<CopyIcon/>
@@ -188,6 +194,7 @@ export const TemplatePageHeader: FC<TemplatePageHeaderProps> = ({
188194
templateVersion={activeVersion.name}
189195
templateName={template.name}
190196
templateId={template.id}
197+
organizationId={template.organization_id}
191198
onDelete={onDeleteTemplate}
192199
/>
193200
)}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp