1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use client'
- import type { FC } from 'react'
- import React, { useCallback } from 'react'
- import { useTranslation } from 'react-i18next'
- import CheckboxWithLabel from '../base/checkbox-with-label'
- import Field from '../base/field'
- import cn from '@/utils/classnames'
- import type { CrawlOptions } from '@/models/datasets'
- const I18N_PREFIX = 'datasetCreation.stepOne.website'
- type Props = {
- className?: string
- payload: CrawlOptions
- onChange: (payload: CrawlOptions) => void
- }
- const Options: FC<Props> = ({
- className = '',
- payload,
- onChange,
- }) => {
- const { t } = useTranslation()
- const handleChange = useCallback((key: keyof CrawlOptions) => {
- return (value: any) => {
- onChange({
- ...payload,
- [key]: value,
- })
- }
- }, [payload, onChange])
- return (
- <div className={cn(className, ' space-y-2')}>
- <CheckboxWithLabel
- label={t(`${I18N_PREFIX}.crawlSubPage`)}
- isChecked={payload.crawl_sub_pages}
- onChange={handleChange('crawl_sub_pages')}
- />
- <div className='flex justify-between space-x-4'>
- <Field
- className='grow shrink-0'
- label={t(`${I18N_PREFIX}.limit`)}
- value={payload.limit}
- onChange={handleChange('limit')}
- isNumber
- isRequired
- />
- <Field
- className='grow shrink-0'
- label={t(`${I18N_PREFIX}.maxDepth`)}
- value={payload.max_depth}
- onChange={handleChange('max_depth')}
- isNumber
- tooltip={t(`${I18N_PREFIX}.maxDepthTooltip`)!}
- />
- </div>
- <div className='flex justify-between space-x-4'>
- <Field
- className='grow shrink-0'
- label={t(`${I18N_PREFIX}.excludePaths`)}
- value={payload.excludes}
- onChange={handleChange('excludes')}
- placeholder='blog/*, /about/*'
- />
- <Field
- className='grow shrink-0'
- label={t(`${I18N_PREFIX}.includeOnlyPaths`)}
- value={payload.includes}
- onChange={handleChange('includes')}
- placeholder='articles/*'
- />
- </div>
- <CheckboxWithLabel
- label={t(`${I18N_PREFIX}.extractOnlyMainContent`)}
- isChecked={payload.only_main_content}
- onChange={handleChange('only_main_content')}
- />
- </div>
- )
- }
- export default React.memo(Options)
|