| <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> |