feat(N2): Dynamischer Scope-Editor — WorkspaceScopeEditor ersetzt JSON-Textarea (#366)
- WorkspaceScopeEditor.tsx: generisches Filter-UI aus /scope-definitions (multiselect mit value_source-Fetch, select mit Keine-Einschränkung-Placeholder, toggle) — WidgetSettingsForm-Philosophie - resolveScopeItems: Wertequellen-Auflösung (items-Wrapper, Root-Listen, DMS-Ordner-Baum-Flattening), nie-crashend - Hooks: useWorkspaceScopeDefinitions + useScopeValues (TanStack Query, staleTime 60s) - WorkspaceManager: JSON-Textarea entfernt, Scope-Editor inline pro sichtbarem Modul, Speicherung in workspace_modules.config - i18n: workspaces.scopeEditor.* 5 Keys de/en (Security-Invariante im UI: nichts ausgewählt = keine Einschränkung) - Tests: 21/21 (TDD rot 4→grün), tsc clean, Production-Build OK
This commit is contained in:
@@ -1595,5 +1595,14 @@
|
||||
"noBlocks": "KI hat keine gültigen Blöcke vorgeschlagen",
|
||||
"failed": "KI-Vorschlag fehlgeschlagen"
|
||||
}
|
||||
},
|
||||
"workspaces": {
|
||||
"scopeEditor": {
|
||||
"hint": "Nichts ausgewählt = keine Einschränkung. Filter können nur einschränken, nie erweitern.",
|
||||
"noRestriction": "Keine Einschränkung",
|
||||
"noDimensions": "Für dieses Modul sind keine Filter verfügbar.",
|
||||
"noValues": "Keine Werte verfügbar",
|
||||
"loadError": "Werte konnten nicht geladen werden"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1595,5 +1595,14 @@
|
||||
"noBlocks": "AI did not suggest valid blocks",
|
||||
"failed": "AI suggestion failed"
|
||||
}
|
||||
},
|
||||
"workspaces": {
|
||||
"scopeEditor": {
|
||||
"hint": "Nothing selected = no restriction. Filters can only restrict, never extend.",
|
||||
"noRestriction": "No restriction",
|
||||
"noDimensions": "No filters available for this module.",
|
||||
"noValues": "No values available",
|
||||
"loadError": "Failed to load values"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user