2023-12-13 14:32:57 +03:00
|
|
|
|
'use client';
|
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
import { useState } from 'react';
|
|
|
|
|
import { TabList, TabPanel, Tabs } from 'react-tabs';
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
2023-12-13 14:32:57 +03:00
|
|
|
|
import ConceptTab from '@/components/Common/ConceptTab';
|
|
|
|
|
import Modal from '@/components/Common/Modal';
|
|
|
|
|
import Overlay from '@/components/Common/Overlay';
|
|
|
|
|
import HelpButton from '@/components/Help/HelpButton';
|
|
|
|
|
import { ReferenceType } from '@/models/language';
|
|
|
|
|
import { HelpTopic } from '@/models/miscelanious';
|
|
|
|
|
import { IConstituenta } from '@/models/rsform';
|
|
|
|
|
import { labelReferenceType } from '@/utils/labels';
|
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
import EntityTab from './EntityTab';
|
|
|
|
|
import SyntacticTab from './SyntacticTab';
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
|
|
|
|
export interface IReferenceInputState {
|
|
|
|
|
type: ReferenceType
|
|
|
|
|
refRaw?: string
|
|
|
|
|
text?: string
|
|
|
|
|
mainRefs: string[]
|
|
|
|
|
basePosition: number
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
interface DlgEditReferenceProps {
|
|
|
|
|
hideWindow: () => void
|
|
|
|
|
items: IConstituenta[]
|
|
|
|
|
initial: IReferenceInputState
|
|
|
|
|
onSave: (newRef: string) => void
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
export enum TabID {
|
|
|
|
|
ENTITY = 0,
|
|
|
|
|
SYNTACTIC = 1
|
|
|
|
|
}
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
function DlgEditReference({ hideWindow, items, initial, onSave }: DlgEditReferenceProps) {
|
|
|
|
|
const [activeTab, setActiveTab] = useState(initial.type === ReferenceType.ENTITY ? TabID.ENTITY : TabID.SYNTACTIC);
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
const [reference, setReference] = useState('');
|
|
|
|
|
const [isValid, setIsValid] = useState(false);
|
|
|
|
|
|
|
|
|
|
const handleSubmit = () => onSave(reference);
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Modal
|
|
|
|
|
title='Редактирование ссылки'
|
|
|
|
|
submitText='Сохранить ссылку'
|
2023-11-27 02:13:37 +03:00
|
|
|
|
hideWindow={hideWindow}
|
2023-11-26 02:24:16 +03:00
|
|
|
|
canSubmit={isValid}
|
|
|
|
|
onSubmit={handleSubmit}
|
2023-12-07 01:21:27 +03:00
|
|
|
|
className='items-center min-w-[40rem] max-w-[40rem] px-6 min-h-[34rem]'
|
2023-11-26 02:24:16 +03:00
|
|
|
|
>
|
2023-12-01 22:50:43 +03:00
|
|
|
|
<Tabs defaultFocus
|
|
|
|
|
selectedTabClassName='clr-selected'
|
|
|
|
|
selectedIndex={activeTab}
|
|
|
|
|
onSelect={setActiveTab}
|
|
|
|
|
>
|
2023-12-07 01:21:27 +03:00
|
|
|
|
<Overlay position='top-0 right-[4rem]'>
|
|
|
|
|
<HelpButton topic={HelpTopic.TERM_CONTROL} dimensions='max-w-[35rem]' offset={14} />
|
2023-12-05 01:22:44 +03:00
|
|
|
|
</Overlay>
|
2023-12-01 22:50:43 +03:00
|
|
|
|
|
2023-12-07 01:21:27 +03:00
|
|
|
|
<TabList className='flex justify-center mb-3'>
|
|
|
|
|
<div className='flex border w-fit'>
|
|
|
|
|
<ConceptTab
|
|
|
|
|
label={labelReferenceType(ReferenceType.ENTITY)}
|
|
|
|
|
tooltip='Отсылка на термин в заданной словоформе'
|
|
|
|
|
className='w-[12rem] border-r-2'
|
|
|
|
|
/>
|
|
|
|
|
<ConceptTab
|
|
|
|
|
label={labelReferenceType(ReferenceType.SYNTACTIC)}
|
|
|
|
|
tooltip='Установление синтаксической связи с отсылкой на термин'
|
|
|
|
|
className='w-[12rem]'
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
2023-12-05 01:22:44 +03:00
|
|
|
|
</TabList>
|
2023-12-01 22:50:43 +03:00
|
|
|
|
|
|
|
|
|
<div className='w-full'>
|
|
|
|
|
<TabPanel>
|
|
|
|
|
<EntityTab
|
|
|
|
|
initial={initial}
|
|
|
|
|
items={items}
|
|
|
|
|
setReference={setReference}
|
|
|
|
|
setIsValid={setIsValid}
|
2023-11-26 02:24:16 +03:00
|
|
|
|
/>
|
2023-12-01 22:50:43 +03:00
|
|
|
|
</TabPanel>
|
2023-11-26 02:24:16 +03:00
|
|
|
|
|
2023-12-01 22:50:43 +03:00
|
|
|
|
<TabPanel>
|
|
|
|
|
<SyntacticTab
|
|
|
|
|
initial={initial}
|
|
|
|
|
setReference={setReference}
|
|
|
|
|
setIsValid={setIsValid}
|
|
|
|
|
/>
|
|
|
|
|
</TabPanel>
|
|
|
|
|
</div>
|
|
|
|
|
</Tabs>
|
2023-11-26 02:24:16 +03:00
|
|
|
|
</Modal>);
|
|
|
|
|
}
|
|
|
|
|
|
2023-12-13 14:32:57 +03:00
|
|
|
|
export default DlgEditReference;
|