mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-06-15 17:21:56 -07:00
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import { createChartSetting } from "./setting.js";
|
|
|
|
export const viewTypes = /** @type {const} */ ({
|
|
line: "line",
|
|
area: "area",
|
|
stacked: "stacked",
|
|
bar: "bar",
|
|
dots: "dots",
|
|
});
|
|
const views = /** @type {const} */ ([
|
|
{ value: viewTypes.line, label: "Line" },
|
|
{ value: viewTypes.area, label: "Area" },
|
|
{ value: viewTypes.stacked, label: "Stack" },
|
|
{ value: viewTypes.bar, label: "Bars" },
|
|
{ value: viewTypes.dots, label: "Dots" },
|
|
]);
|
|
const defaultView = viewTypes.stacked;
|
|
const setting = createChartSetting({
|
|
storageKey: "view",
|
|
legend: "View",
|
|
options: views,
|
|
defaultValue: defaultView,
|
|
});
|
|
|
|
/**
|
|
* @param {string} chartKey
|
|
* @param {ChartView} [fallback]
|
|
*/
|
|
export function getDefaultView(chartKey, fallback = defaultView) {
|
|
return setting.get(chartKey, fallback);
|
|
}
|
|
|
|
/**
|
|
* @param {string} chartKey
|
|
* @param {ChartView} view
|
|
*/
|
|
export function saveView(chartKey, view) {
|
|
setting.save(chartKey, view);
|
|
}
|
|
|
|
/**
|
|
* @param {ChartView} currentView
|
|
* @param {(view: ChartView) => void} onChange
|
|
*/
|
|
export function createViewControl(currentView, onChange) {
|
|
return setting.create(currentView, onChange);
|
|
}
|
|
|
|
/** @typedef {(typeof views)[number]["value"]} ChartView */
|