diff --git a/ui/src/components/EntryDetailed.tsx b/ui/src/components/EntryDetailed.tsx index 2c5481a13..47dab4883 100644 --- a/ui/src/components/EntryDetailed.tsx +++ b/ui/src/components/EntryDetailed.tsx @@ -1,9 +1,8 @@ import React from "react"; import EntryViewer from "./EntryDetailed/EntryViewer"; +import {EntryItem} from "./EntryListItem/EntryListItem"; import {makeStyles} from "@material-ui/core"; import Protocol from "./UI/Protocol" -import StatusCode from "./UI/StatusCode"; -import {Summary} from "./UI/Summary"; const useStyles = makeStyles(() => ({ entryTitle: { @@ -12,6 +11,7 @@ const useStyles = makeStyles(() => ({ maxHeight: 46, alignItems: 'center', marginBottom: 4, + marginLeft: 6, padding: 2, paddingBottom: 0 }, @@ -64,18 +64,17 @@ const EntryTitle: React.FC = ({protocol, data, bodySize, elapsedTime, updat }; const EntrySummary: React.FC = ({data, updateQuery}) => { - const classes = useStyles(); + const entry = data.base; - const response = data.response; - - return
- {response && "status" in response &&
- -
} -
- -
-
; + return ; }; export const EntryDetailed: React.FC = ({entryData, updateQuery}) => { diff --git a/ui/src/components/EntryDetailed/EntryViewer.module.sass b/ui/src/components/EntryDetailed/EntryViewer.module.sass index 740a4c417..fdc1e7195 100644 --- a/ui/src/components/EntryDetailed/EntryViewer.module.sass +++ b/ui/src/components/EntryDetailed/EntryViewer.module.sass @@ -4,6 +4,7 @@ font-family: "Source Sans Pro", Lucida Grande, Tahoma, sans-serif height: calc(100% - 70px) width: 100% + margin-top: 10px h3, h4 diff --git a/ui/src/components/EntryListItem/EntryListItem.tsx b/ui/src/components/EntryListItem/EntryListItem.tsx index 29da5bcdf..b27299221 100644 --- a/ui/src/components/EntryListItem/EntryListItem.tsx +++ b/ui/src/components/EntryListItem/EntryListItem.tsx @@ -40,11 +40,13 @@ interface EntryProps { setFocusedEntryId: (id: string) => void; style: object; updateQuery: any; + forceSelect: boolean; + headingMode: boolean; } -export const EntryItem: React.FC = ({entry, setFocusedEntryId, style, updateQuery}) => { +export const EntryItem: React.FC = ({entry, setFocusedEntryId, style, updateQuery, forceSelect, headingMode}) => { - const [isSelected, setIsSelected] = useState(false); + const [isSelected, setIsSelected] = useState(!forceSelect ? false : true); const classification = getClassification(entry.statusCode) const numberOfRules = entry.rules.numberOfRules @@ -122,22 +124,23 @@ export const EntryItem: React.FC = ({entry, setFocusedEntryId, style className={`${styles.row} ${isSelected && !rule && !contractEnabled ? styles.rowSelected : additionalRulesProperties}`} onClick={() => { + if (!setFocusedEntryId) return; setIsSelected(!isSelected); setFocusedEntryId(entry.id.toString()); }} style={{ border: isSelected ? `1px ${entry.protocol.backgroundColor} solid` : "1px transparent solid", - position: "absolute", + position: !headingMode ? "absolute" : "unset", top: style['top'], marginTop: style['marginTop'], - width: "calc(100% - 25px)", + width: !headingMode ? "calc(100% - 25px)" : "calc(100% - 18px)", }} > - + /> : null} {((entry.protocol.name === "http" && "statusCode" in entry) || entry.statusCode !== 0) &&
} diff --git a/ui/src/components/TrafficPage.tsx b/ui/src/components/TrafficPage.tsx index 3d2afa71d..b530dea5d 100644 --- a/ui/src/components/TrafficPage.tsx +++ b/ui/src/components/TrafficPage.tsx @@ -119,7 +119,11 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS switch (message.messageType) { case "entry": const entry = message.data; - if (!focusedEntryId) setFocusedEntryId(entry.id.toString()); + var forceSelect = false; + if (!focusedEntryId) { + setFocusedEntryId(entry.id.toString()); + forceSelect = true; + } setEntriesBuffer([ ...entriesBuffer, = ({setAnalyzeStatus, onTLS setFocusedEntryId={setFocusedEntryId} style={{}} updateQuery={updateQuery} + forceSelect={forceSelect} + headingMode={false} /> ]); break @@ -190,16 +196,18 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus, onTLS const entryData = await api.getEntry(focusedEntryId); setSelectedEntryData(entryData); } catch (error) { - toast[error.response.data.type](`Entry[${focusedEntryId}]: ${error.response.data.msg}`, { - position: "bottom-right", - theme: "colored", - autoClose: error.response.data.autoClose, - hideProgressBar: false, - closeOnClick: true, - pauseOnHover: true, - draggable: true, - progress: undefined, - }); + if (error.response) { + toast[error.response.data.type](`Entry[${focusedEntryId}]: ${error.response.data.msg}`, { + position: "bottom-right", + theme: "colored", + autoClose: error.response.data.autoClose, + hideProgressBar: false, + closeOnClick: true, + pauseOnHover: true, + draggable: true, + progress: undefined, + }); + } console.error(error); } })()