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:
leon-up9 2022-03-24 12:09:28 +02:00 committed by GitHub
parent a2595afd5e
commit 11a2246cb9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 7 deletions

View File

@ -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>;
}; };

View 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;
}