| 'use client' | 'use client' | ||||
| // Libraries | |||||
| import { useRef, useState } from 'react' | import { useRef, useState } from 'react' | ||||
| import { useTranslation } from 'react-i18next' | import { useTranslation } from 'react-i18next' | ||||
| import useSWR from 'swr' | import useSWR from 'swr' | ||||
| // Components | |||||
| import Datasets from './Datasets' | import Datasets from './Datasets' | ||||
| import DatasetFooter from './DatasetFooter' | import DatasetFooter from './DatasetFooter' | ||||
| import ApiServer from './ApiServer' | import ApiServer from './ApiServer' | ||||
| import Doc from './Doc' | import Doc from './Doc' | ||||
| import TabSlider from '@/app/components/base/tab-slider' | import TabSlider from '@/app/components/base/tab-slider' | ||||
| // Services | |||||
| import { fetchDatasetApiBaseUrl } from '@/service/datasets' | import { fetchDatasetApiBaseUrl } from '@/service/datasets' | ||||
| const Container = () => { | const Container = () => { | ||||
| const { t } = useTranslation() | const { t } = useTranslation() | ||||
| const options = [ | const options = [ | ||||
| { | |||||
| value: 'dataset', | |||||
| text: t('dataset.datasets'), | |||||
| }, | |||||
| { | |||||
| value: 'api', | |||||
| text: t('dataset.datasetsApi'), | |||||
| }, | |||||
| { value: 'dataset', text: t('dataset.datasets') }, | |||||
| { value: 'api', text: t('dataset.datasetsApi') }, | |||||
| ] | ] | ||||
| const [activeTab, setActiveTab] = useState('dataset') | const [activeTab, setActiveTab] = useState('dataset') | ||||
| const containerRef = useRef<HTMLDivElement>(null) | const containerRef = useRef<HTMLDivElement>(null) | ||||
| const { data } = useSWR(activeTab === 'dataset' ? null : '/datasets/api-base-info', fetchDatasetApiBaseUrl) | const { data } = useSWR(activeTab === 'dataset' ? null : '/datasets/api-base-info', fetchDatasetApiBaseUrl) | ||||
| onChange={newActiveTab => setActiveTab(newActiveTab)} | onChange={newActiveTab => setActiveTab(newActiveTab)} | ||||
| options={options} | options={options} | ||||
| /> | /> | ||||
| { | |||||
| activeTab === 'api' && ( | |||||
| <ApiServer apiBaseUrl={data?.api_base_url || ''} /> | |||||
| ) | |||||
| } | |||||
| {activeTab === 'api' && data && <ApiServer apiBaseUrl={data.api_base_url || ''} />} | |||||
| </div> | </div> | ||||
| { | |||||
| activeTab === 'dataset' && ( | |||||
| <div className=''> | |||||
| <Datasets containerRef={containerRef}/> | |||||
| {activeTab === 'dataset' | |||||
| ? ( | |||||
| <> | |||||
| <Datasets containerRef={containerRef} /> | |||||
| <DatasetFooter /> | <DatasetFooter /> | ||||
| </div> | |||||
| ) | |||||
| } | |||||
| { | |||||
| activeTab === 'api' && ( | |||||
| <Doc apiBaseUrl={data?.api_base_url || ''} /> | |||||
| </> | |||||
| ) | ) | ||||
| } | |||||
| : ( | |||||
| activeTab === 'api' && data && <Doc apiBaseUrl={data.api_base_url || ''} /> | |||||
| )} | |||||
| </div> | </div> | ||||
| ) | ) | ||||
| } | } | ||||