mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-05 06:23:23 +00:00
Fix/entry-title-responsive-comments (#922)
* Make `EntryTitle` component responsive * useRequetTextByWidth added * renamed Co-authored-by: M. Mert Yildiran <mehmet@up9.com> Co-authored-by: Leon <>
This commit is contained in:
parent
a2595afd5e
commit
11a2246cb9
@ -11,6 +11,7 @@ import trafficViewerApi from "../../recoil/TrafficViewerApi";
|
|||||||
import TrafficViewerApi from "./TrafficViewerApi";
|
import TrafficViewerApi from "./TrafficViewerApi";
|
||||||
import TrafficViewerApiAtom from "../../recoil/TrafficViewerApi/atom";
|
import TrafficViewerApiAtom from "../../recoil/TrafficViewerApi/atom";
|
||||||
import queryAtom from "../../recoil/query/atom";
|
import queryAtom from "../../recoil/query/atom";
|
||||||
|
import useWindowDimensions, { useRequestTextByWidth } from "../../hooks/WindowDimensionsHook";
|
||||||
|
|
||||||
const useStyles = makeStyles(() => ({
|
const useStyles = makeStyles(() => ({
|
||||||
entryTitle: {
|
entryTitle: {
|
||||||
@ -35,15 +36,18 @@ const useStyles = makeStyles(() => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
export const formatSize = (n: number) => n > 1000 ? `${Math.round(n / 1000)}KB` : `${n} B`;
|
export const formatSize = (n: number) => n > 1000 ? `${Math.round(n / 1000)}KB` : `${n} B`;
|
||||||
|
const minSizeDisplayRequestSize = 880;
|
||||||
const EntryTitle: React.FC<any> = ({protocol, data, elapsedTime}) => {
|
const EntryTitle: React.FC<any> = ({protocol, data, elapsedTime}) => {
|
||||||
const classes = useStyles();
|
const classes = useStyles();
|
||||||
const request = data.request;
|
const request = data.request;
|
||||||
const response = data.response;
|
const response = data.response;
|
||||||
|
|
||||||
|
const { width } = useWindowDimensions();
|
||||||
|
const {requestText, responseText, elapsedTimeText} = useRequestTextByWidth(width)
|
||||||
|
|
||||||
return <div className={classes.entryTitle}>
|
return <div className={classes.entryTitle}>
|
||||||
<Protocol protocol={protocol} horizontal={true}/>
|
<Protocol protocol={protocol} horizontal={true}/>
|
||||||
<div style={{right: "30px", position: "absolute", display: "flex"}}>
|
{(width > minSizeDisplayRequestSize) && <div style={{right: "30px", position: "absolute", display: "flex"}}>
|
||||||
{request && <Queryable
|
{request && <Queryable
|
||||||
query={`requestSize == ${data.requestSize}`}
|
query={`requestSize == ${data.requestSize}`}
|
||||||
style={{margin: "0 18px"}}
|
style={{margin: "0 18px"}}
|
||||||
@ -53,7 +57,7 @@ const EntryTitle: React.FC<any> = ({protocol, data, elapsedTime}) => {
|
|||||||
style={{opacity: 0.5}}
|
style={{opacity: 0.5}}
|
||||||
id="entryDetailedTitleRequestSize"
|
id="entryDetailedTitleRequestSize"
|
||||||
>
|
>
|
||||||
{`Request: ${formatSize(data.requestSize)}`}
|
{`${requestText}${formatSize(data.requestSize)}`}
|
||||||
</div>
|
</div>
|
||||||
</Queryable>}
|
</Queryable>}
|
||||||
{response && <Queryable
|
{response && <Queryable
|
||||||
@ -65,22 +69,22 @@ const EntryTitle: React.FC<any> = ({protocol, data, elapsedTime}) => {
|
|||||||
style={{opacity: 0.5}}
|
style={{opacity: 0.5}}
|
||||||
id="entryDetailedTitleResponseSize"
|
id="entryDetailedTitleResponseSize"
|
||||||
>
|
>
|
||||||
{`Response: ${formatSize(data.responseSize)}`}
|
{`${responseText}${formatSize(data.responseSize)}`}
|
||||||
</div>
|
</div>
|
||||||
</Queryable>}
|
</Queryable>}
|
||||||
{response && <Queryable
|
{response && <Queryable
|
||||||
query={`elapsedTime >= ${elapsedTime}`}
|
query={`elapsedTime >= ${elapsedTime}`}
|
||||||
style={{marginRight: 18}}
|
style={{margin: "0 0 0 18px"}}
|
||||||
displayIconOnMouseOver={true}
|
displayIconOnMouseOver={true}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
style={{opacity: 0.5}}
|
style={{opacity: 0.5}}
|
||||||
id="entryDetailedTitleElapsedTime"
|
id="entryDetailedTitleElapsedTime"
|
||||||
>
|
>
|
||||||
{`Elapsed Time: ${Math.round(elapsedTime)}ms`}
|
{`${elapsedTimeText}${Math.round(elapsedTime)}ms`}
|
||||||
</div>
|
</div>
|
||||||
</Queryable>}
|
</Queryable>}
|
||||||
</div>
|
</div>}
|
||||||
</div>;
|
</div>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
43
ui-common/src/hooks/WindowDimensionsHook.tsx
Normal file
43
ui-common/src/hooks/WindowDimensionsHook.tsx
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
import { useState, useEffect } from 'react';
|
||||||
|
|
||||||
|
function getWindowDimensions() {
|
||||||
|
const { innerWidth: width, innerHeight: height } = window;
|
||||||
|
return {
|
||||||
|
width,
|
||||||
|
height
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useRequestTextByWidth(windowWidth){
|
||||||
|
|
||||||
|
let requestText = "Request: "
|
||||||
|
let responseText = "Response: "
|
||||||
|
let elapsedTimeText = "Elapsed Time: "
|
||||||
|
|
||||||
|
if (windowWidth < 1078) {
|
||||||
|
requestText = ""
|
||||||
|
responseText = ""
|
||||||
|
elapsedTimeText = ""
|
||||||
|
} else if (windowWidth < 1356) {
|
||||||
|
requestText = "Req: "
|
||||||
|
responseText = "Res: "
|
||||||
|
elapsedTimeText = "ET: "
|
||||||
|
}
|
||||||
|
|
||||||
|
return {requestText, responseText, elapsedTimeText}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function useWindowDimensions() {
|
||||||
|
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
function handleResize() {
|
||||||
|
setWindowDimensions(getWindowDimensions());
|
||||||
|
}
|
||||||
|
|
||||||
|
window.addEventListener('resize', handleResize);
|
||||||
|
return () => window.removeEventListener('resize', handleResize);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return windowDimensions;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user