This is an automated email from the ASF dual-hosted git repository.

arafat2198 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 2b1524b596 HDDS-11609. Switch to Recon v2 UI as the default UI (#7358)
2b1524b596 is described below

commit 2b1524b596f84ce3c7c04e7e1bdca1f49324b77f
Author: Abhishek Pal <[email protected]>
AuthorDate: Wed Nov 6 13:35:59 2024 +0530

    HDDS-11609. Switch to Recon v2 UI as the default UI (#7358)
---
 .../webapps/recon/ozone-recon-web/src/app.tsx      |  69 +++++++-------
 .../src/v2/pages/notFound/notFound.tsx             | 103 +++++++++++++++++++++
 .../recon/ozone-recon-web/src/v2/routes-v2.tsx     |   9 ++
 3 files changed, 150 insertions(+), 31 deletions(-)

diff --git 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.tsx
 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.tsx
index ceb633f603..0b7607f297 100644
--- 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.tsx
+++ 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/app.tsx
@@ -32,6 +32,7 @@ import classNames from 'classnames';
 import Loader from '@/v2/components/loader/loader';
 
 import './app.less';
+import NotFound from '@/v2/pages/notFound/notFound';
 
 const {
   Header, Content, Footer
@@ -39,7 +40,7 @@ const {
 
 interface IAppState {
   collapsed: boolean;
-  enableNewUI: boolean;
+  enableOldUI: boolean;
 }
 
 class App extends React.Component<Record<string, object>, IAppState> {
@@ -47,7 +48,7 @@ class App extends React.Component<Record<string, object>, 
IAppState> {
     super(props);
     this.state = {
       collapsed: false,
-      enableNewUI: false
+      enableOldUI: false
     };
   }
 
@@ -56,7 +57,7 @@ class App extends React.Component<Record<string, object>, 
IAppState> {
   };
 
   render() {
-    const { collapsed, enableNewUI } = this.state;
+    const { collapsed, enableOldUI } = this.state;
     const layoutClass = classNames('content-layout', { 'sidebar-collapsed': 
collapsed });
 
 
@@ -64,40 +65,46 @@ class App extends React.Component<Record<string, object>, 
IAppState> {
       <Router>
         <Layout style={{ minHeight: '100vh' }}>
           {
-            (enableNewUI)
-            ? <NavBarV2 collapsed={collapsed} onCollapse={this.onCollapse} />
-            : <NavBar collapsed={collapsed} onCollapse={this.onCollapse} />
+            (enableOldUI)
+              ? <NavBar collapsed={collapsed} onCollapse={this.onCollapse} />
+              : <NavBarV2 collapsed={collapsed} onCollapse={this.onCollapse} />
           }
           <Layout className={layoutClass}>
             <Header>
-              <div style={{ margin: '16px 0', display: 'flex', justifyContent: 
'space-between' }}>
-                {(enableNewUI) ? <BreadcrumbsV2 /> : <Breadcrumbs />}
-                <AntDSwitch
-                  disabled={true}
-                  checkedChildren={<div style={{ paddingLeft: '2px' }}>New 
UI</div>}
-                  onChange={(checked: boolean) => {
-                    this.setState({
-                      enableNewUI: checked
-                    });
-                  }} />
+              <div style={{ display: 'flex', justifyContent: 'space-between', 
alignItems: 'center' }}>
+                {(enableOldUI) ? <Breadcrumbs /> : <BreadcrumbsV2 />}
+                <span>
+                  <span style={{ marginRight: '8px', color: '#515151'}}>Switch 
to</span>
+                  <AntDSwitch
+                    unCheckedChildren={<div style={{ paddingRight: '2px' 
}}>Old UI</div>}
+                    checkedChildren={<div style={{ paddingLeft: '2px' }}>New 
UI</div>}
+                    onChange={(checked: boolean) => {
+                      this.setState({
+                        enableOldUI: checked
+                      });
+                    }} />
+                </span>
               </div>
             </Header>
-            <Content style={(enableNewUI) ? {} : { margin: '0 16px 0', 
overflow: 'initial' }}>
-              <Switch>
-                <Route exact path='/'>
-                  <Redirect to='/Overview' />
-                </Route>
-                {(enableNewUI)
-                  ? <Suspense fallback={<Loader/>}>
-                    {routesV2.map(
+            <Content style={(enableOldUI) ? { margin: '0 16px 0', overflow: 
'initial' } : {}}>
+              <Suspense fallback={<Loader />}>
+                <Switch>
+                  <Route exact path='/'>
+                    <Redirect to='/Overview' />
+                  </Route>
+                  {(enableOldUI)
+                    ? routes.map(
                       (route, index) => <MakeRouteWithSubRoutes key={index} 
{...route} />
-                    )}
-                  </Suspense>
-                  : routes.map(
-                    (route, index) => <MakeRouteWithSubRoutes key={index} 
{...route} />
-                  )
-                }
-              </Switch>
+                    )
+                    : routesV2.map(
+                      (route, index) => {
+                        return <MakeRouteWithSubRoutes key={index} {...route} 
/>
+                      }
+                    )
+                  }
+                  <Route component={NotFound} />
+                </Switch>
+              </Suspense>
             </Content>
             <Footer style={{ textAlign: 'center' }} />
           </Layout>
diff --git 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/notFound/notFound.tsx
 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/notFound/notFound.tsx
new file mode 100644
index 0000000000..4664f99f2c
--- /dev/null
+++ 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/pages/notFound/notFound.tsx
@@ -0,0 +1,103 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import React from 'react';
+import { Button } from 'antd';
+import { ArrowLeftOutlined } from '@ant-design/icons';
+import { useHistory } from 'react-router-dom';
+
+// Declare SVG constant instead of importing a file to help loading
+const notFoundIcon = (
+  <svg width="100%" height="100%" viewBox="0 0 1080 1080" style={{ fillRule: 
'evenodd', clipRule: 'evenodd', strokeLinecap: 'round', strokeLinejoin: 
'round', strokeMiterlimit: 1.5 }}>
+    <g transform="matrix(1.44095,0,0,1.44095,-185.216,-251.373)">
+      <g transform="matrix(0.944978,0,0,0.914657,24.9329,68.941)">
+        <path d="M247.428,443.796C248.822,443.952 391.105,376.828 
247.428,443.796C103.751,510.764 115.658,684.797 231.483,694.498C347.308,704.199 
384.351,672.783 454.345,635.793C524.34,598.803 525.667,599.868 
561.552,593.322C597.437,586.777 583.99,603.712 574.32,632.611C564.65,661.511 
493.253,787.738 741.087,710.394C988.922,633.051 882.616,522.813 
771.238,531.547C659.86,540.281 579.512,617.269 590.123,579.339C600.734,541.408 
714.633,402.262 579.57,382.851C444.507,363.439 246.035,443.641  [...]
+      </g>
+      <g 
transform="matrix(0.644866,-1.18562e-16,-8.57454e-17,-0.27393,51.8343,793.841)">
+        <rect x="215.614" y="745.673" width="711.164" height="5.027" style={{ 
fill: 'rgb(4,15,66)', stroke: 'black', strokeOpacity: 0, strokeWidth: '16.81px' 
}} />
+      </g>
+      <g 
transform="matrix(0.0449181,2.51391e-16,-3.87546e-16,-0.298306,128.725,812.065)">
+        <rect x="215.614" y="745.673" width="711.164" height="5.027" style={{ 
fill: 'rgb(4,15,66)', stroke: 'black', strokeOpacity: 0, strokeWidth: '39.04px' 
}} />
+      </g>
+      <g 
transform="matrix(0.0536855,1.21321e-16,-4.8904e-18,0.178017,501.717,463.557)">
+        <rect x="215.614" y="745.673" width="711.164" height="5.027" style={{ 
fill: 'rgb(4,15,66)', stroke: 'black', strokeOpacity: 0, strokeWidth: '63.34px' 
}} />
+      </g>
+      <g transform="matrix(14.9468,0,0,14.9468,-2160.92,-6553.61)">
+        <g transform="matrix(24,0,0,24,170.176,478.583)">
+        </g>
+        <text x="156.406px" y="478.583px" style={{ fontFamily: 'Roboto-Bold, 
Roboto', fontWeight: 700, fontSize: '24px', fill: 'rgb(11,36,0)' }}>4</text>
+      </g>
+      <g transform="matrix(1.74862,0,0,1.74862,-357.721,-43.1954)">
+        <g transform="matrix(192,0,0,192,526.902,357.026)">
+        </g>
+        <text x="416.746px" y="357.026px" style={{ fontFamily: 'Roboto-Bold, 
Roboto', fontWeight: 700, fontSize: '192px', fill: 'rgb(11,36,0)' }}>0</text>
+      </g>
+      <g transform="matrix(21.2052,0,0,21.2052,-2759.51,-9389.18)">
+        <g transform="matrix(24,0,0,24,170.176,478.583)">
+        </g>
+        <text x="156.406px" y="478.583px" style={{ fontFamily: 'Roboto-Bold, 
Roboto', fontWeight: 700, fontSize: '24px', fill: 'rgb(11,36,0)' }}>4</text>
+      </g>
+      <g transform="matrix(1,0,0,1,-27,0)">
+        <g transform="matrix(1,0,0,0.589632,0,242.476)">
+          <path d="M617.69,423.839L617.69,589.68C617.69,590.339 
617.375,590.874 616.986,590.874L615.578,590.874C615.19,590.874 614.874,590.339 
614.874,589.68L614.874,423.839C614.874,423.18 615.19,422.645 
615.578,422.645L616.986,422.645C617.375,422.645 617.69,423.18 617.69,423.839Z" 
style={{ fill: 'rgb(23,51,38)', stroke: 'rgb(43,43,43)', strokeOpacity: 0, 
strokeWidth: '0.85px' }} />
+        </g>
+        <g 
transform="matrix(0.851104,0.0593827,-0.0701034,1.00476,128.082,-24.3374)">
+          <path 
d="M601.027,497.013L640.442,497.013L648.218,502.656L641.04,509.834L600.77,509.834L601.027,497.013Z"
 style={{ fill: 'rgb(9,172,98)', stroke: 'rgb(43,43,43)', strokeOpacity: 0, 
strokeWidth: '0.74px' }} />
+        </g>
+        <g transform="matrix(-0.716372,0,0,1,1058.43,-0.0408301)">
+          <path 
d="M601.027,497.013L640.442,497.013L650.733,504.094L641.04,509.834L600.77,509.834L601.027,497.013Z"
 style={{ fill: 'rgb(0,166,91)', stroke: 'rgb(43,43,43)', strokeOpacity: 0, 
strokeWidth: '0.8px' }} />
+        </g>
+      </g>
+      <g transform="matrix(0.100667,0,0,0.100667,514.784,673.301)">
+        <g transform="matrix(22,0,0,22,1001.53,645.714)">
+        </g>
+        <text x="846.825px" y="645.714px" style={{ fontFamily: 'Roboto-Bold, 
Roboto', fontWeight: 700, fontSize: '22px', fill: 'rgb(108,217,156)' 
}}>de<tspan x="870.974px 881.931px " y="645.714px 645.714px 
">va</tspan>bhishekpal</text>
+      </g>
+    </g>
+  </svg>
+)
+
+const contentStyles: React.CSSProperties = {
+  height: '80vh',
+  display: 'flex',
+  flexDirection: 'column',
+  justifyContent: 'center',
+  alignItems: 'center',
+  gap: '20px',
+  fontSize: '18px',
+  color: '#8a8a8a',
+  fontWeight: 400
+}
+
+const NotFound: React.FC<{}> = () => {
+  const history = useHistory();
+
+  return (
+    <div style={contentStyles}>
+      <div style={{ width: '100%', height: '70%' }}> {notFoundIcon} </div>
+      The page you visited does not exist
+      <Button type='primary'
+        onClick={() => { history.goBack() }}>
+        <ArrowLeftOutlined />
+        Go Back
+      </Button>
+    </div>
+  )
+}
+
+export default NotFound;
\ No newline at end of file
diff --git 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/routes-v2.tsx
 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/routes-v2.tsx
index 9f27b7cae7..c3ff1b97e3 100644
--- 
a/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/routes-v2.tsx
+++ 
b/hadoop-ozone/recon/src/main/resources/webapps/recon/ozone-recon-web/src/v2/routes-v2.tsx
@@ -17,6 +17,9 @@
  */
 import { lazy } from 'react';
 
+import { Heatmap } from '@/views/heatMap/heatmap';
+import NotFound from '@/v2/pages/notFound/notFound';
+
 const Overview = lazy(() => import('@/v2/pages/overview/overview'));
 const Volumes = lazy(() => import('@/v2/pages/volumes/volumes'))
 const Buckets = lazy(() => import('@/v2/pages/buckets/buckets'));
@@ -27,6 +30,7 @@ const Containers = lazy(() => 
import('@/v2/pages/containers/containers'));
 const Insights = lazy(() => import('@/v2/pages/insights/insights'));
 const OMDBInsights = lazy(() => import('@/v2/pages/insights/omInsights'));
 
+
 export const routesV2 = [
   {
     path: '/Overview',
@@ -63,5 +67,10 @@ export const routesV2 = [
   {
     path: '/Om',
     component: OMDBInsights
+  },
+  // TODO: Replace with V2 heatmap once rea
+  {
+    path: '/Heatmap',
+    component: Heatmap
   }
 ];


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to