import React, { useState, useEffect } from 'react'; import Plus from '@/_ui/Icon/solidIcons/Plus'; import Information from '@/_ui/Icon/solidIcons/Information'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { getWorkspaceId, decodeEntities } from '@/_helpers/utils'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import { SearchBox as SearchBox2 } from '@/_components/SearchBox'; import DataSourceIcon from './DataSourceIcon'; import { isEmpty } from 'lodash'; import { Col, Container, Row } from 'react-bootstrap'; import { useDataQueriesActions } from '@/_stores/dataQueriesStore'; import { useQueryPanelActions } from '@/_stores/queryPanelStore'; import { Tooltip } from 'react-tooltip'; import { authenticationService } from '@/_services'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import '../queryManager.theme.scss'; function DataSourcePicker({ dataSources, sampleDataSource, staticDataSources, darkMode, globalDataSources }) { const allUserDefinedSources = [...dataSources, ...globalDataSources]; const [searchTerm, setSearchTerm] = useState(); const [filteredUserDefinedDataSources, setFilteredUserDefinedDataSources] = useState(allUserDefinedSources); const navigate = useNavigate(); const { createDataQuery } = useDataQueriesActions(); const { setPreviewData } = useQueryPanelActions(); const { admin } = authenticationService.currentSessionValue; const docLink = 'sampledb.com'; const handleChangeDataSource = (source) => { createDataQuery(source); setPreviewData(null); }; useEffect(() => { if (searchTerm) { const formattedSearchTerm = searchTerm.toLowerCase(); const filteredResults = allUserDefinedSources.filter( ({ name, kind }) => name.toLowerCase().includes(formattedSearchTerm) || kind.toLowerCase().includes(formattedSearchTerm) ); setFilteredUserDefinedDataSources(filteredResults); } else { setFilteredUserDefinedDataSources(allUserDefinedSources); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [searchTerm, globalDataSources, dataSources]); const handleAddClick = () => { const workspaceId = getWorkspaceId(); navigate(`/${workspaceId}/data-sources`); }; return ( <>
Select a Data source to start creating a new query. To know more about queries in ToolJet, you can read our documentation
This is a shared resource and may show varying data due to real-time updates. It's reset daily
for some consistency, but please note it's designed for user exploration, not production
use.
Explore available data sources
{' '}