mirror of https://github.com/portainer/portainer
fix(namespace): wait for system ns setting to load before selecting existing ns [EE-6917] (#11484)
Co-authored-by: testa113 <testa113>pull/11507/head
parent
e5f6363244
commit
5f89255d9c
|
@ -77,14 +77,12 @@ export function ApplicationsStacksDatatable({
|
||||||
namespaces={namespaces}
|
namespaces={namespaces}
|
||||||
value={namespace}
|
value={namespace}
|
||||||
onChange={onNamespaceChange}
|
onChange={onNamespaceChange}
|
||||||
showSystem={tableState.showSystemResources}
|
showSystem={showSystem}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<SystemResourceDescription
|
<SystemResourceDescription showSystemResources={showSystem} />
|
||||||
showSystemResources={tableState.showSystemResources}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,17 @@ import { InputGroup } from '@@/form-components/InputGroup';
|
||||||
|
|
||||||
import { Namespace } from './types';
|
import { Namespace } from './types';
|
||||||
|
|
||||||
function transformNamespaces(namespaces: Namespace[], showSystem: boolean) {
|
function transformNamespaces(namespaces: Namespace[], showSystem?: boolean) {
|
||||||
return namespaces
|
const transformedNamespaces = namespaces.map(({ Name, IsSystem }) => ({
|
||||||
.filter((ns) => showSystem || !ns.IsSystem)
|
|
||||||
.map(({ Name, IsSystem }) => ({
|
|
||||||
label: IsSystem ? `${Name} - system` : Name,
|
label: IsSystem ? `${Name} - system` : Name,
|
||||||
value: Name,
|
value: Name,
|
||||||
|
isSystem: IsSystem,
|
||||||
}));
|
}));
|
||||||
|
if (showSystem === undefined) {
|
||||||
|
return transformedNamespaces;
|
||||||
|
}
|
||||||
|
// only filter when showSystem is set
|
||||||
|
return transformedNamespaces.filter((ns) => showSystem || !ns.isSystem);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function NamespaceFilter({
|
export function NamespaceFilter({
|
||||||
|
@ -25,19 +29,22 @@ export function NamespaceFilter({
|
||||||
namespaces: Namespace[];
|
namespaces: Namespace[];
|
||||||
value: string;
|
value: string;
|
||||||
onChange: (value: string) => void;
|
onChange: (value: string) => void;
|
||||||
showSystem: boolean;
|
showSystem?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const transformedNamespaces = transformNamespaces(namespaces, showSystem);
|
const transformedNamespaces = transformNamespaces(namespaces, showSystem);
|
||||||
|
|
||||||
// sync value with displayed namespaces
|
// sync value with displayed namespaces
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const names = transformedNamespaces.map((ns) => ns.value);
|
const names = transformedNamespaces.map((ns) => ns.value);
|
||||||
if (value && !names.find((ns) => ns === value)) {
|
const isSelectedNamespaceFound = names.some((ns) => ns === value);
|
||||||
onChange(
|
if (value && !isSelectedNamespaceFound) {
|
||||||
names.length > 0 ? names.find((ns) => ns === 'default') || names[0] : ''
|
const newNamespaceValue =
|
||||||
);
|
names.length > 0
|
||||||
|
? names.find((ns) => ns === 'default') || names[0]
|
||||||
|
: '';
|
||||||
|
onChange(newNamespaceValue);
|
||||||
}
|
}
|
||||||
}, [value, onChange, transformedNamespaces]);
|
}, [value, onChange, transformedNamespaces, showSystem]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<InputGroup>
|
<InputGroup>
|
||||||
|
|
|
@ -3,11 +3,11 @@ import { Authorized } from '@/react/hooks/useUser';
|
||||||
import { TextTip } from '@@/Tip/TextTip';
|
import { TextTip } from '@@/Tip/TextTip';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
showSystemResources: boolean;
|
showSystemResources?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SystemResourceDescription({ showSystemResources }: Props) {
|
export function SystemResourceDescription({ showSystemResources }: Props) {
|
||||||
return !showSystemResources ? (
|
return showSystemResources === false ? (
|
||||||
<Authorized authorizations="K8sAccessSystemNamespaces" adminOnlyCE>
|
<Authorized authorizations="K8sAccessSystemNamespaces" adminOnlyCE>
|
||||||
<TextTip color="blue" className="!mb-0">
|
<TextTip color="blue" className="!mb-0">
|
||||||
System resources are hidden, this can be changed in the table settings
|
System resources are hidden, this can be changed in the table settings
|
||||||
|
|
Loading…
Reference in New Issue