diff --git a/frontend/app/components/Session_/Console/Console.js b/frontend/app/components/Session_/Console/Console.js index 823df7118..5f9d9a55a 100644 --- a/frontend/app/components/Session_/Console/Console.js +++ b/frontend/app/components/Session_/Console/Console.js @@ -1,125 +1,16 @@ -import React from 'react'; -// import cn from 'classnames'; -// import { getRE } from 'App/utils'; -// import { Icon, NoContent, Tabs, Input } from 'UI'; import { connectPlayer, jump } from 'Player'; -// import { LEVEL } from 'Types/session/log'; -// import Autoscroll from '../Autoscroll'; -// import BottomBlock from '../BottomBlock'; -// import stl from './console.module.css'; import ConsoleContent from './ConsoleContent'; - -// const ALL = 'ALL'; -// const INFO = 'INFO'; -// const WARNINGS = 'WARNINGS'; -// const ERRORS = 'ERRORS'; - -// const LEVEL_TAB = { -// [ LEVEL.INFO ]: INFO, -// [ LEVEL.LOG ]: INFO, -// [ LEVEL.WARNING ]: WARNINGS, -// [ LEVEL.ERROR ]: ERRORS, -// [ LEVEL.EXCEPTION ]: ERRORS, -// }; - -// const TABS = [ ALL, INFO, WARNINGS, ERRORS ].map(tab => ({ text: tab, key: tab })); - -// // eslint-disable-next-line complexity -// const getIconProps = (level) => { -// switch (level) { -// case LEVEL.INFO: -// case LEVEL.LOG: -// return { -// name: 'console/info', -// color: 'blue2', -// }; -// case LEVEL.WARNING: -// return { -// name: 'console/warning', -// color: 'red2', -// }; -// case LEVEL.ERROR: -// return { -// name: 'console/error', -// color: 'red', -// }; -// } -// return null; -// }; - -// function renderWithNL(s = '') { -// if (typeof s !== 'string') return ''; -// return s.split('\n').map((line, i) =>
{ line }
) -// } - @connectPlayer(state => ({ logs: state.logList, time: state.time, livePlay: state.livePlay, })) export default class Console extends React.PureComponent { - // state = { - // filter: '', - // activeTab: ALL, - // } - // onTabClick = activeTab => this.setState({ activeTab }) - // onFilterChange = (e, { value }) => this.setState({ filter: value }) - render() { const { logs, time } = this.props; - // const { filter, activeTab, currentError } = this.state; - // const filterRE = getRE(filter, 'i'); - // const filtered = logs.filter(({ level, value }) => activeTab === ALL - // ? filterRE.test(value) - // : (filterRE.test(value) && LEVEL_TAB[ level ] === activeTab) - // ); return ( - <> - {/* - - - - - - - - { filtered.map(l => ( -
jump(l.time) } - > - -
{ renderWithNL(l.value) }
-
- ))} -
-
-
-
*/} - ); } -} \ No newline at end of file +} diff --git a/frontend/app/components/Session_/Console/ConsoleContent.js b/frontend/app/components/Session_/Console/ConsoleContent.js index 34151fce9..880f660e7 100644 --- a/frontend/app/components/Session_/Console/ConsoleContent.js +++ b/frontend/app/components/Session_/Console/ConsoleContent.js @@ -22,7 +22,7 @@ const LEVEL_TAB = { [ LEVEL.EXCEPTION ]: ERRORS, }; -const TABS = [ ALL, INFO, WARNINGS, ERRORS ].map(tab => ({ text: tab, key: tab })); +const TABS = [ ALL, ERRORS, WARNINGS, INFO, ].map(tab => ({ text: tab, key: tab })); // eslint-disable-next-line complexity const getIconProps = (level) => { @@ -77,15 +77,18 @@ export default class ConsoleContent extends React.PureComponent { <> - +
+ Console + +
); } -} \ No newline at end of file +} diff --git a/frontend/app/components/Session_/Network/NetworkContent.js b/frontend/app/components/Session_/Network/NetworkContent.js index 136790769..751bea726 100644 --- a/frontend/app/components/Session_/Network/NetworkContent.js +++ b/frontend/app/components/Session_/Network/NetworkContent.js @@ -189,13 +189,16 @@ export default class NetworkContent extends React.PureComponent { - +
+ Network + +
- - - {/* */} - - = 1000 - ? `${ connBandwidth / 1000 } Mbps` - : `${ connBandwidth } Kbps` - } - display={ connBandwidth != null } - /> - +
+ Performance + + + {/* */} + + = 1000 + ? `${ connBandwidth / 1000 } Mbps` + : `${ connBandwidth } Kbps` + } + display={ connBandwidth != null } + /> + +
{ fps && diff --git a/frontend/app/components/Session_/Player/Player.js b/frontend/app/components/Session_/Player/Player.js index d6b6a0ece..084542902 100644 --- a/frontend/app/components/Session_/Player/Player.js +++ b/frontend/app/components/Session_/Player/Player.js @@ -5,11 +5,40 @@ import cn from 'classnames'; import { EscapeButton } from 'UI'; import { hide as hideTargetDefiner } from 'Duck/components/targetDefiner'; import { fullscreenOff } from 'Duck/components/player'; -import { attach as attachPlayer, Controls as PlayerControls, connectPlayer } from 'Player'; +import { + NONE, + CONSOLE, + NETWORK, + STACKEVENTS, + STORAGE, + PROFILER, + PERFORMANCE, + GRAPHQL, + FETCH, + EXCEPTIONS, + LONGTASKS, + INSPECTOR, +} from 'Duck/components/player'; +import Network from '../Network'; +import Console from '../Console/Console'; +import StackEvents from '../StackEvents/StackEvents'; +import Storage from '../Storage'; +import Profiler from '../Profiler'; +import { ConnectedPerformance } from '../Performance'; +import GraphQL from '../GraphQL'; +import Fetch from '../Fetch'; +import Exceptions from '../Exceptions/Exceptions'; +import LongTasks from '../LongTasks'; +import Inspector from '../Inspector'; +import { + attach as attachPlayer, + Controls as PlayerControls, + scale as scalePlayerScreen, + connectPlayer, +} from 'Player'; import Controls from './Controls'; import Overlay from './Overlay'; import stl from './player.module.css'; -import EventsToggleButton from '../../Session/EventsToggleButton'; import { updateLastPlayedSession } from 'Duck/sessions'; @connectPlayer(state => ({ @@ -31,6 +60,13 @@ import { updateLastPlayedSession } from 'Duck/sessions'; export default class Player extends React.PureComponent { screenWrapper = React.createRef(); + componentDidUpdate(prevProps) { + if ([ prevProps.bottomBlock, this.props.bottomBlock ].includes(NONE) || + prevProps.fullscreen !== this.props.fullscreen) { + scalePlayerScreen(); + } + } + componentDidMount() { this.props.updateLastPlayedSession(this.props.sessionId); if (this.props.closedLive) return; @@ -48,6 +84,7 @@ export default class Player extends React.PureComponent { nextId, live, closedLive, + bottomBlock, } = this.props; return ( @@ -63,6 +100,43 @@ export default class Player extends React.PureComponent { ref={ this.screenWrapper } /> + { !fullscreen && !!bottomBlock && +
+ { bottomBlock === CONSOLE && + + } + { bottomBlock === NETWORK && + + } + { bottomBlock === STACKEVENTS && + + } + { bottomBlock === STORAGE && + + } + { bottomBlock === PROFILER && + + } + { bottomBlock === PERFORMANCE && + + } + { bottomBlock === GRAPHQL && + + } + { bottomBlock === FETCH && + + } + { bottomBlock === EXCEPTIONS && + + } + { bottomBlock === LONGTASKS && + + } + { bottomBlock === INSPECTOR && + + } +
+ } diff --git a/frontend/app/components/Session_/Player/player.module.css b/frontend/app/components/Session_/Player/player.module.css index 8e1c3d1e0..0ee3ccd57 100644 --- a/frontend/app/components/Session_/Player/player.module.css +++ b/frontend/app/components/Session_/Player/player.module.css @@ -15,7 +15,8 @@ /* border: solid thin $gray-light; */ /* border-radius: 3px; */ overflow: hidden; - background: $gray-lightest; + background: repeating-conic-gradient($gray-lightest 0% 25%, transparent 0% 50%) + 50% / 10px 10px; } .disconnected { diff --git a/frontend/app/components/Session_/PlayerBlock.js b/frontend/app/components/Session_/PlayerBlock.js index 1f5bd6c59..af7143c64 100644 --- a/frontend/app/components/Session_/PlayerBlock.js +++ b/frontend/app/components/Session_/PlayerBlock.js @@ -1,33 +1,11 @@ import React from 'react'; import cn from "classnames"; import { connect } from 'react-redux'; -import { scale as scalePlayerScreen } from 'Player'; +import { } from 'Player'; import { NONE, - CONSOLE, - NETWORK, - STACKEVENTS, - STORAGE, - PROFILER, - PERFORMANCE, - GRAPHQL, - FETCH, - EXCEPTIONS, - LONGTASKS, - INSPECTOR, } from 'Duck/components/player'; import Player from './Player'; -import Network from './Network'; -import Console from './Console/Console'; -import StackEvents from './StackEvents/StackEvents'; -import Storage from './Storage'; -import Profiler from './Profiler'; -import { ConnectedPerformance } from './Performance'; -import GraphQL from './GraphQL'; -import Fetch from './Fetch'; -import Exceptions from './Exceptions/Exceptions'; -import LongTasks from './LongTasks'; -import Inspector from './Inspector'; import SubHeader from './Subheader'; import styles from './playerBlock.css'; @@ -39,13 +17,6 @@ import styles from './playerBlock.css'; disabled: state.getIn([ 'components', 'targetDefiner', 'inspectorMode' ]), })) export default class PlayerBlock extends React.PureComponent { - componentDidUpdate(prevProps) { - if ([ prevProps.bottomBlock, this.props.bottomBlock ].includes(NONE) || - prevProps.fullscreen !== this.props.fullscreen) { - scalePlayerScreen(); - } - } - render() { const { fullscreen, bottomBlock, sessionId, disabled, previousId, nextId, setAutoplayValues } = this.props; @@ -58,44 +29,9 @@ export default class PlayerBlock extends React.PureComponent { - { !fullscreen && !!bottomBlock && -
- { bottomBlock === CONSOLE && - - } - { bottomBlock === NETWORK && - - } - { bottomBlock === STACKEVENTS && - - } - { bottomBlock === STORAGE && - - } - { bottomBlock === PROFILER && - - } - { bottomBlock === PERFORMANCE && - - } - { bottomBlock === GRAPHQL && - - } - { bottomBlock === FETCH && - - } - { bottomBlock === EXCEPTIONS && - - } - { bottomBlock === LONGTASKS && - - } - { bottomBlock === INSPECTOR && - - } -
- } ); } diff --git a/frontend/app/components/Session_/PlayerBlockHeader.js b/frontend/app/components/Session_/PlayerBlockHeader.js index d68f9a21b..aecfbbb8b 100644 --- a/frontend/app/components/Session_/PlayerBlockHeader.js +++ b/frontend/app/components/Session_/PlayerBlockHeader.js @@ -106,7 +106,7 @@ export default class PlayerBlockHeader extends React.PureComponent {
- +
- +
+ Events + +
); } -} \ No newline at end of file +}