Skip to content

feat(site): Duplicate template #6853

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Mar 30, 2023
Prev Previous commit
Next Next commit
Prefill variables
  • Loading branch information
BrunoQuaresma committed Mar 28, 2023
commit def3a368e5bf4c39c45f9c90a2e19dd3b73e219f
48 changes: 36 additions & 12 deletions site/src/pages/CreateTemplatePage/CreateTemplateForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,22 @@ const defaultInitialValues: CreateTemplateData = {
allow_user_cancel_workspace_jobs: false,
}

const getInitialValues = (
canSetMaxTTL: boolean,
{
fromExample,
fromCopy,
}: { fromExample?: TemplateExample; fromCopy?: Template },
) => {
type GetInitialValuesParams = {
fromExample?: TemplateExample
fromCopy?: Template
parameters?: ParameterSchema[]
variables?: TemplateVersionVariable[]
canSetMaxTTL: boolean
}

const getInitialValues = ({
fromExample,
fromCopy,
canSetMaxTTL,
variables,
}: GetInitialValuesParams) => {
let initialValues = defaultInitialValues

if (!canSetMaxTTL) {
initialValues = {
...initialValues,
Expand All @@ -123,7 +131,7 @@ const getInitialValues = (
}

if (fromExample) {
return {
initialValues = {
...initialValues,
name: fromExample.id,
display_name: fromExample.name,
Expand All @@ -133,14 +141,29 @@ const getInitialValues = (
}

if (fromCopy) {
return {
initialValues = {
...initialValues,
...fromCopy,
name: `${fromCopy.name}-copy`,
display_name: `${fromCopy.display_name} Copy`,
}
}

if (variables) {
variables.forEach((variable) => {
if (variable.sensitive) {
return
}
if (!initialValues.user_variable_values) {
initialValues.user_variable_values = []
}
initialValues.user_variable_values.push({
name: variable.name,
value: variable.value,
})
})
}

return initialValues
}

Expand Down Expand Up @@ -173,12 +196,13 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = ({
logs,
canSetMaxTTL,
}) => {
console.log(copiedTemplate)
const styles = useStyles()
const form = useFormik<CreateTemplateData>({
initialValues: getInitialValues(canSetMaxTTL, {
initialValues: getInitialValues({
canSetMaxTTL,
fromExample: starterTemplate,
fromCopy: copiedTemplate,
variables,
}),
validationSchema,
onSubmit,
Expand Down Expand Up @@ -383,7 +407,7 @@ export const CreateTemplateForm: FC<CreateTemplateFormProps> = ({
<FormFields>
{variables.map((variable, index) => (
<VariableInput
defaultValue={variable.value}
defaultValue={form.values.user_variable_values?.[index].value}
variable={variable}
disabled={isSubmitting}
key={variable.name}
Expand Down
14 changes: 6 additions & 8 deletions site/src/xServices/createTemplate/createTemplateXService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export const createTemplateMachine =
data: {
template: Template
version: TemplateVersion
parameters: ParameterSchema[]

variables: TemplateVersionVariable[]
}
}
Expand Down Expand Up @@ -155,7 +155,7 @@ export const createTemplateMachine =
{
target: "creating.promptParametersAndVariables",
actions: ["assignCopiedTemplateData"],
cond: "hasParametersOrVariables",
cond: "hasVariables",
},
{
target: "idle",
Expand Down Expand Up @@ -340,15 +340,14 @@ export const createTemplateMachine =
organizationId,
templateNameToCopy,
)
const [version, parameters, variables] = await Promise.all([
const [version, variables] = await Promise.all([
getTemplateVersion(template.active_version_id),
getTemplateVersionSchema(template.active_version_id),

getTemplateVersionVariables(template.active_version_id),
])
return {
template,
version,
parameters,
variables,
}
},
Expand Down Expand Up @@ -519,7 +518,6 @@ export const createTemplateMachine =
assignCopiedTemplateData: assign({
copiedTemplate: (_, { data }) => data.template,
version: (_, { data }) => data.version,
parameters: (_, { data }) => data.parameters,
variables: (_, { data }) => data.variables,
}),
},
Expand All @@ -537,8 +535,8 @@ export const createTemplateMachine =
),
hasNoParametersOrVariables: (_, { data }) =>
data.parameters === undefined && data.variables === undefined,
hasParametersOrVariables: (_, { data }) => {
return data.parameters.length > 0 || data.variables.length > 0
hasVariables: (_, { data }) => {
return data.variables.length > 0
},
},
},
Expand Down