diff --git a/src/routes/docker/compose-builder.tsx b/src/routes/docker/compose-builder.tsx index 79ecb22..c2809cc 100644 --- a/src/routes/docker/compose-builder.tsx +++ b/src/routes/docker/compose-builder.tsx @@ -933,16 +933,19 @@ function App() { : [], user: actualServiceData.user || "", working_dir: actualServiceData.working_dir || "", - labels: actualServiceData.labels - ? Array.isArray(actualServiceData.labels) - ? actualServiceData.labels.map((l: string) => { - const [key, ...rest] = l.split("="); - return { key, value: rest.join("=") }; - }) - : Object.entries(actualServiceData.labels).map( + labels: Array.isArray(actualServiceData.labels) + ? actualServiceData.labels.map((l: string) => { + const [key, ...rest] = l.split("="); + return { key, value: rest.join("=") }; + }) + : actualServiceData.labels && typeof actualServiceData.labels === "object" + ? Object.entries(actualServiceData.labels).map( ([key, value]: [string, any]) => ({ key, value: String(value) }) ) - : [], + : [], + labels_syntax: Array.isArray(actualServiceData.labels) + ? "array" + : "dict", privileged: actualServiceData.privileged !== undefined ? !!actualServiceData.privileged @@ -3274,7 +3277,42 @@ function App() { {/* Labels */}
- +
+
+ +
+
+ + Syntax: + + + updateServiceField( + "labels_syntax", + pressed ? "array" : "dict" + ) + } + aria-label="Array syntax" + className="border rounded px-2 py-1 text-xs" + > + Array + + + updateServiceField( + "labels_syntax", + pressed ? "dict" : "array" + ) + } + aria-label="Dictionary syntax" + className="border rounded px-2 py-1 text-xs" + > + Dict + +
+
{svc.labels?.map((label, idx) => (
l.key).length - ? svc.labels + ? svc.labels_syntax === "dict" + ? svc.labels + .filter(({ key }) => key) + .reduce( + (acc, { key, value }) => { + acc[key] = value; + return acc; + }, + {} as Record + ) + : svc.labels .filter((l) => l.key) - .map(({ key, value }) => `"${key}=${value}"`) - : undefined, + .map(({ key, value}) => `"${key}=${value}"`) + :undefined, privileged: svc.privileged !== undefined ? svc.privileged : undefined, read_only: svc.read_only !== undefined ? svc.read_only : undefined, shm_size: svc.shm_size || undefined,