* Роутинг по возможности перенесён в корневые файлы разделов

* В разделе скважины и панели администратора добавлены
* Операции по скважине разнесены на разные файлы
This commit is contained in:
goodmice 2022-10-13 16:35:19 +05:00
parent bd8962df26
commit 847cfce2b6
No known key found for this signature in database
GPG Key ID: 63EA771203189CF1
12 changed files with 175 additions and 154 deletions

View File

@ -9,6 +9,8 @@ import SuspenseFallback from '@components/SuspenseFallback'
import { getUserToken, NoAccessComponent } from '@utils' import { getUserToken, NoAccessComponent } from '@utils'
import { OpenAPI } from '@api' import { OpenAPI } from '@api'
import '@styles/include/antd_theme.less'
import '@styles/App.less'
const Login = lazy(() => import('@pages/public/Login')) const Login = lazy(() => import('@pages/public/Login'))
const Register = lazy(() => import('@pages/public/Register')) const Register = lazy(() => import('@pages/public/Register'))
@ -19,8 +21,34 @@ const Deposit = lazy(() => import('@pages/Deposit'))
const Cluster = lazy(() => import('@pages/Cluster')) const Cluster = lazy(() => import('@pages/Cluster'))
const Well = lazy(() => import('@pages/Well')) const Well = lazy(() => import('@pages/Well'))
import '@styles/include/antd_theme.less' const Measure = lazy(() => import('@pages/Measure'))
import '@styles/App.less' const Reports = lazy(() => import('@pages/Reports'))
const WellCase = lazy(() => import('@pages/WellCase'))
const Analytics = lazy(() => import('@pages/Analytics'))
const Documents = lazy(() => import('@pages/Documents'))
const Telemetry = lazy(() => import('@pages/Telemetry'))
const WellOperations = lazy(() => import('@pages/WellOperations'))
const DrillingProgram = lazy(() => import('@pages/DrillingProgram'))
const Tvd = lazy(() => import('@pages/WellOperations/Tvd'))
const WellDrillParams = lazy(() => import('@pages/WellOperations/WellDrillParams'))
const DrillProcessFlow = lazy(() => import('@pages/WellOperations/DrillProcessFlow'))
const WellSectionsStat = lazy(() => import('@pages/WellOperations/WellSectionsStat'))
const WellOperationsEditorFact = lazy(() => import('@pages/WellOperations/OperationEditor/Fact'))
const WellOperationsEditorPlan = lazy(() => import('@pages/WellOperations/OperationEditor/Plan'))
const Archive = lazy(() => import('@pages/Telemetry/Archive'))
const Messages = lazy(() => import('@pages/Telemetry/Messages'))
const Operations = lazy(() => import('@pages/Telemetry/Operations'))
const DashboardNNB = lazy(() => import('@pages/Telemetry/DashboardNNB'))
const TelemetryView = lazy(() => import('@pages/Telemetry/TelemetryView'))
const OperationTime = lazy(() => import('@pages/Telemetry/OperationTime'))
const DailyReport = lazy(() => import('@pages/Reports/DailyReport'))
const DiagramReport = lazy(() => import('@pages/Reports/DiagramReport'))
const Statistics = lazy(() => import('@pages/Analytics/Statistics'))
const WellCompositeEditor = lazy(() => import('@pages/Analytics/WellCompositeEditor'))
//OpenAPI.BASE = 'http://localhost:3000' //OpenAPI.BASE = 'http://localhost:3000'
OpenAPI.TOKEN = async () => getUserToken() ?? '' OpenAPI.TOKEN = async () => getUserToken() ?? ''
@ -48,7 +76,51 @@ export const App = memo(() => (
<Route path={'/file_download/:idWell/:idFile/*'} element={<FileDownload />} /> <Route path={'/file_download/:idWell/:idFile/*'} element={<FileDownload />} />
<Route path={'/deposit/*'} element={<Deposit />} /> <Route path={'/deposit/*'} element={<Deposit />} />
<Route path={'/cluster/:idCluster'} element={<Cluster />} /> <Route path={'/cluster/:idCluster'} element={<Cluster />} />
<Route path={'/well/:idWell/*'} element={<Well />} /> <Route path={'/well/:idWell/*'} element={<Well />}>
<Route index element={<Navigate to={'telemetry'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'telemetry/*'} element={<Telemetry />}>
<Route index element={<Navigate to={'telemetry'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'telemetry'} element={<TelemetryView />} />
<Route path={'messages'} element={<Messages />} />
<Route path={'archive'} element={<Archive />} />
<Route path={'dashboard_nnb'} element={<DashboardNNB />} />
<Route path={'operations'} element={<Operations />} />
<Route path={'operation_time'} element={<OperationTime />} />
</Route>
<Route path={'reports/*'} element={<Reports />}>
<Route index element={<Navigate to={'diagram_report'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'diagram_report'} element={<DiagramReport />} />
<Route path={'daily_report'} element={<DailyReport />} />
</Route>
<Route path={'analytics/*'} element={<Analytics />}>
<Route index element={<Navigate to={'composite'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'composite/*'} element={<WellCompositeEditor />} />
<Route path={'statistics'} element={<Statistics />} />
</Route>
<Route path={'operations/*'} element={<WellOperations />}>
<Route index element={<Navigate to={'tvd'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'tvd'} element={<Tvd />} />
<Route path={'sections'} element={<WellSectionsStat />} />
<Route path={'plan'} element={<WellOperationsEditorPlan />} />
<Route path={'fact'} element={<WellOperationsEditorFact />} />
<Route path={'drillProcessFlow'} element={<DrillProcessFlow />} />
<Route path={'params'} element={<WellDrillParams />} />
</Route>
<Route path={'document/*'} element={<Documents />} />
<Route path={'measure/*'} element={<Measure />} />
<Route path={'drillingProgram'} element={<DrillingProgram />} />
<Route path={'well_case'} element={<WellCase />} />
</Route>
</Route> </Route>
</Routes> </Routes>
</Router> </Router>

View File

@ -1,11 +1,8 @@
import { memo, useMemo } from 'react' import { memo, useMemo } from 'react'
import { Navigate, Route, Routes } from 'react-router-dom' import { Outlet } from 'react-router-dom'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { wrapPrivateComponent } from '@utils'
import TelemetryViewer from './TelemetryViewer'
import TelemetryMerger from './TelemetryMerger'
const Telemetry = memo(() => { const Telemetry = memo(() => {
const root = useRootPath() const root = useRootPath()
@ -13,12 +10,7 @@ const Telemetry = memo(() => {
return ( return (
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<Routes> <Outlet />
<Route index element={<Navigate to={TelemetryViewer.route} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={TelemetryViewer.route} element={<TelemetryViewer />} />
<Route path={TelemetryMerger.route} element={<TelemetryMerger />} />
</Routes>
</RootPathContext.Provider> </RootPathContext.Provider>
) )
}) })

View File

@ -1,21 +1,25 @@
import { Navigate, Route, Routes } from 'react-router-dom' import { Navigate, Route, Routes } from 'react-router-dom'
import { memo, useMemo } from 'react' import { lazy, memo, Suspense, useMemo } from 'react'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { LayoutPortal } from '@components/LayoutPortal' import { LayoutPortal } from '@components/LayoutPortal'
import SuspenseFallback from '@components/SuspenseFallback'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { NoAccessComponent, wrapPrivateComponent } from '@utils'
import AdminNavigationMenu from './AdminNavigationMenu' import AdminNavigationMenu from './AdminNavigationMenu'
import ClusterController from './ClusterController'
import CompanyController from './CompanyController' const ClusterController = lazy(() => import('./ClusterController'))
import DepositController from './DepositController' const CompanyController = lazy(() => import('./CompanyController'))
import UserController from './UserController' const DepositController = lazy(() => import('./DepositController'))
import WellController from './WellController' const UserController = lazy(() => import('./UserController'))
import RoleController from './RoleController' const WellController = lazy(() => import('./WellController'))
import CompanyTypeController from './CompanyTypeController' const RoleController = lazy(() => import('./RoleController'))
import PermissionController from './PermissionController' const CompanyTypeController = lazy(() => import('./CompanyTypeController'))
import Telemetry from './Telemetry' const PermissionController = lazy(() => import('./PermissionController'))
import VisitLog from './VisitLog' const Telemetry = lazy(() => import('./Telemetry'))
const TelemetryViewer = lazy(() => import('./Telemetry/TelemetryViewer'))
const TelemetryMerger = lazy(() => import('./Telemetry/TelemetryMerger'))
const VisitLog = lazy(() => import('./VisitLog'))
const AdminPanel = memo(() => { const AdminPanel = memo(() => {
const root = useRootPath() const root = useRootPath()
@ -24,20 +28,27 @@ const AdminPanel = memo(() => {
return ( return (
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<LayoutPortal isAdmin title={'Администраторская панель'} sider={<AdminNavigationMenu />}> <LayoutPortal isAdmin title={'Администраторская панель'} sider={<AdminNavigationMenu />}>
<Routes> <Suspense fallback={<SuspenseFallback style={{ minHeight: '100%' }} />}>
<Route index element={<Navigate to={VisitLog.route} replace />} /> <Routes>
<Route path={'*'} element={<NoAccessComponent />} /> <Route index element={<Navigate to={'visit_log'} replace />} />
<Route path={DepositController.route} element={<DepositController />} /> <Route path={'*'} element={<NoAccessComponent />} />
<Route path={ClusterController.route} element={<ClusterController />} /> <Route path={'deposit'} element={<DepositController />} />
<Route path={WellController.route} element={<WellController />} /> <Route path={'cluster'} element={<ClusterController />} />
<Route path={UserController.route} element={<UserController />} /> <Route path={'well'} element={<WellController />} />
<Route path={CompanyController.route} element={<CompanyController />} /> <Route path={'user'} element={<UserController />} />
<Route path={CompanyTypeController.route} element={<CompanyTypeController />} /> <Route path={'company'} element={<CompanyController />} />
<Route path={RoleController.route} element={<RoleController />} /> <Route path={'company_type'} element={<CompanyTypeController />} />
<Route path={PermissionController.route} element={<PermissionController />} /> <Route path={'role'} element={<RoleController />} />
<Route path={Telemetry.route} element={<Telemetry />} /> <Route path={'permission'} element={<PermissionController />} />
<Route path={VisitLog.route} element={<VisitLog />} /> <Route path={'telemetry'} element={<Telemetry />}>
</Routes> <Route index element={<Navigate to={'viewer'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={'viewer'} element={<TelemetryViewer />} />
<Route path={'merger'} element={<TelemetryMerger />} />
</Route>
<Route path={'visit_log'} element={<VisitLog />} />
</Routes>
</Suspense>
</LayoutPortal> </LayoutPortal>
</RootPathContext.Provider> </RootPathContext.Provider>
) )

View File

@ -1,5 +1,5 @@
import { Navigate, Route, Routes } from 'react-router-dom' import { Navigate, Route, Routes } from 'react-router-dom'
import { useState, useEffect, memo } from 'react' import { useState, useEffect, memo, Suspense } from 'react'
import { Row } from 'antd' import { Row } from 'antd'
import { useWell } from '@asb/context' import { useWell } from '@asb/context'
@ -11,6 +11,7 @@ import { OperationStatService, WellCompositeService } from '@api'
import ClusterWells from '@pages/Cluster/ClusterWells' import ClusterWells from '@pages/Cluster/ClusterWells'
import WellCompositeSections from './WellCompositeSections' import WellCompositeSections from './WellCompositeSections'
import SuspenseFallback from '@asb/components/SuspenseFallback'
const properties = { const properties = {
requirements: ['OperationStat.get', 'WellComposite.get'], requirements: ['OperationStat.get', 'WellComposite.get'],
@ -66,13 +67,15 @@ const WellCompositeEditor = memo(() => {
<Row align={'middle'} justify={'space-between'} wrap={false} style={{ backgroundColor: 'white' }}> <Row align={'middle'} justify={'space-between'} wrap={false} style={{ backgroundColor: 'white' }}>
<WellSelector onChange={setSelectedIdWells} value={selectedIdWells} /> <WellSelector onChange={setSelectedIdWells} value={selectedIdWells} />
</Row> </Row>
<Routes> <Suspense fallback={<SuspenseFallback style={{ minHeight: '100%' }} />}>
<Route index element={<Navigate to={ClusterWells.route} replace/>} /> <Routes>
<Route path={'*'} element={<NoAccessComponent />} /> <Route index element={<Navigate to={ClusterWells.route} replace/>} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={ClusterWells.route} element={<ClusterWells statsWells={statsWells} />} /> <Route path={ClusterWells.route} element={<ClusterWells statsWells={statsWells} />} />
<Route path={WellCompositeSections.route} element={<WellCompositeSections statsWells={statsWells} selectedSections={selectedSections} />} /> <Route path={WellCompositeSections.route} element={<WellCompositeSections statsWells={statsWells} selectedSections={selectedSections} />} />
</Routes> </Routes>
</Suspense>
</LoaderPortal> </LoaderPortal>
) )
}) })

View File

@ -1,11 +1,8 @@
import { memo, useMemo } from 'react' import { memo, useMemo } from 'react'
import { Navigate, Route, Routes } from 'react-router-dom' import { Outlet } from 'react-router-dom'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { wrapPrivateComponent } from '@utils'
import Statistics from './Statistics'
import WellCompositeEditor from './WellCompositeEditor'
const Analytics = memo(() => { const Analytics = memo(() => {
const root = useRootPath() const root = useRootPath()
@ -13,13 +10,7 @@ const Analytics = memo(() => {
return ( return (
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<Routes> <Outlet />
<Route index element={<Navigate to={WellCompositeEditor.getKey()} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={WellCompositeEditor.route} element={<WellCompositeEditor />} />
<Route path={Statistics.route} element={<Statistics />} />
</Routes>
</RootPathContext.Provider> </RootPathContext.Provider>
) )
}) })

View File

@ -1,11 +1,8 @@
import { Navigate, Route, Routes } from 'react-router-dom' import { Outlet } from 'react-router-dom'
import { memo, useMemo } from 'react' import { memo, useMemo } from 'react'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { wrapPrivateComponent } from '@utils'
import DailyReport from './DailyReport'
import DiagramReport from './DiagramReport'
const Reports = memo(() => { const Reports = memo(() => {
const root = useRootPath() const root = useRootPath()
@ -13,13 +10,7 @@ const Reports = memo(() => {
return ( return (
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<Routes> <Outlet />
<Route index element={<Navigate to={'diagram_report'} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={DiagramReport.route} element={<DiagramReport />} />
<Route path={DailyReport.route} element={<DailyReport />} />
</Routes>
</RootPathContext.Provider> </RootPathContext.Provider>
) )
}) })

View File

@ -1,16 +1,9 @@
import { Navigate, Route, Routes } from 'react-router-dom'
import { memo, useMemo } from 'react'
import { FundViewOutlined } from '@ant-design/icons' import { FundViewOutlined } from '@ant-design/icons'
import { Outlet } from 'react-router-dom'
import { memo, useMemo } from 'react'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { wrapPrivateComponent } from '@utils'
import Archive from './Archive'
import Messages from './Messages'
import Operations from './Operations'
import DashboardNNB from './DashboardNNB'
import TelemetryView from './TelemetryView'
import OperationTime from './OperationTime'
import '@styles/index.css' import '@styles/index.css'
@ -20,17 +13,7 @@ const Telemetry = memo(() => {
return ( return (
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<Routes> <Outlet />
<Route index element={<Navigate to={TelemetryView.route} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={TelemetryView.route} element={<TelemetryView />} />
<Route path={Messages.route} element={<Messages />} />
<Route path={Archive.route} element={<Archive />} />
<Route path={DashboardNNB.route} element={<DashboardNNB />} />
<Route path={Operations.route} element={<Operations />} />
<Route path={OperationTime.route} element={<OperationTime />} />
</Routes>
</RootPathContext.Provider> </RootPathContext.Provider>
) )
}) })

View File

@ -1,25 +1,17 @@
import { memo, useCallback, useEffect, useMemo, useState } from 'react' import { memo, Suspense, useCallback, useEffect, useMemo, useState } from 'react'
import { Navigate, Outlet, Route, Routes, useParams } from 'react-router-dom' import { Outlet, useParams } from 'react-router-dom'
import { WellContext, RootPathContext, useRootPath } from '@asb/context' import { WellContext, RootPathContext, useRootPath } from '@asb/context'
import { LayoutPortal } from '@components/LayoutPortal' import { LayoutPortal } from '@components/LayoutPortal'
import SuspenseFallback from '@components/SuspenseFallback'
import { invokeWebApiWrapperAsync } from '@components/factory' import { invokeWebApiWrapperAsync } from '@components/factory'
import { NoAccessComponent, wrapPrivateComponent } from '@utils' import { wrapPrivateComponent } from '@utils'
import { WellService } from '@api' import { WellService } from '@api'
import Measure from './Measure'
import Reports from './Reports'
import WellCase from './WellCase'
import Analytics from './Analytics'
import Documents from './Documents'
import Telemetry from './Telemetry'
import WellOperations from './WellOperations'
import DrillingProgram from './DrillingProgram'
import NavigationMenu from './NavigationMenu' import NavigationMenu from './NavigationMenu'
import '@styles/index.css' import '@styles/index.css'
const Well = memo(() => { const Well = memo(() => {
const { idWell } = useParams() const { idWell } = useParams()
@ -54,20 +46,9 @@ const Well = memo(() => {
<RootPathContext.Provider value={rootPath}> <RootPathContext.Provider value={rootPath}>
<WellContext.Provider value={[well, updateWell]}> <WellContext.Provider value={[well, updateWell]}>
<LayoutPortal sider={<NavigationMenu />}> <LayoutPortal sider={<NavigationMenu />}>
<Routes> <Suspense fallback={<SuspenseFallback style={{ minHeight: '100%' }} />}>
<Route index element={<Navigate to={Telemetry.getKey()} replace />} /> <Outlet />
<Route path={'*'} element={<NoAccessComponent />} /> </Suspense>
<Route path={Telemetry.route} element={<Telemetry />} />
<Route path={Reports.route} element={<Reports />} />
<Route path={Analytics.route} element={<Analytics />} />
<Route path={WellOperations.route} element={<WellOperations />} />
<Route path={Documents.route} element={<Documents />} />
<Route path={Measure.route} element={<Measure />} />
<Route path={DrillingProgram.route} element={<DrillingProgram />} />
<Route path={WellCase.route} element={<WellCase />} />
</Routes>
<Outlet />
</LayoutPortal> </LayoutPortal>
</WellContext.Provider> </WellContext.Provider>
</RootPathContext.Provider> </RootPathContext.Provider>

View File

@ -0,0 +1,14 @@
import { wrapPrivateComponent } from '@utils'
import WellOperationsEditor from './WellOperationsEditor'
export const WellOperationsEditorFact = wrapPrivateComponent(
() => <WellOperationsEditor idType={1} tableName={'well_operations_fact'}/>,
{
requirements: [ 'WellOperation.get' ],
title: 'Факт',
route: 'fact',
}
)
export default WellOperationsEditorFact

View File

@ -0,0 +1,14 @@
import { wrapPrivateComponent } from '@utils'
import WellOperationsEditor from './WellOperationsEditor'
export const WellOperationsEditorPlan = wrapPrivateComponent(
() => <WellOperationsEditor idType={0} tableName={'well_operations_plan'}/>,
{
requirements: [ 'WellOperation.get' ],
title: 'План',
route: 'plan',
}
)
export default WellOperationsEditorPlan

View File

@ -17,7 +17,7 @@ import {
} from '@components/Table' } from '@components/Table'
import LoaderPortal from '@components/LoaderPortal' import LoaderPortal from '@components/LoaderPortal'
import { invokeWebApiWrapperAsync } from '@components/factory' import { invokeWebApiWrapperAsync } from '@components/factory'
import { arrayOrDefault, wrapPrivateComponent } from '@utils' import { arrayOrDefault } from '@utils'
import { WellOperationService } from '@api' import { WellOperationService } from '@api'
const { TextArea } = Input const { TextArea } = Input
@ -51,7 +51,7 @@ const generateColumns = (showNpt = false, categories = [], sectionTypes = []) =>
makeTextColumn('Комментарий', 'comment', null, null, null, { editable: true, input: <TextArea/> }), makeTextColumn('Комментарий', 'comment', null, null, null, { editable: true, input: <TextArea/> }),
].filter(Boolean) ].filter(Boolean)
const WellOperationsEditor = memo(({ idType, showNpt, ...other }) => { export const WellOperationsEditor = memo(({ idType, showNpt, ...other }) => {
const [pageNumAndPageSize, setPageNumAndPageSize] = useState({ current: 1, pageSize: basePageSize }) const [pageNumAndPageSize, setPageNumAndPageSize] = useState({ current: 1, pageSize: basePageSize })
const [paginationTotal, setPaginationTotal] = useState(0) const [paginationTotal, setPaginationTotal] = useState(0)
const [operations, setOperations] = useState([]) const [operations, setOperations] = useState([])
@ -161,20 +161,4 @@ const WellOperationsEditor = memo(({ idType, showNpt, ...other }) => {
) )
}) })
export const WellOperationsEditorPlan = wrapPrivateComponent( export default WellOperationsEditor
() => <WellOperationsEditor idType={0} tableName={'well_operations_plan'}/>,
{
requirements: [ 'WellOperation.get' ],
title: 'План',
route: 'plan',
}
)
export const WellOperationsEditorFact = wrapPrivateComponent(
() => <WellOperationsEditor idType={1} tableName={'well_operations_fact'}/>,
{
requirements: [ 'WellOperation.get' ],
title: 'Факт',
route: 'fact',
}
)

View File

@ -1,16 +1,11 @@
import { useNavigate, useLocation, Route, Routes, Navigate } from 'react-router-dom' import { useNavigate, useLocation, Outlet } from 'react-router-dom'
import { memo, useCallback, useMemo } from 'react' import { memo, useCallback, useMemo } from 'react'
import { RootPathContext, useRootPath } from '@asb/context' import { RootPathContext, useRootPath } from '@asb/context'
import { Flex } from '@components/Grid' import { Flex } from '@components/Grid'
import { getTabname, NoAccessComponent, wrapPrivateComponent } from '@utils' import { getTabname, wrapPrivateComponent } from '@utils'
import Tvd from './Tvd'
import { ImportExportBar } from './ImportExportBar' import { ImportExportBar } from './ImportExportBar'
import { WellDrillParams } from './WellDrillParams'
import { DrillProcessFlow } from './DrillProcessFlow'
import { WellSectionsStat } from './WellSectionsStat'
import { WellOperationsEditorPlan, WellOperationsEditorFact } from './WellOperationsEditor'
const properties = { const properties = {
requirements: [], requirements: [],
@ -37,17 +32,7 @@ const WellOperations = memo(() => {
<Flex style={{ width: '100%' }}> <Flex style={{ width: '100%' }}>
<ImportExportBar disabled={isIEBarDisabled} onImported={onImported}/> <ImportExportBar disabled={isIEBarDisabled} onImported={onImported}/>
</Flex> </Flex>
<Routes> <Outlet />
<Route index element={<Navigate to={Tvd.getKey()} replace />} />
<Route path={'*'} element={<NoAccessComponent />} />
<Route path={Tvd.route} element={<Tvd />} />
<Route path={'sections'} element={<WellSectionsStat />} />
<Route path={WellOperationsEditorPlan.route} element={<WellOperationsEditorPlan />} />
<Route path={WellOperationsEditorFact.route} element={<WellOperationsEditorFact />} />
<Route path={'drillProcessFlow'} element={<DrillProcessFlow />} />
<Route path={'params'} element={<WellDrillParams />} />
</Routes>
</RootPathContext.Provider> </RootPathContext.Provider>
) )
}) })