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 (
);
}
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 ? (
) : (
)}
{
{
Operations: (
),
Python: (
),
DataFrame: (
)
}[tab]
}
);
}