Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -285,10 +285,20 @@ function StepFields({
onPatternCreated?: (p: RegexPattern) => void
onChange: (config: Record<string, unknown>) => void
}) {
const { t } = useTranslation()
const set = (key: string, val: unknown) => onChange({ ...config, [key]: val })
const str = (key: string) => (typeof config[key] === 'string' ? (config[key] as string) : '')
const list = (key: string) =>
Array.isArray(config[key]) ? (config[key] as unknown[]).map((x) => String(x)) : []
const obj = (key: string): Record<string, unknown> =>
config[key] && typeof config[key] === 'object' && !Array.isArray(config[key])
? (config[key] as Record<string, unknown>)
: {}
const objStr = (key: string, sub: string) => {
const v = obj(key)[sub]
return typeof v === 'string' ? v : ''
}
const setObj = (key: string, sub: string, val: string) => set(key, { ...obj(key), [sub]: val })

switch (kind) {
case 'grok':
Expand Down Expand Up @@ -335,7 +345,13 @@ function StepFields({
return (
<>
<TextField label="function" required value={str('function')} readOnly={readOnly} onChange={(v) => set('function', v)} />
<ListField label="params" values={list('params')} readOnly={readOnly} onChange={(v) => set('params', v)} />
<div className="space-y-1.5 rounded-md border border-border/60 bg-background/30 p-2">
<div className="font-mono text-[11px] text-foreground/70">{t('parsingFilters.visual.parameters')}</div>
<div className="grid grid-cols-2 gap-3">
<TextField label={t('parsingFilters.visual.paramsKey')} required value={objStr('params', 'key')} readOnly={readOnly} onChange={(v) => setObj('params', 'key', v)} />
<TextField label={t('parsingFilters.visual.paramsValue')} required value={objStr('params', 'value')} readOnly={readOnly} onChange={(v) => setObj('params', 'value', v)} />
</div>
</div>
<WhereField value={str('where')} readOnly={readOnly} onChange={(v) => set('where', v)} />
</>
)
Expand Down Expand Up @@ -399,7 +415,7 @@ function WhereField({
)
}

/** Editable list of strings (rename.from, add.params). */
/** Editable list of strings (rename.from). */
function ListField({
label,
values,
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/features/parsing-filters/lib/filter-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ function pruneEmpty(config: Record<string, unknown>): Record<string, unknown> {
if (v == null) continue
if (typeof v === 'string' && v.trim() === '') continue
if (Array.isArray(v) && v.length === 0) continue
if (isRecord(v) && Object.keys(v).length === 0) continue
out[k] = v
}
return out
Expand All @@ -137,7 +138,7 @@ export function emptyStep(kind: StepKind): Step {
case 'rename':
return { kind, config: { to: '', from: [] } }
case 'add':
return { kind, config: { function: '', params: [] } }
return { kind, config: { function: 'string', params: {} } }
case 'drop':
return { kind, config: {} }
default:
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -4455,7 +4455,10 @@
"patternCreated": "Muster „{{name}}“ erstellt",
"patternCreateError": "Muster konnte nicht erstellt werden",
"patternIdInvalid": "Die Muster-ID muss mit einem Buchstaben oder _ beginnen und nur Buchstaben, Ziffern oder _ verwenden",
"patternDefRequired": "Definition ist erforderlich"
"patternDefRequired": "Definition ist erforderlich",
"parameters": "Parameter",
"paramsKey": "Schlüssel",
"paramsValue": "Wert"
},
"allDataTypes": "Alle Datentypen"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -4415,7 +4415,10 @@
"patternCreated": "Pattern \"{{name}}\" created",
"patternCreateError": "Failed to create pattern",
"patternIdInvalid": "Pattern ID must start with a letter or _ and use only letters, digits or _",
"patternDefRequired": "Definition is required"
"patternDefRequired": "Definition is required",
"parameters": "Parameters",
"paramsKey": "Key",
"paramsValue": "Value"
},
"allDataTypes": "All data types"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -4339,7 +4339,10 @@
"patternCreated": "Patrón \"{{name}}\" creado",
"patternCreateError": "No se pudo crear el patrón",
"patternIdInvalid": "El ID debe empezar con letra o _ y usar solo letras, dígitos o _",
"patternDefRequired": "La definición es obligatoria"
"patternDefRequired": "La definición es obligatoria",
"parameters": "Parámetros",
"paramsKey": "Clave",
"paramsValue": "Valor"
},
"allDataTypes": "Todos los tipos de dato"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -4455,7 +4455,10 @@
"patternCreated": "Motif « {{name}} » créé",
"patternCreateError": "Échec de la création du motif",
"patternIdInvalid": "L'ID du motif doit commencer par une lettre ou _ et n'utiliser que des lettres, chiffres ou _",
"patternDefRequired": "La définition est requise"
"patternDefRequired": "La définition est requise",
"parameters": "Paramètres",
"paramsKey": "Clé",
"paramsValue": "Valeur"
},
"allDataTypes": "Tous les types de données"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -4455,7 +4455,10 @@
"patternCreated": "Pattern \"{{name}}\" creato",
"patternCreateError": "Creazione del pattern non riuscita",
"patternIdInvalid": "L'ID del pattern deve iniziare con una lettera o _ e usare solo lettere, cifre o _",
"patternDefRequired": "La definizione è obbligatoria"
"patternDefRequired": "La definizione è obbligatoria",
"parameters": "Parametri",
"paramsKey": "Chiave",
"paramsValue": "Valore"
},
"allDataTypes": "Tutti i tipi di dati"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -4339,7 +4339,10 @@
"patternCreated": "Padrão \"{{name}}\" criado",
"patternCreateError": "Falha ao criar o padrão",
"patternIdInvalid": "O ID deve começar com letra ou _ e usar apenas letras, dígitos ou _",
"patternDefRequired": "A definição é obrigatória"
"patternDefRequired": "A definição é obrigatória",
"parameters": "Parâmetros",
"paramsKey": "Chave",
"paramsValue": "Valor"
},
"allDataTypes": "Todos os tipos de dado"
},
Expand Down
5 changes: 4 additions & 1 deletion frontend/src/shared/i18n/locales/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -4265,7 +4265,10 @@
"patternCreated": "Шаблон «{{name}}» создан",
"patternCreateError": "Не удалось создать шаблон",
"patternIdInvalid": "ID шаблона должен начинаться с буквы или _ и содержать только буквы, цифры или _",
"patternDefRequired": "Определение обязательно"
"patternDefRequired": "Определение обязательно",
"parameters": "Параметры",
"paramsKey": "Ключ",
"paramsValue": "Значение"
},
"allDataTypes": "Все типы данных"
},
Expand Down
Loading