/* eslint-disable import/no-named-as-default */ import React from 'react'; import usePopover from '../../_hooks/use-popover'; import { LeftSidebarItem } from './SidebarItem'; import { DataSourceManager } from '../DataSourceManager'; import { DataSourceTypes } from '../DataSourceManager/SourceComponents'; import OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger'; import Tooltip from 'react-bootstrap/esm/Tooltip'; import { getSvgIcon } from '@/_helpers/appUtils'; import { datasourceService } from '@/_services'; import { ConfirmDialog } from '@/_components'; import toast from 'react-hot-toast'; export const LeftSidebarDataSources = ({ appId, editingVersionId, darkMode, dataSources = [], dataSourcesChanged, dataQueriesChanged, toggleDataSourceManagerModal, showDataSourceManagerModal, }) => { const [open, trigger, content] = usePopover(false); const [selectedDataSource, setSelectedDataSource] = React.useState(null); const [isDeleteModalVisible, setDeleteModalVisibility] = React.useState(false); const [isDeletingDatasource, setDeletingDatasource] = React.useState(false); const deleteDataSource = (selectedSource) => { setSelectedDataSource(selectedSource); setDeleteModalVisibility(true); }; const executeDataSourceDeletion = () => { setDeleteModalVisibility(false); setDeletingDatasource(true); datasourceService .deleteDataSource(selectedDataSource.id) .then(() => { toast.success('Data Source Deleted'); setDeletingDatasource(false); setSelectedDataSource(null); dataSourcesChanged(); dataQueriesChanged(); }) .catch(({ error }) => { setDeletingDatasource(false); setSelectedDataSource(null); toast.error(error); }); }; const cancelDeleteDataSource = () => { setDeleteModalVisibility(false); setSelectedDataSource(null); }; const renderDataSource = (dataSource, idx) => { const sourceMeta = DataSourceTypes.find((source) => source.kind === dataSource.kind); return (
{ setSelectedDataSource(dataSource); toggleDataSourceManagerModal(true); }} className="col" > {getSvgIcon(sourceMeta.kind.toLowerCase(), 25, 25)} {dataSource.name}
); }; return ( <> executeDataSourceDeletion()} onCancel={() => cancelDeleteDataSource()} darkMode={darkMode} />
{ setSelectedDataSource(null); toggleDataSourceManagerModal(false); }} editingVersionId={editingVersionId} dataSourcesChanged={dataSourcesChanged} selectedDataSource={selectedDataSource} /> ); }; const LeftSidebarDataSourcesContainer = ({ renderDataSource, dataSources = [], toggleDataSourceManagerModal }) => { return (
Data sources
{'Add datasource'}} >
{dataSources.length === 0 ? (
toggleDataSourceManagerModal(true)} className="p-2 color-primary cursor-pointer"> + add data source
) : (
{dataSources?.map((source, idx) => renderDataSource(source, idx))}
)}
); }; LeftSidebarDataSources.Container = LeftSidebarDataSourcesContainer;