import {Duration} from "luxon"; 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 { PlayerContext } from 'App/components/Session/playerContext'; import { observer } from 'mobx-react-lite'; export function renderStart(r) { return (
{Duration.fromMillis(r.time).toFormat('mm:ss.SSS')} {/* */}
); } function renderDefaultStatus() { return '2xx-3xx'; } function GraphQL() { const { player, store } = React.useContext(PlayerContext); const { time, livePlay, tabStates, currentTab } = store.get(); const { graphqlList: list = [], graphqlListNow: listNow = [] } = tabStates[currentTab] 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); function renderName(r: Record) { return (
{r.operationName}
); } 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);