Ux Tools screens (#1261)
Co-authored-by: Daniel Valdivia <18384552+dvaldivia@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
400892565d
commit
347c6aba3b
@@ -95,6 +95,9 @@ const styles = (theme: Theme) =>
|
|||||||
fontWeight: "bold",
|
fontWeight: "bold",
|
||||||
color: "#081C42",
|
color: "#081C42",
|
||||||
},
|
},
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
width: 103,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
dateSelectorFormOverride: {
|
dateSelectorFormOverride: {
|
||||||
width: "100%",
|
width: "100%",
|
||||||
|
|||||||
@@ -1166,3 +1166,39 @@ export const deleteDialogStyles = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const advancedFilterToggleStyles: any = {
|
||||||
|
advancedButton: {
|
||||||
|
flexGrow: 1,
|
||||||
|
alignItems: "flex-end",
|
||||||
|
display: "flex",
|
||||||
|
justifyContent: "flex-end",
|
||||||
|
},
|
||||||
|
advancedConfiguration: {
|
||||||
|
color: "#2781B0",
|
||||||
|
fontSize: 10,
|
||||||
|
textDecoration: "underline",
|
||||||
|
border: "none",
|
||||||
|
backgroundColor: "transparent",
|
||||||
|
cursor: "pointer",
|
||||||
|
alignItems: "center",
|
||||||
|
display: "flex",
|
||||||
|
float: "right",
|
||||||
|
|
||||||
|
"&:hover": {
|
||||||
|
color: "#07193E",
|
||||||
|
},
|
||||||
|
|
||||||
|
"& svg": {
|
||||||
|
width: 10,
|
||||||
|
alignSelf: "center",
|
||||||
|
marginLeft: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
advancedOpen: {
|
||||||
|
transform: "rotateZ(-90deg) translateX(-4px) translateY(2px)",
|
||||||
|
},
|
||||||
|
advancedClosed: {
|
||||||
|
transform: "rotateZ(90deg)",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWr
|
|||||||
import PageHeader from "../Common/PageHeader/PageHeader";
|
import PageHeader from "../Common/PageHeader/PageHeader";
|
||||||
import api from "../../../common/api";
|
import api from "../../../common/api";
|
||||||
import BackLink from "../../../common/BackLink";
|
import BackLink from "../../../common/BackLink";
|
||||||
|
import PageLayout from "../Common/Layout/PageLayout";
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
@@ -69,6 +70,7 @@ const styles = (theme: Theme) =>
|
|||||||
border: "#EAEDEE 1px solid",
|
border: "#EAEDEE 1px solid",
|
||||||
borderRadius: 3,
|
borderRadius: 3,
|
||||||
padding: "19px 38px",
|
padding: "19px 38px",
|
||||||
|
marginTop: 15,
|
||||||
},
|
},
|
||||||
scanInfo: {
|
scanInfo: {
|
||||||
marginTop: 20,
|
marginTop: 20,
|
||||||
@@ -79,8 +81,31 @@ const styles = (theme: Theme) =>
|
|||||||
scanData: {
|
scanData: {
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
},
|
},
|
||||||
|
noMinWidthLabel: {
|
||||||
|
fontWeight: 400,
|
||||||
|
},
|
||||||
|
formBox: {
|
||||||
|
padding: 15,
|
||||||
|
border: "1px solid #EAEAEA",
|
||||||
|
},
|
||||||
|
buttonBar: {
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "flex-end",
|
||||||
|
},
|
||||||
|
bucketField: {
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
prefixField: {
|
||||||
|
...searchField.searchField,
|
||||||
|
marginLeft: 10,
|
||||||
|
flex: 1,
|
||||||
|
},
|
||||||
|
actionsTray: {
|
||||||
|
...actionsTray.actionsTray,
|
||||||
|
marginBottom: 0,
|
||||||
|
},
|
||||||
...inlineCheckboxes,
|
...inlineCheckboxes,
|
||||||
...actionsTray,
|
|
||||||
...searchField,
|
...searchField,
|
||||||
...containerForHeader(theme.spacing(4)),
|
...containerForHeader(theme.spacing(4)),
|
||||||
});
|
});
|
||||||
@@ -93,7 +118,6 @@ interface IHeal {
|
|||||||
const SelectStyled = withStyles((theme: Theme) =>
|
const SelectStyled = withStyles((theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
root: {
|
root: {
|
||||||
width: 450,
|
|
||||||
lineHeight: "50px",
|
lineHeight: "50px",
|
||||||
marginRight: 15,
|
marginRight: 15,
|
||||||
"label + &": {
|
"label + &": {
|
||||||
@@ -107,7 +131,6 @@ const SelectStyled = withStyles((theme: Theme) =>
|
|||||||
height: 50,
|
height: 50,
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
lineHeight: "50px",
|
lineHeight: "50px",
|
||||||
width: 450,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
)(InputBase);
|
)(InputBase);
|
||||||
@@ -248,97 +271,99 @@ const Heal = ({ classes, distributedSetup }: IHeal) => {
|
|||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<PageHeader label="Heal" />
|
<PageHeader label="Heal" />
|
||||||
<Grid container className={classes.container}>
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
<Grid item xs={12}>
|
<PageLayout>
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
<Grid xs={12} className={classes.formBox}>
|
||||||
</Grid>
|
<Grid item xs={12} className={classes.actionsTray}>
|
||||||
<Grid item xs={12} className={classes.actionsTray}>
|
<FormControl variant="outlined" className={classes.bucketField}>
|
||||||
<FormControl variant="outlined">
|
<Select
|
||||||
<Select
|
label="Bucket"
|
||||||
id="bucket-name"
|
id="bucket-name"
|
||||||
name="bucket-name"
|
name="bucket-name"
|
||||||
value={bucketName}
|
value={bucketName}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setBucketName(e.target.value as string);
|
setBucketName(e.target.value as string);
|
||||||
}}
|
}}
|
||||||
className={classes.searchField}
|
className={classes.searchField}
|
||||||
input={<SelectStyled />}
|
input={<SelectStyled />}
|
||||||
displayEmpty
|
displayEmpty
|
||||||
>
|
>
|
||||||
<MenuItem value="" key={`select-bucket-name-default`}>
|
<MenuItem value="" key={`select-bucket-name-default`}>
|
||||||
Select Bucket
|
Select Bucket
|
||||||
</MenuItem>
|
|
||||||
{bucketNames.map((option) => (
|
|
||||||
<MenuItem
|
|
||||||
value={option.value}
|
|
||||||
key={`select-bucket-name-${option.label}`}
|
|
||||||
>
|
|
||||||
{option.label}
|
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
))}
|
{bucketNames.map((option) => (
|
||||||
</Select>
|
<MenuItem
|
||||||
</FormControl>
|
value={option.value}
|
||||||
<TextField
|
key={`select-bucket-name-${option.label}`}
|
||||||
placeholder="Prefix"
|
>
|
||||||
className={classes.searchField}
|
{option.label}
|
||||||
id="prefix-resource"
|
</MenuItem>
|
||||||
label=""
|
))}
|
||||||
disabled={false}
|
</Select>
|
||||||
InputProps={{
|
</FormControl>
|
||||||
disableUnderline: true,
|
<TextField
|
||||||
}}
|
label="Prefix"
|
||||||
onChange={(e) => {
|
className={classes.prefixField}
|
||||||
setPrefix(e.target.value);
|
id="prefix-resource"
|
||||||
}}
|
disabled={false}
|
||||||
variant="standard"
|
InputProps={{
|
||||||
/>
|
disableUnderline: true,
|
||||||
<Button
|
}}
|
||||||
type="submit"
|
onChange={(e) => {
|
||||||
variant="contained"
|
setPrefix(e.target.value);
|
||||||
color="primary"
|
}}
|
||||||
disabled={start}
|
variant="standard"
|
||||||
onClick={() => setStart(true)}
|
/>
|
||||||
>
|
</Grid>
|
||||||
Start
|
<Grid item xs={12} className={classes.inlineCheckboxes}>
|
||||||
</Button>
|
<CheckboxWrapper
|
||||||
</Grid>
|
name="recursive"
|
||||||
<Grid item xs={12} className={classes.inlineCheckboxes}>
|
id="recursive"
|
||||||
<CheckboxWrapper
|
classes={classes}
|
||||||
name="recursive"
|
value="recursive"
|
||||||
id="recursive"
|
checked={recursive}
|
||||||
value="recursive"
|
onChange={(e) => {
|
||||||
checked={recursive}
|
setRecursive(e.target.checked);
|
||||||
onChange={(e) => {
|
}}
|
||||||
setRecursive(e.target.checked);
|
disabled={false}
|
||||||
}}
|
label="Recursive"
|
||||||
disabled={false}
|
/>
|
||||||
label="Recursive"
|
<CheckboxWrapper
|
||||||
/>
|
name="forceStart"
|
||||||
<CheckboxWrapper
|
id="forceStart"
|
||||||
name="forceStart"
|
classes={classes}
|
||||||
id="forceStart"
|
value="forceStart"
|
||||||
value="forceStart"
|
checked={forceStart}
|
||||||
checked={forceStart}
|
onChange={(e) => {
|
||||||
onChange={(e) => {
|
setForceStart(e.target.checked);
|
||||||
setForceStart(e.target.checked);
|
}}
|
||||||
}}
|
disabled={false}
|
||||||
disabled={false}
|
label="Force Start"
|
||||||
label="Force Start"
|
/>
|
||||||
/>
|
<CheckboxWrapper
|
||||||
<CheckboxWrapper
|
name="forceStop"
|
||||||
name="forceStop"
|
id="forceStop"
|
||||||
id="forceStop"
|
classes={classes}
|
||||||
value="forceStop"
|
value="forceStop"
|
||||||
checked={forceStop}
|
checked={forceStop}
|
||||||
onChange={(e) => {
|
onChange={(e) => {
|
||||||
setForceStop(e.target.checked);
|
setForceStop(e.target.checked);
|
||||||
}}
|
}}
|
||||||
disabled={false}
|
disabled={false}
|
||||||
label="Force Stop"
|
label="Force Stop"
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12} className={classes.buttonBar}>
|
||||||
<br />
|
<Button
|
||||||
|
type="submit"
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
disabled={start}
|
||||||
|
onClick={() => setStart(true)}
|
||||||
|
>
|
||||||
|
Start
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} className={classes.graphContainer}>
|
<Grid item xs={12} className={classes.graphContainer}>
|
||||||
<HorizontalBar
|
<HorizontalBar
|
||||||
@@ -370,7 +395,7 @@ const Heal = ({ classes, distributedSetup }: IHeal) => {
|
|||||||
</div>
|
</div>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import { setServerDiagStat, setSnackBarMessage } from "../../../actions";
|
|||||||
import CircularProgress from "@mui/material/CircularProgress";
|
import CircularProgress from "@mui/material/CircularProgress";
|
||||||
import BackLink from "../../../common/BackLink";
|
import BackLink from "../../../common/BackLink";
|
||||||
import TestWrapper from "../Common/TestWrapper/TestWrapper";
|
import TestWrapper from "../Common/TestWrapper/TestWrapper";
|
||||||
|
import PageLayout from "../Common/Layout/PageLayout";
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
@@ -133,7 +134,7 @@ const HealthInfo = ({
|
|||||||
const [diagStarted, setDiagStarted] = useState<boolean>(false);
|
const [diagStarted, setDiagStarted] = useState<boolean>(false);
|
||||||
const [downloadDisabled, setDownloadDisabled] = useState(true);
|
const [downloadDisabled, setDownloadDisabled] = useState(true);
|
||||||
const [localMessage, setMessage] = useState<string>("");
|
const [localMessage, setMessage] = useState<string>("");
|
||||||
const [title, setTitle] = useState<string>("Start new Diagnostic");
|
const [title, setTitle] = useState<string>("New Diagnostic");
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (serverDiagnosticStatus === DiagStatInProgress) {
|
if (serverDiagnosticStatus === DiagStatInProgress) {
|
||||||
@@ -242,11 +243,9 @@ const HealthInfo = ({
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<PageHeader label="Diagnostic" />
|
<PageHeader label="Diagnostic" />
|
||||||
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
|
|
||||||
<Grid container className={classes.container}>
|
<PageLayout>
|
||||||
<Grid item xs={12}>
|
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12} className={classes.boxy}>
|
<Grid item xs={12} className={classes.boxy}>
|
||||||
<TestWrapper title={title} advancedVisible={false}>
|
<TestWrapper title={title} advancedVisible={false}>
|
||||||
<Grid container className={classes.buttons}>
|
<Grid container className={classes.buttons}>
|
||||||
@@ -306,7 +305,7 @@ const HealthInfo = ({
|
|||||||
disabled={startDiagnostic}
|
disabled={startDiagnostic}
|
||||||
onClick={() => setStartDiagnostic(true)}
|
onClick={() => setStartDiagnostic(true)}
|
||||||
>
|
>
|
||||||
Start new Diagnostic
|
Start New Diagnostic
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
@@ -316,7 +315,7 @@ const HealthInfo = ({
|
|||||||
</Grid>
|
</Grid>
|
||||||
</TestWrapper>
|
</TestWrapper>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ import createStyles from "@mui/styles/createStyles";
|
|||||||
import withStyles from "@mui/styles/withStyles";
|
import withStyles from "@mui/styles/withStyles";
|
||||||
import { connect } from "react-redux";
|
import { connect } from "react-redux";
|
||||||
import { Grid } from "@mui/material";
|
import { Grid } from "@mui/material";
|
||||||
import TextField from "@mui/material/TextField";
|
|
||||||
import InputAdornment from "@mui/material/InputAdornment";
|
|
||||||
import moment from "moment/moment";
|
import moment from "moment/moment";
|
||||||
import { AppState } from "../../../../store";
|
import { AppState } from "../../../../store";
|
||||||
import { logMessageReceived, logResetMessages } from "../actions";
|
import { logMessageReceived, logResetMessages } from "../actions";
|
||||||
@@ -34,19 +32,20 @@ import {
|
|||||||
logsCommon,
|
logsCommon,
|
||||||
searchField,
|
searchField,
|
||||||
} from "../../Common/FormComponents/common/styleLibrary";
|
} from "../../Common/FormComponents/common/styleLibrary";
|
||||||
import SearchIcon from "../../../../icons/SearchIcon";
|
|
||||||
import PageHeader from "../../Common/PageHeader/PageHeader";
|
import PageHeader from "../../Common/PageHeader/PageHeader";
|
||||||
import BackLink from "../../../../common/BackLink";
|
import BackLink from "../../../../common/BackLink";
|
||||||
|
import PageLayout from "../../Common/Layout/PageLayout";
|
||||||
|
import SearchBox from "../../Common/SearchBox";
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
logList: {
|
logList: {
|
||||||
background: "#fff",
|
background: "#fff",
|
||||||
minHeight: 400,
|
minHeight: 400,
|
||||||
height: "calc(100vh - 304px)",
|
height: "calc(100vh - 280px)",
|
||||||
overflow: "auto",
|
overflow: "auto",
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
padding: "25px 45px 0",
|
padding: "15px 15px 0",
|
||||||
border: "1px solid #EAEDEE",
|
border: "1px solid #EAEDEE",
|
||||||
borderRadius: 4,
|
borderRadius: 4,
|
||||||
},
|
},
|
||||||
@@ -330,41 +329,17 @@ const ErrorLogs = ({
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<PageHeader label="Logs" />
|
<PageHeader label="Logs" />
|
||||||
<Grid container className={classes.container}>
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
<Grid item xs={12}>
|
<PageLayout>
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
<Grid xs={12}>
|
||||||
</Grid>
|
<Grid item xs={12} className={classes.actionsTray}>
|
||||||
<Grid item xs={12}>
|
<SearchBox placeholder="Highlight Line" onChange={setHighlight} />
|
||||||
<Grid container className={classes.logsSubContainer}>
|
</Grid>
|
||||||
<Grid item xs={12} className={classes.actionsTray}>
|
<Grid item xs={12}>
|
||||||
<TextField
|
<div className={classes.logList}>{renderLines}</div>
|
||||||
placeholder="Highlight Line"
|
|
||||||
className={classes.searchField}
|
|
||||||
id="search-resource"
|
|
||||||
label=""
|
|
||||||
onChange={(val) => {
|
|
||||||
setHighlight(val.target.value);
|
|
||||||
}}
|
|
||||||
InputProps={{
|
|
||||||
disableUnderline: true,
|
|
||||||
startAdornment: (
|
|
||||||
<InputAdornment position="start">
|
|
||||||
<SearchIcon />
|
|
||||||
</InputAdornment>
|
|
||||||
),
|
|
||||||
}}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12}>
|
|
||||||
<br />
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12}>
|
|
||||||
<div className={classes.logList}>{renderLines}</div>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,13 +21,11 @@ import { Theme } from "@mui/material/styles";
|
|||||||
import createStyles from "@mui/styles/createStyles";
|
import createStyles from "@mui/styles/createStyles";
|
||||||
import withStyles from "@mui/styles/withStyles";
|
import withStyles from "@mui/styles/withStyles";
|
||||||
import { Button, Grid } from "@mui/material";
|
import { Button, Grid } from "@mui/material";
|
||||||
import { ArrowDropUp } from "@mui/icons-material";
|
|
||||||
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
|
|
||||||
import {
|
import {
|
||||||
actionsTray,
|
advancedFilterToggleStyles,
|
||||||
containerForHeader,
|
containerForHeader,
|
||||||
logsCommon,
|
logsCommon,
|
||||||
searchField,
|
tableStyles,
|
||||||
} from "../../Common/FormComponents/common/styleLibrary";
|
} from "../../Common/FormComponents/common/styleLibrary";
|
||||||
import { IReqInfoSearchResults, ISearchResponse } from "./types";
|
import { IReqInfoSearchResults, ISearchResponse } from "./types";
|
||||||
import { niceBytes, nsToSeconds } from "../../../../common/utils";
|
import { niceBytes, nsToSeconds } from "../../../../common/utils";
|
||||||
@@ -42,6 +40,8 @@ import { LogSearchColumnLabels } from "./utils";
|
|||||||
import DateRangeSelector from "../../Common/FormComponents/DateRangeSelector/DateRangeSelector";
|
import DateRangeSelector from "../../Common/FormComponents/DateRangeSelector/DateRangeSelector";
|
||||||
import PageHeader from "../../Common/PageHeader/PageHeader";
|
import PageHeader from "../../Common/PageHeader/PageHeader";
|
||||||
import BackLink from "../../../../common/BackLink";
|
import BackLink from "../../../../common/BackLink";
|
||||||
|
import PageLayout from "../../Common/Layout/PageLayout";
|
||||||
|
import ArrowForwardIosIcon from "@mui/icons-material/ArrowForwardIos";
|
||||||
|
|
||||||
interface ILogSearchProps {
|
interface ILogSearchProps {
|
||||||
classes: any;
|
classes: any;
|
||||||
@@ -51,45 +51,20 @@ interface ILogSearchProps {
|
|||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
inputBar: {
|
|
||||||
flexGrow: 1,
|
|
||||||
marginLeft: 15,
|
|
||||||
},
|
|
||||||
advancedLabel: {
|
|
||||||
display: "flex",
|
|
||||||
alignItems: "center",
|
|
||||||
color: "#091C42",
|
|
||||||
border: 0,
|
|
||||||
backgroundColor: "transparent",
|
|
||||||
cursor: "pointer",
|
|
||||||
"&:focus, &:active": {
|
|
||||||
outline: "none",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
advancedLabelContainer: {
|
|
||||||
marginTop: 10,
|
|
||||||
},
|
|
||||||
getInformationContainer: {
|
|
||||||
textAlign: "right",
|
|
||||||
},
|
|
||||||
orderButton: {
|
|
||||||
width: 93,
|
|
||||||
},
|
|
||||||
recordsLabel: {
|
|
||||||
alignSelf: "center",
|
|
||||||
marginLeft: 15,
|
|
||||||
},
|
|
||||||
blockCollapsed: {
|
blockCollapsed: {
|
||||||
height: 0,
|
display: "none",
|
||||||
overflowY: "hidden",
|
overflowY: "hidden",
|
||||||
transitionDuration: "0.3s",
|
|
||||||
},
|
},
|
||||||
filterOpen: {
|
filterOpen: {
|
||||||
height: 200,
|
display: "block",
|
||||||
marginBottom: 12,
|
marginBottom: 12,
|
||||||
},
|
},
|
||||||
endLineAction: {
|
endLineAction: {
|
||||||
marginBottom: 15,
|
marginBottom: 15,
|
||||||
|
padding: "0 15px 0 15px",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "flex-end",
|
||||||
},
|
},
|
||||||
filtersContainer: {
|
filtersContainer: {
|
||||||
display: "flex",
|
display: "flex",
|
||||||
@@ -98,10 +73,6 @@ const styles = (theme: Theme) =>
|
|||||||
},
|
},
|
||||||
innerContainer: {
|
innerContainer: {
|
||||||
backgroundColor: "#fff",
|
backgroundColor: "#fff",
|
||||||
border: "#EAEDEE 1px solid",
|
|
||||||
borderRadius: 3,
|
|
||||||
padding: 10,
|
|
||||||
marginBottom: 15,
|
|
||||||
},
|
},
|
||||||
noticeLabel: {
|
noticeLabel: {
|
||||||
marginLeft: 15,
|
marginLeft: 15,
|
||||||
@@ -111,18 +82,56 @@ const styles = (theme: Theme) =>
|
|||||||
},
|
},
|
||||||
|
|
||||||
tableFOpen: {
|
tableFOpen: {
|
||||||
height: "calc(100vh - 561px)",
|
height: "calc(100vh - 520px)",
|
||||||
},
|
},
|
||||||
tableFClosed: {
|
tableFClosed: {
|
||||||
height: "calc(100vh - 349px)",
|
height: "calc(100vh - 320px)",
|
||||||
},
|
},
|
||||||
"@global": {
|
...tableStyles,
|
||||||
".overrideMargin": {
|
...advancedFilterToggleStyles,
|
||||||
marginLeft: 0,
|
|
||||||
|
buttonKit: {
|
||||||
|
"& div": {
|
||||||
|
height: 35,
|
||||||
|
},
|
||||||
|
"& .MuiOutlinedInput-notchedOutline": {
|
||||||
|
border: 0,
|
||||||
|
height: 28,
|
||||||
|
color: "#000000",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
...searchField,
|
searchOptions: {
|
||||||
...actionsTray,
|
display: "flex",
|
||||||
|
padding: 15,
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
flexFlow: "column",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
selectorLabel: {
|
||||||
|
"& + div": {
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
width: 110,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
marginLeft: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
formBox: {
|
||||||
|
border: "1px solid #EAEAEA",
|
||||||
|
marginBottom: 15,
|
||||||
|
},
|
||||||
|
dateRangePicker: {
|
||||||
|
"& div": {
|
||||||
|
marginBottom: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
advancedButton: {
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
},
|
||||||
|
advancedFilterOptions: {},
|
||||||
...logsCommon,
|
...logsCommon,
|
||||||
...containerForHeader(theme.spacing(4)),
|
...containerForHeader(theme.spacing(4)),
|
||||||
});
|
});
|
||||||
@@ -289,103 +298,107 @@ const LogsSearchMain = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
<PageHeader label="Audit Logs" />
|
<PageHeader label="Audit Logs" />
|
||||||
<Grid container className={classes.container}>
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
<Grid item xs={12}>
|
<PageLayout>
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
<Grid xs={12} className={classes.formBox}>
|
||||||
</Grid>
|
<Grid item xs={12} className={`${classes.searchOptions}`}>
|
||||||
<Grid container className={classes.logsSubContainer}>
|
<div className={classes.dateRangePicker}>
|
||||||
<Grid
|
<DateRangeSelector
|
||||||
item
|
classes={classes}
|
||||||
xs={12}
|
setTimeEnd={setTimeEnd}
|
||||||
className={`${classes.actionsTray} ${classes.timeContainers}`}
|
setTimeStart={setTimeStart}
|
||||||
>
|
timeEnd={timeEnd}
|
||||||
<DateRangeSelector
|
timeStart={timeStart}
|
||||||
setTimeEnd={setTimeEnd}
|
/>
|
||||||
setTimeStart={setTimeStart}
|
|
||||||
timeEnd={timeEnd}
|
|
||||||
timeStart={timeStart}
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12} className={`${classes.advancedLabelContainer}`}>
|
|
||||||
<div
|
|
||||||
className={`${classes.blockCollapsed} ${
|
|
||||||
filterOpen ? classes.filterOpen : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
<div className={classes.innerContainer}>
|
|
||||||
<div className={classes.noticeLabel}>
|
|
||||||
Enable your preferred options to get filtered records.
|
|
||||||
<br />
|
|
||||||
You can use '*' to match any character, '.' to signify a
|
|
||||||
single character or '\' to scape an special character (E.g.
|
|
||||||
mybucket-*)
|
|
||||||
</div>
|
|
||||||
<div className={classes.filtersContainer}>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setBucket}
|
|
||||||
value={bucket}
|
|
||||||
label={"Bucket"}
|
|
||||||
id="bucket"
|
|
||||||
name="bucket"
|
|
||||||
/>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setApiName}
|
|
||||||
value={apiName}
|
|
||||||
label={"API Name"}
|
|
||||||
id="api_name"
|
|
||||||
name="api_name"
|
|
||||||
/>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setUserAgent}
|
|
||||||
value={userAgent}
|
|
||||||
label={"User Agent"}
|
|
||||||
id="user_agent"
|
|
||||||
name="user_agent"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className={classes.filtersContainer}>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setObject}
|
|
||||||
value={object}
|
|
||||||
label={"Object"}
|
|
||||||
id="object"
|
|
||||||
name="object"
|
|
||||||
/>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setRequestID}
|
|
||||||
value={requestID}
|
|
||||||
label={"Request ID"}
|
|
||||||
id="request_id"
|
|
||||||
name="request_id"
|
|
||||||
/>
|
|
||||||
<FilterInputWrapper
|
|
||||||
onChange={setResponseStatus}
|
|
||||||
value={responseStatus}
|
|
||||||
label={"Response Status"}
|
|
||||||
id="response_status"
|
|
||||||
name="response_status"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Grid>
|
|
||||||
<Grid
|
<Grid item className={classes.advancedButton}>
|
||||||
item
|
|
||||||
xs={12}
|
|
||||||
className={`${classes.actionsTray} ${classes.endLineAction}`}
|
|
||||||
>
|
|
||||||
<div>
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
|
||||||
className={`${classes.advancedLabel} overrideMargin`}
|
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setFilterOpen(!filterOpen);
|
setFilterOpen(!filterOpen);
|
||||||
}}
|
}}
|
||||||
|
className={classes.advancedConfiguration}
|
||||||
>
|
>
|
||||||
Advanced Filters{" "}
|
{filterOpen ? "Hide" : "Show"} advanced Filters{" "}
|
||||||
{filterOpen ? <ArrowDropUp /> : <ArrowDropDownIcon />}
|
<span
|
||||||
|
className={
|
||||||
|
filterOpen ? classes.advancedOpen : classes.advancedClosed
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<ArrowForwardIosIcon />
|
||||||
|
</span>
|
||||||
</button>
|
</button>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<Grid
|
||||||
|
item
|
||||||
|
xs={12}
|
||||||
|
className={`${classes.blockCollapsed} ${
|
||||||
|
filterOpen ? classes.filterOpen : ""
|
||||||
|
}`}
|
||||||
|
>
|
||||||
|
<div className={classes.innerContainer}>
|
||||||
|
<div className={classes.noticeLabel}>
|
||||||
|
Enable your preferred options to get filtered records.
|
||||||
|
<br />
|
||||||
|
You can use '*' to match any character, '.' to signify a single
|
||||||
|
character or '\' to scape an special character (E.g. mybucket-*)
|
||||||
|
</div>
|
||||||
|
<div className={classes.filtersContainer}>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setBucket}
|
||||||
|
value={bucket}
|
||||||
|
label={"Bucket"}
|
||||||
|
id="bucket"
|
||||||
|
name="bucket"
|
||||||
|
/>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setApiName}
|
||||||
|
value={apiName}
|
||||||
|
label={"API Name"}
|
||||||
|
id="api_name"
|
||||||
|
name="api_name"
|
||||||
|
/>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setUserAgent}
|
||||||
|
value={userAgent}
|
||||||
|
label={"User Agent"}
|
||||||
|
id="user_agent"
|
||||||
|
name="user_agent"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className={classes.filtersContainer}>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setObject}
|
||||||
|
value={object}
|
||||||
|
label={"Object"}
|
||||||
|
id="object"
|
||||||
|
name="object"
|
||||||
|
/>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setRequestID}
|
||||||
|
value={requestID}
|
||||||
|
label={"Request ID"}
|
||||||
|
id="request_id"
|
||||||
|
name="request_id"
|
||||||
|
/>
|
||||||
|
<FilterInputWrapper
|
||||||
|
classes={classes}
|
||||||
|
onChange={setResponseStatus}
|
||||||
|
value={responseStatus}
|
||||||
|
label={"Response Status"}
|
||||||
|
id="response_status"
|
||||||
|
name="response_status"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={12} className={classes.endLineAction}>
|
||||||
<Button
|
<Button
|
||||||
type="button"
|
type="button"
|
||||||
variant="contained"
|
variant="contained"
|
||||||
@@ -395,93 +408,92 @@ const LogsSearchMain = ({
|
|||||||
Get Information
|
Get Information
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12}>
|
|
||||||
<TableWrapper
|
|
||||||
columns={[
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.time,
|
|
||||||
elementKey: "time",
|
|
||||||
enableSort: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.api_name,
|
|
||||||
elementKey: "api_name",
|
|
||||||
},
|
|
||||||
{ label: LogSearchColumnLabels.bucket, elementKey: "bucket" },
|
|
||||||
{ label: LogSearchColumnLabels.object, elementKey: "object" },
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.remote_host,
|
|
||||||
elementKey: "remote_host",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.request_id,
|
|
||||||
elementKey: "request_id",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.user_agent,
|
|
||||||
elementKey: "user_agent",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.response_status,
|
|
||||||
elementKey: "response_status",
|
|
||||||
renderFunction: (element) => (
|
|
||||||
<Fragment>
|
|
||||||
<span>
|
|
||||||
{element.response_status_code} (
|
|
||||||
{element.response_status})
|
|
||||||
</span>
|
|
||||||
</Fragment>
|
|
||||||
),
|
|
||||||
renderFullObject: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.request_content_length,
|
|
||||||
elementKey: "request_content_length",
|
|
||||||
renderFunction: niceBytes,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.response_content_length,
|
|
||||||
elementKey: "response_content_length",
|
|
||||||
renderFunction: niceBytes,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: LogSearchColumnLabels.time_to_response_ns,
|
|
||||||
elementKey: "time_to_response_ns",
|
|
||||||
renderFunction: nsToSeconds,
|
|
||||||
contentTextAlign: "right",
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
isLoading={loading}
|
|
||||||
records={records}
|
|
||||||
entityName="Logs"
|
|
||||||
customEmptyMessage={"There is no information with this criteria"}
|
|
||||||
idField="request_id"
|
|
||||||
columnsSelector
|
|
||||||
columnsShown={columnsShown}
|
|
||||||
onColumnChange={selectColumn}
|
|
||||||
customPaperHeight={
|
|
||||||
filterOpen ? classes.tableFOpen : classes.tableFClosed
|
|
||||||
}
|
|
||||||
sortConfig={{
|
|
||||||
currentSort: "time",
|
|
||||||
currentDirection: sortOrder,
|
|
||||||
triggerSort: sortChange,
|
|
||||||
}}
|
|
||||||
infiniteScrollConfig={{
|
|
||||||
recordsCount: 1000000,
|
|
||||||
loadMoreRecords: loadMoreRecords,
|
|
||||||
}}
|
|
||||||
itemActions={[
|
|
||||||
{
|
|
||||||
type: "view",
|
|
||||||
onClick: openExtraInformation,
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
textSelectable
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
<Grid item xs={12} className={classes.tableBlock}>
|
||||||
|
<TableWrapper
|
||||||
|
columns={[
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.time,
|
||||||
|
elementKey: "time",
|
||||||
|
enableSort: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.api_name,
|
||||||
|
elementKey: "api_name",
|
||||||
|
},
|
||||||
|
{ label: LogSearchColumnLabels.bucket, elementKey: "bucket" },
|
||||||
|
{ label: LogSearchColumnLabels.object, elementKey: "object" },
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.remote_host,
|
||||||
|
elementKey: "remote_host",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.request_id,
|
||||||
|
elementKey: "request_id",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.user_agent,
|
||||||
|
elementKey: "user_agent",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.response_status,
|
||||||
|
elementKey: "response_status",
|
||||||
|
renderFunction: (element) => (
|
||||||
|
<Fragment>
|
||||||
|
<span>
|
||||||
|
{element.response_status_code} ({element.response_status})
|
||||||
|
</span>
|
||||||
|
</Fragment>
|
||||||
|
),
|
||||||
|
renderFullObject: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.request_content_length,
|
||||||
|
elementKey: "request_content_length",
|
||||||
|
renderFunction: niceBytes,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.response_content_length,
|
||||||
|
elementKey: "response_content_length",
|
||||||
|
renderFunction: niceBytes,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: LogSearchColumnLabels.time_to_response_ns,
|
||||||
|
elementKey: "time_to_response_ns",
|
||||||
|
renderFunction: nsToSeconds,
|
||||||
|
contentTextAlign: "right",
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
isLoading={loading}
|
||||||
|
records={records}
|
||||||
|
entityName="Logs"
|
||||||
|
customEmptyMessage={"There is no information with this criteria"}
|
||||||
|
idField="request_id"
|
||||||
|
columnsSelector
|
||||||
|
columnsShown={columnsShown}
|
||||||
|
onColumnChange={selectColumn}
|
||||||
|
customPaperHeight={
|
||||||
|
filterOpen ? classes.tableFOpen : classes.tableFClosed
|
||||||
|
}
|
||||||
|
sortConfig={{
|
||||||
|
currentSort: "time",
|
||||||
|
currentDirection: sortOrder,
|
||||||
|
triggerSort: sortChange,
|
||||||
|
}}
|
||||||
|
infiniteScrollConfig={{
|
||||||
|
recordsCount: 1000000,
|
||||||
|
loadMoreRecords: loadMoreRecords,
|
||||||
|
}}
|
||||||
|
itemActions={[
|
||||||
|
{
|
||||||
|
type: "view",
|
||||||
|
onClick: openExtraInformation,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
textSelectable
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
</PageLayout>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import moment from "moment/moment";
|
|||||||
import PageHeader from "../Common/PageHeader/PageHeader";
|
import PageHeader from "../Common/PageHeader/PageHeader";
|
||||||
import {
|
import {
|
||||||
actionsTray,
|
actionsTray,
|
||||||
|
advancedFilterToggleStyles,
|
||||||
containerForHeader,
|
containerForHeader,
|
||||||
searchField,
|
searchField,
|
||||||
} from "../Common/FormComponents/common/styleLibrary";
|
} from "../Common/FormComponents/common/styleLibrary";
|
||||||
@@ -36,6 +37,7 @@ import BackLink from "../../../common/BackLink";
|
|||||||
import ProgressBarWrapper from "../Common/ProgressBarWrapper/ProgressBarWrapper";
|
import ProgressBarWrapper from "../Common/ProgressBarWrapper/ProgressBarWrapper";
|
||||||
import InputUnitMenu from "../Common/FormComponents/InputUnitMenu/InputUnitMenu";
|
import InputUnitMenu from "../Common/FormComponents/InputUnitMenu/InputUnitMenu";
|
||||||
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
|
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
|
||||||
|
import PageLayout from "../Common/Layout/PageLayout";
|
||||||
|
|
||||||
interface ISpeedtest {
|
interface ISpeedtest {
|
||||||
classes: any;
|
classes: any;
|
||||||
@@ -43,33 +45,6 @@ interface ISpeedtest {
|
|||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
advancedConfiguration: {
|
|
||||||
color: "#2781B0",
|
|
||||||
fontSize: 10,
|
|
||||||
textDecoration: "underline",
|
|
||||||
border: "none",
|
|
||||||
backgroundColor: "transparent",
|
|
||||||
cursor: "pointer",
|
|
||||||
alignItems: "center",
|
|
||||||
display: "flex",
|
|
||||||
float: "right",
|
|
||||||
|
|
||||||
"&:hover": {
|
|
||||||
color: "#07193E",
|
|
||||||
},
|
|
||||||
|
|
||||||
"& svg": {
|
|
||||||
width: 10,
|
|
||||||
alignSelf: "center",
|
|
||||||
marginLeft: 5,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
advancedOpen: {
|
|
||||||
transform: "rotateZ(-90deg) translateX(-4px) translateY(2px)",
|
|
||||||
},
|
|
||||||
advancedClosed: {
|
|
||||||
transform: "rotateZ(90deg)",
|
|
||||||
},
|
|
||||||
advancedContent: {
|
advancedContent: {
|
||||||
backgroundColor: "#FBFAFA",
|
backgroundColor: "#FBFAFA",
|
||||||
maxHeight: 0,
|
maxHeight: 0,
|
||||||
@@ -83,12 +58,6 @@ const styles = (theme: Theme) =>
|
|||||||
paddingBottom: 15,
|
paddingBottom: 15,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
advancedButton: {
|
|
||||||
flexGrow: 1,
|
|
||||||
alignItems: "flex-end",
|
|
||||||
display: "flex",
|
|
||||||
justifyContent: "flex-end",
|
|
||||||
},
|
|
||||||
progressContainer: {
|
progressContainer: {
|
||||||
padding: "0 15px",
|
padding: "0 15px",
|
||||||
},
|
},
|
||||||
@@ -99,6 +68,7 @@ const styles = (theme: Theme) =>
|
|||||||
advancedOption: {
|
advancedOption: {
|
||||||
marginTop: 20,
|
marginTop: 20,
|
||||||
},
|
},
|
||||||
|
...advancedFilterToggleStyles,
|
||||||
...actionsTray,
|
...actionsTray,
|
||||||
...searchField,
|
...searchField,
|
||||||
...containerForHeader(theme.spacing(4)),
|
...containerForHeader(theme.spacing(4)),
|
||||||
@@ -215,11 +185,9 @@ const Speedtest = ({ classes }: ISpeedtest) => {
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<PageHeader label="Speedtest" />
|
<PageHeader label="Speedtest" />
|
||||||
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
|
|
||||||
<Grid container className={classes.container}>
|
<PageLayout>
|
||||||
<Grid item xs={12}>
|
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12} className={classes.boxy}>
|
<Grid item xs={12} className={classes.boxy}>
|
||||||
<Grid container>
|
<Grid container>
|
||||||
<Grid item>
|
<Grid item>
|
||||||
@@ -384,7 +352,7 @@ const Speedtest = ({ classes }: ISpeedtest) => {
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import {
|
|||||||
} from "../../Common/FormComponents/common/styleLibrary";
|
} from "../../Common/FormComponents/common/styleLibrary";
|
||||||
import PageHeader from "../../Common/PageHeader/PageHeader";
|
import PageHeader from "../../Common/PageHeader/PageHeader";
|
||||||
import SettingsCard from "../../Common/SettingsCard/SettingsCard";
|
import SettingsCard from "../../Common/SettingsCard/SettingsCard";
|
||||||
|
import PageLayout from "../../Common/Layout/PageLayout";
|
||||||
|
|
||||||
interface IConfigurationOptions {
|
interface IConfigurationOptions {
|
||||||
classes: any;
|
classes: any;
|
||||||
@@ -78,7 +79,7 @@ const ToolsList = ({ classes }: IConfigurationOptions) => {
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<PageHeader label={"Tools"} />
|
<PageHeader label={"Tools"} />
|
||||||
<Grid container className={classes.container}>
|
<PageLayout>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<div className={classes.settingsOptionsContainer}>
|
<div className={classes.settingsOptionsContainer}>
|
||||||
@@ -92,7 +93,7 @@ const ToolsList = ({ classes }: IConfigurationOptions) => {
|
|||||||
</div>
|
</div>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -36,12 +36,14 @@ import {
|
|||||||
hrClass,
|
hrClass,
|
||||||
inlineCheckboxes,
|
inlineCheckboxes,
|
||||||
searchField,
|
searchField,
|
||||||
|
tableStyles,
|
||||||
} from "../Common/FormComponents/common/styleLibrary";
|
} from "../Common/FormComponents/common/styleLibrary";
|
||||||
import TableWrapper from "../Common/TableWrapper/TableWrapper";
|
import TableWrapper from "../Common/TableWrapper/TableWrapper";
|
||||||
import PageHeader from "../Common/PageHeader/PageHeader";
|
import PageHeader from "../Common/PageHeader/PageHeader";
|
||||||
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
|
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
|
||||||
import moment from "moment/moment";
|
import moment from "moment/moment";
|
||||||
import BackLink from "../../../common/BackLink";
|
import BackLink from "../../../common/BackLink";
|
||||||
|
import PageLayout from "../Common/Layout/PageLayout";
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
@@ -71,18 +73,14 @@ const styles = (theme: Theme) =>
|
|||||||
timeItem: {
|
timeItem: {
|
||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
labelCheckboxes: {
|
|
||||||
fontSize: 16,
|
|
||||||
fontWeight: 700,
|
|
||||||
paddingTop: 19,
|
|
||||||
},
|
|
||||||
startButton: {
|
startButton: {
|
||||||
textAlign: "right",
|
textAlign: "right",
|
||||||
},
|
},
|
||||||
...actionsTray,
|
...actionsTray,
|
||||||
...searchField,
|
...searchField,
|
||||||
...hrClass,
|
...hrClass,
|
||||||
...inlineCheckboxes,
|
|
||||||
|
...tableStyles,
|
||||||
searchField: {
|
searchField: {
|
||||||
...searchField.searchField,
|
...searchField.searchField,
|
||||||
margin: "0 5px",
|
margin: "0 5px",
|
||||||
@@ -96,6 +94,39 @@ const styles = (theme: Theme) =>
|
|||||||
tableWrapper: {
|
tableWrapper: {
|
||||||
height: "calc(100vh - 292px)",
|
height: "calc(100vh - 292px)",
|
||||||
},
|
},
|
||||||
|
inlineCheckboxes: {
|
||||||
|
...inlineCheckboxes.inlineCheckboxes,
|
||||||
|
alignItems: "center",
|
||||||
|
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
flexFlow: "column",
|
||||||
|
alignItems: "flex-start",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
checkBoxLabel: {
|
||||||
|
marginTop: 10,
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: 500,
|
||||||
|
},
|
||||||
|
formBox: {
|
||||||
|
border: "1px solid #EAEAEA",
|
||||||
|
padding: 15,
|
||||||
|
marginBottom: 15,
|
||||||
|
},
|
||||||
|
midColumnCheckboxes: {
|
||||||
|
display: "flex",
|
||||||
|
},
|
||||||
|
separatorBar: {
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: 700,
|
||||||
|
paddingTop: 19,
|
||||||
|
"@media (max-width: 900px)": {
|
||||||
|
display: "none",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
noMinWidthLabel: {
|
||||||
|
fontWeight: 400,
|
||||||
|
},
|
||||||
...containerForHeader(theme.spacing(4)),
|
...containerForHeader(theme.spacing(4)),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -193,248 +224,250 @@ const Trace = ({
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<PageHeader label={"Trace"} />
|
<PageHeader label={"Trace"} />
|
||||||
<Grid container className={classes.container}>
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
<Grid item xs={12}>
|
<PageLayout>
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
<Grid xs={12} className={classes.formBox}>
|
||||||
</Grid>
|
<Grid item xs={12} className={classes.actionsTray}>
|
||||||
<Grid item xs={12} className={classes.actionsTray}>
|
<TextField
|
||||||
<TextField
|
className={classes.searchField}
|
||||||
placeholder="Status Code"
|
id="status-code"
|
||||||
className={classes.searchField}
|
label="Status Code"
|
||||||
id="status-code"
|
InputProps={{
|
||||||
label=""
|
disableUnderline: true,
|
||||||
InputProps={{
|
}}
|
||||||
disableUnderline: true,
|
value={statusCode}
|
||||||
}}
|
onChange={(e) => {
|
||||||
value={statusCode}
|
setStatusCode(e.target.value);
|
||||||
onChange={(e) => {
|
}}
|
||||||
setStatusCode(e.target.value);
|
|
||||||
}}
|
|
||||||
disabled={traceStarted}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
<TextField
|
|
||||||
placeholder="Method"
|
|
||||||
className={classes.searchField}
|
|
||||||
id="method"
|
|
||||||
label=""
|
|
||||||
InputProps={{
|
|
||||||
disableUnderline: true,
|
|
||||||
}}
|
|
||||||
value={method}
|
|
||||||
onChange={(e) => {
|
|
||||||
setMethod(e.target.value);
|
|
||||||
}}
|
|
||||||
disabled={traceStarted}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
<TextField
|
|
||||||
placeholder="Function Name"
|
|
||||||
className={classes.searchField}
|
|
||||||
id="func-name"
|
|
||||||
label=""
|
|
||||||
disabled={traceStarted}
|
|
||||||
InputProps={{
|
|
||||||
disableUnderline: true,
|
|
||||||
}}
|
|
||||||
value={func}
|
|
||||||
onChange={(e) => {
|
|
||||||
setFunc(e.target.value);
|
|
||||||
}}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
<TextField
|
|
||||||
placeholder="Path"
|
|
||||||
className={classes.searchField}
|
|
||||||
id="path"
|
|
||||||
label=""
|
|
||||||
disabled={traceStarted}
|
|
||||||
InputProps={{
|
|
||||||
disableUnderline: true,
|
|
||||||
}}
|
|
||||||
value={path}
|
|
||||||
onChange={(e) => {
|
|
||||||
setPath(e.target.value);
|
|
||||||
}}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
<TextField
|
|
||||||
type="number"
|
|
||||||
className={classes.searchField}
|
|
||||||
id="fthreshold"
|
|
||||||
label="Response Threshold"
|
|
||||||
disabled={traceStarted}
|
|
||||||
InputProps={{
|
|
||||||
disableUnderline: true,
|
|
||||||
}}
|
|
||||||
inputProps={{
|
|
||||||
min: 0,
|
|
||||||
}}
|
|
||||||
value={threshold}
|
|
||||||
onChange={(e) => {
|
|
||||||
setThreshold(parseInt(e.target.value));
|
|
||||||
}}
|
|
||||||
variant="standard"
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12} className={classes.inlineCheckboxes}>
|
|
||||||
<span className={classes.labelCheckboxes}>Calls to trace:</span>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={all}
|
|
||||||
id={"all_calls"}
|
|
||||||
name={"all_calls"}
|
|
||||||
label={"All"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setAll(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"all"}
|
|
||||||
disabled={traceStarted}
|
|
||||||
/>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={s3 || all}
|
|
||||||
id={"s3_calls"}
|
|
||||||
name={"s3_calls"}
|
|
||||||
label={"S3"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setS3(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"s3"}
|
|
||||||
disabled={all || traceStarted}
|
|
||||||
/>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={internal || all}
|
|
||||||
id={"internal_calls"}
|
|
||||||
name={"internal_calls"}
|
|
||||||
label={"Internal"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setInternal(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"internal"}
|
|
||||||
disabled={all || traceStarted}
|
|
||||||
/>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={storage || all}
|
|
||||||
id={"storage_calls"}
|
|
||||||
name={"storage_calls"}
|
|
||||||
label={"Storage"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setStorage(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"storage"}
|
|
||||||
disabled={all || traceStarted}
|
|
||||||
/>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={os || all}
|
|
||||||
id={"os_calls"}
|
|
||||||
name={"os_calls"}
|
|
||||||
label={"OS"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setOS(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"os"}
|
|
||||||
disabled={all || traceStarted}
|
|
||||||
/>
|
|
||||||
<span className={classes.labelCheckboxes}>
|
|
||||||
|
|
|
||||||
</span>
|
|
||||||
<CheckboxWrapper
|
|
||||||
checked={errors}
|
|
||||||
id={"only_errors"}
|
|
||||||
name={"only_errors"}
|
|
||||||
label={"Display only Errors"}
|
|
||||||
onChange={(item) => {
|
|
||||||
setErrors(item.target.checked);
|
|
||||||
}}
|
|
||||||
value={"only_errors"}
|
|
||||||
disabled={traceStarted}
|
|
||||||
/>
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12} className={classes.startButton}>
|
|
||||||
{!traceStarted && (
|
|
||||||
<Button
|
|
||||||
type="submit"
|
|
||||||
variant="contained"
|
|
||||||
color="primary"
|
|
||||||
disabled={traceStarted}
|
disabled={traceStarted}
|
||||||
onClick={startTrace}
|
variant="standard"
|
||||||
>
|
/>
|
||||||
Start
|
<TextField
|
||||||
</Button>
|
className={classes.searchField}
|
||||||
)}
|
id="method"
|
||||||
{traceStarted && (
|
label="Method"
|
||||||
<Button
|
InputProps={{
|
||||||
type="button"
|
disableUnderline: true,
|
||||||
variant="contained"
|
}}
|
||||||
color="primary"
|
value={method}
|
||||||
onClick={stopTrace}
|
onChange={(e) => {
|
||||||
>
|
setMethod(e.target.value);
|
||||||
Stop
|
}}
|
||||||
</Button>
|
disabled={traceStarted}
|
||||||
)}
|
variant="standard"
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
label="Function Name"
|
||||||
|
className={classes.searchField}
|
||||||
|
id="func-name"
|
||||||
|
disabled={traceStarted}
|
||||||
|
InputProps={{
|
||||||
|
disableUnderline: true,
|
||||||
|
}}
|
||||||
|
value={func}
|
||||||
|
onChange={(e) => {
|
||||||
|
setFunc(e.target.value);
|
||||||
|
}}
|
||||||
|
variant="standard"
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
className={classes.searchField}
|
||||||
|
id="path"
|
||||||
|
label="Path"
|
||||||
|
disabled={traceStarted}
|
||||||
|
InputProps={{
|
||||||
|
disableUnderline: true,
|
||||||
|
}}
|
||||||
|
value={path}
|
||||||
|
onChange={(e) => {
|
||||||
|
setPath(e.target.value);
|
||||||
|
}}
|
||||||
|
variant="standard"
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
type="number"
|
||||||
|
className={classes.searchField}
|
||||||
|
id="fthreshold"
|
||||||
|
label="Response Threshold"
|
||||||
|
disabled={traceStarted}
|
||||||
|
InputProps={{
|
||||||
|
disableUnderline: true,
|
||||||
|
}}
|
||||||
|
inputProps={{
|
||||||
|
min: 0,
|
||||||
|
}}
|
||||||
|
value={threshold}
|
||||||
|
onChange={(e) => {
|
||||||
|
setThreshold(parseInt(e.target.value));
|
||||||
|
}}
|
||||||
|
variant="standard"
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={12} className={classes.inlineCheckboxes}>
|
||||||
|
<div className={classes.checkBoxLabel}>Calls to trace:</div>
|
||||||
|
<div className={classes.midColumnCheckboxes}>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={all}
|
||||||
|
classes={classes}
|
||||||
|
id={"all_calls"}
|
||||||
|
name={"all_calls"}
|
||||||
|
label={"All"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setAll(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"all"}
|
||||||
|
disabled={traceStarted}
|
||||||
|
/>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={s3 || all}
|
||||||
|
id={"s3_calls"}
|
||||||
|
classes={classes}
|
||||||
|
name={"s3_calls"}
|
||||||
|
label={"S3"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setS3(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"s3"}
|
||||||
|
disabled={all || traceStarted}
|
||||||
|
/>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={internal || all}
|
||||||
|
id={"internal_calls"}
|
||||||
|
classes={classes}
|
||||||
|
name={"internal_calls"}
|
||||||
|
label={"Internal"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setInternal(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"internal"}
|
||||||
|
disabled={all || traceStarted}
|
||||||
|
/>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={storage || all}
|
||||||
|
id={"storage_calls"}
|
||||||
|
classes={classes}
|
||||||
|
name={"storage_calls"}
|
||||||
|
label={"Storage"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setStorage(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"storage"}
|
||||||
|
disabled={all || traceStarted}
|
||||||
|
/>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={os || all}
|
||||||
|
id={"os_calls"}
|
||||||
|
classes={classes}
|
||||||
|
name={"os_calls"}
|
||||||
|
label={"OS"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setOS(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"os"}
|
||||||
|
disabled={all || traceStarted}
|
||||||
|
/>
|
||||||
|
<span className={classes.separatorBar}>
|
||||||
|
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<CheckboxWrapper
|
||||||
|
checked={errors}
|
||||||
|
id={"only_errors"}
|
||||||
|
classes={classes}
|
||||||
|
name={"only_errors"}
|
||||||
|
label={"Display only Errors"}
|
||||||
|
onChange={(item) => {
|
||||||
|
setErrors(item.target.checked);
|
||||||
|
}}
|
||||||
|
value={"only_errors"}
|
||||||
|
disabled={traceStarted}
|
||||||
|
/>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={12} className={classes.startButton}>
|
||||||
|
{!traceStarted && (
|
||||||
|
<Button
|
||||||
|
type="submit"
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
disabled={traceStarted}
|
||||||
|
onClick={startTrace}
|
||||||
|
>
|
||||||
|
Start
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{traceStarted && (
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
variant="contained"
|
||||||
|
color="primary"
|
||||||
|
onClick={stopTrace}
|
||||||
|
>
|
||||||
|
Stop
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12} className={classes.tableBlock}>
|
||||||
<br />
|
<TableWrapper
|
||||||
</Grid>
|
itemActions={[]}
|
||||||
|
columns={[
|
||||||
<TableWrapper
|
{
|
||||||
itemActions={[]}
|
label: "Time",
|
||||||
columns={[
|
elementKey: "ptime",
|
||||||
{
|
renderFunction: (time: Date) => {
|
||||||
label: "Time",
|
const timeParse = new Date(time);
|
||||||
elementKey: "ptime",
|
return timeFromDate(timeParse);
|
||||||
renderFunction: (time: Date) => {
|
},
|
||||||
const timeParse = new Date(time);
|
globalClass: classes.timeItem,
|
||||||
return timeFromDate(timeParse);
|
|
||||||
},
|
},
|
||||||
globalClass: classes.timeItem,
|
{ label: "Name", elementKey: "api" },
|
||||||
},
|
{
|
||||||
{ label: "Name", elementKey: "api" },
|
label: "Status",
|
||||||
{
|
elementKey: "",
|
||||||
label: "Status",
|
renderFunction: (fullElement: TraceMessage) =>
|
||||||
elementKey: "",
|
`${fullElement.statusCode} ${fullElement.statusMsg}`,
|
||||||
renderFunction: (fullElement: TraceMessage) =>
|
renderFullObject: true,
|
||||||
`${fullElement.statusCode} ${fullElement.statusMsg}`,
|
},
|
||||||
renderFullObject: true,
|
{
|
||||||
},
|
label: "Location",
|
||||||
{
|
elementKey: "configuration_id",
|
||||||
label: "Location",
|
renderFunction: (fullElement: TraceMessage) =>
|
||||||
elementKey: "configuration_id",
|
`${fullElement.host} ${fullElement.client}`,
|
||||||
renderFunction: (fullElement: TraceMessage) =>
|
renderFullObject: true,
|
||||||
`${fullElement.host} ${fullElement.client}`,
|
},
|
||||||
renderFullObject: true,
|
{
|
||||||
},
|
label: "Load Time",
|
||||||
{
|
elementKey: "callStats.duration",
|
||||||
label: "Load Time",
|
globalClass: classes.timeItem,
|
||||||
elementKey: "callStats.duration",
|
},
|
||||||
globalClass: classes.timeItem,
|
{
|
||||||
},
|
label: "Upload",
|
||||||
{
|
elementKey: "callStats.rx",
|
||||||
label: "Upload",
|
renderFunction: niceBytes,
|
||||||
elementKey: "callStats.rx",
|
globalClass: classes.sizeItem,
|
||||||
renderFunction: niceBytes,
|
},
|
||||||
globalClass: classes.sizeItem,
|
{
|
||||||
},
|
label: "Download",
|
||||||
{
|
elementKey: "callStats.tx",
|
||||||
label: "Download",
|
renderFunction: niceBytes,
|
||||||
elementKey: "callStats.tx",
|
globalClass: classes.sizeItem,
|
||||||
renderFunction: niceBytes,
|
},
|
||||||
globalClass: classes.sizeItem,
|
]}
|
||||||
},
|
isLoading={false}
|
||||||
]}
|
records={messages}
|
||||||
isLoading={false}
|
entityName="Traces"
|
||||||
records={messages}
|
idField="api"
|
||||||
entityName="Traces"
|
customEmptyMessage={
|
||||||
idField="api"
|
traceStarted
|
||||||
customEmptyMessage={
|
? "No Traced elements received yet"
|
||||||
traceStarted
|
: "Trace is not started yet"
|
||||||
? "No Traced elements received yet"
|
}
|
||||||
: "Trace is not started yet"
|
customPaperHeight={classes.tableWrapper}
|
||||||
}
|
autoScrollToBottom
|
||||||
customPaperHeight={classes.tableWrapper}
|
/>
|
||||||
autoScrollToBottom
|
</Grid>
|
||||||
/>
|
</PageLayout>
|
||||||
</Grid>
|
|
||||||
</Fragment>
|
</Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -37,34 +37,29 @@ import {
|
|||||||
actionsTray,
|
actionsTray,
|
||||||
containerForHeader,
|
containerForHeader,
|
||||||
searchField,
|
searchField,
|
||||||
|
tableStyles,
|
||||||
} from "../Common/FormComponents/common/styleLibrary";
|
} from "../Common/FormComponents/common/styleLibrary";
|
||||||
import { ErrorResponseHandler } from "../../../common/types";
|
import { ErrorResponseHandler } from "../../../common/types";
|
||||||
import TableWrapper from "../Common/TableWrapper/TableWrapper";
|
import TableWrapper from "../Common/TableWrapper/TableWrapper";
|
||||||
import PageHeader from "../Common/PageHeader/PageHeader";
|
import PageHeader from "../Common/PageHeader/PageHeader";
|
||||||
import api from "../../../common/api";
|
import api from "../../../common/api";
|
||||||
import BackLink from "../../../common/BackLink";
|
import BackLink from "../../../common/BackLink";
|
||||||
|
import PageLayout from "../Common/Layout/PageLayout";
|
||||||
|
|
||||||
const styles = (theme: Theme) =>
|
const styles = (theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
watchList: {
|
|
||||||
background: "white",
|
|
||||||
height: "400px",
|
|
||||||
overflow: "auto",
|
|
||||||
"& ul": {
|
|
||||||
margin: "4px",
|
|
||||||
padding: "0px",
|
|
||||||
},
|
|
||||||
"& ul li": {
|
|
||||||
listStyle: "none",
|
|
||||||
margin: "0px",
|
|
||||||
padding: "0px",
|
|
||||||
borderBottom: "1px solid #dedede",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
searchPrefix: {
|
searchPrefix: {
|
||||||
flexGrow: 1,
|
flexGrow: 1,
|
||||||
marginLeft: 15,
|
marginLeft: 15,
|
||||||
},
|
},
|
||||||
|
watchTableHeight: {
|
||||||
|
height: "calc(100vh - 270px)",
|
||||||
|
},
|
||||||
|
bucketField: {
|
||||||
|
flexGrow: 2,
|
||||||
|
minWidth: 200,
|
||||||
|
},
|
||||||
|
...tableStyles,
|
||||||
...actionsTray,
|
...actionsTray,
|
||||||
...searchField,
|
...searchField,
|
||||||
...containerForHeader(theme.spacing(4)),
|
...containerForHeader(theme.spacing(4)),
|
||||||
@@ -73,7 +68,6 @@ const styles = (theme: Theme) =>
|
|||||||
const SelectStyled = withStyles((theme: Theme) =>
|
const SelectStyled = withStyles((theme: Theme) =>
|
||||||
createStyles({
|
createStyles({
|
||||||
root: {
|
root: {
|
||||||
width: 450,
|
|
||||||
lineHeight: "50px",
|
lineHeight: "50px",
|
||||||
"label + &": {
|
"label + &": {
|
||||||
marginTop: theme.spacing(3),
|
marginTop: theme.spacing(3),
|
||||||
@@ -86,7 +80,6 @@ const SelectStyled = withStyles((theme: Theme) =>
|
|||||||
height: 50,
|
height: 50,
|
||||||
fontSize: 13,
|
fontSize: 13,
|
||||||
lineHeight: "50px",
|
lineHeight: "50px",
|
||||||
width: 450,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
)(InputBase);
|
)(InputBase);
|
||||||
@@ -191,13 +184,11 @@ const Watch = ({
|
|||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<PageHeader label="Watch" />
|
<PageHeader label="Watch" />
|
||||||
<Grid container className={classes.container}>
|
<BackLink to="/tools" label="Return to Tools" />
|
||||||
<Grid item xs={12}>
|
<PageLayout>
|
||||||
<BackLink to="/tools" label="Return to Tools" />
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
<Grid item xs={12} className={classes.actionsTray}>
|
<Grid item xs={12} className={classes.actionsTray}>
|
||||||
<FormControl variant="outlined">
|
<FormControl variant="outlined" className={classes.bucketField}>
|
||||||
<Select
|
<Select
|
||||||
id="bucket-name"
|
id="bucket-name"
|
||||||
name="bucket-name"
|
name="bucket-name"
|
||||||
@@ -227,10 +218,9 @@ const Watch = ({
|
|||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<TextField
|
<TextField
|
||||||
placeholder="Prefix"
|
|
||||||
className={`${classes.searchField} ${classes.searchPrefix}`}
|
className={`${classes.searchField} ${classes.searchPrefix}`}
|
||||||
id="prefix-resource"
|
id="prefix-resource"
|
||||||
label=""
|
label="Prefix"
|
||||||
disabled={start}
|
disabled={start}
|
||||||
InputProps={{
|
InputProps={{
|
||||||
disableUnderline: true,
|
disableUnderline: true,
|
||||||
@@ -241,10 +231,9 @@ const Watch = ({
|
|||||||
variant="standard"
|
variant="standard"
|
||||||
/>
|
/>
|
||||||
<TextField
|
<TextField
|
||||||
placeholder="Suffix"
|
|
||||||
className={`${classes.searchField} ${classes.searchPrefix}`}
|
className={`${classes.searchField} ${classes.searchPrefix}`}
|
||||||
id="suffix-resource"
|
id="suffix-resource"
|
||||||
label=""
|
label="Suffix"
|
||||||
disabled={start}
|
disabled={start}
|
||||||
InputProps={{
|
InputProps={{
|
||||||
disableUnderline: true,
|
disableUnderline: true,
|
||||||
@@ -264,32 +253,33 @@ const Watch = ({
|
|||||||
Start
|
Start
|
||||||
</Button>
|
</Button>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12}>
|
|
||||||
<br />
|
<div className={classes.tableBlock}>
|
||||||
</Grid>
|
<TableWrapper
|
||||||
<TableWrapper
|
columns={[
|
||||||
columns={[
|
{
|
||||||
{
|
label: "Time",
|
||||||
label: "Time",
|
elementKey: "Time",
|
||||||
elementKey: "Time",
|
renderFunction: timeFromDate,
|
||||||
renderFunction: timeFromDate,
|
},
|
||||||
},
|
{
|
||||||
{
|
label: "Size",
|
||||||
label: "Size",
|
elementKey: "Size",
|
||||||
elementKey: "Size",
|
renderFunction: niceBytes,
|
||||||
renderFunction: niceBytes,
|
},
|
||||||
},
|
{ label: "Type", elementKey: "Type" },
|
||||||
{ label: "Type", elementKey: "Type" },
|
{ label: "Path", elementKey: "Path" },
|
||||||
{ label: "Path", elementKey: "Path" },
|
]}
|
||||||
]}
|
records={messages}
|
||||||
records={messages}
|
entityName={"Watch"}
|
||||||
entityName={"Watch"}
|
customEmptyMessage={"No Changes at this time"}
|
||||||
customEmptyMessage={"No Changes at this time"}
|
idField={"watch_table"}
|
||||||
idField={"watch_table"}
|
isLoading={false}
|
||||||
isLoading={false}
|
customPaperHeight={classes.watchTableHeight}
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</PageLayout>
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user