in src/core/Results.tsx [289:422]
export default ({
activeLedger,
darkState,
result,
history,
setHistory,
setResult,
error,
setError,
queryStats,
setQueryStats,
}: {
activeLedger: string;
darkState: boolean;
result: string;
history: QueryHistoryEntry[];
setHistory: SetHistoryFn;
setResult: (text: string) => void;
error: string;
setError: (text: string) => void;
queryStats: QueryStats;
setQueryStats: (stats: QueryStats) => void;
}) => {
const [activeTabValue, setActiveTabValue] = React.useState(0);
const classes = useStyles();
const queryResult = result ? JSON.parse(result) : [];
const [viewType, setViewType] = React.useState("ion");
const handleChange = (event: React.ChangeEvent<{}>, newValue: number) => {
setActiveTabValue(newValue);
};
function historyEntrySelected(entry: QueryHistoryEntry) {
setResult(JSON.stringify(entry.result));
setActiveTabValue(0);
setError("");
setQueryStats(entry.queryStats);
const editor = ace.edit("aceEditor1");
const currentValue = editor.getValue();
editor.setValue(`${currentValue ? `${currentValue}\n` : ""}${entry.text}`);
}
React.useEffect(() => loadHistory(setHistory), []);
return (
<Box style={{ flexDirection: "row", height: "100%" }}>
<Paper square elevation={0} className={classes.stickToTop}>
<Button
color={"primary"}
variant={"contained"}
className={classes.button}
endIcon={<SendIcon />}
onClick={() => {
execute(
activeLedger,
setHistory,
setResult,
setError,
setQueryStats
);
}}
>
Run
</Button>
<Tooltip title={"Table View (experimental)"}>
<IconButton
size={"medium"}
aria-label="table"
className={classes.iconButton}
onClick={() => setViewType("table")}
>
{" "}
<TableChartIcon />{" "}
</IconButton>
</Tooltip>
<Tooltip title={"Ion View"}>
<IconButton
size={"medium"}
aria-label="ion"
className={classes.iconButton}
onClick={() => setViewType("ion")}
>
{" "}
<CodeIcon />{" "}
</IconButton>
</Tooltip>
<Box style={{ float: "right" }}>
{prepareQueryStatsView(queryStats)}
</Box>
</Paper>
<TabPanel value={activeTabValue} index={0}>
<Toolbar />
<Box>
{prepareErrorView(error)}
{viewType == "ion"
? prepareIonView(queryResult, darkState)
: prepareTableView(queryResult)}
</Box>
<Toolbar />
</TabPanel>
<TabPanel value={activeTabValue} index={1}>
<Toolbar />
<Box>
<History
history={history}
setHistory={setHistory}
historyEntrySelected={historyEntrySelected}
/>
</Box>
<Toolbar />
</TabPanel>
<Paper square className={classes.stickToBottom}>
<Tabs
value={activeTabValue}
onChange={handleChange}
indicatorColor="primary"
textColor="primary"
>
<Tab icon={<ReceiptIcon />} />
<Tab icon={<HistoryIcon />} />
<ButtonInTabs
value={activeLedger}
disabled={!activeLedger.toString()}
startIcon={activeLedger ? <CloudDoneIcon /> : <CloudOffIcon />}
style={{ flex: 1, textTransform: "none" }}
color={"primary"}
>
{activeLedger ? "Connected to " + activeLedger : "No active ledger"}
</ButtonInTabs>
</Tabs>
</Paper>
</Box>
);
};