mirror of
https://github.com/openziti/zrok.git
synced 2025-06-20 17:58:50 +02:00
more detail elaboration (#141)
This commit is contained in:
parent
0dac9f4f34
commit
f019cd7fa8
@ -1,6 +1,6 @@
|
|||||||
import EnvironmentDetail from "./EnvironmentDetail";
|
|
||||||
import AccountDetail from "./AccountDetail";
|
import AccountDetail from "./AccountDetail";
|
||||||
import ServiceDetail from "./ServiceDetail";
|
import ShareDetail from "./ShareDetail";
|
||||||
|
import EnvironmentDetail from "./environment/EnvironmentDetail";
|
||||||
|
|
||||||
const Detail = (props) => {
|
const Detail = (props) => {
|
||||||
let detailComponent = <h1>{props.selection.id} ({props.selection.type})</h1>;
|
let detailComponent = <h1>{props.selection.id} ({props.selection.type})</h1>;
|
||||||
@ -15,7 +15,7 @@ const Detail = (props) => {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "service":
|
case "service":
|
||||||
detailComponent = <ServiceDetail selection={props.selection} />;
|
detailComponent = <ShareDetail selection={props.selection} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -3,8 +3,9 @@ import {Sparklines, SparklinesLine, SparklinesSpots} from "react-sparklines";
|
|||||||
import {useEffect, useState} from "react";
|
import {useEffect, useState} from "react";
|
||||||
import {mdiShareVariant} from "@mdi/js";
|
import {mdiShareVariant} from "@mdi/js";
|
||||||
import Icon from "@mdi/react";
|
import Icon from "@mdi/react";
|
||||||
|
import {Tab, Tabs} from "react-bootstrap";
|
||||||
|
|
||||||
const ServiceDetail = (props) => {
|
const ShareDetail = (props) => {
|
||||||
const [detail, setDetail] = useState({});
|
const [detail, setDetail] = useState({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -32,16 +33,23 @@ const ServiceDetail = (props) => {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h2><Icon path={mdiShareVariant} size={2} />{" "}{detail.backendProxyEndpoint}</h2>
|
<h2><Icon path={mdiShareVariant} size={2} />{" "}{detail.backendProxyEndpoint}</h2>
|
||||||
<div className={"zrok-big-sparkline"}>
|
<Tabs defaultActiveKey={"activity"}>
|
||||||
<Sparklines data={detail.metrics} limit={60} height={20}>
|
<Tab eventKey={"details"} className={"mb-3"}>
|
||||||
<SparklinesLine color={"#3b2693"} />
|
<h3>Share Details</h3>
|
||||||
<SparklinesSpots />
|
</Tab>
|
||||||
</Sparklines>
|
<Tab eventKey={"activity"}>
|
||||||
</div>
|
<div className={"zrok-big-sparkline"}>
|
||||||
|
<Sparklines data={detail.metrics} limit={60} height={20}>
|
||||||
|
<SparklinesLine color={"#3b2693"} />
|
||||||
|
<SparklinesSpots />
|
||||||
|
</Sparklines>
|
||||||
|
</div>
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ServiceDetail;
|
export default ShareDetail;
|
@ -1,11 +1,11 @@
|
|||||||
import * as metadata from "../../api/metadata";
|
import * as metadata from "../../../api/metadata";
|
||||||
import {useEffect, useState} from "react";
|
import {useEffect, useState} from "react";
|
||||||
import DataTable from 'react-data-table-component';
|
import DataTable from 'react-data-table-component';
|
||||||
import {Sparklines, SparklinesLine, SparklinesSpots} from "react-sparklines";
|
import {Sparklines, SparklinesLine, SparklinesSpots} from "react-sparklines";
|
||||||
import {mdiConsoleNetwork} from "@mdi/js";
|
import {mdiConsoleNetwork} from "@mdi/js";
|
||||||
import Icon from "@mdi/react";
|
import Icon from "@mdi/react";
|
||||||
|
|
||||||
const EnvironmentDetail = (props) => {
|
const Activity = (props) => {
|
||||||
const [detail, setDetail] = useState({});
|
const [detail, setDetail] = useState({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -57,7 +57,6 @@ const EnvironmentDetail = (props) => {
|
|||||||
{
|
{
|
||||||
name: "Activity",
|
name: "Activity",
|
||||||
cell: row => {
|
cell: row => {
|
||||||
console.log(row.metrics);
|
|
||||||
return <Sparklines data={row.metrics} height={20} limit={60}><SparklinesLine color={"#3b2693"}/><SparklinesSpots/></Sparklines>;
|
return <Sparklines data={row.metrics} height={20} limit={60}><SparklinesLine color={"#3b2693"}/><SparklinesSpots/></Sparklines>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,20 +64,17 @@ const EnvironmentDetail = (props) => {
|
|||||||
|
|
||||||
if(detail.environment) {
|
if(detail.environment) {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className={"zrok-datatable"}>
|
||||||
<h2><Icon path={mdiConsoleNetwork} size={2} />{" "}{detail.environment.description}</h2>
|
<DataTable
|
||||||
<div className={"zrok-datatable"}>
|
className={"zrok-datatable"}
|
||||||
<DataTable
|
data={detail.services}
|
||||||
className={"zrok-datatable"}
|
columns={columns}
|
||||||
data={detail.services}
|
defaultSortField={1}
|
||||||
columns={columns}
|
/>
|
||||||
defaultSortField={1}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default EnvironmentDetail;
|
export default Activity;
|
7
ui/src/console/detail/environment/Detail.js
Normal file
7
ui/src/console/detail/environment/Detail.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
const Detail = (props) => {
|
||||||
|
return (
|
||||||
|
<h3>{props.environment.zId}</h3>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Detail;
|
37
ui/src/console/detail/environment/EnvironmentDetail.js
Normal file
37
ui/src/console/detail/environment/EnvironmentDetail.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import {Tab, Tabs} from "react-bootstrap";
|
||||||
|
import Activity from "./Activity";
|
||||||
|
import {useEffect, useState} from "react";
|
||||||
|
import Icon from "@mdi/react";
|
||||||
|
import {mdiConsoleNetwork} from "@mdi/js";
|
||||||
|
import {getEnvironmentDetail} from "../../../api/metadata";
|
||||||
|
import Detail from "./Detail";
|
||||||
|
|
||||||
|
const EnvironmentDetail = (props) => {
|
||||||
|
const [detail, setDetail] = useState({});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getEnvironmentDetail(props.selection.id)
|
||||||
|
.then(resp => {
|
||||||
|
setDetail(resp.data);
|
||||||
|
});
|
||||||
|
}, [props.selection]);
|
||||||
|
|
||||||
|
if(detail.environment) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2><Icon path={mdiConsoleNetwork} size={2} />{" "}{detail.environment.description}</h2>
|
||||||
|
<Tabs defaultActiveKey={"activity"} className={"mb-3"}>
|
||||||
|
<Tab eventKey={"activity"} title={"Activity"}>
|
||||||
|
<Activity selection={props.selection} />
|
||||||
|
</Tab>
|
||||||
|
<Tab eventKey={"detail"} title={"Detail"}>
|
||||||
|
<Detail environment={detail.environment} />
|
||||||
|
</Tab>
|
||||||
|
</Tabs>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return <></>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default EnvironmentDetail;
|
@ -57,6 +57,11 @@ code, pre {
|
|||||||
font-family: 'JetBrains Mono', Consolas, 'Courier New', monospace;
|
font-family: 'JetBrains Mono', Consolas, 'Courier New', monospace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-tabs {
|
||||||
|
margin-top: 25px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#zrok-enable {
|
#zrok-enable {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user