bitview: reorg part 9

This commit is contained in:
nym21
2025-10-01 23:17:48 +02:00
parent 62d4b35c93
commit c4ce718bb2
102 changed files with 1654 additions and 1798 deletions

View File

@@ -1,23 +1,17 @@
import { randomFromArray } from "../core/array";
import { createButtonElement, createHeader, createSelect } from "../core/dom";
import { tableElement } from "../core/elements";
import { serdeMetrics, serdeString, serdeUnit } from "../core/serde";
import { resetParams } from "../core/url";
/**
* @param {Object} args
* @param {MetricToIndexes} args.metricToIndexes
* @param {Option} args.option
* @param {Utilities} args.utils
* @param {Signals} args.signals
* @param {VecsResources} args.vecsResources
* @param {BRK} args.brk
* @param {Resources} args.resources
*/
function createTable({
utils,
metricToIndexes,
signals,
option,
vecsResources,
}) {
function createTable({ brk, signals, option, resources }) {
const indexToMetrics = createIndexToMetrics(metricToIndexes);
const serializedIndexes = createSerializedIndexes();
@@ -150,7 +144,7 @@ function createTable({
let from = 0;
let to = 0;
vecsResources
resources
.getOrCreate(index, serializedIndex())
.fetch()
.then((vec) => {
@@ -292,11 +286,11 @@ function createTable({
const unit = serdeUnit.deserialize(metric);
th.setUnit(unit);
const vec = vecsResources.getOrCreate(index, metric);
const vec = resources.getOrCreate(index, metric);
vec.fetch({ from, to });
const fetchedKey = vecsResources.genFetchedKey({ from, to });
const fetchedKey = resources.genFetchedKey({ from, to });
columns.set((l) => {
const i = l.indexOf(prevMetric ?? metric);
@@ -355,21 +349,12 @@ function createTable({
/**
* @param {Object} args
* @param {Signals} args.signals
* @param {Utilities} args.utils
* @param {Option} args.option
* @param {Elements} args.elements
* @param {VecsResources} args.vecsResources
* @param {MetricToIndexes} args.metricToIndexes
* @param {Resources} args.resources
* @param {BRK} args.brk
*/
export function init({
elements,
signals,
option,
utils,
vecsResources,
metricToIndexes,
}) {
const parent = elements.table;
export function init({ signals, option, resources, brk }) {
const parent = tableElement;
const { headerElement } = createHeader("Table");
parent.append(headerElement);
@@ -378,9 +363,8 @@ export function init({
const table = createTable({
signals,
utils,
metricToIndexes,
vecsResources,
brk,
resources,
option,
});
div.append(table.element);
@@ -398,103 +382,6 @@ export function init({
);
}
function createSerializedIndexes() {
return /** @type {const} */ ([
/** @satisfies {Metric} */ ("dateindex"),
/** @satisfies {Metric} */ ("decadeindex"),
/** @satisfies {Metric} */ ("difficultyepoch"),
/** @satisfies {Metric} */ ("emptyoutputindex"),
/** @satisfies {Metric} */ ("halvingepoch"),
/** @satisfies {Metric} */ ("height"),
/** @satisfies {Metric} */ ("inputindex"),
/** @satisfies {Metric} */ ("monthindex"),
/** @satisfies {Metric} */ ("opreturnindex"),
/** @satisfies {Metric} */ ("semesterindex"),
/** @satisfies {Metric} */ ("outputindex"),
/** @satisfies {Metric} */ ("p2aaddressindex"),
/** @satisfies {Metric} */ ("p2msoutputindex"),
/** @satisfies {Metric} */ ("p2pk33addressindex"),
/** @satisfies {Metric} */ ("p2pk65addressindex"),
/** @satisfies {Metric} */ ("p2pkhaddressindex"),
/** @satisfies {Metric} */ ("p2shaddressindex"),
/** @satisfies {Metric} */ ("p2traddressindex"),
/** @satisfies {Metric} */ ("p2wpkhaddressindex"),
/** @satisfies {Metric} */ ("p2wshaddressindex"),
/** @satisfies {Metric} */ ("quarterindex"),
/** @satisfies {Metric} */ ("txindex"),
/** @satisfies {Metric} */ ("unknownoutputindex"),
/** @satisfies {Metric} */ ("weekindex"),
/** @satisfies {Metric} */ ("yearindex"),
/** @satisfies {Metric} */ ("loadedaddressindex"),
/** @satisfies {Metric} */ ("emptyaddressindex"),
]);
}
/** @typedef {ReturnType<typeof createSerializedIndexes>} SerializedIndexes */
/** @typedef {SerializedIndexes[number]} SerializedIndex */
/**
* @param {SerializedIndex} serializedIndex
* @returns {Index}
*/
function serializedIndexToIndex(serializedIndex) {
switch (serializedIndex) {
case "height":
return /** @satisfies {Height} */ (5);
case "dateindex":
return /** @satisfies {DateIndex} */ (0);
case "weekindex":
return /** @satisfies {WeekIndex} */ (23);
case "difficultyepoch":
return /** @satisfies {DifficultyEpoch} */ (2);
case "monthindex":
return /** @satisfies {MonthIndex} */ (7);
case "quarterindex":
return /** @satisfies {QuarterIndex} */ (19);
case "semesterindex":
return /** @satisfies {SemesterIndex} */ (20);
case "yearindex":
return /** @satisfies {YearIndex} */ (24);
case "decadeindex":
return /** @satisfies {DecadeIndex} */ (1);
case "halvingepoch":
return /** @satisfies {HalvingEpoch} */ (4);
case "txindex":
return /** @satisfies {TxIndex} */ (21);
case "inputindex":
return /** @satisfies {InputIndex} */ (6);
case "outputindex":
return /** @satisfies {OutputIndex} */ (9);
case "p2pk33addressindex":
return /** @satisfies {P2PK33AddressIndex} */ (12);
case "p2pk65addressindex":
return /** @satisfies {P2PK65AddressIndex} */ (13);
case "p2pkhaddressindex":
return /** @satisfies {P2PKHAddressIndex} */ (14);
case "p2shaddressindex":
return /** @satisfies {P2SHAddressIndex} */ (15);
case "p2traddressindex":
return /** @satisfies {P2TRAddressIndex} */ (16);
case "p2wpkhaddressindex":
return /** @satisfies {P2WPKHAddressIndex} */ (17);
case "p2wshaddressindex":
return /** @satisfies {P2WSHAddressIndex} */ (18);
case "p2aaddressindex":
return /** @satisfies {P2AAddressIndex} */ (10);
case "p2msoutputindex":
return /** @satisfies {P2MSOutputIndex} */ (11);
case "opreturnindex":
return /** @satisfies {OpReturnIndex} */ (8);
case "emptyoutputindex":
return /** @satisfies {EmptyOutputIndex} */ (3);
case "unknownoutputindex":
return /** @satisfies {UnknownOutputIndex} */ (22);
case "emptyaddressindex":
return /** @satisfies {EmptyAddressIndex} */ (26);
case "loadedaddressindex":
return /** @satisfies {LoadedAddressIndex} */ (25);
}
}
/**
* @param {MetricToIndexes} metricToIndexes
*/