import React, { useState } from 'react'; import { observer } from 'mobx-react-lite'; import { useTranslation } from 'react-i18next'; import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'; import { DemoDataAssets, PUBLIC_DATA_LIST, IPublicData } from '../config'; import { classNames } from '../../utils'; import Spinner from '../../components/spinner'; import { CommonStore } from '../../store/commonStore'; interface IDemoDataProps { commonStore: CommonStore; } const DemoData: React.FC = ({ commonStore }) => { const { t } = useTranslation('translation', { keyPrefix: 'DataSource.dialog.public' }); const [loadingKey, setLoadingKey] = useState(null); const [error, setError] = useState(null); const loadDataset = async (data: IPublicData) => { if (loadingKey) return; setError(null); setLoadingKey(data.key); try { const response = await fetch(DemoDataAssets[data.key]); if (!response.ok) { throw new Error(`${response.status} ${response.statusText}`); } const res = await response.json(); commonStore.updateTempSTDDS({ dataSource: res.dataSource, rawFields: res.fields.map((f) => ({ fid: f.fid, name: f.name, analyticType: f.analyticType, semanticType: f.semanticType, dataType: f.dataType || '?', })), name: data.title, }); } catch (err) { console.error('Error fetching public data:', err); setError(t('fetch_error', { name: data.title })); } finally { setLoadingKey(null); } }; return (
{error && (

{error}

)}
{PUBLIC_DATA_LIST.map((data) => { const isLoading = loadingKey === data.key; return ( ); })}
); }; export default observer(DemoData);