import React, { useEffect } from 'react'; import { NoContent, Input, SlideModal, CloseButton, Button } from 'UI'; import { getRE } from 'App/utils'; import BottomBlock from '../BottomBlock'; import TimeTable from '../TimeTable'; import GQLDetails from './GQLDetails'; import { renderStart } from 'Components/Session_/Network/NetworkContent'; import { PlayerContext } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; function renderDefaultStatus() { return '2xx-3xx'; } export function renderName(r: Record) { const { player } = React.useContext(PlayerContext); return (
{r.operationName}
); } function GraphQL() { const { player, store } = React.useContext(PlayerContext); const { graphqlList: list, graphqlListNow: listNow, time, livePlay } = store.get(); const defaultState = { filter: '', filteredList: list, filteredListNow: listNow, // @ts-ignore current: null, currentIndex: 0, showFetchDetails: false, hasNextError: false, hasPreviousError: false, lastActiveItem: 0, }; const [state, setState] = React.useState(defaultState); const filterList = (list: any, value: string) => { const filterRE = getRE(value, 'i'); return value ? list.filter( (r: any) => filterRE.test(r.operationKind) || filterRE.test(r.operationName) || filterRE.test(r.variables) ) : list; }; const onFilterChange = ({ target: { value } }: React.ChangeEvent) => { const filtered = filterList(list, value); setState((prevState) => ({ ...prevState, filter: value, filteredList: filtered, currentIndex: 0, })); }; const setCurrent = (item: any, index: number) => { if (!livePlay) { player.pause(); player.jump(item.time); } setState((prevState) => ({ ...prevState, current: item, currentIndex: index })); }; const closeModal = () => setState((prevState) => ({ ...prevState, current: null, showFetchDetails: false })); useEffect(() => { const filtered = filterList(listNow, state.filter); if (filtered.length !== lastActiveItem) { setState((prevState) => ({ ...prevState, lastActiveItem: listNow.length })); } }, [time]); const { current, currentIndex, filteredList, lastActiveItem } = state; return (

GraphQL

} isDisplayed={current != null} content={ current && ( ) } onClose={closeModal} /> GraphQL
{[ { label: 'Start', width: 90, render: renderStart, }, { label: 'Status', width: 70, render: renderDefaultStatus, }, { label: 'Type', dataKey: 'operationKind', width: 60, }, { label: 'Name', width: 240, render: renderName, }, ]}
); } export default observer(GraphQL);