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