diff --git a/websites/default/packages/solid-signals/wrapper.js b/websites/default/packages/solid-signals/wrapper.js index 30cd317ba..674868fcd 100644 --- a/websites/default/packages/solid-signals/wrapper.js +++ b/websites/default/packages/solid-signals/wrapper.js @@ -62,7 +62,7 @@ const importSignals = import("./v0.3.2-treeshaked/script.js").then( createSignal(initialValue, options) { const [get, set] = this.createSolidSignal( /** @type {any} */ (initialValue), - options, + options ); // @ts-ignore @@ -77,13 +77,17 @@ const importSignals = import("./v0.3.2-treeshaked/script.js").then( const paramKey = save.key; const storageKey = this.createMemo( () => - `${typeof save.keyPrefix === "string" ? save.keyPrefix : save.keyPrefix()}-${paramKey}`, + `${ + typeof save.keyPrefix === "string" + ? save.keyPrefix + : save.keyPrefix() + }-${paramKey}` ); let serialized = /** @type {string | null} */ (null); if (options.save.serializeParam !== false) { serialized = new URLSearchParams(window.location.search).get( - paramKey, + paramKey ); } if (serialized === null) { @@ -91,7 +95,7 @@ const importSignals = import("./v0.3.2-treeshaked/script.js").then( } if (serialized) { set(() => - serialized ? save.deserialize(serialized) : initialValue, + serialized ? save.deserialize(serialized) : initialValue ); } @@ -100,7 +104,7 @@ const importSignals = import("./v0.3.2-treeshaked/script.js").then( if (!firstRun1) { serialized = localStorage.getItem(storageKey); set(() => - serialized ? save.deserialize(serialized) : initialValue, + serialized ? save.deserialize(serialized) : initialValue ); } firstRun1 = false; @@ -146,7 +150,7 @@ const importSignals = import("./v0.3.2-treeshaked/script.js").then( }; return signals; - }, + } ); /** @@ -166,7 +170,7 @@ function writeParam(key, value) { window.history.replaceState( null, "", - `${window.location.pathname}?${urlParams.toString()}`, + `${window.location.pathname}?${urlParams.toString()}` ); } catch (_) {} } diff --git a/websites/default/scripts/chart.js b/websites/default/scripts/chart.js index 3d95070c5..80e0a9253 100644 --- a/websites/default/scripts/chart.js +++ b/websites/default/scripts/chart.js @@ -2,6 +2,9 @@ const keyPrefix = "chart"; const ONE_BTC_IN_SATS = 100_000_000; +const AUTO = "auto"; +const LINE = "line"; +const CANDLE = "candle"; /** * @param {Object} args @@ -95,15 +98,32 @@ export function init({ elements.charts.append(fieldset); - const { field: seriesTypeField, selected: topSeriesType } = + const { field: seriesTypeField, selected: topSeriesType_ } = utils.dom.createHorizontalChoiceField({ - defaultValue: "Line", + defaultValue: AUTO, keyPrefix, key: "seriestype-0", - choices: /** @type {const} */ (["Candles", "Line"]), + choices: /** @type {const} */ ([AUTO, CANDLE, LINE]), signals, }); + const topSeriesType = signals.createMemo(() => { + const topSeriesType = topSeriesType_(); + if (topSeriesType === AUTO) { + const t = to(); + const f = from(); + if (!t || !f) return null; + const diff = t - f; + if (diff / chart.inner.paneSize().width <= 0.5) { + return CANDLE; + } else { + return LINE; + } + } else { + return topSeriesType; + } + }); + const { field: topUnitField, selected: topUnit } = utils.dom.createHorizontalChoiceField({ defaultValue: "USD", @@ -241,7 +261,7 @@ export function init({ chart.addFieldsetIfNeeded({ id: "charts-seriestype-0", paneIndex: 0, - position: "ne", + position: "se", createChild() { return seriesTypeField; }, @@ -260,7 +280,7 @@ export function init({ switch (topUnit) { case "USD": { switch (topSeriesType) { - case "Candles": { + case CANDLE: { series = chart.addCandlestickSeries({ vecId: "ohlc", name: "Price", @@ -271,7 +291,7 @@ export function init({ break; } - case "Line": { + case LINE: { series = chart.addLineSeries({ vecId: "close", name: "Price", @@ -289,7 +309,7 @@ export function init({ } case "Sats": { switch (topSeriesType) { - case "Candles": { + case CANDLE: { series = chart.addCandlestickSeries({ vecId: "ohlc-in-sats", name: "Price", @@ -300,7 +320,7 @@ export function init({ }); break; } - case "Line": { + case LINE: { series = chart.addLineSeries({ vecId: "close-in-sats", name: "Price", diff --git a/websites/default/scripts/simulation.js b/websites/default/scripts/simulation.js index fd7eb83d6..5f939059c 100644 --- a/websites/default/scripts/simulation.js +++ b/websites/default/scripts/simulation.js @@ -76,7 +76,7 @@ export function init({ input.value = value; stateValue = value; } - }, + } ); input.addEventListener("input", () => { @@ -139,7 +139,7 @@ export function init({ input.value = value; stateValue = value; } - }, + } ); input.addEventListener("change", () => { @@ -328,7 +328,7 @@ export function init({ keyPrefix, key: "top-up-freq", }, - }, + } ), }, }, @@ -356,7 +356,7 @@ export function init({ keyPrefix, key: "swap-freq", }, - }, + } ), }, }, @@ -369,7 +369,7 @@ export function init({ keyPrefix, key: "interval-start", }, - }, + } ), end: signals.createSignal(/** @type {Date | null} */ (new Date()), { save: { @@ -391,7 +391,7 @@ export function init({ }; parametersElement.append( - utils.dom.createHeader("Save in Bitcoin").headerElement, + utils.dom.createHeader("Save in Bitcoin").headerElement ); /** @@ -410,7 +410,9 @@ export function init({ * @param {string} param0.text */ function createColoredSpan({ color, text }) { - return `${text}`; } @@ -429,9 +431,9 @@ export function init({ title: "Initial Dollar Amount", signal: settings.dollars.initial.amount, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -449,9 +451,9 @@ export function init({ list: frequencies.list, signal: settings.dollars.topUp.frenquency, deep: true, - }), + }) ), - }), + }) ); parametersElement.append( @@ -469,9 +471,9 @@ export function init({ title: "Top Up Dollar Amount", signal: settings.dollars.topUp.amount, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -489,9 +491,9 @@ export function init({ title: "Initial Swap Amount", signal: settings.bitcoin.investment.initial, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -508,9 +510,9 @@ export function init({ list: frequencies.list, signal: settings.bitcoin.investment.frequency, deep: true, - }), + }) ), - }), + }) ); parametersElement.append( @@ -528,9 +530,9 @@ export function init({ title: "Bitcoin Recurrent Investment", signal: settings.bitcoin.investment.recurrent, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -547,9 +549,9 @@ export function init({ title: "First Simulation Date", signal: settings.interval.start, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -566,9 +568,9 @@ export function init({ title: "Last Simulation Day", signal: settings.interval.end, signals, - }), + }) ), - }), + }) ); parametersElement.append( @@ -589,9 +591,9 @@ export function init({ step: 0.01, signals, placeholder: "Fees", - }), + }) ), - }), + }) ); const p1 = window.document.createElement("p"); @@ -606,94 +608,94 @@ export function init({ const owner = signals.getOwner(); const totalInvestedAmountData = signals.createSignal( - /** @type {LineData