From a8084ab09305c6c77ed0c0d08a4a9bc07be8fe1e Mon Sep 17 00:00:00 2001 From: codeplusmath Date: Mon, 13 Mar 2023 00:43:09 +0530 Subject: [PATCH] Task 2 completed --- src/App.tsx | 26 ++++++++++++++++++++------ src/Graph.tsx | 9 +++++++-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 0728518c0d8..b860894af97 100755 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,7 @@ import './App.css'; */ interface IState { data: ServerRespond[], + showGraph: boolean, } /** @@ -22,6 +23,7 @@ class App extends Component<{}, IState> { // data saves the server responds. // We use this state to parse data down to the child element (Graph) as element property data: [], + showGraph: false, }; } @@ -29,18 +31,30 @@ class App extends Component<{}, IState> { * Render Graph react component with state.data parse as property data */ renderGraph() { - return () + if (this.state.showGraph) { + return () + } } /** * Get new data from server and update the state with the new data */ getDataFromServer() { - DataStreamer.getData((serverResponds: ServerRespond[]) => { - // Update the state by creating a new array of data that consists of - // Previous data in the state and the new data from server - this.setState({ data: [...this.state.data, ...serverResponds] }); - }); + let a = 0; + const interval = setInterval(() => { + DataStreamer.getData((serverResponds: ServerRespond[]) => { + // Update the state by creating a new array of data that consists of + // Previous data in the state and the new data from server + this.setState({ + data: serverResponds, + showGraph: true + }); + }); + a++; + if (a > 1000) { + clearInterval(interval); + } + }, 100) } /** diff --git a/src/Graph.tsx b/src/Graph.tsx index 3b2a7da1a38..4ada0fc979c 100644 --- a/src/Graph.tsx +++ b/src/Graph.tsx @@ -14,7 +14,7 @@ interface IProps { * Perspective library adds load to HTMLElement prototype. * This interface acts as a wrapper for Typescript compiler. */ -interface PerspectiveViewerElement { +interface PerspectiveViewerElement extends HTMLElement{ load: (table: Table) => void, } @@ -32,7 +32,7 @@ class Graph extends Component { componentDidMount() { // Get element to attach the table from the DOM. - const elem: PerspectiveViewerElement = document.getElementsByTagName('perspective-viewer')[0] as unknown as PerspectiveViewerElement; + const elem = document.getElementsByTagName('perspective-viewer')[0] as unknown as PerspectiveViewerElement; const schema = { stock: 'string', @@ -49,6 +49,11 @@ class Graph extends Component { // Add more Perspective configurations here. elem.load(this.table); + elem.setAttribute("view", "y_line"); + elem.setAttribute("column-pivots", '["stock"]'); + elem.setAttribute("row-pivots", '["timestamp"]'); + elem.setAttribute("columns", '["top_ask_price"]'); + elem.setAttribute("aggregates", '{"stock":"distinct_count", "top_ask_price":"avg", "top_bid_price":"avg", "timestamp":"distinct_count"}'); } }