import React, { Component, useState, useEffect, CSSProperties, Dispatch, SetStateAction } from 'react'; import {tableDf, DFWhole, EmptyDf} from './staticData'; import {requestDf} from './utils'; import {DFViewer} from './DFViewer'; import _ from 'lodash'; import {Operation} from './OperationUtils'; export function OperationDisplayer({filledOperations, style}) { const baseStyle = {margin: '0', textAlign: 'left'}; const localStyle = {...baseStyle, ...style}; return (
{JSON.stringify(filledOperations)}
); } export function PythonDisplayer({style, generatedPyCode}) { const baseStyle = {margin: '0', textAlign: 'left'}; const localStyle = {...baseStyle, ...style}; return (
{generatedPyCode}
); } const makeFullInstructions = (raw) => [{symbol: 'begin'}, ...raw]; const EmptyInstructions = makeFullInstructions([]); const transformInstructions = (raw) => JSON.stringify(raw); export const serverGetTransformRequester = (setDf) => { const baseRequestTransform = (passedInstructions) => { const URLBase = 'http://localhost:5000/dcf/'; const sliceArgs = 'slice_start=3&slice_end=50'; const emptyUrl = `${URLBase}df/1?${sliceArgs}`; const instructions = transformInstructions(passedInstructions); const transUrl = `${URLBase}transform_df/1?instructions=${instructions}&${sliceArgs}`; if (_.isEqual(passedInstructions, EmptyInstructions)) { requestDf(emptyUrl, setDf); } else { requestDf(transUrl, setDf); } }; return baseRequestTransform; }; export function TransformViewer({ style, transformedDf }: { style: CSSProperties; transformedDf: DFWhole; }) { return (
); } export type OperationResult = { transformed_df: DFWhole; generated_py_code: string; transform_error?: string; }; export type OrRequesterT = (ops: Operation[]) => void; export type getOperationResultSetterT = ( setter: Dispatch> ) => OrRequesterT; export const baseOperationResults: OperationResult = { transformed_df: EmptyDf, generated_py_code: 'default py code' }; export function TabComponent({currentTab, _setTab, tabName}) { return (
  • { _setTab(tabName); }} className={currentTab === tabName ? 'active' : ''} > {tabName}
  • ); } export function DependentTabs({ filledOperations, operationResult }: { filledOperations: Operation[]; operationResult: OperationResult; }) { const [tab, _setTab] = useState('DataFrame'); const style = {height: '45vh'}; console.log('dependenttabs operationResult', operationResult); return (
    {operationResult.transform_error ? (

    error

    ) : ( )} { { Operations: ( ), Python: ( ), DataFrame: ( ) }[tab] }
    ); }