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;
if (URLs.armOrder.isOn) {
defaultRedirect = URLs.armOrder.url;
} else if (URLs.armMaster.isOn) {
defaultRedirect = URLs.armMaster.url;
}
return (
<Flex h='100vh'> <Flex h='100vh'>
<Sidebar /> <Sidebar />
<Box flex='1' bg='gray.50'> <Box flex='1' bg='gray.50'>
<Routes> <Routes>
<Route index element={<Navigate to={defaultRedirect} replace />} /> <Route>
{URLs.armOrder.isOn && ( <Route index element={<Navigate to='orders' replace />} />
<Route path={URLs.armOrder.url} element={<Orders />} /> <Route path='orders' element={<Orders />} />
)} <Route path='masters' element={<Masters />} />
{URLs.armMaster.isOn && ( </Route>
<Route path={URLs.armMaster.url} element={<Masters />} />
)}
</Routes> </Routes>
</Box> </Box>
</Flex> </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={URLs.armOrder.url} to='orders'
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={URLs.armMaster.url} to='masters'
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>