2023-09-11 20:31:54 +03:00
|
|
|
|
import { useLayoutEffect, useState } from 'react';
|
|
|
|
|
|
2023-09-14 16:53:38 +03:00
|
|
|
|
import Divider from '../../components/Common/Divider';
|
2023-09-19 17:55:17 +03:00
|
|
|
|
import MiniButton from '../../components/Common/MiniButton';
|
2023-09-11 20:31:54 +03:00
|
|
|
|
import Modal from '../../components/Common/Modal';
|
2023-09-14 16:53:38 +03:00
|
|
|
|
import SelectMulti from '../../components/Common/SelectMulti';
|
2023-09-11 20:31:54 +03:00
|
|
|
|
import TextArea from '../../components/Common/TextArea';
|
2023-09-19 17:55:17 +03:00
|
|
|
|
import { CheckIcon, ChevronDoubleUpIcon, ChevronUpIcon, CrossIcon } from '../../components/Icons';
|
|
|
|
|
import { Grammeme } from '../../models/language';
|
2023-09-11 20:31:54 +03:00
|
|
|
|
import { IConstituenta } from '../../models/rsform';
|
2023-09-19 17:55:17 +03:00
|
|
|
|
import { SelectorGrammems } from '../../utils/selectors';
|
2023-09-11 20:31:54 +03:00
|
|
|
|
|
|
|
|
|
interface DlgEditTermProps {
|
|
|
|
|
hideWindow: () => void
|
|
|
|
|
target: IConstituenta
|
|
|
|
|
onSave: () => void
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DlgEditTerm({ hideWindow, target, onSave }: DlgEditTermProps) {
|
|
|
|
|
const [term, setTerm] = useState('');
|
|
|
|
|
|
2023-09-19 17:55:17 +03:00
|
|
|
|
const [inputText, setInputText] = useState('');
|
|
|
|
|
const [inputTags, setInputTags] = useState<{ value: Grammeme, label: string }[]>([]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-09-11 20:31:54 +03:00
|
|
|
|
// function getData() {
|
|
|
|
|
// return {
|
|
|
|
|
|
|
|
|
|
// };
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
const handleSubmit = () => onSave(); // getData()
|
|
|
|
|
|
2023-09-19 17:55:17 +03:00
|
|
|
|
function handleAddForm() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleResetForm() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleGenerateSelected() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleGenerateBasics() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-11 20:31:54 +03:00
|
|
|
|
useLayoutEffect(
|
|
|
|
|
() => {
|
|
|
|
|
setTerm(target.term_resolved);
|
|
|
|
|
}, [target]);
|
|
|
|
|
|
|
|
|
|
return (
|
2023-09-19 17:55:17 +03:00
|
|
|
|
<Modal
|
|
|
|
|
title='Редактирование словоформ'
|
|
|
|
|
hideWindow={hideWindow}
|
|
|
|
|
submitText='Сохранить данные'
|
|
|
|
|
canSubmit
|
|
|
|
|
onSubmit={handleSubmit}
|
|
|
|
|
>
|
|
|
|
|
<div className='min-w-[40rem]'>
|
|
|
|
|
<TextArea id='nominal' label='Начальная форма'
|
|
|
|
|
placeholder='Начальная форма'
|
|
|
|
|
rows={1}
|
|
|
|
|
|
|
|
|
|
value={term}
|
|
|
|
|
disabled={true}
|
|
|
|
|
spellCheck
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<Divider margins='my-4'/>
|
|
|
|
|
|
|
|
|
|
<div className='flex items-start gap-2 justify-stretch min-h-[6.3rem]'>
|
|
|
|
|
<div className='flex flex-col gap-1'>
|
|
|
|
|
<TextArea
|
|
|
|
|
placeholder='Введите текст'
|
|
|
|
|
rows={2}
|
|
|
|
|
dimensions='min-w-[20rem]'
|
2023-09-14 16:53:38 +03:00
|
|
|
|
|
2023-09-19 17:55:17 +03:00
|
|
|
|
value={inputText}
|
|
|
|
|
onChange={event => setInputText(event.target.value)}
|
2023-09-14 16:53:38 +03:00
|
|
|
|
/>
|
2023-09-19 17:55:17 +03:00
|
|
|
|
<div className='flex items-center justify-start'>
|
|
|
|
|
<MiniButton
|
|
|
|
|
tooltip='Добавить словоформу'
|
|
|
|
|
icon={<CheckIcon size={6} color='text-success'/>}
|
|
|
|
|
onClick={handleAddForm}
|
|
|
|
|
/>
|
|
|
|
|
<MiniButton
|
|
|
|
|
tooltip='Сбросить словоформу'
|
|
|
|
|
icon={<CrossIcon size={6} color='text-warning'/>}
|
|
|
|
|
onClick={handleResetForm}
|
|
|
|
|
/>
|
|
|
|
|
<MiniButton
|
|
|
|
|
tooltip='Генерировать словоформу'
|
|
|
|
|
icon={<ChevronUpIcon size={6} color='text-primary'/>}
|
|
|
|
|
onClick={handleGenerateSelected}
|
|
|
|
|
/>
|
|
|
|
|
<MiniButton
|
|
|
|
|
tooltip='Генерировать базовые словоформы'
|
|
|
|
|
icon={<ChevronDoubleUpIcon size={6} color='text-primary'/>}
|
|
|
|
|
onClick={handleGenerateBasics}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
2023-09-14 16:53:38 +03:00
|
|
|
|
</div>
|
2023-09-19 17:55:17 +03:00
|
|
|
|
<SelectMulti
|
|
|
|
|
className='z-modal-top min-w-[20rem] max-w-[20rem] h-full flex-grow'
|
|
|
|
|
options={SelectorGrammems}
|
|
|
|
|
placeholder='Выберите граммемы'
|
|
|
|
|
|
|
|
|
|
value={inputTags}
|
|
|
|
|
onChange={data => setInputTags(data.map(value => value))}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
Таблица
|
2023-09-14 16:53:38 +03:00
|
|
|
|
</div>
|
2023-09-19 17:55:17 +03:00
|
|
|
|
</div>
|
|
|
|
|
</Modal>);
|
2023-09-11 20:31:54 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default DlgEditTerm;
|