mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-11 03:19:00 +08:00
fix(FE): tsConfig baseUrl is used rather than using the alias for module (#256)
* tsconfig-paths-webpack-plugin package is added * baseUrl is updated * webpack config for development and production are updated * baseUrl is removed in the file * more .. is being removed * chore: removed the commented part in the webpack.config Co-authored-by: FIPalash Gupta <palash@indiagold.co>
This commit is contained in:
parent
77c0237ba1
commit
4b205e61c8
@ -102,6 +102,7 @@
|
|||||||
"styled-components": "^5.2.1",
|
"styled-components": "^5.2.1",
|
||||||
"terser-webpack-plugin": "4.2.3",
|
"terser-webpack-plugin": "4.2.3",
|
||||||
"ts-pnp": "1.2.0",
|
"ts-pnp": "1.2.0",
|
||||||
|
"tsconfig-paths-webpack-plugin": "^3.5.1",
|
||||||
"typescript": "^4.0.5",
|
"typescript": "^4.0.5",
|
||||||
"url-loader": "4.1.1",
|
"url-loader": "4.1.1",
|
||||||
"web-vitals": "^0.2.4",
|
"web-vitals": "^0.2.4",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import axios, { AxiosRequestConfig } from "axios";
|
import axios, { AxiosRequestConfig } from "axios";
|
||||||
import { ENVIRONMENT } from "Src/constants/env";
|
import { ENVIRONMENT } from "constants/env";
|
||||||
import apiV1 from "./apiV1";
|
import apiV1 from "./apiV1";
|
||||||
|
|
||||||
export default axios.create({
|
export default axios.create({
|
||||||
|
@ -2,8 +2,8 @@ import React from "react";
|
|||||||
|
|
||||||
import { Button, Text, TextContainer, Container } from "./styles";
|
import { Button, Text, TextContainer, Container } from "./styles";
|
||||||
|
|
||||||
import NotFoundImage from "Src/assets/NotFound";
|
import NotFoundImage from "assets/NotFound";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
const NotFound = (): JSX.Element => {
|
const NotFound = (): JSX.Element => {
|
||||||
return (
|
return (
|
||||||
|
@ -2,11 +2,11 @@ import React from "react";
|
|||||||
import ReactDOM from "react-dom";
|
import ReactDOM from "react-dom";
|
||||||
import { Provider } from "react-redux";
|
import { Provider } from "react-redux";
|
||||||
import { ThemeSwitcherProvider } from "react-css-theme-switcher";
|
import { ThemeSwitcherProvider } from "react-css-theme-switcher";
|
||||||
import store from "Src/store";
|
import store from "store";
|
||||||
import AppWrapper from "Src/modules/AppWrapper";
|
import AppWrapper from "modules/AppWrapper";
|
||||||
import "Src/assets/index.css";
|
import "assets/index.css";
|
||||||
import { BrowserRouter as Router } from "react-router-dom";
|
import { BrowserRouter as Router } from "react-router-dom";
|
||||||
import themes from "Src/themes";
|
import themes from "themes";
|
||||||
|
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import React, { Suspense } from "react";
|
import React, { Suspense } from "react";
|
||||||
import { useThemeSwitcher } from "react-css-theme-switcher";
|
import { useThemeSwitcher } from "react-css-theme-switcher";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
import { IS_LOGGED_IN } from "Src/constants/auth";
|
import { IS_LOGGED_IN } from "constants/auth";
|
||||||
import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
|
import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
|
||||||
import { CustomSpinner } from "./../components/Spiner";
|
import { CustomSpinner } from "components/Spiner";
|
||||||
|
|
||||||
import BaseLayout from "./BaseLayout";
|
import BaseLayout from "./BaseLayout";
|
||||||
import {
|
import {
|
||||||
@ -16,9 +16,9 @@ import {
|
|||||||
Signup,
|
Signup,
|
||||||
SettingsPage,
|
SettingsPage,
|
||||||
InstrumentationPage,
|
InstrumentationPage,
|
||||||
} from "Src/pages";
|
} from "pages";
|
||||||
import { RouteProvider } from "./RouteProvider";
|
import { RouteProvider } from "./RouteProvider";
|
||||||
import NotFound from "Src/components/NotFound";
|
import NotFound from "components/NotFound";
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
const { status } = useThemeSwitcher();
|
const { status } = useThemeSwitcher();
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Row, Space, Button, Input } from "antd";
|
import { Row, Space, Button, Input } from "antd";
|
||||||
import api, { apiV1 } from "../../api";
|
import api, { apiV1 } from "api";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
import { IS_LOGGED_IN } from "Src/constants/auth";
|
import { IS_LOGGED_IN } from "constants/auth";
|
||||||
|
|
||||||
import { withRouter } from "react-router";
|
import { withRouter } from "react-router";
|
||||||
import { RouteComponentProps } from "react-router-dom";
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
|
@ -4,9 +4,9 @@ import { ChartOptions } from "chart.js";
|
|||||||
import { withRouter } from "react-router";
|
import { withRouter } from "react-router";
|
||||||
import { RouteComponentProps } from "react-router-dom";
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
import { metricItem } from "../../store/actions/MetricsActions";
|
import { metricItem } from "store/actions/MetricsActions";
|
||||||
|
|
||||||
const ChartPopUpUnique = styled.div<{
|
const ChartPopUpUnique = styled.div<{
|
||||||
ycoordinate: number;
|
ycoordinate: number;
|
||||||
|
@ -3,7 +3,7 @@ import { Line as ChartJSLine } from "react-chartjs-2";
|
|||||||
import { withRouter } from "react-router";
|
import { withRouter } from "react-router";
|
||||||
import { RouteComponentProps } from "react-router-dom";
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
import { getOptions, borderColors } from "./graphConfig";
|
import { getOptions, borderColors } from "./graphConfig";
|
||||||
import { externalMetricsItem } from "../../../store/actions/MetricsActions";
|
import { externalMetricsItem } from "store/actions/MetricsActions";
|
||||||
import { uniqBy, filter } from "lodash";
|
import { uniqBy, filter } from "lodash";
|
||||||
|
|
||||||
const theme = "dark";
|
const theme = "dark";
|
||||||
|
@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import { Bar, Line as ChartJSLine } from "react-chartjs-2";
|
import { Bar, Line as ChartJSLine } from "react-chartjs-2";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { customMetricsItem } from "../../store/actions/MetricsActions";
|
import { customMetricsItem } from "store/actions/MetricsActions";
|
||||||
|
|
||||||
const GenVisualizationWrapper = styled.div`
|
const GenVisualizationWrapper = styled.div`
|
||||||
height: 160px;
|
height: 160px;
|
||||||
@ -15,10 +15,16 @@ interface GenericVisualizationsProps {
|
|||||||
|
|
||||||
const GenericVisualizations = (props: GenericVisualizationsProps) => {
|
const GenericVisualizations = (props: GenericVisualizationsProps) => {
|
||||||
const data = {
|
const data = {
|
||||||
labels: (props.data !== undefined && props.data !== null) && props.data.map((s) => new Date(s.timestamp / 1000000)),
|
labels:
|
||||||
|
props.data !== undefined &&
|
||||||
|
props.data !== null &&
|
||||||
|
props.data.map((s) => new Date(s.timestamp / 1000000)),
|
||||||
datasets: [
|
datasets: [
|
||||||
{
|
{
|
||||||
data: (props.data !== undefined && props.data !== null) && props.data.map((s) => s.value),
|
data:
|
||||||
|
props.data !== undefined &&
|
||||||
|
props.data !== null &&
|
||||||
|
props.data.map((s) => s.value),
|
||||||
borderColor: "rgba(250,174,50,1)", // for line chart
|
borderColor: "rgba(250,174,50,1)", // for line chart
|
||||||
backgroundColor: props.chartType === "bar" ? "rgba(250,174,50,1)" : "", // for bar chart, don't assign backgroundcolor if its not a bar chart, may be relevant for area graph though
|
backgroundColor: props.chartType === "bar" ? "rgba(250,174,50,1)" : "", // for bar chart, don't assign backgroundcolor if its not a bar chart, may be relevant for area graph though
|
||||||
},
|
},
|
||||||
|
@ -4,7 +4,7 @@ import { ChartOptions } from "chart.js";
|
|||||||
import { withRouter } from "react-router";
|
import { withRouter } from "react-router";
|
||||||
import { RouteComponentProps } from "react-router-dom";
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { metricItem } from "../../store/actions/MetricsActions";
|
import { metricItem } from "store/actions/MetricsActions";
|
||||||
|
|
||||||
const ChartPopUpUnique = styled.div<{
|
const ChartPopUpUnique = styled.div<{
|
||||||
ycoordinate: number;
|
ycoordinate: number;
|
||||||
|
@ -5,8 +5,8 @@ import { withRouter } from "react-router";
|
|||||||
import { RouteComponentProps } from "react-router-dom";
|
import { RouteComponentProps } from "react-router-dom";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { metricItem } from "../../store/actions/MetricsActions";
|
import { metricItem } from "store/actions/MetricsActions";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
const ChartPopUpUnique = styled.div<{
|
const ChartPopUpUnique = styled.div<{
|
||||||
ycoordinate: number;
|
ycoordinate: number;
|
||||||
@ -208,7 +208,7 @@ class RequestRateChart extends React.Component<RequestRateChartProps> {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{this.GraphTracePopUp()}
|
{this.GraphTracePopUp()}
|
||||||
<div style={{textAlign: "center"}}>Request per sec</div>
|
<div style={{ textAlign: "center" }}>Request per sec</div>
|
||||||
<ChartJSLine
|
<ChartJSLine
|
||||||
ref={this.chartRef}
|
ref={this.chartRef}
|
||||||
data={data_chartJS}
|
data={data_chartJS}
|
||||||
|
@ -3,8 +3,8 @@ import { Tabs, Card, Row, Col } from "antd";
|
|||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { useParams, RouteComponentProps } from "react-router-dom";
|
import { useParams, RouteComponentProps } from "react-router-dom";
|
||||||
import { withRouter } from "react-router";
|
import { withRouter } from "react-router";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
import { GlobalTime, updateTimeInterval } from "Src/store/actions";
|
import { GlobalTime, updateTimeInterval } from "store/actions";
|
||||||
import {
|
import {
|
||||||
metricItem,
|
metricItem,
|
||||||
externalMetricsAvgDurationItem,
|
externalMetricsAvgDurationItem,
|
||||||
@ -12,7 +12,7 @@ import {
|
|||||||
externalMetricsItem,
|
externalMetricsItem,
|
||||||
dbOverviewMetricsItem,
|
dbOverviewMetricsItem,
|
||||||
topEndpointListItem,
|
topEndpointListItem,
|
||||||
} from "../../store/actions/MetricsActions";
|
} from "store/actions/MetricsActions";
|
||||||
import {
|
import {
|
||||||
getServicesMetrics,
|
getServicesMetrics,
|
||||||
getTopEndpoints,
|
getTopEndpoints,
|
||||||
@ -20,14 +20,14 @@ import {
|
|||||||
getExternalMetrics,
|
getExternalMetrics,
|
||||||
getExternalAvgDurationMetrics,
|
getExternalAvgDurationMetrics,
|
||||||
getExternalErrCodeMetrics,
|
getExternalErrCodeMetrics,
|
||||||
} from "../../store/actions/MetricsActions";
|
} from "store/actions/MetricsActions";
|
||||||
|
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import LatencyLineChart from "./LatencyLineChart";
|
import LatencyLineChart from "./LatencyLineChart";
|
||||||
import RequestRateChart from "./RequestRateChart";
|
import RequestRateChart from "./RequestRateChart";
|
||||||
import ErrorRateChart from "./ErrorRateChart";
|
import ErrorRateChart from "./ErrorRateChart";
|
||||||
import TopEndpointsTable from "./TopEndpointsTable";
|
import TopEndpointsTable from "./TopEndpointsTable";
|
||||||
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query";
|
import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
|
||||||
import ExternalApiGraph from "./ExternalApi";
|
import ExternalApiGraph from "./ExternalApi";
|
||||||
const { TabPane } = Tabs;
|
const { TabPane } = Tabs;
|
||||||
|
|
||||||
|
@ -3,13 +3,13 @@ import { NavLink } from "react-router-dom";
|
|||||||
import { Button, Space, Table } from "antd";
|
import { Button, Space, Table } from "antd";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { SKIP_ONBOARDING } from "Src/constants/onboarding";
|
import { SKIP_ONBOARDING } from "constants/onboarding";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
import { getServicesList, GlobalTime } from "../../store/actions";
|
import { getServicesList, GlobalTime } from "store/actions";
|
||||||
import { servicesListItem } from "../../store/actions/MetricsActions";
|
import { servicesListItem } from "store/actions/MetricsActions";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import { CustomModal } from "../../components/Modal";
|
import { CustomModal } from "components/Modal";
|
||||||
import { CustomSpinner,DefaultSpinner } from "../../components/Spiner";
|
import { CustomSpinner, DefaultSpinner } from "components/Spiner";
|
||||||
|
|
||||||
interface ServicesTableProps {
|
interface ServicesTableProps {
|
||||||
servicesList: servicesListItem[];
|
servicesList: servicesListItem[];
|
||||||
@ -124,9 +124,7 @@ const _ServicesTable = (props: ServicesTableProps) => {
|
|||||||
}, [props.servicesList, errorObject]);
|
}, [props.servicesList, errorObject]);
|
||||||
|
|
||||||
if (!initialDataFetch) {
|
if (!initialDataFetch) {
|
||||||
return (
|
return <CustomSpinner size="large" tip="Fetching data..." />;
|
||||||
<CustomSpinner size="large" tip="Fetching data..."/>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (refetchFromBackend && !skipOnboarding) {
|
if (refetchFromBackend && !skipOnboarding) {
|
||||||
@ -152,7 +150,7 @@ const _ServicesTable = (props: ServicesTableProps) => {
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
></iframe>
|
></iframe>
|
||||||
<div style={{ margin: "20px 0" }}>
|
<div style={{ margin: "20px 0" }}>
|
||||||
<DefaultSpinner/>
|
<DefaultSpinner />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
No instrumentation data.
|
No instrumentation data.
|
||||||
|
@ -3,10 +3,10 @@ import { Table, Button, Tooltip } from "antd";
|
|||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { useHistory, useParams } from "react-router-dom";
|
import { useHistory, useParams } from "react-router-dom";
|
||||||
import { topEndpointListItem } from "../../store/actions/MetricsActions";
|
import { topEndpointListItem } from "store/actions/MetricsActions";
|
||||||
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query";
|
import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
|
||||||
import { GlobalTime } from "Src/store/actions";
|
import { GlobalTime } from "store/actions";
|
||||||
import { StoreState } from "Src/store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import "./TopEndpointsTable.css";
|
import "./TopEndpointsTable.css";
|
||||||
|
|
||||||
const Wrapper = styled.div`
|
const Wrapper = styled.div`
|
||||||
|
@ -3,7 +3,7 @@ import { Layout, Menu, Switch as ToggleButton } from "antd";
|
|||||||
import { NavLink } from "react-router-dom";
|
import { NavLink } from "react-router-dom";
|
||||||
import { useThemeSwitcher } from "react-css-theme-switcher";
|
import { useThemeSwitcher } from "react-css-theme-switcher";
|
||||||
import { useLocation } from "react-router-dom";
|
import { useLocation } from "react-router-dom";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
LineChartOutlined,
|
LineChartOutlined,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Modal, DatePicker } from "antd";
|
import { Modal, DatePicker } from "antd";
|
||||||
import { DateTimeRangeType } from "../../../store/actions";
|
import { DateTimeRangeType } from "store/actions";
|
||||||
import { Moment } from "moment";
|
import { Moment } from "moment";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
|
@ -6,19 +6,19 @@ import { withRouter } from "react-router";
|
|||||||
import { getLocalStorageRouteKey } from "./utils";
|
import { getLocalStorageRouteKey } from "./utils";
|
||||||
import { RouteComponentProps, useLocation } from "react-router-dom";
|
import { RouteComponentProps, useLocation } from "react-router-dom";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
import CustomDateTimeModal from "./CustomDateTimeModal";
|
import CustomDateTimeModal from "./CustomDateTimeModal";
|
||||||
import { GlobalTime, updateTimeInterval } from "../../../store/actions";
|
import { GlobalTime, updateTimeInterval } from "store/actions";
|
||||||
import { StoreState } from "../../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import FormItem from "antd/lib/form/FormItem";
|
import FormItem from "antd/lib/form/FormItem";
|
||||||
import {
|
import {
|
||||||
Options,
|
Options,
|
||||||
ServiceMapOptions,
|
ServiceMapOptions,
|
||||||
DefaultOptionsBasedOnRoute,
|
DefaultOptionsBasedOnRoute,
|
||||||
} from "./config";
|
} from "./config";
|
||||||
import { DateTimeRangeType } from "../../../store/actions";
|
import { DateTimeRangeType } from "store/actions";
|
||||||
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query";
|
import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
|
||||||
import { LOCAL_STORAGE } from "Src/constants/localStorage";
|
import { LOCAL_STORAGE } from "constants/localStorage";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
const { Option } = DefaultSelect;
|
const { Option } = DefaultSelect;
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import { Breadcrumb } from "antd";
|
import { Breadcrumb } from "antd";
|
||||||
import { Link, withRouter } from "react-router-dom";
|
import { Link, withRouter } from "react-router-dom";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
const BreadCrumbWrapper = styled.div`
|
const BreadCrumbWrapper = styled.div`
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
export const Options = [
|
export const Options = [
|
||||||
{ value: "5min", label: "Last 5 min" },
|
{ value: "5min", label: "Last 5 min" },
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Row, Col } from "antd";
|
import { Row, Col } from "antd";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
import DateTimeSelector from "./DateTimeSelector";
|
import DateTimeSelector from "./DateTimeSelector";
|
||||||
import ShowBreadcrumbs from "./ShowBreadcrumbs";
|
import ShowBreadcrumbs from "./ShowBreadcrumbs";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
export const getLocalStorageRouteKey = (pathName: string) => {
|
export const getLocalStorageRouteKey = (pathName: string) => {
|
||||||
let localStorageKey = "";
|
let localStorageKey = "";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React, { useContext, createContext, ReactNode, Dispatch } from "react";
|
import React, { useContext, createContext, ReactNode, Dispatch } from "react";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
type State = {
|
type State = {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
|
@ -6,15 +6,15 @@ import {
|
|||||||
serviceMapStore,
|
serviceMapStore,
|
||||||
getServiceMapItems,
|
getServiceMapItems,
|
||||||
getDetailedServiceMapItems,
|
getDetailedServiceMapItems,
|
||||||
} from "Src/store/actions";
|
} from "store/actions";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
|
|
||||||
import { getZoomPx, getGraphData, getTooltip, transformLabel } from "./utils";
|
import { getZoomPx, getGraphData, getTooltip, transformLabel } from "./utils";
|
||||||
import SelectService from "./SelectService";
|
import SelectService from "./SelectService";
|
||||||
import { ForceGraph2D } from "react-force-graph";
|
import { ForceGraph2D } from "react-force-graph";
|
||||||
import { useRoute } from "../RouteProvider";
|
import { useRoute } from "modules/RouteProvider";
|
||||||
import { CustomSpinner } from "../../components/Spiner";
|
import { CustomSpinner } from "components/Spiner";
|
||||||
|
|
||||||
const Container = styled.div`
|
const Container = styled.div`
|
||||||
.force-graph-container .graph-tooltip {
|
.force-graph-container .graph-tooltip {
|
||||||
@ -78,7 +78,7 @@ const ServiceMap = (props: ServiceMapProps) => {
|
|||||||
fgRef.current && fgRef.current.d3Force("charge").strength(-400);
|
fgRef.current && fgRef.current.d3Force("charge").strength(-400);
|
||||||
});
|
});
|
||||||
if (!serviceMap.items.length || !serviceMap.services.length) {
|
if (!serviceMap.items.length || !serviceMap.services.length) {
|
||||||
return <CustomSpinner size="large" tip="Loading..."/>;
|
return <CustomSpinner size="large" tip="Loading..." />;
|
||||||
}
|
}
|
||||||
|
|
||||||
const zoomToService = (value: string) => {
|
const zoomToService = (value: string) => {
|
||||||
|
@ -1,13 +1,7 @@
|
|||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useState } from "react";
|
||||||
import { Form, Input, Space } from "antd";
|
import { Form, Input, Space } from "antd";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { Tooltip } from "antd";
|
import { StoreState } from "store/reducers";
|
||||||
import {
|
|
||||||
InfoCircleOutlined,
|
|
||||||
EyeTwoTone,
|
|
||||||
EyeInvisibleOutlined,
|
|
||||||
} from "@ant-design/icons";
|
|
||||||
import { StoreState } from "../../store/reducers";
|
|
||||||
import { Alert } from "antd";
|
import { Alert } from "antd";
|
||||||
|
|
||||||
interface SettingsPageProps {}
|
interface SettingsPageProps {}
|
||||||
|
@ -3,9 +3,8 @@ import { Card, Tag as AntTag } from "antd";
|
|||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
|
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import { TagItem, TraceFilters, updateTraceFilters } from "../../store/actions";
|
import { TagItem, TraceFilters, updateTraceFilters } from "store/actions";
|
||||||
|
|
||||||
|
|
||||||
const Tag = styled(AntTag)`
|
const Tag = styled(AntTag)`
|
||||||
.anticon {
|
.anticon {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Card, Space, Tabs, Typography } from "antd";
|
import { Card, Space, Tabs, Typography } from "antd";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { pushDStree } from "Src/store/actions";
|
import { pushDStree } from "store/actions";
|
||||||
|
|
||||||
const { TabPane } = Tabs;
|
const { TabPane } = Tabs;
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import GenericVisualizations from "../Metrics/GenericVisualization";
|
import GenericVisualizations from "modules/Metrics/GenericVisualization";
|
||||||
import { Select, Card, Space, Form } from "antd";
|
import { Select, Card, Space, Form } from "antd";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import { GlobalTime, TraceFilters } from "../../store/actions";
|
import { GlobalTime, TraceFilters } from "store/actions";
|
||||||
import { useRoute } from "../RouteProvider";
|
import { useRoute } from "modules/RouteProvider";
|
||||||
import { getFilteredTraceMetrics } from "../../store/actions/MetricsActions";
|
import { getFilteredTraceMetrics } from "store/actions/MetricsActions";
|
||||||
import { customMetricsItem } from "../../store/actions/MetricsActions";
|
import { customMetricsItem } from "store/actions/MetricsActions";
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
const entity = [
|
const entity = [
|
||||||
|
@ -9,16 +9,16 @@ import {
|
|||||||
fetchTraces,
|
fetchTraces,
|
||||||
TraceFilters,
|
TraceFilters,
|
||||||
GlobalTime,
|
GlobalTime,
|
||||||
} from "../../store/actions";
|
} from "store/actions";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import LatencyModalForm from "./LatencyModalForm";
|
import LatencyModalForm from "./LatencyModalForm";
|
||||||
import { FilterStateDisplay } from "./FilterStateDisplay";
|
import { FilterStateDisplay } from "./FilterStateDisplay";
|
||||||
|
|
||||||
import FormItem from "antd/lib/form/FormItem";
|
import FormItem from "antd/lib/form/FormItem";
|
||||||
import api, { apiV1 } from "../../api";
|
import api, { apiV1 } from "api";
|
||||||
import { useLocation } from "react-router-dom";
|
import { useLocation } from "react-router-dom";
|
||||||
import { METRICS_PAGE_QUERY_PARAM } from "Src/constants/query";
|
import { METRICS_PAGE_QUERY_PARAM } from "constants/query";
|
||||||
import { useRoute } from "../RouteProvider";
|
import { useRoute } from "modules/RouteProvider";
|
||||||
|
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
@ -56,13 +56,13 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
const spanKindList: ISpanKind[] = [
|
const spanKindList: ISpanKind[] = [
|
||||||
{
|
{
|
||||||
label: "SERVER",
|
label: "SERVER",
|
||||||
value: "2"
|
value: "2",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "CLIENT",
|
label: "CLIENT",
|
||||||
value: "3"
|
value: "3",
|
||||||
}
|
},
|
||||||
]
|
];
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
handleApplyFilterForm({
|
handleApplyFilterForm({
|
||||||
@ -70,7 +70,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
tags: [],
|
tags: [],
|
||||||
operation: "",
|
operation: "",
|
||||||
latency: { min: "", max: "" },
|
latency: { min: "", max: "" },
|
||||||
kind: ""
|
kind: "",
|
||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
@ -93,7 +93,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
...props.traceFilters,
|
...props.traceFilters,
|
||||||
operation: operationName,
|
operation: operationName,
|
||||||
service: serviceName,
|
service: serviceName,
|
||||||
kind: ""
|
kind: "",
|
||||||
});
|
});
|
||||||
populateData(serviceName);
|
populateData(serviceName);
|
||||||
} else if (serviceName && errorTag) {
|
} else if (serviceName && errorTag) {
|
||||||
@ -107,7 +107,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
operator: "equals",
|
operator: "equals",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
kind: ""
|
kind: "",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (operationName) {
|
if (operationName) {
|
||||||
@ -282,7 +282,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
operator: values.operator,
|
operator: values.operator,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
kind: props.traceFilters.kind
|
kind: props.traceFilters.kind,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
props.updateTraceFilters({
|
props.updateTraceFilters({
|
||||||
@ -296,7 +296,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
operator: values.operator,
|
operator: values.operator,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
kind: props.traceFilters.kind
|
kind: props.traceFilters.kind,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,7 +361,7 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
max: "",
|
max: "",
|
||||||
min: "",
|
min: "",
|
||||||
},
|
},
|
||||||
kind: values.kind
|
kind: values.kind,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -372,14 +372,14 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
operation: "",
|
operation: "",
|
||||||
tags: [],
|
tags: [],
|
||||||
latency: { min: "", max: "" },
|
latency: { min: "", max: "" },
|
||||||
kind: ""
|
kind: "",
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleChangeSpanKind = (value:string = '') => {
|
const handleChangeSpanKind = (value: string = "") => {
|
||||||
props.updateTraceFilters({ ...props.traceFilters, kind: value });
|
props.updateTraceFilters({ ...props.traceFilters, kind: value });
|
||||||
}
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@ -437,8 +437,10 @@ const _TraceFilter = (props: TraceFilterProps) => {
|
|||||||
placeholder="Select Span Kind"
|
placeholder="Select Span Kind"
|
||||||
allowClear
|
allowClear
|
||||||
>
|
>
|
||||||
{spanKindList.map(spanKind => (
|
{spanKindList.map((spanKind) => (
|
||||||
<Option value={spanKind.value} key={spanKind.value}>{spanKind.label}</Option>
|
<Option value={spanKind.value} key={spanKind.value}>
|
||||||
|
{spanKind.label}
|
||||||
|
</Option>
|
||||||
))}
|
))}
|
||||||
</Select>
|
</Select>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
@ -3,8 +3,8 @@ import { Table, Progress, Tabs, Button, Row, Col } from "antd";
|
|||||||
import "./TraceGanttChart.css";
|
import "./TraceGanttChart.css";
|
||||||
import { max, isEmpty, has } from "lodash-es";
|
import { max, isEmpty, has } from "lodash-es";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
import { pushDStree } from "Src/store/actions";
|
import { pushDStree } from "store/actions";
|
||||||
import traverseTreeData from "Src/modules/Traces/TraceGanttChart/TraceGanttChartHelpers";
|
import traverseTreeData from "modules/Traces/TraceGanttChart/TraceGanttChartHelpers";
|
||||||
|
|
||||||
const { TabPane } = Tabs;
|
const { TabPane } = Tabs;
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { isEmpty } from "lodash-es";
|
import { isEmpty } from "lodash-es";
|
||||||
import { pushDStree } from "Src/store/actions";
|
import { pushDStree } from "store/actions";
|
||||||
|
|
||||||
interface itemProps {
|
interface itemProps {
|
||||||
treeData: pushDStree[];
|
treeData: pushDStree[];
|
||||||
|
@ -6,13 +6,13 @@ import { Card, Row, Col, Space, Affix } from "antd";
|
|||||||
import * as d3 from "d3";
|
import * as d3 from "d3";
|
||||||
import * as d3Tip from "d3-tip";
|
import * as d3Tip from "d3-tip";
|
||||||
import "./TraceGraph.css";
|
import "./TraceGraph.css";
|
||||||
import { spanToTreeUtil } from "Src/utils/spanToTree";
|
import { spanToTreeUtil } from "utils/spanToTree";
|
||||||
import {
|
import {
|
||||||
fetchTraceItem,
|
fetchTraceItem,
|
||||||
pushDStree,
|
pushDStree,
|
||||||
spansWSameTraceIDResponse,
|
spansWSameTraceIDResponse,
|
||||||
} from "../../store/actions";
|
} from "store/actions";
|
||||||
import { StoreState } from "Src/store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import SelectedSpanDetails from "./SelectedSpanDetails";
|
import SelectedSpanDetails from "./SelectedSpanDetails";
|
||||||
import TraceGanttChart from "./TraceGanttChart";
|
import TraceGanttChart from "./TraceGanttChart";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
@ -72,14 +72,22 @@ const _TraceGraph = (props: TraceGraphProps) => {
|
|||||||
setSortedTreeData(sortedData?.[0]);
|
setSortedTreeData(sortedData?.[0]);
|
||||||
getSpanInfo(sortedData?.[0], spanId);
|
getSpanInfo(sortedData?.[0], spanId);
|
||||||
// This is causing element to change ref. Can use both useRef or this approach.
|
// This is causing element to change ref. Can use both useRef or this approach.
|
||||||
d3.select("#chart").datum(tree).call(chart).sort(item=>item.startTime);
|
d3
|
||||||
|
.select("#chart")
|
||||||
|
.datum(tree)
|
||||||
|
.call(chart)
|
||||||
|
.sort((item) => item.startTime);
|
||||||
}
|
}
|
||||||
}, [props.traceItem]);
|
}, [props.traceItem]);
|
||||||
// if this monitoring of props.traceItem.data is removed then zoom on click doesn't work
|
// if this monitoring of props.traceItem.data is removed then zoom on click doesn't work
|
||||||
// Doesn't work if only do initial check, works if monitor an element - as it may get updated in sometime
|
// Doesn't work if only do initial check, works if monitor an element - as it may get updated in sometime
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(!isEmpty(sortedTreeData) && sortedTreeData?.id !== "empty" && isEmpty(clickedSpanTags)) {
|
if (
|
||||||
|
!isEmpty(sortedTreeData) &&
|
||||||
|
sortedTreeData?.id !== "empty" &&
|
||||||
|
isEmpty(clickedSpanTags)
|
||||||
|
) {
|
||||||
setClickedSpanTags(sortedTreeData?.[0]);
|
setClickedSpanTags(sortedTreeData?.[0]);
|
||||||
}
|
}
|
||||||
}, [sortedTreeData]);
|
}, [sortedTreeData]);
|
||||||
@ -87,7 +95,11 @@ const _TraceGraph = (props: TraceGraphProps) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (resetZoom) {
|
if (resetZoom) {
|
||||||
// This is causing element to change ref. Can use both useRef or this approach.
|
// This is causing element to change ref. Can use both useRef or this approach.
|
||||||
d3.select("#chart").datum(tree).call(chart).sort(item=>item.startTime);
|
d3
|
||||||
|
.select("#chart")
|
||||||
|
.datum(tree)
|
||||||
|
.call(chart)
|
||||||
|
.sort((item) => item.startTime);
|
||||||
setResetZoom(false);
|
setResetZoom(false);
|
||||||
}
|
}
|
||||||
}, [resetZoom]);
|
}, [resetZoom]);
|
||||||
|
@ -2,8 +2,8 @@ import React from "react";
|
|||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { Table } from "antd";
|
import { Table } from "antd";
|
||||||
|
|
||||||
import { traceResponseNew, pushDStree } from "../../store/actions";
|
import { traceResponseNew, pushDStree } from "store/actions";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
|
|
||||||
interface TraceGraphColumnProps {
|
interface TraceGraphColumnProps {
|
||||||
traces: traceResponseNew;
|
traces: traceResponseNew;
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { useHistory} from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { Space, Table } from "antd";
|
import { Space, Table } from "antd";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
import { traceResponseNew, fetchTraces, pushDStree } from "../../store/actions";
|
import { traceResponseNew, fetchTraces, pushDStree } from "store/actions";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import { isOnboardingSkipped } from "../../utils/app";
|
import { isOnboardingSkipped } from "utils/app";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
const StyledTable = styled(Table)`
|
const StyledTable = styled(Table)`
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
`
|
`;
|
||||||
|
|
||||||
const TraceHeader = styled.div`
|
const TraceHeader = styled.div`
|
||||||
margin: 16px 0;
|
margin: 16px 0;
|
||||||
@ -103,12 +103,13 @@ const _TraceList = (props: TraceListProps) => {
|
|||||||
|
|
||||||
//antd table in typescript - https://codesandbox.io/s/react-typescript-669cv
|
//antd table in typescript - https://codesandbox.io/s/react-typescript-669cv
|
||||||
|
|
||||||
return <StyledTable
|
return (
|
||||||
dataSource={dataSource}
|
<StyledTable
|
||||||
columns={columns}
|
dataSource={dataSource}
|
||||||
size="middle"
|
columns={columns}
|
||||||
rowClassName=""
|
size="middle"
|
||||||
onRow={(record) => ({
|
rowClassName=""
|
||||||
|
onRow={(record) => ({
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
history.push({
|
history.push({
|
||||||
pathname: ROUTES.TRACES + "/" + record.traceid,
|
pathname: ROUTES.TRACES + "/" + record.traceid,
|
||||||
@ -116,10 +117,10 @@ const _TraceList = (props: TraceListProps) => {
|
|||||||
spanId: record.spanid,
|
spanId: record.spanid,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
;
|
);
|
||||||
} else {
|
} else {
|
||||||
if (isOnboardingSkipped()) {
|
if (isOnboardingSkipped()) {
|
||||||
return (
|
return (
|
||||||
|
@ -8,12 +8,12 @@ import {
|
|||||||
getUsageData,
|
getUsageData,
|
||||||
GlobalTime,
|
GlobalTime,
|
||||||
usageDataItem,
|
usageDataItem,
|
||||||
} from "../../store/actions";
|
} from "store/actions";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { isOnboardingSkipped } from "../../utils/app";
|
import { isOnboardingSkipped } from "utils/app";
|
||||||
import { useRoute } from "../RouteProvider";
|
import { useRoute } from "modules/RouteProvider";
|
||||||
import { servicesListItem } from "../../store/actions/MetricsActions";
|
import { servicesListItem } from "store/actions/MetricsActions";
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
interface UsageExplorerProps {
|
interface UsageExplorerProps {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import { Space } from "antd";
|
import { Space } from "antd";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { StoreState } from "../../store/reducers";
|
import { StoreState } from "store/reducers";
|
||||||
import { useThemeSwitcher } from "react-css-theme-switcher";
|
import { useThemeSwitcher } from "react-css-theme-switcher";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
@ -9,7 +9,8 @@ const InstrumentCard = styled.div<{
|
|||||||
currentThemeStatus: string | undefined;
|
currentThemeStatus: string | undefined;
|
||||||
}>`
|
}>`
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background: ${({ currentThemeStatus }) => currentThemeStatus === 'dark' ? '#313131' : '#ddd'};
|
background: ${({ currentThemeStatus }) =>
|
||||||
|
currentThemeStatus === "dark" ? "#313131" : "#ddd"};
|
||||||
padding: 33px 23px;
|
padding: 33px 23px;
|
||||||
max-width: 800px;
|
max-width: 800px;
|
||||||
margin-top: 40px;
|
margin-top: 40px;
|
||||||
@ -22,20 +23,36 @@ const InstrumentationPage = (props: InstrumentationPageProps) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<Space style={{ marginLeft: 60, marginTop: 48, display: 'block' }}>
|
<Space style={{ marginLeft: 60, marginTop: 48, display: "block" }}>
|
||||||
<div>
|
<div>
|
||||||
<h2>
|
<h2>Instrument your application</h2>
|
||||||
Instrument your application
|
|
||||||
</h2>
|
|
||||||
</div>
|
</div>
|
||||||
<InstrumentCard currentThemeStatus={currentTheme}>
|
<InstrumentCard currentThemeStatus={currentTheme}>
|
||||||
Congrats, you have successfully installed SigNoz!<br/>
|
Congrats, you have successfully installed SigNoz!
|
||||||
To start seeing YOUR application data here, follow the instructions in the docs -
|
<br />
|
||||||
<a href={"https://signoz.io/docs/instrumentation/overview"} target="_blank"> https://signoz.io/docs/instrumentation/overview</a>
|
To start seeing YOUR application data here, follow the instructions in the
|
||||||
<br/>
|
docs -
|
||||||
If you face any issues, join our <a href={"https://signoz-community.slack.com/join/shared_invite/zt-lrjknbbp-J_mI13rlw8pGF4EWBnorJA"} target="_blank">
|
<a
|
||||||
slack community</a> to ask any questions or mail us at <a href={"mailto:support@signoz.io"} target="_blank">
|
href={"https://signoz.io/docs/instrumentation/overview"}
|
||||||
support@signoz.io</a>
|
target="_blank"
|
||||||
|
>
|
||||||
|
{" "}
|
||||||
|
https://signoz.io/docs/instrumentation/overview
|
||||||
|
</a>
|
||||||
|
<br />
|
||||||
|
If you face any issues, join our{" "}
|
||||||
|
<a
|
||||||
|
href={
|
||||||
|
"https://signoz-community.slack.com/join/shared_invite/zt-lrjknbbp-J_mI13rlw8pGF4EWBnorJA"
|
||||||
|
}
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
slack community
|
||||||
|
</a>{" "}
|
||||||
|
to ask any questions or mail us at{" "}
|
||||||
|
<a href={"mailto:support@signoz.io"} target="_blank">
|
||||||
|
support@signoz.io
|
||||||
|
</a>
|
||||||
</InstrumentCard>
|
</InstrumentCard>
|
||||||
</Space>
|
</Space>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
export const ServiceMetrics = React.lazy(
|
export const ServiceMetrics = React.lazy(
|
||||||
() => import("Src/modules/Metrics/ServiceMetricsDef"),
|
() => import("modules/Metrics/ServiceMetricsDef"),
|
||||||
);
|
);
|
||||||
export const ServiceMap = React.lazy(
|
export const ServiceMap = React.lazy(
|
||||||
() => import("Src/modules/Servicemap/ServiceMap"),
|
() => import("modules/Servicemap/ServiceMap"),
|
||||||
);
|
);
|
||||||
export const TraceDetail = React.lazy(
|
export const TraceDetail = React.lazy(
|
||||||
() => import("Src/modules/Traces/TraceDetail"),
|
() => import("modules/Traces/TraceDetail"),
|
||||||
);
|
);
|
||||||
export const TraceGraph = React.lazy(
|
export const TraceGraph = React.lazy(
|
||||||
() => import("Src/modules/Traces/TraceGraphDef"),
|
() => import("modules/Traces/TraceGraphDef"),
|
||||||
);
|
);
|
||||||
export const UsageExplorer = React.lazy(
|
export const UsageExplorer = React.lazy(
|
||||||
() => import("Src/modules/Usage/UsageExplorerDef"),
|
() => import("modules/Usage/UsageExplorerDef"),
|
||||||
);
|
);
|
||||||
export const ServicesTable = React.lazy(
|
export const ServicesTable = React.lazy(
|
||||||
() => import("Src/modules/Metrics/ServicesTableDef"),
|
() => import("modules/Metrics/ServicesTableDef"),
|
||||||
);
|
);
|
||||||
export const Signup = React.lazy(() => import("Src/modules/Auth/Signup"));
|
export const Signup = React.lazy(() => import("modules/Auth/Signup"));
|
||||||
export const SettingsPage = React.lazy(
|
export const SettingsPage = React.lazy(
|
||||||
() => import("Src/modules/Settings/settingsPage"),
|
() => import("modules/Settings/settingsPage"),
|
||||||
);
|
);
|
||||||
|
|
||||||
export const InstrumentationPage = React.lazy(
|
export const InstrumentationPage = React.lazy(
|
||||||
() => import("Src/modules/add-instrumentation/instrumentationPage"),
|
() => import("modules/add-instrumentation/instrumentationPage"),
|
||||||
);
|
);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
import api, { apiV1 } from "../../../api";
|
import api, { apiV1 } from "api";
|
||||||
|
|
||||||
import { GlobalTime } from "../global";
|
import { GlobalTime } from "store/actions/global";
|
||||||
import { toUTCEpoch } from "../../../utils/timeUtils";
|
import { toUTCEpoch } from "utils/timeUtils";
|
||||||
import { MetricsActionTypes } from "./metricsActionTypes";
|
import { MetricsActionTypes } from "./metricsActionTypes";
|
||||||
import * as MetricsInterfaces from "./metricsInterfaces";
|
import * as MetricsInterfaces from "./metricsInterfaces";
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
import api, { apiV1 } from "../../api";
|
import api, { apiV1 } from "api";
|
||||||
import { GlobalTime } from "./global";
|
import { GlobalTime } from "./global";
|
||||||
import { ActionTypes } from "./types";
|
import { ActionTypes } from "./types";
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { ActionTypes } from "./types";
|
import { ActionTypes } from "./types";
|
||||||
import api, { apiV1 } from "../../api";
|
import api, { apiV1 } from "api";
|
||||||
|
|
||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
import { GlobalTime } from "./global";
|
import { GlobalTime } from "./global";
|
||||||
import { toUTCEpoch } from "../../utils/timeUtils";
|
import { toUTCEpoch } from "utils/timeUtils";
|
||||||
import ROUTES from "Src/constants/routes";
|
import ROUTES from "constants/routes";
|
||||||
|
|
||||||
// PNOTE
|
// PNOTE
|
||||||
// define trace interface - what it should return
|
// define trace interface - what it should return
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { FetchTracesAction, FetchTraceItemAction } from "./traces";
|
import { FetchTracesAction, FetchTraceItemAction } from "./traces";
|
||||||
import { updateTraceFiltersAction, updateInputTagAction } from "./traceFilters";
|
import { updateTraceFiltersAction } from "./traceFilters";
|
||||||
|
|
||||||
import { serviceMapItemAction, servicesAction } from "./serviceMap";
|
import { serviceMapItemAction, servicesAction } from "./serviceMap";
|
||||||
import { getUsageDataAction } from "./usage";
|
import { getUsageDataAction } from "./usage";
|
||||||
@ -19,7 +19,6 @@ export type Action =
|
|||||||
| FetchTraceItemAction
|
| FetchTraceItemAction
|
||||||
| FetchTracesAction
|
| FetchTracesAction
|
||||||
| updateTraceFiltersAction
|
| updateTraceFiltersAction
|
||||||
| updateInputTagAction
|
|
||||||
| getUsageDataAction
|
| getUsageDataAction
|
||||||
| updateTimeIntervalAction
|
| updateTimeIntervalAction
|
||||||
| servicesAction
|
| servicesAction
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
import api, { apiV1 } from "../../api";
|
import api, { apiV1 } from "api";
|
||||||
|
|
||||||
import { ActionTypes } from "./types";
|
import { ActionTypes } from "./types";
|
||||||
import { toUTCEpoch } from "../../utils/timeUtils";
|
import { toUTCEpoch } from "utils/timeUtils";
|
||||||
|
|
||||||
export interface usageDataItem {
|
export interface usageDataItem {
|
||||||
timestamp: number;
|
timestamp: number;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ActionTypes, Action, GlobalTime } from "../actions";
|
import { ActionTypes, Action, GlobalTime } from "store/actions";
|
||||||
|
|
||||||
export const updateGlobalTimeReducer = (
|
export const updateGlobalTimeReducer = (
|
||||||
state: GlobalTime = {
|
state: GlobalTime = {
|
||||||
|
@ -6,7 +6,7 @@ import {
|
|||||||
GlobalTime,
|
GlobalTime,
|
||||||
serviceMapStore,
|
serviceMapStore,
|
||||||
TraceFilters,
|
TraceFilters,
|
||||||
} from "../actions";
|
} from "store/actions";
|
||||||
import { updateGlobalTimeReducer } from "./global";
|
import { updateGlobalTimeReducer } from "./global";
|
||||||
import { MetricsInitialState, metricsReducer } from "./metrics";
|
import { MetricsInitialState, metricsReducer } from "./metrics";
|
||||||
import TraceFilterReducer from "./traceFilters";
|
import TraceFilterReducer from "./traceFilters";
|
||||||
|
@ -7,8 +7,8 @@ import {
|
|||||||
externalMetricsItem,
|
externalMetricsItem,
|
||||||
dbOverviewMetricsItem,
|
dbOverviewMetricsItem,
|
||||||
externalMetricsAvgDurationItem,
|
externalMetricsAvgDurationItem,
|
||||||
} from "../actions/MetricsActions";
|
} from "store/actions/MetricsActions";
|
||||||
import { MetricsActionTypes as ActionTypes } from "../actions/MetricsActions/metricsActionTypes";
|
import { MetricsActionTypes as ActionTypes } from "store/actions/MetricsActions/metricsActionTypes";
|
||||||
|
|
||||||
export type MetricsInitialState = {
|
export type MetricsInitialState = {
|
||||||
serviceList?: servicesListItem[];
|
serviceList?: servicesListItem[];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ActionTypes, Action, serviceMapStore } from "../actions";
|
import { ActionTypes, Action, serviceMapStore } from "store/actions";
|
||||||
|
|
||||||
const initialState: serviceMapStore = {
|
const initialState: serviceMapStore = {
|
||||||
items: [],
|
items: [],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ActionTypes, TraceFilters } from "../actions";
|
import { ActionTypes, TraceFilters } from "store/actions";
|
||||||
|
|
||||||
type ACTION = {
|
type ACTION = {
|
||||||
type: ActionTypes;
|
type: ActionTypes;
|
||||||
@ -9,7 +9,7 @@ const initialState: TraceFilters = {
|
|||||||
tags: [],
|
tags: [],
|
||||||
operation: "",
|
operation: "",
|
||||||
latency: { min: "", max: "" },
|
latency: { min: "", max: "" },
|
||||||
kind: ""
|
kind: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
const TraceFilterReducer = (state = initialState, action: ACTION) => {
|
const TraceFilterReducer = (state = initialState, action: ACTION) => {
|
||||||
|
@ -4,7 +4,7 @@ import {
|
|||||||
traceResponseNew,
|
traceResponseNew,
|
||||||
spanList,
|
spanList,
|
||||||
spansWSameTraceIDResponse,
|
spansWSameTraceIDResponse,
|
||||||
} from "../actions";
|
} from "store/actions";
|
||||||
|
|
||||||
// PNOTE - Initializing is a must for state variable otherwise it gives an error in reducer
|
// PNOTE - Initializing is a must for state variable otherwise it gives an error in reducer
|
||||||
var spanlistinstance: spanList = { events: [], segmentID: "", columns: [] };
|
var spanlistinstance: spanList = { events: [], segmentID: "", columns: [] };
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { ActionTypes, Action, usageDataItem } from "../actions";
|
import { ActionTypes, Action, usageDataItem } from "store/actions";
|
||||||
|
|
||||||
export const usageDataReducer = (
|
export const usageDataReducer = (
|
||||||
state: usageDataItem[] = [{ timestamp: 0, count: 0 }],
|
state: usageDataItem[] = [{ timestamp: 0, count: 0 }],
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { SKIP_ONBOARDING } from "Src/constants/onboarding";
|
import { SKIP_ONBOARDING } from "constants/onboarding";
|
||||||
|
|
||||||
export const isOnboardingSkipped = () => {
|
export const isOnboardingSkipped = () => {
|
||||||
return localStorage.getItem(SKIP_ONBOARDING) === "true";
|
return localStorage.getItem(SKIP_ONBOARDING) === "true";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { pushDStree, span, RefItem } from "../store/actions";
|
import { pushDStree, span, RefItem } from "store/actions";
|
||||||
// PNOTE - should the data be taken from redux or only through props? - Directly as arguments
|
// PNOTE - should the data be taken from redux or only through props? - Directly as arguments
|
||||||
|
|
||||||
export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
|
export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
|
||||||
@ -24,7 +24,7 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
|
|||||||
//May1
|
//May1
|
||||||
//https://stackoverflow.com/questions/13315131/enforcing-the-type-of-the-indexed-members-of-a-typescript-object
|
//https://stackoverflow.com/questions/13315131/enforcing-the-type-of-the-indexed-members-of-a-typescript-object
|
||||||
|
|
||||||
let mapped_array: { [id: string]: span; } = {};
|
let mapped_array: { [id: string]: span } = {};
|
||||||
|
|
||||||
for (let i = 0; i < spanlist.length; i++) {
|
for (let i = 0; i < spanlist.length; i++) {
|
||||||
mapped_array[spanlist[i][1]] = spanlist[i];
|
mapped_array[spanlist[i][1]] = spanlist[i];
|
||||||
@ -32,12 +32,10 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
|
|||||||
// of type pushDStree
|
// of type pushDStree
|
||||||
// console.log('IDs while creating mapped array')
|
// console.log('IDs while creating mapped array')
|
||||||
// console.log(`SpanID is ${spanlist[i][1]}\n`);
|
// console.log(`SpanID is ${spanlist[i][1]}\n`);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log(`In SpanTreeUtil: mapped_arrayis ${mapped_array}`);
|
// console.log(`In SpanTreeUtil: mapped_arrayis ${mapped_array}`);
|
||||||
|
|
||||||
|
|
||||||
for (let id in mapped_array) {
|
for (let id in mapped_array) {
|
||||||
let child_span = mapped_array[id];
|
let child_span = mapped_array[id];
|
||||||
|
|
||||||
@ -100,14 +98,17 @@ export const spanToTreeUtil = (spanlist: span[]): pushDStree => {
|
|||||||
let parentID = references[0].spanID;
|
let parentID = references[0].spanID;
|
||||||
// console.log(`In SpanTreeUtil: mapped_array[parentID] is ${mapped_array[parentID]}`);
|
// console.log(`In SpanTreeUtil: mapped_array[parentID] is ${mapped_array[parentID]}`);
|
||||||
|
|
||||||
if (typeof mapped_array[parentID] !== 'undefined') { //checking for undefined [10] issue
|
if (typeof mapped_array[parentID] !== "undefined") {
|
||||||
|
//checking for undefined [10] issue
|
||||||
mapped_array[parentID][10].push(push_object);
|
mapped_array[parentID][10].push(push_object);
|
||||||
} else {
|
} else {
|
||||||
console.log(`In SpanTreeUtil: mapped_array[parentID] is undefined, parentID is ${parentID}`);
|
console.log(
|
||||||
console.log(`In SpanTreeUtil: mapped_array[parentID] is undefined, mapped_array[parentID] is ${mapped_array[parentID]}`);
|
`In SpanTreeUtil: mapped_array[parentID] is undefined, parentID is ${parentID}`,
|
||||||
|
);
|
||||||
|
console.log(
|
||||||
|
`In SpanTreeUtil: mapped_array[parentID] is undefined, mapped_array[parentID] is ${mapped_array[parentID]}`,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
tree = push_object;
|
tree = push_object;
|
||||||
|
@ -17,9 +17,6 @@
|
|||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": "./src"
|
||||||
"paths": {
|
|
||||||
"Src/*": ["./src/*"]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
// shared config (dev and prod)
|
// shared config (dev and prod)
|
||||||
const { resolve } = require("path");
|
const { resolve } = require("path");
|
||||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||||
const portFinderSync = require('portfinder-sync')
|
const portFinderSync = require("portfinder-sync");
|
||||||
const dotenv = require("dotenv");
|
const dotenv = require("dotenv");
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
|
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
|
||||||
|
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
|
|
||||||
@ -33,10 +34,8 @@ module.exports = {
|
|||||||
publicPath: "/",
|
publicPath: "/",
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
|
||||||
Src: resolve(__dirname, "./src/"),
|
|
||||||
},
|
|
||||||
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
||||||
|
plugins: [new TsconfigPathsPlugin({})],
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
@ -4,6 +4,7 @@ const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|||||||
const CopyPlugin = require("copy-webpack-plugin");
|
const CopyPlugin = require("copy-webpack-plugin");
|
||||||
const CompressionPlugin = require("compression-webpack-plugin");
|
const CompressionPlugin = require("compression-webpack-plugin");
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
|
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
mode: "production",
|
mode: "production",
|
||||||
@ -16,10 +17,8 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
|
||||||
Src: resolve(__dirname, "./src/"),
|
|
||||||
},
|
|
||||||
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
||||||
|
plugins: [new TsconfigPathsPlugin({})],
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
@ -13144,6 +13144,15 @@ ts-pnp@1.2.0, ts-pnp@^1.1.6:
|
|||||||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||||
|
|
||||||
|
tsconfig-paths-webpack-plugin@^3.5.1:
|
||||||
|
version "3.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.1.tgz#e4dbf492a20dca9caab60086ddacb703afc2b726"
|
||||||
|
integrity sha512-n5CMlUUj+N5pjBhBACLq4jdr9cPTitySCjIosoQm0zwK99gmrcTGAfY9CwxRFT9+9OleNWXPRUcxsKP4AYExxQ==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.1.0"
|
||||||
|
enhanced-resolve "^5.7.0"
|
||||||
|
tsconfig-paths "^3.9.0"
|
||||||
|
|
||||||
tsconfig-paths@^3.9.0:
|
tsconfig-paths@^3.9.0:
|
||||||
version "3.9.0"
|
version "3.9.0"
|
||||||
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
|
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user