website: redesign part 24

This commit is contained in:
nym21
2026-06-07 23:11:18 +02:00
parent 36cfe49b20
commit e5068bbbf3
3 changed files with 30 additions and 70 deletions
+25 -65
View File
@@ -25,36 +25,6 @@ import {
} from "./views.js";
import { FALLBACK_VIEWBOX_HEIGHT, VIEWBOX_WIDTH } from "./viewbox.js";
/**
* @template {string} T
* @param {Object} args
* @param {T} args.currentValue
* @param {(currentValue: T, onChange: (value: T) => void) => HTMLFieldSetElement} args.createControl
* @param {(chartKey: string, value: T) => void} args.save
* @param {string} args.chartKey
* @param {HTMLElement} args.figure
* @param {string} args.dataKey
* @param {(value: T) => void} args.setValue
* @param {() => void} args.render
*/
function createChartSettingControl({
currentValue,
createControl,
save,
chartKey,
figure,
dataKey,
setValue,
render,
}) {
return createControl(currentValue, (value) => {
setValue(value);
save(chartKey, value);
figure.dataset[dataKey] = value;
render();
});
}
/** @param {Chart} chart */
export function createChart(chart) {
const figure = document.createElement("figure");
@@ -99,48 +69,38 @@ export function createChart(chart) {
getOrder: () => currentOrder,
getTimeframe: () => currentTimeframe,
});
const viewControl = createChartSettingControl({
currentValue: currentView,
createControl: createViewControl,
save: saveView,
chartKey,
figure,
dataKey: "view",
setValue: (view) => {
currentView = view;
},
render: renderer.renderCurrent,
/**
* @template {string} T
* @param {string} dataKey
* @param {(chartKey: string, value: T) => void} save
* @param {T} value
*/
function saveChartSetting(dataKey, save, value) {
save(chartKey, value);
figure.dataset[dataKey] = value;
}
const viewControl = createViewControl(currentView, (view) => {
currentView = view;
saveChartSetting("view", saveView, view);
renderer.renderCurrent();
});
const scaleControl = createChartSettingControl({
currentValue: currentScale,
createControl: createScaleControl,
save: saveScale,
chartKey,
figure,
dataKey: "scale",
setValue: (scale) => {
currentScale = scale;
},
render: renderer.renderCurrent,
const scaleControl = createScaleControl(currentScale, (scale) => {
currentScale = scale;
saveChartSetting("scale", saveScale, scale);
renderer.renderCurrent();
});
const orderControl = createChartSettingControl({
currentValue: currentOrder,
createControl: createOrderControl,
save: saveOrder,
chartKey,
figure,
dataKey: "order",
setValue: (order) => {
currentOrder = order;
},
render: renderer.renderCurrent,
const orderControl = createOrderControl(currentOrder, (order) => {
currentOrder = order;
saveChartSetting("order", saveOrder, order);
renderer.renderCurrent();
});
const timeframeControl = createTimeframeControl(
currentTimeframe,
(timeframe) => {
currentTimeframe = timeframe;
saveTimeframe(chartKey, timeframe);
figure.dataset.timeframe = timeframe;
saveChartSetting("timeframe", saveTimeframe, timeframe);
void renderer.loadCurrent();
},
);
+5 -4
View File
@@ -5,15 +5,16 @@ main.learn {
counter-reset: content-theme;
position: sticky;
top: 0;
padding-block: var(--nav-offset) var(--offset);
max-height: 100dvh;
margin-left: -1rem;
padding-block: var(--nav-offset) var(--offset);
padding-left: 0.5rem;
overflow: auto;
overscroll-behavior: contain;
color: var(--gray);
font-size: var(--font-size-xs);
line-height: var(--line-height-xs);
text-transform: uppercase;
color: var(--gray);
padding-left: 0.5rem;
margin-left: -0.5rem;
ol {
list-style: none;
-1
View File
@@ -14,7 +14,6 @@ main.learn {
display: grid;
grid-template-columns: 14rem minmax(0, 1fr);
gap: 4rem;
padding: 0 var(--page-x);
scroll-padding-top: var(--offset);