Portal/rsconcept/frontend/src/pages/OssPage/EditorOssGraph/ToolbarOssGraph.tsx

80 lines
2.3 KiB
TypeScript
Raw Normal View History

2024-07-20 18:26:32 +03:00
import clsx from 'clsx';
2024-07-23 23:03:58 +03:00
import { IconDestroy, IconFitImage, IconNewItem, IconReset, IconSave } from '@/components/Icons';
2024-07-20 18:26:32 +03:00
import BadgeHelp from '@/components/info/BadgeHelp';
import MiniButton from '@/components/ui/MiniButton';
import { HelpTopic } from '@/models/miscellaneous';
import { PARAMETER } from '@/utils/constants';
2024-07-23 23:03:58 +03:00
import { prepareTooltip } from '@/utils/labels';
2024-07-20 18:26:32 +03:00
import { useOssEdit } from '../OssEditContext';
interface ToolbarOssGraphProps {
2024-07-23 23:03:58 +03:00
isModified: boolean;
2024-07-20 18:26:32 +03:00
onCreate: () => void;
2024-07-23 23:03:58 +03:00
onDelete: () => void;
onFitView: () => void;
onSavePositions: () => void;
onResetPositions: () => void;
2024-07-20 18:26:32 +03:00
}
2024-07-23 23:03:58 +03:00
function ToolbarOssGraph({
isModified,
onCreate,
onDelete,
onFitView,
onSavePositions,
onResetPositions
}: ToolbarOssGraphProps) {
2024-07-20 18:26:32 +03:00
const controller = useOssEdit();
return (
<div className='cc-icons'>
2024-07-23 23:03:58 +03:00
{controller.isMutable ? (
<MiniButton
titleHtml={prepareTooltip('Сохранить изменения', 'Ctrl + S')}
icon={<IconSave size='1.25rem' className='icon-primary' />}
disabled={controller.isProcessing || !isModified}
onClick={onSavePositions}
/>
) : null}
{controller.isMutable ? (
<MiniButton
title='Сбросить изменения'
icon={<IconReset size='1.25rem' className='icon-primary' />}
disabled={!isModified}
onClick={onResetPositions}
/>
) : null}
<MiniButton
icon={<IconFitImage size='1.25rem' className='icon-primary' />}
title='Сбросить вид'
onClick={onFitView}
/>
2024-07-20 18:26:32 +03:00
{controller.isMutable ? (
<MiniButton
2024-07-21 15:17:36 +03:00
title='Новая операция'
2024-07-20 18:26:32 +03:00
icon={<IconNewItem size='1.25rem' className='icon-green' />}
disabled={controller.isProcessing}
onClick={onCreate}
/>
) : null}
2024-07-23 23:03:58 +03:00
{controller.isMutable ? (
<MiniButton
title='Удалить выбранную'
icon={<IconDestroy size='1.25rem' className='icon-red' />}
disabled={controller.selected.length !== 1 || controller.isProcessing}
onClick={onDelete}
/>
) : null}
2024-07-20 18:26:32 +03:00
<BadgeHelp
topic={HelpTopic.UI_OSS_GRAPH}
className={clsx(PARAMETER.TOOLTIP_WIDTH, 'sm:max-w-[40rem]')}
offset={4}
/>
</div>
);
}
export default ToolbarOssGraph;