diff --git a/frontend/src/api/apiV1.ts b/frontend/src/api/apiV1.ts
new file mode 100644
index 0000000000..2cd9b83295
--- /dev/null
+++ b/frontend/src/api/apiV1.ts
@@ -0,0 +1,3 @@
+const apiV1 = "/api/v1/";
+
+export default apiV1;
diff --git a/frontend/src/api/graphQuery.js b/frontend/src/api/graphQuery.js
deleted file mode 100644
index e679ca505d..0000000000
--- a/frontend/src/api/graphQuery.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import axios from "axios";
-import { ENVIRONMENT } from "Src/constants/env";
-import { Token } from "../utils/token";
-
-// No auth for the API
-export default axios.create({
- baseURL: `${ENVIRONMENT.baseURL}/api/prom/api/v1`,
-});
diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts
new file mode 100644
index 0000000000..c580024bcb
--- /dev/null
+++ b/frontend/src/api/index.ts
@@ -0,0 +1,9 @@
+import axios, { AxiosRequestConfig } from "axios";
+import { ENVIRONMENT } from "Src/constants/env";
+import apiV1 from "./apiV1";
+
+export default axios.create({
+ baseURL: `${ENVIRONMENT.baseURL}`,
+});
+
+export { apiV1 };
diff --git a/frontend/src/api/metricsAPI.js b/frontend/src/api/metricsAPI.js
deleted file mode 100644
index f82bf8f357..0000000000
--- a/frontend/src/api/metricsAPI.js
+++ /dev/null
@@ -1,6 +0,0 @@
-import axios from "axios";
-import { ENVIRONMENT } from "Src/constants/env";
-
-export default axios.create({
- baseURL: `${ENVIRONMENT.baseURL}/api/v1/`,
-});
diff --git a/frontend/src/api/submitForm.js b/frontend/src/api/submitForm.js
deleted file mode 100644
index 216569dad5..0000000000
--- a/frontend/src/api/submitForm.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import axios from "axios";
-import { ENVIRONMENT } from "Src/constants/env";
-import { Token } from "../utils/token";
-
-export default axios.create({
- // baseURL: 'https://api.telegram.org/bot1518273960:AAHcgVvym9a0Qkl-PKiCI84X1VZaVbkTud0/',
- // baseURL: 'http://104.211.113.204:8080/api/v1/',
- // baseURL: "/api/v1/",
- baseURL: `${ENVIRONMENT.baseURL}/api/v1/`,
-});
-
-//https://api.telegram.org/bot1518273960:AAHcgVvym9a0Qkl-PKiCI84X1VZaVbkTud0/sendMessage?chat_id=351813222&text=Hello%20there
-
-// Chat ID can be obtained from here
-//https://api.telegram.org/bot1518273960:AAHcgVvym9a0Qkl-PKiCI84X1VZaVbkTud0/getUpdates
diff --git a/frontend/src/api/tracesAPI.js b/frontend/src/api/tracesAPI.js
deleted file mode 100644
index 9c11771e6b..0000000000
--- a/frontend/src/api/tracesAPI.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import axios from "axios";
-import { ENVIRONMENT } from "Src/constants/env";
-import { Token } from "../utils/token";
-//import { format } from 'path';
-
-export default axios.create({
- // baseURL: 'http://104.211.113.204:8080/api/v1/' //comment this line and remove this comment before pushing
- // baseURL: process.env.QUERY_SERVICE_URL,
- // console.log('in traces API', process.env.QUERY_SERVICE_URL)
- // baseURL: "/api/v1/",
- baseURL: `${ENVIRONMENT.baseURL}/api/v1/`,
-});
diff --git a/frontend/src/components/App.tsx b/frontend/src/components/App.tsx
deleted file mode 100644
index 66b613674c..0000000000
--- a/frontend/src/components/App.tsx
+++ /dev/null
@@ -1,185 +0,0 @@
-import React, { Suspense, useState } from "react";
-import { Layout, Menu, Switch as ToggleButton, Spin, Row, Col } from "antd";
-import { useThemeSwitcher } from "react-css-theme-switcher";
-
-import {
- NavLink,
- BrowserRouter as Router,
- Route,
- Switch,
-} from "react-router-dom";
-import {
- LineChartOutlined,
- BarChartOutlined,
- DeploymentUnitOutlined,
- AlignLeftOutlined,
- AppstoreOutlined,
- SettingOutlined,
- ApiOutlined
-} from "@ant-design/icons";
-
-import DateTimeSelector from "Src/components/DateTimeSelector";
-import ShowBreadcrumbs from "Src/components/ShowBreadcrumbs";
-import styled from "styled-components";
-
-const { Content, Footer, Sider } = Layout;
-
-const ServiceMetrics = React.lazy(
- () => import("Src/components/metrics/ServiceMetricsDef"),
-);
-const ServiceMap = React.lazy(
- () => import("Src/components/servicemap/ServiceMap"),
-);
-const TraceDetail = React.lazy(
- () => import("Src/components/traces/TraceDetail"),
-);
-const TraceGraph = React.lazy(
- () => import("Src/components/traces/TraceGraphDef"),
-);
-const UsageExplorer = React.lazy(
- () => import("Src/components/usage/UsageExplorerDef"),
-);
-const ServicesTable = React.lazy(
- () => import("Src/components/metrics/ServicesTableDef"),
-);
-const Signup = React.lazy(() => import("Src/components/Signup"));
-const SettingsPage = React.lazy(
- () => import("Src/components/settings/settingsPage"),
-);
-
-const IntstrumentationPage = React.lazy(
- () => import("Src/components/add-instrumentation/instrumentationPage"),
-);
-//PNOTE
-//React. lazy currently only supports default exports. If the module you want to import uses named exports, you can create an intermediate module that reexports it as the default. This ensures that tree shaking keeps working and that you don't pull in unused components.
-
-const ThemeSwitcherWrapper = styled.div`
- display: flex;
- justify-content: center;
- margin-top: 20px;
-`;
-const App = () => {
- // state = { collapsed: false, isDarkMode: true };
- const { switcher, currentTheme, status, themes } = useThemeSwitcher();
- const [isDarkMode, setIsDarkMode] = useState(true);
- const [collapsed, setCollapsed] = useState(false);
-
- const toggleTheme = (isChecked: boolean) => {
- setIsDarkMode(isChecked);
- switcher({ theme: isChecked ? themes.dark : themes.light });
- };
-
- const onCollapse = (): void => {
- setCollapsed(!collapsed);
- };
-
- if (status === "loading") {
- return null;
- }
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* */}
-
- }>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default App;
diff --git a/frontend/src/components/common/Modal.tsx b/frontend/src/components/Modal.tsx
similarity index 100%
rename from frontend/src/components/common/Modal.tsx
rename to frontend/src/components/Modal.tsx
diff --git a/frontend/src/index.tsx b/frontend/src/index.tsx
index 629469570f..bb4230356d 100644
--- a/frontend/src/index.tsx
+++ b/frontend/src/index.tsx
@@ -1,26 +1,12 @@
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
-import { createStore, applyMiddleware, compose } from "redux";
import { ThemeSwitcherProvider } from "react-css-theme-switcher";
-import thunk from "redux-thunk";
-// import { NavLink, BrowserRouter as Router, Route, Switch } from 'react-router-dom';
-import { Auth0Provider } from "@auth0/auth0-react";
-
-import AppWrapper from "Src/components/AppWrapper";
+import store from "Src/store";
+import AppWrapper from "Src/modules/AppWrapper";
import "Src/assets/index.css";
-import { reducers } from "Src/reducers";
import { BrowserRouter as Router } from "react-router-dom";
-import { AUTH0_CLIENT_ID, AUTH0_DOMAIN } from "./constants/env";
-// import Signup from './components/Signup';
-// @ts-ignore
-const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
-const store = createStore(reducers, composeEnhancers(applyMiddleware(thunk)));
-
-const themes = {
- dark: `/dark-theme.css`,
- light: `/light-theme.css`,
-};
+import themes from "Src/themes";
ReactDOM.render(
diff --git a/frontend/src/modules/App.tsx b/frontend/src/modules/App.tsx
new file mode 100644
index 0000000000..d2828d9f10
--- /dev/null
+++ b/frontend/src/modules/App.tsx
@@ -0,0 +1,81 @@
+import React, { Suspense } from "react";
+import { Layout, Spin } from "antd";
+import { useThemeSwitcher } from "react-css-theme-switcher";
+
+import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
+
+import SideNav from "./Nav/SideNav";
+import TopNav from "./Nav/TopNav";
+
+const { Content, Footer } = Layout;
+
+const ServiceMetrics = React.lazy(
+ () => import("Src/modules/metrics/ServiceMetricsDef"),
+);
+const ServiceMap = React.lazy(
+ () => import("Src/modules/Servicemap/ServiceMap"),
+);
+const TraceDetail = React.lazy(() => import("Src/modules/Traces/TraceDetail"));
+const TraceGraph = React.lazy(() => import("Src/modules/Traces/TraceGraphDef"));
+const UsageExplorer = React.lazy(
+ () => import("Src/modules/Usage/UsageExplorerDef"),
+);
+const ServicesTable = React.lazy(
+ () => import("Src/modules/metrics/ServicesTableDef"),
+);
+const Signup = React.lazy(() => import("Src/modules/Auth/Signup"));
+const SettingsPage = React.lazy(
+ () => import("Src/modules/Settings/settingsPage"),
+);
+
+const IntstrumentationPage = React.lazy(
+ () => import("Src/modules/add-instrumentation/instrumentationPage"),
+);
+//PNOTE
+//React. lazy currently only supports default exports. If the module you want to import uses named exports, you can create an intermediate module that reexports it as the default. This ensures that tree shaking keeps working and that you don't pull in unused components.
+
+const App = () => {
+ const { status } = useThemeSwitcher();
+
+ if (status === "loading") {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
+ {/* */}
+
+ }>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default App;
diff --git a/frontend/src/components/AppWrapper.tsx b/frontend/src/modules/AppWrapper.tsx
similarity index 86%
rename from frontend/src/components/AppWrapper.tsx
rename to frontend/src/modules/AppWrapper.tsx
index d72332f361..ca75872572 100644
--- a/frontend/src/components/AppWrapper.tsx
+++ b/frontend/src/modules/AppWrapper.tsx
@@ -1,8 +1,8 @@
-import React, { Suspense, useState } from "react";
+import React, { Suspense } from "react";
import { Spin } from "antd";
import { Route, Switch, Redirect } from "react-router-dom";
-import Signup from "./Signup";
-const App = React.lazy(() => import("Src/components/App"));
+import Signup from "./Auth/Signup";
+const App = React.lazy(() => import("Src/modules/App"));
const AppWrapper = () => {
return (
diff --git a/frontend/src/components/Signup.tsx b/frontend/src/modules/Auth/Signup.tsx
similarity index 88%
rename from frontend/src/components/Signup.tsx
rename to frontend/src/modules/Auth/Signup.tsx
index c8e7d6593e..c31bd84148 100644
--- a/frontend/src/components/Signup.tsx
+++ b/frontend/src/modules/Auth/Signup.tsx
@@ -1,6 +1,7 @@
-import React, { useState, useRef, Suspense } from "react";
-import { Row, Space, Button, Input, Checkbox } from "antd";
-import submitForm from "../api/submitForm";
+import React, { useState } from "react";
+import { Row, Space, Button, Input } from "antd";
+import api, { apiV1 } from "../../api";
+
import { withRouter } from "react-router";
import { RouteComponentProps } from "react-router-dom";
@@ -15,14 +16,10 @@ const Signup = (props: SignUpProps) => {
password: { value: "", valid: true },
emailOptIn: { value: true },
});
- const passwordInput = useRef(null);
- // const { createAccount } = useActions(signupLogic)
- // const { accountLoading } = useValues(signupLogic)
- // const { plan } = fromParams()
const updateForm = (name: any, target: any, valueAttr = "value") => {
/* Validate password (if applicable) */
- if (name === "firstName") {
+ if (name === "firstName") {
setFormState({
...formState,
firstName: { ...formState.firstName, value: target[valueAttr] },
@@ -49,9 +46,7 @@ const Signup = (props: SignUpProps) => {
let texttolog = JSON.stringify(payload);
-
-
- submitForm.post("user?email=" + texttolog).then((res) => {
+ api.post(apiV1 + "/user?email=" + texttolog).then((res) => {
console.log(res);
console.log(res.data);
});
@@ -118,8 +113,6 @@ const Signup = (props: SignUpProps) => {
/>
-
-
{
/>
-
+