add new builder selection config

This commit is contained in:
karamvir
2023-08-06 22:23:12 -07:00
parent 9a89b82f83
commit c72050d329

View File

@@ -2,7 +2,7 @@ import { Configuration } from "@components/config";
import { useRead, useWrite } from "@hooks"; import { useRead, useWrite } from "@hooks";
import { Section } from "@layouts/page"; import { Section } from "@layouts/page";
import { Types } from "@monitor/client"; import { Types } from "@monitor/client";
import { ServersSelector } from "@resources/deployment/config"; // import { ServersSelector } from "@resources/deployment/config";
import { Button } from "@ui/button"; import { Button } from "@ui/button";
import { Input } from "@ui/input"; import { Input } from "@ui/input";
import { import {
@@ -103,23 +103,23 @@ const EnvVars = ({
</div> </div>
); );
const BuilderTypeSelector = ({ // const BuilderTypeSelector = ({
selected, // selected,
onSelect, // onSelect,
}: { // }: {
selected: Types.BuildBuilderConfig["type"] | undefined; // selected: string | undefined;
onSelect: (type: Types.BuildBuilderConfig["type"]) => void; // onSelect: (id: string) => void;
}) => ( // }) => (
<Select value={selected || undefined} onValueChange={onSelect}> // <Select value={selected || undefined} onValueChange={onSelect}>
<SelectTrigger className="max-w-[150px]"> // <SelectTrigger className="max-w-[150px]">
<SelectValue placeholder="Select Type" /> // <SelectValue placeholder="Select Type" />
</SelectTrigger> // </SelectTrigger>
<SelectContent> // <SelectContent>
<SelectItem value={"Builder"}>Builder</SelectItem> // <SelectItem value={"Builder"}>Builder</SelectItem>
<SelectItem value={"Server"}>Server</SelectItem> // <SelectItem value={"Server"}>Server</SelectItem>
</SelectContent> // </SelectContent>
</Select> // </Select>
); // );
const BuilderSelector = ({ const BuilderSelector = ({
selected, selected,
@@ -145,49 +145,49 @@ const BuilderSelector = ({
); );
}; };
const BuilderConfig = ({ // const BuilderConfig = ({
builder, // builder,
set, // set,
}: { // }: {
builder: Types.BuildBuilderConfig | undefined; // builder: Types.BuildBuilderConfig | undefined;
set: (input: Partial<Types.BuildConfig>) => void; // set: (input: Partial<Types.BuildConfig>) => void;
}) => ( // }) => (
<div className="flex justify-between items-center border-b pb-4 min-h-[40px]"> // <div className="flex justify-between items-center border-b pb-4 min-h-[40px]">
<div>Builder</div> // <div>Builder</div>
<div className="flex gap-4 w-full justify-end"> // <div className="flex gap-4 w-full justify-end">
<BuilderTypeSelector // <BuilderTypeSelector
selected={builder?.type} // selected={builder?.type}
onSelect={(type) => // onSelect={(type) =>
set({ // set({
builder: { // builder: {
type: type as any, // type: type as any,
params: // params:
type === "Server" // type === "Server"
? ({ server_id: "" } as any) // ? ({ server_id: "" } as any)
: { builder_id: "" }, // : { builder_id: "" },
}, // },
}) // })
} // }
/> // />
{builder?.type === "Server" && ( // {builder?.type === "Server" && (
<ServersSelector // <ServersSelector
selected={builder.params.server_id} // selected={builder.params.server_id}
onSelect={(server_id) => // onSelect={(server_id) =>
set({ builder: { ...builder, params: { server_id } } }) // set({ builder: { ...builder, params: { server_id } } })
} // }
/> // />
)} // )}
{builder?.type === "Builder" && ( // {builder?.type === "Builder" && (
<BuilderSelector // <BuilderSelector
selected={builder.params.builder_id} // selected={builder.params.builder_id}
onSelect={(builder_id) => // onSelect={(builder_id) =>
set({ builder: { ...builder, params: { builder_id } } }) // set({ builder: { ...builder, params: { builder_id } } })
} // }
/> // />
)} // )}
</div> // </div>
</div> // </div>
); // );
export const BuildConfig = () => { export const BuildConfig = () => {
const id = useParams().buildId; const id = useParams().buildId;
@@ -222,7 +222,7 @@ export const BuildConfig = () => {
update={update} update={update}
set={(input) => set((update) => ({ ...update, ...input }))} set={(input) => set((update) => ({ ...update, ...input }))}
layout={{ layout={{
general: ["builder"], general: ["builder_id"],
repo: ["repo", "branch", "github_account"], repo: ["repo", "branch", "github_account"],
docker: [ docker: [
"build_path", "build_path",
@@ -238,8 +238,11 @@ export const BuildConfig = () => {
overrides={{ overrides={{
build_args: (args, set) => <EnvVars vars={args} set={set} />, build_args: (args, set) => <EnvVars vars={args} set={set} />,
extra_args: (args, set) => <ExtraArgs args={args} set={set} />, extra_args: (args, set) => <ExtraArgs args={args} set={set} />,
builder: (builder, set) => ( builder_id: (id, set) => (
<BuilderConfig builder={builder} set={set} /> <BuilderSelector
selected={id}
onSelect={(builder_id) => set({ builder_id })}
/>
), ),
}} }}
/> />