blob: c5f4da69bcf8bee8367552a6551e079432d7c1d8 [file] [log] [blame]
<script lang="ts">
import { createEventDispatcher } from "svelte";
import type {
DatasetSelection,
DatasetSelectionEvent,
MetricSelection,
MetricSelectionEvent,
StatEvent,
StatInfo,
} from "../types/events.js";
import { Session, type IndexedWrapper } from "../wrappers/session.js";
import Dataset from "./Dataset.svelte";
export let className: string;
export let datasetGroup: IndexedWrapper[];
export let suppressedMetrics: Set<string>;
let datasetDispatcher = createEventDispatcher<DatasetSelectionEvent>();
let metricsDispatcher = createEventDispatcher<MetricSelectionEvent>();
let statDispatcher = createEventDispatcher<StatEvent>();
let datasetNames: Set<string>;
// Forward events.
let datasetSelection = function (event: CustomEvent<DatasetSelection[]>) {
datasetDispatcher("datasetSelections", event.detail);
};
let stat = function (event: CustomEvent<StatInfo[]>) {
statDispatcher("info", event.detail);
};
let metricSelection = function (event: CustomEvent<MetricSelection[]>) {
metricsDispatcher("metricSelections", event.detail);
};
$: {
datasetNames = Session.datasetNames(datasetGroup);
}
</script>
<details open>
<summary>{className}</summary>
<div class="details">
{#each datasetNames as name (name)}
<Dataset
{datasetGroup}
{suppressedMetrics}
{name}
on:datasetSelections={datasetSelection}
on:metricSelections={metricSelection}
on:info={stat}
/>
{/each}
</div>
</details>