Skip to content

Commit 2a65b72

Browse files
committed
UI changes
1 parent ef470b2 commit 2a65b72

File tree

4 files changed

+54
-15
lines changed

4 files changed

+54
-15
lines changed

codersdk/richparameters.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
3838
switch richParameter.ValidationMonotonic {
3939
case MonotonicOrderIncreasing:
4040
if lastBuildParameter.Value > buildParameter.Value {
41-
return xerrors.Errorf("parameter value must be equal or lower than previous value: %s", lastBuildParameter.Value)
41+
return xerrors.Errorf("parameter value must be equal or greater than previous value: %s", lastBuildParameter.Value)
4242
}
4343
case MonotonicOrderDecreasing:
4444
if lastBuildParameter.Value < buildParameter.Value {
45-
return xerrors.Errorf("parameter value must be equal or greater than previous value: %s", lastBuildParameter.Value)
45+
return xerrors.Errorf("parameter value must be equal or lower than previous value: %s", lastBuildParameter.Value)
4646
}
4747
}
4848
}

site/src/i18n/en/workspaceBuildParametersPage.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,7 @@
55
"validationRequiredParameter": "Parameter is required.",
66
"validationNumberNotInRange": "Value must be between {{min}} and {{max}}.",
77
"validationPatternNotMatched": "{{error}} (value does not match the pattern {{pattern}}).",
8-
"updateWorkspace": "Update workspace"
8+
"updateWorkspace": "Update workspace",
9+
"validationNumberNotIncreasing": "The value must be equal or greater than the previous one {{last}}.",
10+
"validationNumberNotDecreasing": "The value must be equal or lower than the previous one {{last}}."
911
}

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ export const workspaceBuildParameterValue = (
493493
export const ValidationSchemaForRichParameters = (
494494
ns: string,
495495
templateParameters?: TypesGen.TemplateVersionParameter[],
496+
lastBuildParameters?: TypesGen.WorkspaceBuildParameter[],
496497
): Yup.AnySchema => {
497498
const { t } = useTranslation(ns)
498499

@@ -515,27 +516,62 @@ export const ValidationSchemaForRichParameters = (
515516
switch (templateParameter.type) {
516517
case "number":
517518
if (
518-
!templateParameter.validation_min || !templateParameter.validation_max
519+
templateParameter.validation_min &&
520+
templateParameter.validation_max
519521
) {
520-
return true
522+
if (
523+
Number(val) < templateParameter.validation_min ||
524+
templateParameter.validation_max < Number(val)
525+
) {
526+
return ctx.createError({
527+
path: ctx.path,
528+
message: t("validationNumberNotInRange", {
529+
min: templateParameter.validation_min,
530+
max: templateParameter.validation_max,
531+
}),
532+
})
533+
}
521534
}
522535

523536
if (
524-
Number(val) < templateParameter.validation_min ||
525-
templateParameter.validation_max < Number(val)
537+
templateParameter.validation_monotonic &&
538+
lastBuildParameters
526539
) {
527-
return ctx.createError({
528-
path: ctx.path,
529-
message: t("validationNumberNotInRange", {
530-
min: templateParameter.validation_min,
531-
max: templateParameter.validation_max,
532-
}),
533-
})
540+
const lastBuildParameter = lastBuildParameters.find(
541+
(last) => last.name === name,
542+
)
543+
if (lastBuildParameter) {
544+
switch (templateParameter.validation_monotonic) {
545+
case "increasing":
546+
if (Number(lastBuildParameter.value) > Number(val)) {
547+
return ctx.createError({
548+
path: ctx.path,
549+
message: t("validationNumberNotIncreasing", {
550+
last: lastBuildParameter.value,
551+
}),
552+
})
553+
}
554+
break
555+
case "decreasing":
556+
if (Number(lastBuildParameter.value) < Number(val)) {
557+
return ctx.createError({
558+
path: ctx.path,
559+
message: t("validationNumberNotDecreasing", {
560+
last: lastBuildParameter.value,
561+
}),
562+
})
563+
}
564+
break
565+
}
566+
}
534567
}
535568
break
536569
case "string":
537570
{
538-
if (!templateParameter.validation_regex || templateParameter.validation_regex.length === 0) {
571+
if (
572+
!templateParameter.validation_regex ||
573+
templateParameter.validation_regex.length === 0
574+
) {
539575
return true
540576
}
541577

site/src/pages/WorkspaceBuildParametersPage/WorkspaceBuildParametersPageView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export const WorkspaceBuildParametersPageView: FC<
6464
rich_parameter_values: ValidationSchemaForRichParameters(
6565
"workspaceBuildParametersPage",
6666
props.templateParameters,
67+
initialRichParameterValues,
6768
),
6869
}),
6970
enableReinitialize: true,

0 commit comments

Comments
 (0)