|
import TopNItem from '@/components/top-n-item'; |
|
import { useTranslate } from '@/hooks/common-hooks'; |
|
import { DatePicker, DatePickerProps, Form, Select, Switch } from 'antd'; |
|
import dayjs from 'dayjs'; |
|
import { useCallback, useMemo } from 'react'; |
|
import { useBuildSortOptions } from '../form-hooks'; |
|
import { IOperatorForm } from '../interface'; |
|
|
|
const YearPicker = ({ |
|
onChange, |
|
value, |
|
}: { |
|
onChange?: (val: number | undefined) => void; |
|
value?: number | undefined; |
|
}) => { |
|
const handleChange: DatePickerProps['onChange'] = useCallback( |
|
(val: any) => { |
|
const nextVal = val?.format('YYYY'); |
|
onChange?.(nextVal ? Number(nextVal) : undefined); |
|
}, |
|
[onChange], |
|
); |
|
|
|
const nextValue = useMemo(() => { |
|
if (value) { |
|
return dayjs(value.toString()); |
|
} |
|
return undefined; |
|
}, [value]); |
|
|
|
return <DatePicker picker="year" onChange={handleChange} value={nextValue} />; |
|
}; |
|
|
|
const GoogleScholarForm = ({ onValuesChange, form }: IOperatorForm) => { |
|
const { t } = useTranslate('flow'); |
|
|
|
const options = useBuildSortOptions(); |
|
|
|
return ( |
|
<Form |
|
name="basic" |
|
labelCol={{ span: 6 }} |
|
wrapperCol={{ span: 18 }} |
|
autoComplete="off" |
|
form={form} |
|
onValuesChange={onValuesChange} |
|
> |
|
<TopNItem initialValue={5}></TopNItem> |
|
<Form.Item |
|
label={t('sortBy')} |
|
name={'sort_by'} |
|
initialValue={'relevance'} |
|
> |
|
<Select options={options}></Select> |
|
</Form.Item> |
|
<Form.Item label={t('yearLow')} name={'year_low'}> |
|
<YearPicker /> |
|
</Form.Item> |
|
<Form.Item label={t('yearHigh')} name={'year_high'}> |
|
<YearPicker /> |
|
</Form.Item> |
|
<Form.Item |
|
label={t('patents')} |
|
name={'patents'} |
|
valuePropName="checked" |
|
initialValue={true} |
|
> |
|
<Switch></Switch> |
|
</Form.Item> |
|
</Form> |
|
); |
|
}; |
|
|
|
export default GoogleScholarForm; |
|
|