Sfoglia il codice sorgente

refac/fix: valves array type handling

Co-Authored-By: Jacob Leksan <63938553+jmleksan@users.noreply.github.com>
Timothy Jaeryang Baek 4 mesi fa
parent
commit
53cd660de7

+ 13 - 4
src/lib/components/common/Valves.svelte

@@ -27,10 +27,19 @@
 					class="p-1 px-3 text-xs flex rounded-sm transition"
 					type="button"
 					on:click={() => {
-						valves[property] =
-							(valves[property] ?? null) === null
-								? (valvesSpec.properties[property]?.default ?? '')
-								: null;
+						const propertySpec = valvesSpec.properties[property] ?? {};
+
+						if ((valves[property] ?? null) === null) {
+							// Initialize to custom value
+							if ((propertySpec?.type ?? null) === 'array') {
+								const defaultArray = propertySpec?.default ?? [];
+								valves[property] = Array.isArray(defaultArray) ? defaultArray.join(', ') : '';
+							} else {
+								valves[property] = propertySpec?.default ?? '';
+							}
+						} else {
+							valves[property] = null;
+						}
 
 						dispatch('change');
 					}}

+ 15 - 3
src/lib/components/workspace/common/ValvesModal.svelte

@@ -52,7 +52,14 @@
 			// Convert string to array
 			for (const property in valvesSpec.properties) {
 				if (valvesSpec.properties[property]?.type === 'array') {
-					valves[property] = (valves[property] ?? '').split(',').map((v) => v.trim());
+					if (typeof valves[property] === 'string') {
+						valves[property] = (valves[property] ?? '')
+							.split(',')
+							.map((v) => v.trim())
+							.filter((v) => v.length > 0);
+					} else if (valves[property] == null) {
+						valves[property] = null;
+					}
 				}
 			}
 
@@ -120,10 +127,15 @@
 			}
 
 			if (valvesSpec) {
-				// Convert array to string
 				for (const property in valvesSpec.properties) {
 					if (valvesSpec.properties[property]?.type === 'array') {
-						valves[property] = (valves[property] ?? []).join(',');
+						if (valves[property] != null) {
+							valves[property] = (Array.isArray(valves[property]) ? valves[property] : []).join(
+								','
+							);
+						} else {
+							valves[property] = null;
+						}
 					}
 				}
 			}