Skip to content

Commit 7cf8577

Browse files
authored
label some template settings as enterprise (coder#12952)
1 parent d3790bb commit 7cf8577

File tree

4 files changed

+71
-29
lines changed

4 files changed

+71
-29
lines changed

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx

Lines changed: 50 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export interface TemplateSettingsForm {
6161
// Helpful to show field errors on Storybook
6262
initialTouched?: FormikTouched<UpdateTemplateMeta>;
6363
accessControlEnabled: boolean;
64+
advancedSchedulingEnabled: boolean;
6465
portSharingExperimentEnabled: boolean;
6566
portSharingControlsEnabled: boolean;
6667
}
@@ -73,6 +74,7 @@ export const TemplateSettingsForm: FC<TemplateSettingsForm> = ({
7374
isSubmitting,
7475
initialTouched,
7576
accessControlEnabled,
77+
advancedSchedulingEnabled,
7678
portSharingExperimentEnabled,
7779
portSharingControlsEnabled,
7880
}) => {
@@ -195,39 +197,54 @@ export const TemplateSettingsForm: FC<TemplateSettingsForm> = ({
195197
</Stack>
196198
</Stack>
197199
</label>
198-
<label htmlFor="require_active_version">
199-
<Stack direction="row" spacing={1}>
200-
<Checkbox
201-
id="require_active_version"
202-
name="require_active_version"
203-
checked={form.values.require_active_version}
204-
onChange={form.handleChange}
205-
/>
200+
<Stack spacing={2}>
201+
<label htmlFor="require_active_version">
202+
<Stack direction="row" spacing={1}>
203+
<Checkbox
204+
id="require_active_version"
205+
name="require_active_version"
206+
checked={form.values.require_active_version}
207+
onChange={form.handleChange}
208+
disabled={
209+
!template.require_active_version &&
210+
!advancedSchedulingEnabled
211+
}
212+
/>
206213

207-
<Stack direction="column" spacing={0.5}>
208-
<Stack
209-
direction="row"
210-
alignItems="center"
211-
spacing={0.5}
212-
css={styles.optionText}
213-
>
214-
Require workspaces automatically update when started.
215-
<HelpTooltip>
216-
<HelpTooltipTrigger />
217-
<HelpTooltipContent>
218-
<HelpTooltipText>
219-
This setting is not enforced for template admins.
220-
</HelpTooltipText>
221-
</HelpTooltipContent>
222-
</HelpTooltip>
214+
<Stack direction="column" spacing={0.5}>
215+
<Stack
216+
direction="row"
217+
alignItems="center"
218+
spacing={0.5}
219+
css={styles.optionText}
220+
>
221+
Require workspaces automatically update when started.
222+
<HelpTooltip>
223+
<HelpTooltipTrigger />
224+
<HelpTooltipContent>
225+
<HelpTooltipText>
226+
This setting is not enforced for template admins.
227+
</HelpTooltipText>
228+
</HelpTooltipContent>
229+
</HelpTooltip>
230+
</Stack>
231+
<span css={styles.optionHelperText}>
232+
Workspaces that are manually started or auto-started will
233+
use the active template version.
234+
</span>
223235
</Stack>
236+
</Stack>
237+
</label>
238+
239+
{!advancedSchedulingEnabled && (
240+
<Stack direction="row">
241+
<EnterpriseBadge />
224242
<span css={styles.optionHelperText}>
225-
Workspaces that are manually started or auto-started will use
226-
the active template version.
243+
Enterprise license required to enabled.
227244
</span>
228245
</Stack>
229-
</Stack>
230-
</label>
246+
)}
247+
</Stack>
231248
</Stack>
232249
</FormSection>
233250

@@ -241,7 +258,9 @@ export const TemplateSettingsForm: FC<TemplateSettingsForm> = ({
241258
helperText:
242259
"Leave the message empty to keep the template active. Any message provided will mark the template as deprecated. Use this message to inform users of the deprecation and how to migrate to a new template.",
243260
})}
244-
disabled={isSubmitting || !accessControlEnabled}
261+
disabled={
262+
isSubmitting || (!template.deprecated && !accessControlEnabled)
263+
}
245264
fullWidth
246265
label="Deprecation Message"
247266
/>
@@ -250,6 +269,8 @@ export const TemplateSettingsForm: FC<TemplateSettingsForm> = ({
250269
<EnterpriseBadge />
251270
<span css={styles.optionHelperText}>
252271
Enterprise license required to deprecate templates.
272+
{template.deprecated &&
273+
" You cannot change the message, but you may remove it to mark this template as no longer deprecated."}
253274
</span>
254275
</Stack>
255276
)}

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ export const TemplateSettingsPage: FC = () => {
2020
const queryClient = useQueryClient();
2121
const { entitlements, experiments } = useDashboard();
2222
const accessControlEnabled = entitlements.features.access_control.enabled;
23+
const advancedSchedulingEnabled =
24+
entitlements.features.advanced_template_scheduling.enabled;
2325
const sharedPortsExperimentEnabled = experiments.includes("shared-ports");
2426
const sharedPortControlsEnabled =
2527
entitlements.features.control_shared_ports.enabled;
@@ -70,6 +72,7 @@ export const TemplateSettingsPage: FC = () => {
7072
});
7173
}}
7274
accessControlEnabled={accessControlEnabled}
75+
advancedSchedulingEnabled={advancedSchedulingEnabled}
7376
sharedPortsExperimentEnabled={sharedPortsExperimentEnabled}
7477
sharedPortControlsEnabled={sharedPortControlsEnabled}
7578
/>

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const meta: Meta<typeof TemplateSettingsPageView> = {
88
args: {
99
template: MockTemplate,
1010
accessControlEnabled: true,
11+
advancedSchedulingEnabled: true,
1112
},
1213
};
1314

@@ -36,5 +37,19 @@ export const SaveTemplateSettingsError: Story = {
3637
export const NoEntitlements: Story = {
3738
args: {
3839
accessControlEnabled: false,
40+
advancedSchedulingEnabled: false,
41+
},
42+
};
43+
44+
export const NoEntitlementsExpiredSettings: Story = {
45+
args: {
46+
template: {
47+
...MockTemplate,
48+
deprecated: true,
49+
deprecation_message: "This template tastes bad",
50+
require_active_version: true,
51+
},
52+
accessControlEnabled: false,
53+
advancedSchedulingEnabled: false,
3954
},
4055
};

site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface TemplateSettingsPageViewProps {
1313
typeof TemplateSettingsForm
1414
>["initialTouched"];
1515
accessControlEnabled: boolean;
16+
advancedSchedulingEnabled: boolean;
1617
sharedPortsExperimentEnabled: boolean;
1718
sharedPortControlsEnabled: boolean;
1819
}
@@ -25,6 +26,7 @@ export const TemplateSettingsPageView: FC<TemplateSettingsPageViewProps> = ({
2526
submitError,
2627
initialTouched,
2728
accessControlEnabled,
29+
advancedSchedulingEnabled,
2830
sharedPortsExperimentEnabled,
2931
sharedPortControlsEnabled,
3032
}) => {
@@ -42,6 +44,7 @@ export const TemplateSettingsPageView: FC<TemplateSettingsPageViewProps> = ({
4244
onCancel={onCancel}
4345
error={submitError}
4446
accessControlEnabled={accessControlEnabled}
47+
advancedSchedulingEnabled={advancedSchedulingEnabled}
4548
portSharingExperimentEnabled={sharedPortsExperimentEnabled}
4649
portSharingControlsEnabled={sharedPortControlsEnabled}
4750
/>

0 commit comments

Comments
 (0)