VORKOUT-9 #6

Merged
vlad.dev merged 11 commits from VORKOUT-9 into master 2025-04-29 12:15:41 +05:00
3 changed files with 103 additions and 79 deletions
Showing only changes of commit 9f6b489bff - Show all commits

View File

@ -12,11 +12,10 @@ export default function SiderMenu({
selectedKey, selectedKey,
hangleMenuClick, hangleMenuClick,
}: SiderMenuProps) { }: SiderMenuProps) {
const menuItems = ( const menuItems = [
<React.Fragment> {
<Menu.Item key: 'toggle',
key="0" icon: (
icon={
<img <img
src={ src={
!collapsed !collapsed
@ -25,62 +24,63 @@ export default function SiderMenu({
} }
alt="toggle" alt="toggle"
/> />
} ),
style={{ fontSize: '20px' }} label: 'VORKOUT',
> style: { fontSize: '20px' },
VORKOUT },
</Menu.Item> {
key: '/process-diagram',
<Menu.Item icon: (
key="/process-diagram"
icon={
<img src="./icons/sider/process-diagram.svg" alt="process diagram" /> <img src="./icons/sider/process-diagram.svg" alt="process diagram" />
} ),
> label: 'Схемы процессов',
Схемы процессов },
</Menu.Item> {
key: '/running-processes',
<Menu.Item icon: (
vlad.dev marked this conversation as resolved Outdated

gettext() тут пока не практикуем?

gettext() тут пока не практикуем?
key="/running-processes"
icon={
<img <img
src="./icons/sider/running-processes.svg" src="./icons/sider/running-processes.svg"
alt="running processes" alt="running processes"
/> />
),
label: 'Запущенные процессы',
},
!collapsed
? {
key: 'divider',
label: <Divider />,
style: {
marginBottom: '-16px',
marginTop: '-4px',
cursor: 'default',
},
disabled: true,
} }
> : null,
Запущенные процессы {
</Menu.Item> key: 'sub1',
icon: <img src="./icons/sider/settings.svg" alt="settings" />,
{!collapsed && <Divider style={{ marginBottom: 0 }} />} label: 'Настройки',
className: 'no-expand-icon',
<Menu.SubMenu children: [
key="sub1" {
icon={<img src="./icons/sider/settings.svg" alt="settings" />} key: '/accounts',
title="Настройки" label: 'Учетные записи',
expandIcon={false} style: { fontSize: '12px', paddingLeft: '52px' },
> },
<Menu.Item {
key="/accounts" key: '/events-list',
style={{ fontSize: '12px', paddingLeft: '52px' }} label: 'Справочник событий',
> style: { fontSize: '12px', paddingLeft: '52px' },
Учетные записи },
</Menu.Item> {
<Menu.Item key: '/configuration',
key="/events-list" label: 'Конфигурация',
style={{ fontSize: '12px', paddingLeft: '52px' }} style: { fontSize: '12px', paddingLeft: '52px' },
> },
Справочник событий ],
</Menu.Item> },
<Menu.Item ];
key="/configuration"
style={{ fontSize: '12px', paddingLeft: '52px' }}
>
Конфигурация
</Menu.Item>
</Menu.SubMenu>
</React.Fragment>
);
return ( return (
<Menu <Menu
@ -89,8 +89,7 @@ export default function SiderMenu({
mode="inline" mode="inline"
onClick={hangleMenuClick} onClick={hangleMenuClick}
defaultOpenKeys={['sub1']} defaultOpenKeys={['sub1']}
> items={menuItems}
{menuItems} />
</Menu>
); );
} }

View File

@ -25,3 +25,11 @@ code {
border: none; border: none;
color: #548d10; color: #548d10;
} }
.sider {
background-color: #f2f2f2;
}
.no-expand-icon .ant-menu-submenu-arrow {
display: none !important;
}

View File

@ -16,22 +16,39 @@ export default function MainLayout() {
const [collapsed, setCollapsed] = useState(false); const [collapsed, setCollapsed] = useState(false);
const [selectedKey, setSelectedKey] = useState('1'); const [selectedKey, setSelectedKey] = useState('1');
const [width, setWidth] = useState<number | string>('15%');
const [collapsedWidth, setCollapsedWidth] = useState(50);
const calculateWidths = () => {
const windowWidth = window.innerWidth;
const expanded = Math.min(Math.max(windowWidth * 0.15, 180), 240);
const collapsed = Math.max(windowWidth * 0.038, 50);
setWidth(expanded);
setCollapsedWidth(collapsed);
};
useEffect(() => {
calculateWidths();
window.addEventListener('resize', calculateWidths);
return () => window.removeEventListener('resize', calculateWidths);
}, []);
useEffect(() => { useEffect(() => {
if (location.pathname === '/') { if (location.pathname === '/') {
navigate('/process-diagram'); navigate('/process-diagram');
} }
}, [location.pathname]);
useEffect(() => {
setSelectedKey(location.pathname); setSelectedKey(location.pathname);
}); }, [location.pathname]);
function hangleMenuClick(e: any) { function hangleMenuClick(e: any) {
const key = e.key; const key = e.key;
if (key === '0') { if (key === 'toggle') {
setCollapsed(!collapsed); setCollapsed(!collapsed);
return; return;
} }
if (key === 'divider') {
return;
}
setSelectedKey(key); setSelectedKey(key);
navigate(key); navigate(key);
@ -40,14 +57,14 @@ export default function MainLayout() {
return ( return (
<Layout style={{ minHeight: '100vh' }}> <Layout style={{ minHeight: '100vh' }}>
<Sider <Sider
className="sider"
collapsible collapsible
collapsed={collapsed} collapsed={collapsed}
onCollapse={(value) => setCollapsed(value)} onCollapse={(value) => setCollapsed(value)}
theme="light" theme="light"
width={'15%'} width={width}
collapsedWidth={'3.8%'} collapsedWidth={collapsedWidth}
trigger={null} trigger={null}
style={{ backgroundColor: '#f2f2f2' }}
> >
<SiderMenu <SiderMenu
collapsed={collapsed} collapsed={collapsed}