Files
brk/website_next/learn/charts/views.js
T
2026-06-07 16:46:53 +02:00

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 */