feat: integrate chatbox research with datasets and backtests
This commit is contained in:
+33
-16
@@ -52,6 +52,9 @@ export default function App() {
|
||||
const [backtestContext, setBacktestContext] = useState<PageContext>({
|
||||
page: "backtests",
|
||||
});
|
||||
const [datasetContext, setDatasetContext] = useState<PageContext>({
|
||||
page: "datasets",
|
||||
});
|
||||
const [aiAction, setAIAction] = useState<UIAction | null>(null);
|
||||
const chatOffset = viewport >= 1440 && chatOpen ? chatWidth : 0;
|
||||
const focusBusiness = useCallback(() => {
|
||||
@@ -150,6 +153,25 @@ export default function App() {
|
||||
location.hash = next;
|
||||
setPage(next);
|
||||
};
|
||||
const handleAction = (action: UIAction) => {
|
||||
if (action.type === "open_conversation") {
|
||||
setChatOpen(true);
|
||||
} else {
|
||||
focusBusiness();
|
||||
if (action.type === "open_research_input") {
|
||||
setChatOpen(false);
|
||||
changePage("datasets");
|
||||
} else {
|
||||
changePage(
|
||||
action.type === "open_backtest" ||
|
||||
action.type === "open_backtest_preview"
|
||||
? "backtests"
|
||||
: "alphas",
|
||||
);
|
||||
}
|
||||
}
|
||||
setAIAction(action);
|
||||
};
|
||||
const logout = async () => {
|
||||
try {
|
||||
await post("/auth/logout");
|
||||
@@ -160,6 +182,8 @@ export default function App() {
|
||||
setJobs([]);
|
||||
setAIAction(null);
|
||||
setAlphaContext({ page: "alphas" });
|
||||
setDatasetContext({ page: "datasets" });
|
||||
setBacktestContext({ page: "backtests" });
|
||||
} catch (e) {
|
||||
Toast.error((e as Error).message);
|
||||
}
|
||||
@@ -301,6 +325,8 @@ export default function App() {
|
||||
</div>
|
||||
<div className="alpha-page-view" hidden={page !== "datasets"}>
|
||||
<DatasetPage
|
||||
onContext={setDatasetContext}
|
||||
action={aiAction}
|
||||
account={account}
|
||||
jobs={jobs}
|
||||
active={page === "datasets"}
|
||||
@@ -313,6 +339,7 @@ export default function App() {
|
||||
</div>
|
||||
<div className="alpha-page-view" hidden={page !== "alphas"}>
|
||||
<AlphaPage
|
||||
onAction={handleAction}
|
||||
taskPanelOpen={showJobs}
|
||||
account={account}
|
||||
version={`${refreshKey}:${completedVersion}`}
|
||||
@@ -342,11 +369,7 @@ export default function App() {
|
||||
timezone={account?.timezone}
|
||||
action={aiAction}
|
||||
onContext={setBacktestContext}
|
||||
onAction={(action) => {
|
||||
focusBusiness();
|
||||
changePage("alphas");
|
||||
setAIAction(action);
|
||||
}}
|
||||
onAction={handleAction}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
@@ -384,6 +407,7 @@ export default function App() {
|
||||
)}
|
||||
<div inert={catalogModal && !chatOpen}>
|
||||
<ChatPanel
|
||||
action={aiAction}
|
||||
jobs={jobs}
|
||||
open={chatOpen}
|
||||
width={chatWidth}
|
||||
@@ -394,7 +418,9 @@ export default function App() {
|
||||
? alphaContext
|
||||
: page === "backtests"
|
||||
? backtestContext
|
||||
: { page: page === "datasets" ? "datasets" : "account" }
|
||||
: page === "datasets"
|
||||
? datasetContext
|
||||
: { page: "account" }
|
||||
}
|
||||
timezone={account?.timezone}
|
||||
onSettings={() => {
|
||||
@@ -407,16 +433,7 @@ export default function App() {
|
||||
);
|
||||
}}
|
||||
onChanged={actionDone}
|
||||
onAction={(action) => {
|
||||
focusBusiness();
|
||||
changePage(
|
||||
action.type === "open_backtest" ||
|
||||
action.type === "open_backtest_preview"
|
||||
? "backtests"
|
||||
: "alphas",
|
||||
);
|
||||
setAIAction(action);
|
||||
}}
|
||||
onAction={handleAction}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user