Working measurement spike for Option C: aggregation runs in a server-side DuckDB instead of shipping every row to the browser. Opt-in via ?engine=duck; the default client-side WASM path is untouched. - routes/perspective.js: POST /perspective/init materializes a version's forecast table into a persistent in-process DuckDB (ATTACH postgres, so 535k rows land in ~1.5s without streaming through Node); POST /perspective/sql executes one Perspective-generated statement, with Arrow IPC output for viewport reads. - ui/src/duckServerHandler.js: VirtualServerHandler that delegates SQL generation to Perspective's own GenericSQLVirtualServerModel and POSTs the result to the server. Adapted from @perspective-dev/client's virtual_servers/duckdb.ts — same SQL model, different transport. - Forecast.jsx: DUCK_MODE branch replaces the heavy /data fetch with /perspective/init, opens the hosted table over a message port, and shows a latency overlay. applyDepth routes through viewer.restore() since the SQL server cannot handle view.set_depth(). Preserved for a future faster-load effort. Findings and the reason this is not the shipped path (no interactive tree expand/collapse) are in pf_perspective_options.md on master. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| public | ||
| src | ||
| .gitignore | ||
| eslint.config.js | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
React + Vite
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Oxc
- @vitejs/plugin-react-swc uses SWC
React Compiler
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
Expanding the ESLint configuration
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.