From bf4916b4477322bc8639633c908b233ab3033262 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Fri, 29 May 2026 00:13:47 +0200
Subject: [PATCH] add sendToChat button to SourcesTab for mobile usage
Co-authored-by: Cursor
---
src/components/UnifiedDataBar/SourcesTab.tsx | 30 +++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/src/components/UnifiedDataBar/SourcesTab.tsx b/src/components/UnifiedDataBar/SourcesTab.tsx
index dc2af8e..5c241e6 100644
--- a/src/components/UnifiedDataBar/SourcesTab.tsx
+++ b/src/components/UnifiedDataBar/SourcesTab.tsx
@@ -15,7 +15,9 @@
import React, { useCallback, useMemo, useState } from 'react';
import type { UdbContext } from './UnifiedDataBar';
import { FormGeneratorTree } from '../FormGenerator/FormGeneratorTree';
+import type { TreeNode } from '../FormGenerator/FormGeneratorTree';
import { createUdbSourcesProvider } from './UdbSourcesProvider';
+import type { UdbBackendNode } from './UdbSourcesProvider';
import { DataSourceSettingsModal } from './DataSourceSettingsModal';
import { useLanguage } from '../../providers/language/LanguageContext';
@@ -29,7 +31,11 @@ interface SourcesTabProps {
onAttachDataSource?: (dsId: string) => void;
}
-const SourcesTab: React.FC = ({ context }) => {
+const SourcesTab: React.FC = ({
+ context,
+ onSendToChat_FeatureSource,
+ onAttachDataSource,
+}) => {
const { t } = useLanguage();
const instanceId = context.instanceId;
@@ -42,6 +48,27 @@ const SourcesTab: React.FC = ({ context }) => {
setSettingsModal({ dataSourceId, title: label });
}, []);
+ const _handleSendToChat = useCallback((node: TreeNode) => {
+ const data = node.data;
+ if (!data) return;
+
+ if (data.kind === 'featureNode' || data.kind === 'fdsTable' || data.kind === 'fdsRecord') {
+ const tableName = data.tableName || (data.kind === 'featureNode' ? '*' : '');
+ const objectKey = data.objectKey
+ || (data.kind === 'featureNode' ? `data.feature.${data.featureCode}.*` : '');
+ onSendToChat_FeatureSource?.({
+ featureInstanceId: data.featureInstanceId || '',
+ featureCode: data.featureCode || '',
+ tableName,
+ objectKey,
+ label: data.label,
+ });
+ } else if (data.kind === 'connection' || data.kind === 'service'
+ || data.kind === 'folder' || data.kind === 'file') {
+ onAttachDataSource?.(data.connectionId || data.key);
+ }
+ }, [onSendToChat_FeatureSource, onAttachDataSource]);
+
const provider = useMemo(
() => instanceId
? createUdbSourcesProvider(instanceId, _handleOpenSettings)
@@ -68,6 +95,7 @@ const SourcesTab: React.FC = ({ context }) => {
selectable={false}
allowCreateFolder={false}
emptyMessage={t('Keine Datenquellen.')}
+ onSendToChat={_handleSendToChat}
/>