Compare commits

..

No commits in common. "6442f1f407c6266258b510cb465fde9992869861" and "c2fad8a3ff379972c8fad87c8eb2a45d08364189" have entirely different histories.

5 changed files with 52 additions and 90 deletions

View File

@ -1,9 +1,9 @@
/* eslint-disable no-undef */ /* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-require-imports */ /* eslint-disable @typescript-eslint/no-require-imports */
const pkg = require('./package'); const pkg = require("./package");
module.exports = { module.exports = {
apiPath: 'stubs/api', apiPath: "stubs/api",
webpackConfig: { webpackConfig: {
output: { output: {
publicPath: `/static/${pkg.name}/${process.env.VERSION || pkg.version}/`, publicPath: `/static/${pkg.name}/${process.env.VERSION || pkg.version}/`,
@ -11,19 +11,17 @@ module.exports = {
}, },
/* use https://admin.bro-js.ru/ to create config, navigations and features */ /* use https://admin.bro-js.ru/ to create config, navigations and features */
navigations: { navigations: {
'dry-wash.main': '/dry-wash', "dry-wash.main": "/dry-wash",
'dry-wash.create': '/order', "dry-wash.create": "/order",
'dry-wash.view.order': '/order/:orderId', "dry-wash.view.order": "/order/:orderId",
'dry-wash.arm.master': '/master', "dry-wash.arm": "/arm",
'dry-wash.arm.order': '/order',
'dry-wash.arm': '/arm/*',
}, },
features: { features: {
'dry-wash-pl': { "dry-wash-pl": {
// add your features here in the format [featureName]: { value: string } // add your features here in the format [featureName]: { value: string }
}, },
}, },
config: { config: {
'dry-wash-pl.api': '/api', "dry-wash-pl.api": "/api",
}, },
}; };

View File

@ -1,40 +1,25 @@
import { generatePath } from 'react-router-dom'; import { generatePath } from "react-router-dom";
import { getNavigationValue } from '@brojs/cli'; import { getNavigationValue } from "@brojs/cli";
import { Order } from '../models'; import { Order } from "../models";
const getFullUrls = (url: string) =>
`${getNavigationValue('dry-wash.main')}${url}`;
export const URLs = { export const URLs = {
landing: { landing: {
url: getNavigationValue('dry-wash.main'), url: getNavigationValue("dry-wash.main"),
getUrl() { getUrl() {
return this.url; return this.url;
}, }
}, },
orderForm: { orderForm: {
url: getNavigationValue('dry-wash.create'), url: getNavigationValue("dry-wash.create"),
getUrl() { getUrl() {
return this.url; return this.url;
}, }
}, },
orderView: { orderView: {
url: getNavigationValue('dry-wash.view.order'), url: getNavigationValue("dry-wash.view.order"),
getUrl(orderId: Order.Id) { getUrl(orderId: Order.Id) {
return generatePath(this.url, { orderId }); return generatePath(this.url, { orderId });
}, }
}, }
armMaster: {
url: getNavigationValue('dry-wash.arm.master'),
isOn: Boolean(getNavigationValue('dry-wash.arm.master')),
},
armOrder: {
url: getNavigationValue('dry-wash.arm.order'),
isOn: Boolean(getNavigationValue('dry-wash.arm.order')),
},
armBase: {
url: getFullUrls(getNavigationValue('dry-wash.arm')),
isOn: Boolean(getNavigationValue('dry-wash.arm')),
},
}; };

View File

@ -5,33 +5,20 @@ import { Navigate, Route, Routes } from 'react-router-dom';
import Sidebar from '../Sidebar'; import Sidebar from '../Sidebar';
import Orders from '../Orders'; import Orders from '../Orders';
import Masters from '../Masters'; import Masters from '../Masters';
import { URLs } from '../../__data__/urls';
const LayoutArm = () => { const LayoutArm = () => (
let defaultRedirect = null; <Flex h='100vh'>
<Sidebar />
if (URLs.armOrder.isOn) { <Box flex='1' bg='gray.50'>
defaultRedirect = URLs.armOrder.url; <Routes>
} else if (URLs.armMaster.isOn) { <Route>
defaultRedirect = URLs.armMaster.url; <Route index element={<Navigate to='orders' replace />} />
} <Route path='orders' element={<Orders />} />
<Route path='masters' element={<Masters />} />
return ( </Route>
<Flex h='100vh'> </Routes>
<Sidebar /> </Box>
<Box flex='1' bg='gray.50'> </Flex>
<Routes> );
<Route index element={<Navigate to={defaultRedirect} replace />} />
{URLs.armOrder.isOn && (
<Route path={URLs.armOrder.url} element={<Orders />} />
)}
{URLs.armMaster.isOn && (
<Route path={URLs.armMaster.url} element={<Masters />} />
)}
</Routes>
</Box>
</Flex>
);
};
export default LayoutArm; export default LayoutArm;

View File

@ -3,8 +3,6 @@ import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { URLs } from '../../__data__/urls';
const Sidebar = () => { const Sidebar = () => {
const { t } = useTranslation('~', { const { t } = useTranslation('~', {
keyPrefix: 'dry-wash.arm.master.sideBar', keyPrefix: 'dry-wash.arm.master.sideBar',
@ -25,29 +23,25 @@ const Sidebar = () => {
<VStack align='start' spacing='4'> <VStack align='start' spacing='4'>
<Divider /> <Divider />
{URLs.armOrder.isOn && ( <Button
<Button as={Link}
as={Link} to='orders'
to={URLs.armOrder.url} w='100%'
w='100%' colorScheme='green'
colorScheme='green' variant='ghost'
variant='ghost' >
> {t('orders')}
{t('orders')} </Button>
</Button>
)}
<Divider /> <Divider />
{URLs.armMaster.isOn && ( <Button
<Button as={Link}
as={Link} to='masters'
to={URLs.armMaster.url} w='100%'
w='100%' colorScheme='green'
colorScheme='green' variant='ghost'
variant='ghost' >
> {t('master')}
{t('master')} </Button>
</Button>
)}
<Divider /> <Divider />
</VStack> </VStack>
</Box> </Box>

View File

@ -17,9 +17,7 @@ const Routers = () => {
<Route path={URLs.landing.url} element={<Landing />} /> <Route path={URLs.landing.url} element={<Landing />} />
<Route path={URLs.orderForm.url} element={<OrderForm />} /> <Route path={URLs.orderForm.url} element={<OrderForm />} />
<Route path={URLs.orderView.url} element={<OrderView />} /> <Route path={URLs.orderView.url} element={<OrderView />} />
{URLs.armBase.isOn && ( <Route path='/dry-wash/arm/*' element={<Arm />}></Route>
<Route path={URLs.armBase.url} element={<Arm />}></Route>
)}
<Route path='*' element={<NotFound />} /> <Route path='*' element={<NotFound />} />
</Routes> </Routes>
</Suspense> </Suspense>