mirror of
https://github.com/IRBorisov/ConceptPortal.git
synced 2025-06-26 13:00:39 +03:00
Small UI fixes
This commit is contained in:
parent
7664d9bda7
commit
aecb0f70ed
|
@ -21,9 +21,7 @@ function ControlsOverlay({ constituenta, disabled, modified, processing, onRenam
|
||||||
<Overlay position='top-1 left-[4.3rem]' className='flex select-none'>
|
<Overlay position='top-1 left-[4.3rem]' className='flex select-none'>
|
||||||
{!disabled || processing ? (
|
{!disabled || processing ? (
|
||||||
<MiniButton
|
<MiniButton
|
||||||
title={
|
title={modified ? messages.unsaved : `Редактировать словоформы термина`}
|
||||||
modified ? messages.unsaved : `Редактировать словоформы термина: ${constituenta?.term_forms.length ?? 0}`
|
|
||||||
}
|
|
||||||
noHover
|
noHover
|
||||||
onClick={onEditTerm}
|
onClick={onEditTerm}
|
||||||
icon={<IconEdit size='1rem' className='icon-primary' />}
|
icon={<IconEdit size='1rem' className='icon-primary' />}
|
||||||
|
|
|
@ -118,10 +118,10 @@ function FormConstituenta({
|
||||||
const data: ICstUpdateData = {
|
const data: ICstUpdateData = {
|
||||||
id: state.id,
|
id: state.id,
|
||||||
alias: alias,
|
alias: alias,
|
||||||
convention: convention,
|
term_raw: term,
|
||||||
definition_formal: expression,
|
definition_formal: expression,
|
||||||
definition_raw: textDefinition,
|
definition_raw: textDefinition,
|
||||||
term_raw: term
|
convention: convention
|
||||||
};
|
};
|
||||||
cstUpdate(data, () => toast.success('Изменения сохранены'));
|
cstUpdate(data, () => toast.success('Изменения сохранены'));
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,7 @@ import {
|
||||||
} from '@/models/rsform';
|
} from '@/models/rsform';
|
||||||
import { generateAlias } from '@/models/rsformAPI';
|
import { generateAlias } from '@/models/rsformAPI';
|
||||||
import { EXTEOR_TRS_FILE } from '@/utils/constants';
|
import { EXTEOR_TRS_FILE } from '@/utils/constants';
|
||||||
|
import { promptUnsaved } from '@/utils/utils';
|
||||||
|
|
||||||
interface IRSEditContext {
|
interface IRSEditContext {
|
||||||
schema?: IRSForm;
|
schema?: IRSForm;
|
||||||
|
@ -379,18 +380,26 @@ export const RSEditState = ({
|
||||||
}, [activeCst]);
|
}, [activeCst]);
|
||||||
|
|
||||||
const substitute = useCallback(() => {
|
const substitute = useCallback(() => {
|
||||||
|
if (isModified && !promptUnsaved()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
setShowSubstitute(true);
|
setShowSubstitute(true);
|
||||||
}, []);
|
}, [isModified]);
|
||||||
|
|
||||||
|
const inlineSynthesis = useCallback(() => {
|
||||||
|
if (isModified && !promptUnsaved()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setShowInlineSynthesis(true);
|
||||||
|
}, [isModified]);
|
||||||
|
|
||||||
const editTermForms = useCallback(() => {
|
const editTermForms = useCallback(() => {
|
||||||
if (!activeCst) {
|
if (!activeCst) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isModified) {
|
if (isModified && !promptUnsaved()) {
|
||||||
if (!window.confirm('Присутствуют несохраненные изменения. Продолжить без их учета?')) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
setShowEditTerm(true);
|
setShowEditTerm(true);
|
||||||
}, [isModified, activeCst]);
|
}, [isModified, activeCst]);
|
||||||
|
|
||||||
|
@ -410,6 +419,9 @@ export const RSEditState = ({
|
||||||
if (!activeCst) {
|
if (!activeCst) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (isModified && !promptUnsaved()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const data: ICstTarget = {
|
const data: ICstTarget = {
|
||||||
target: activeCst.id
|
target: activeCst.id
|
||||||
};
|
};
|
||||||
|
@ -419,28 +431,27 @@ export const RSEditState = ({
|
||||||
setSelected(cstList);
|
setSelected(cstList);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, [activeCst, setSelected, model]);
|
}, [activeCst, setSelected, model, isModified]);
|
||||||
|
|
||||||
const promptTemplate = useCallback(() => {
|
const promptTemplate = useCallback(() => {
|
||||||
setInsertCstID(activeCst?.id);
|
if (isModified && !promptUnsaved()) {
|
||||||
setShowTemplates(true);
|
|
||||||
}, [activeCst]);
|
|
||||||
|
|
||||||
const promptClone = useCallback(() => {
|
|
||||||
if (isModified) {
|
|
||||||
if (!window.confirm('Присутствуют несохраненные изменения. Продолжить без их учета?')) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
setInsertCstID(activeCst?.id);
|
||||||
|
setShowTemplates(true);
|
||||||
|
}, [activeCst, isModified]);
|
||||||
|
|
||||||
|
const promptClone = useCallback(() => {
|
||||||
|
if (isModified && !promptUnsaved()) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
setShowClone(true);
|
setShowClone(true);
|
||||||
}, [isModified]);
|
}, [isModified]);
|
||||||
|
|
||||||
const download = useCallback(() => {
|
const download = useCallback(() => {
|
||||||
if (isModified) {
|
if (isModified && !promptUnsaved()) {
|
||||||
if (!window.confirm('Присутствуют несохраненные изменения. Продолжить без их учета?')) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
const fileName = (model.schema?.alias ?? 'Schema') + EXTEOR_TRS_FILE;
|
const fileName = (model.schema?.alias ?? 'Schema') + EXTEOR_TRS_FILE;
|
||||||
model.download((data: Blob) => {
|
model.download((data: Blob) => {
|
||||||
try {
|
try {
|
||||||
|
@ -515,7 +526,7 @@ export const RSEditState = ({
|
||||||
|
|
||||||
reindex,
|
reindex,
|
||||||
reorder,
|
reorder,
|
||||||
inlineSynthesis: () => setShowInlineSynthesis(true),
|
inlineSynthesis,
|
||||||
produceStructure,
|
produceStructure,
|
||||||
substitute
|
substitute
|
||||||
}}
|
}}
|
||||||
|
|
|
@ -95,3 +95,10 @@ export function convertBase64ToBlob(base64String: string): Uint8Array {
|
||||||
}
|
}
|
||||||
return uint8Array;
|
return uint8Array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prompt user of confirming discarding changes before continue.
|
||||||
|
*/
|
||||||
|
export function promptUnsaved(): boolean {
|
||||||
|
return window.confirm('Присутствуют несохраненные изменения. Продолжить без их учета?');
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user