mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(site): add auto mode on create workspace form (#8651)
This commit is contained in:
@@ -0,0 +1 @@
|
||||
export const REFRESH_GITAUTH_BROADCAST_CHANNEL = "gitauth_refresh"
|
||||
@@ -0,0 +1,53 @@
|
||||
import { TemplateVersionParameter } from "api/typesGenerated"
|
||||
import { selectInitialRichParametersValues } from "./richParameters"
|
||||
|
||||
test("selectInitialRichParametersValues return default value when default build parameter is not valid", () => {
|
||||
const templateParameters: TemplateVersionParameter[] = [
|
||||
{
|
||||
name: "cpu",
|
||||
display_name: "CPU",
|
||||
description: "The number of CPU cores",
|
||||
description_plaintext: "The number of CPU cores",
|
||||
type: "string",
|
||||
mutable: true,
|
||||
default_value: "2",
|
||||
icon: "/icon/memory.svg",
|
||||
options: [
|
||||
{
|
||||
name: "2 Cores",
|
||||
description: "",
|
||||
value: "2",
|
||||
icon: "",
|
||||
},
|
||||
{
|
||||
name: "4 Cores",
|
||||
description: "",
|
||||
value: "4",
|
||||
icon: "",
|
||||
},
|
||||
{
|
||||
name: "6 Cores",
|
||||
description: "",
|
||||
value: "6",
|
||||
icon: "",
|
||||
},
|
||||
{
|
||||
name: "8 Cores",
|
||||
description: "",
|
||||
value: "8",
|
||||
icon: "",
|
||||
},
|
||||
],
|
||||
required: false,
|
||||
ephemeral: false,
|
||||
},
|
||||
]
|
||||
|
||||
const cpuParameter = templateParameters[0]
|
||||
const [cpuParameterInitialValue] = selectInitialRichParametersValues(
|
||||
templateParameters,
|
||||
[{ name: cpuParameter.name, value: "100" }],
|
||||
)
|
||||
|
||||
expect(cpuParameterInitialValue.value).toBe(cpuParameter.default_value)
|
||||
})
|
||||
@@ -7,7 +7,7 @@ import * as Yup from "yup"
|
||||
|
||||
export const selectInitialRichParametersValues = (
|
||||
templateParameters?: TemplateVersionParameter[],
|
||||
defaultValuesFromQuery?: Record<string, string>,
|
||||
defaultBuildParameters?: WorkspaceBuildParameter[],
|
||||
): WorkspaceBuildParameter[] => {
|
||||
const defaults: WorkspaceBuildParameter[] = []
|
||||
if (!templateParameters) {
|
||||
@@ -19,9 +19,20 @@ export const selectInitialRichParametersValues = (
|
||||
|
||||
if (parameter.options.length > 0) {
|
||||
parameterValue = parameterValue ?? parameter.options[0].value
|
||||
const validValues = parameter.options.map((option) => option.value)
|
||||
|
||||
if (defaultValuesFromQuery && defaultValuesFromQuery[parameter.name]) {
|
||||
parameterValue = defaultValuesFromQuery[parameter.name]
|
||||
if (defaultBuildParameters) {
|
||||
const defaultBuildParameter = defaultBuildParameters.find(
|
||||
(p) => p.name === parameter.name,
|
||||
)
|
||||
|
||||
// We don't want invalid values from default parameters to be set
|
||||
if (
|
||||
defaultBuildParameter &&
|
||||
validValues.includes(defaultBuildParameter.value)
|
||||
) {
|
||||
parameterValue = defaultBuildParameter?.value
|
||||
}
|
||||
}
|
||||
|
||||
const buildParameter: WorkspaceBuildParameter = {
|
||||
@@ -36,8 +47,14 @@ export const selectInitialRichParametersValues = (
|
||||
parameterValue = parameter.default_value
|
||||
}
|
||||
|
||||
if (defaultValuesFromQuery && defaultValuesFromQuery[parameter.name]) {
|
||||
parameterValue = defaultValuesFromQuery[parameter.name]
|
||||
if (defaultBuildParameters) {
|
||||
const buildParameter = defaultBuildParameters.find(
|
||||
(p) => p.name === parameter.name,
|
||||
)
|
||||
|
||||
if (buildParameter) {
|
||||
parameterValue = buildParameter?.value
|
||||
}
|
||||
}
|
||||
|
||||
const buildParameter: WorkspaceBuildParameter = {
|
||||
|
||||
@@ -286,6 +286,6 @@ export const hasJobError = (workspace: TypesGen.Workspace) => {
|
||||
return workspace.latest_build.job.error !== undefined
|
||||
}
|
||||
|
||||
export const paramUsedToCreateWorkspace = (
|
||||
export const paramsUsedToCreateWorkspace = (
|
||||
param: TypesGen.TemplateVersionParameter,
|
||||
) => !param.ephemeral
|
||||
|
||||
Reference in New Issue
Block a user