@@ -62,34 +47,75 @@ export function TriggerConfig({
/>
)}
-
-
-
-
Vstupní parametry
-
- {editable
- ? 'Co bude na spouštěč přicházet. Podle těchto hodnot pak stavíte podmínky.'
- : 'Tato služba předává vlastní data. Parametry pro podmínky si můžete doplnit ručně.'}
-
-
-
-
+ {provided ? (
+
+ ) : (
+
+ )}
+
+ );
+}
- {trigger.fields.length === 0 ? (
-
- Zatím žádné parametry. Bez nich nelze přidat podmínku — nebylo by podle čeho
- se rozhodovat.
+/**
+ * Parametry, ktere si deklaruje uzivatel (webhook, formular).
+ * Podminky se odkazuji na `field.id`, prejmenovani je tedy nerozbije.
+ */
+function CustomFields({
+ fields,
+ editable,
+ onChange,
+}: {
+ fields: TriggerField[];
+ editable: boolean;
+ onChange: (fields: TriggerField[]) => void;
+}) {
+ function addField() {
+ onChange([...fields, { id: newFieldId(), name: '', type: 'string', required: true }]);
+ }
+
+ function updateField(id: string, patch: Partial) {
+ onChange(fields.map((f) => (f.id === id ? { ...f, ...patch } : f)));
+ }
+
+ function removeField(id: string) {
+ onChange(fields.filter((f) => f.id !== id));
+ }
+
+ const duplicates = new Set(
+ fields
+ .map((f) => f.name.trim())
+ .filter((name, index, all) => name.length > 0 && all.indexOf(name) !== index),
+ );
+
+ return (
+
+
+
+
Vstupní parametry
+
+ {editable
+ ? 'Co bude na spouštěč přicházet. Podle těchto hodnot pak stavíte podmínky.'
+ : 'Tato služba předává vlastní data. Parametry pro podmínky si můžete doplnit ručně.'}
- ) : (
-
- {trigger.fields.map((field) => {
+
+
+
+
+ {fields.length === 0 ? (
+
+ Zatím žádné parametry. Bez nich nelze přidat podmínku — nebylo by podle čeho
+ se rozhodovat.
+
+ ) : (
+
+ {fields.map((field) => {
const duplicate = field.name.trim().length > 0 && duplicates.has(field.name.trim());
return (
@@ -154,10 +180,47 @@ export function TriggerConfig({
)}
);
- })}
-
- )}
-
+ })}
+
+ )}
+
+ );
+}
+
+/**
+ * Parametry, ktere spoustec predava sam. Jen ke cteni - jsou dane katalogem
+ * a menit je z builderu by bylo mateni. Podminky se na ne odkazuji stejne
+ * jako na rucne deklarovane.
+ */
+function ProvidedFields({
+ fields,
+ serviceName,
+}: {
+ fields: TriggerField[];
+ serviceName: string;
+}) {
+ return (
+