feat(screener): CanvasLayout (canvas + result grid)
This commit is contained in:
56
src/pages/stock/screener/components/canvas/CanvasLayout.jsx
Normal file
56
src/pages/stock/screener/components/canvas/CanvasLayout.jsx
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ScreenerCanvas from './ScreenerCanvas';
|
||||||
|
import ResultTable from '../ResultTable';
|
||||||
|
import TelegramPreview from '../TelegramPreview';
|
||||||
|
import RunHistoryList from '../RunHistoryList';
|
||||||
|
|
||||||
|
export default function CanvasLayout({
|
||||||
|
meta, settings, setLocal, save, dirty,
|
||||||
|
result, running, previewHistory, runPreview, runSave, selectPreview,
|
||||||
|
runs, runs_loading, selectRun, selectedRun,
|
||||||
|
compareId, setCompareId,
|
||||||
|
}) {
|
||||||
|
const compareItem = previewHistory.find((p) => p.id === compareId);
|
||||||
|
const compareResult = compareItem?.result ?? null;
|
||||||
|
const activeResult = selectedRun || result;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="screener-canvas-layout">
|
||||||
|
<section className="screener-canvas-area">
|
||||||
|
<ScreenerCanvas
|
||||||
|
meta={meta}
|
||||||
|
settings={settings}
|
||||||
|
setLocal={setLocal}
|
||||||
|
result={activeResult}
|
||||||
|
running={running}
|
||||||
|
dirty={dirty}
|
||||||
|
onRunPreview={() => runPreview(settings)}
|
||||||
|
onRunSave={() => runSave(settings)}
|
||||||
|
onPersistSettings={save}
|
||||||
|
/>
|
||||||
|
</section>
|
||||||
|
<section className="screener-canvas-results">
|
||||||
|
<div className="screener-canvas-results-main">
|
||||||
|
<ResultTable
|
||||||
|
result={activeResult}
|
||||||
|
compareWith={compareResult}
|
||||||
|
compareLabel={compareItem ? new Date(compareItem.timestamp).toLocaleTimeString() : null}
|
||||||
|
/>
|
||||||
|
<TelegramPreview payload={activeResult?.telegram_payload} />
|
||||||
|
</div>
|
||||||
|
<aside className="screener-canvas-results-side">
|
||||||
|
<RunHistoryList
|
||||||
|
runs={runs}
|
||||||
|
loading={runs_loading}
|
||||||
|
onSelect={selectRun}
|
||||||
|
selectedId={selectedRun?.meta?.id}
|
||||||
|
previewHistory={previewHistory}
|
||||||
|
onSelectPreview={selectPreview}
|
||||||
|
onSetCompare={setCompareId}
|
||||||
|
compareId={compareId}
|
||||||
|
/>
|
||||||
|
</aside>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user