pass through disabled

This commit is contained in:
mbecker20
2024-04-21 02:07:31 -07:00
parent 3123d021d9
commit 7a2044b395
6 changed files with 69 additions and 26 deletions

View File

@@ -44,6 +44,7 @@ enum ReadRequest {
GetUsername(GetUsername),
ListApiKeys(ListApiKeys),
ListPermissions(ListPermissions),
GetPermissionLevel(GetPermissionLevel),
ListUserPermissions(ListUserPermissions),
// ==== USER GROUP ====

View File

@@ -17,7 +17,7 @@ export type ReadResponses = {
GetUsername: Types.GetUsernameResponse;
ListApiKeys: Types.ListApiKeysResponse;
ListPermissions: Types.ListPermissionsResponse;
GetPermissionLevel: Types.GetPermissionLevel;
GetPermissionLevel: Types.GetPermissionLevelResponse;
ListUserPermissions: Types.ListUserPermissionsResponse;
// ==== USER GROUP ====

View File

@@ -2123,6 +2123,7 @@ export type ReadRequest =
| { type: "GetUsername", params: GetUsername }
| { type: "ListApiKeys", params: ListApiKeys }
| { type: "ListPermissions", params: ListPermissions }
| { type: "GetPermissionLevel", params: GetPermissionLevel }
| { type: "ListUserPermissions", params: ListUserPermissions }
| { type: "GetUserGroup", params: GetUserGroup }
| { type: "ListUserGroups", params: ListUserGroups }

View File

@@ -12,10 +12,12 @@ export const NetworkModeSelector = ({
server_id,
selected,
onSelect,
disabled,
}: {
server_id: string | undefined;
selected: string | undefined;
onSelect: (type: string) => void;
disabled: boolean;
}) => {
const networks = useRead(
"GetDockerNetworks",
@@ -25,13 +27,21 @@ export const NetworkModeSelector = ({
return (
<ConfigItem label="Network Mode">
<Select value={selected || undefined} onValueChange={onSelect}>
<SelectTrigger className="max-w-[150px]">
<Select
value={selected || undefined}
onValueChange={onSelect}
disabled={disabled}
>
<SelectTrigger className="max-w-[150px]" disabled={disabled}>
<SelectValue placeholder="Select Type" />
</SelectTrigger>
<SelectContent>
{networks?.map((network) => (
<SelectItem key={network.Id} value={network.Name ?? ""} className="cursor-pointer">
<SelectItem
key={network.Id}
value={network.Name ?? ""}
className="cursor-pointer"
>
{network.Name}
</SelectItem>
))}

View File

@@ -17,9 +17,11 @@ import { useEffect, useState } from "react";
export const DefaultTerminationSignal = ({
arg,
set,
disabled,
}: {
arg?: Types.TerminationSignal;
set: (input: Partial<Types.DeploymentConfig>) => void;
disabled: boolean;
}) => {
return (
<ConfigItem label="Default Termination Signal">
@@ -28,8 +30,9 @@ export const DefaultTerminationSignal = ({
onValueChange={(value) =>
set({ termination_signal: value as Types.TerminationSignal })
}
disabled={disabled}
>
<SelectTrigger className="w-[200px]">
<SelectTrigger className="w-[200px]" disabled={disabled}>
<SelectValue placeholder="Select Type" />
</SelectTrigger>
<SelectContent>
@@ -55,9 +58,11 @@ export const DefaultTerminationSignal = ({
export const TerminationTimeout = ({
arg,
set,
disabled,
}: {
arg: number;
set: (input: Partial<Types.DeploymentConfig>) => void;
disabled: boolean;
}) => {
const { toast } = useToast();
const [input, setInput] = useState(arg.toString());
@@ -81,6 +86,7 @@ export const TerminationTimeout = ({
setInput(arg.toString());
}
}}
disabled={disabled}
/>
seconds
</div>
@@ -91,9 +97,11 @@ export const TerminationTimeout = ({
export const TermSignalLabels = ({
args,
set,
disabled,
}: {
args: Types.TerminationSignalLabel[];
set: (input: Partial<Types.DeploymentConfig>) => void;
disabled: boolean;
}) => {
const signals = Object.values(Types.TerminationSignal)
.filter((signal) => args.every((arg) => arg.signal !== signal))
@@ -113,6 +121,7 @@ export const TermSignalLabels = ({
),
})
}
disabled={disabled}
/>
<Select
@@ -126,8 +135,9 @@ export const TermSignalLabels = ({
),
})
}
disabled={disabled}
>
<SelectTrigger className="w-[200px]">
<SelectTrigger className="w-[200px]" disabled={disabled}>
{label.signal}
</SelectTrigger>
<SelectContent>
@@ -145,21 +155,23 @@ export const TermSignalLabels = ({
</SelectContent>
</Select>
<Button
variant="outline"
size="icon"
onClick={() =>
set({
term_signal_labels: args.filter((_, index) => i !== index),
})
}
className="p-2"
>
<MinusCircle className="w-4 h-4" />
</Button>
{!disabled && (
<Button
variant="outline"
size="icon"
onClick={() =>
set({
term_signal_labels: args.filter((_, index) => i !== index),
})
}
className="p-2"
>
<MinusCircle className="w-4 h-4" />
</Button>
)}
</div>
))}
{signals.length > 0 && (
{!disabled && signals.length > 0 && (
<Button
className="justify-self-end p-2"
variant="outline"

View File

@@ -38,7 +38,9 @@ export const ServerSelector = ({
);
export const DeploymentConfig = ({ id }: { id: string }) => {
// const perms = useRead("ListPerm")
const perms = useRead("GetPermissionLevel", {
target: { type: "Deployment", id },
}).data;
const config = useRead("GetDeployment", { deployment: id }).data?.config;
const [update, set] = useState<Partial<Types.DeploymentConfig>>({});
const { mutate } = useWrite("UpdateDeployment");
@@ -51,8 +53,11 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
? config.network !== "host"
: false;
const disabled = perms !== Types.PermissionLevel.Write;
return (
<Config
disabled={disabled}
config={config}
update={update}
set={set}
@@ -65,7 +70,9 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
),
},
container: {
image: (value, set) => <ImageConfig image={value} set={set} />,
image: (value, set) => (
<ImageConfig image={value} set={set} disabled={disabled} />
),
docker_account: (value, set) => (
<AccountSelector
id={update.server_id ?? config.server_id}
@@ -73,16 +80,22 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
type="Server"
selected={value}
onSelect={(docker_account) => set({ docker_account })}
disabled={disabled}
/>
),
restart: (value, set) => (
<RestartModeSelector selected={value} set={set} />
<RestartModeSelector
selected={value}
set={set}
disabled={disabled}
/>
),
process_args: (value, set) => (
<ConfigInput
label="Process Args"
value={value}
onChange={(process_args) => set({ process_args })}
disabled={disabled}
/>
),
network: (value, set) => (
@@ -90,6 +103,7 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
server_id={update.server_id ?? config.server_id}
selected={value}
onSelect={(network) => set({ network })}
disabled={disabled}
/>
),
ports: (value, set) =>
@@ -97,7 +111,7 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
volumes: (v, set) => <VolumesConfig volumes={v ?? []} set={set} />,
labels: (l, set) => <LabelsConfig labels={l ?? []} set={set} />,
extra_args: (value, set) => (
<ExtraArgs args={value ?? []} set={set} />
<ExtraArgs args={value ?? []} set={set} disabled={disabled} />
),
},
settings: {
@@ -113,6 +127,7 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
vars={vars ?? []}
set={set}
server={update.server_id || config.server_id}
disabled={disabled}
/>
),
skip_secret_interp: true,
@@ -121,13 +136,17 @@ export const DeploymentConfig = ({ id }: { id: string }) => {
termination: {
termination: {
termination_signal: (value, set) => (
<DefaultTerminationSignal arg={value} set={set} />
<DefaultTerminationSignal
arg={value}
set={set}
disabled={disabled}
/>
),
termination_timeout: (value, set) => (
<TerminationTimeout arg={value} set={set} />
<TerminationTimeout arg={value} set={set} disabled={disabled} />
),
term_signal_labels: (value, set) => (
<TermSignalLabels args={value} set={set} />
<TermSignalLabels args={value} set={set} disabled={disabled} />
),
},
},