portainer/app/react/docker/containers/ItemView/ContainerDetailsSection/EnvironmentVariablesRow.tsx

47 lines
1.1 KiB
TypeScript

import { DetailsTable } from '@@/DetailsTable';
interface EnvironmentVariablesRowProps {
variables: Array<string> | undefined;
}
export function EnvironmentVariablesRow({
variables,
}: EnvironmentVariablesRowProps) {
if (!variables || variables?.length === 0) {
return null;
}
const sortedEnv = [...variables].sort((a, b) =>
a.toLowerCase().localeCompare(b.toLowerCase())
);
return (
<DetailsTable.Row label="ENV">
<table className="table table-bordered table-condensed !m-0">
<tbody>
{sortedEnv.map((envVar, index) => {
const { key, value } = parseEnvVariable(envVar);
return (
<tr key={index}>
<td>{key}</td>
<td>{value}</td>
</tr>
);
})}
</tbody>
</table>
</DetailsTable.Row>
);
}
function parseEnvVariable(envVar: string): { key: string; value: string } {
const index = envVar.indexOf('=');
if (index === -1) {
return { key: envVar, value: '' };
}
return {
key: envVar.substring(0, index),
value: envVar.substring(index + 1),
};
}