incr version of alg
5 changed files+39−54
web-ui/src/App.tsxmodified+2−0View file
@@ -1,6 +1,7 @@
11 import { BrowserRouter, Routes, Route, Link } from "react-router-dom";
22 import { useEffect, useState } from "react";
33 import axios from "axios";
4+import { ScrollToTop } from "./components/ScrollToTop";
45 import Home from "./pages/Home";
56 import Datasets from "./pages/Datasets";
67 import Dataset from "./pages/Dataset";
@@ -40,6 +41,7 @@ function App() {
4041
4142 return (
4243 <BrowserRouter basename="/zia">
44+ <ScrollToTop />
4345 <div
4446 style={{
4547 paddingTop: "5rem",
web-ui/src/components/ScrollToTop.tsxadded+12−0View file
@@ -0,0 +1,12 @@
1+import { useEffect } from "react";
2+import { useLocation } from "react-router-dom";
3+
4+export function ScrollToTop() {
5+ const { pathname } = useLocation();
6+
7+ useEffect(() => {
8+ window.scrollTo(0, 0);
9+ }, [pathname]);
10+
11+ return null;
12+}
web-ui/src/components/dataset/TimeseriesView.tsxmodified+1−1View file
@@ -115,7 +115,7 @@ const TimeseriesView: React.FC<TimeseriesViewProps> = ({
115115 const zoomCenter = xRange.min + (xRange.max - xRange.min) * xRatio;
116116
117117 // Calculate new range
118- const zoomFactor = e.deltaY > 0 ? 1.02 : 1 / 1.02;
118+ const zoomFactor = e.deltaY > 0 ? 1.1 : 1 / 1.1;
119119 const shape = client.getShape();
120120
121121 // Ensure we don't zoom out beyond data bounds
web-ui/src/pages/Home.tsxmodified+23−52View file
@@ -1,19 +1,16 @@
1-import { BenchmarkTable } from "../components/benchmark/table/BenchmarkTable";
2-import { BenchmarkData } from "../types";
3-import { useSearchParams } from "react-router-dom";
41 import { useMemo } from "react";
2+import { useNavigate } from "react-router-dom";
3+import { BenchmarkTable } from "../components/benchmark/table/BenchmarkTable";
54 import { TagFilter } from "../components/TagFilter";
65 import { useTagFilter } from "../hooks/useTagFilter";
6+import { BenchmarkData } from "../types";
77
88 interface HomeProps {
99 benchmarkData: BenchmarkData | null;
1010 }
1111
1212 function Home({ benchmarkData }: HomeProps) {
13- const [searchParams, setSearchParams] = useSearchParams();
14- const selectedDataset = searchParams.get("dataset") || "";
15- const selectedAlgorithm = searchParams.get("algorithm") || "";
16-
13+ const navigate = useNavigate();
1714 // Set up tag filtering for datasets
1815 const {
1916 selectedTags: selectedDatasetTags,
@@ -30,31 +27,20 @@ function Home({ benchmarkData }: HomeProps) {
3027 toggleTag: toggleAlgorithmTag,
3128 } = useTagFilter(benchmarkData?.algorithms || []);
3229
33- // Filter benchmark results based on selected dataset/algorithm and tags
30+ // Filter benchmark results based on selected tags
3431 const filteredResults = useMemo(() => {
3532 if (!benchmarkData) return [];
3633
3734 let filtered = benchmarkData.results;
3835
39- // Filter by selected dataset/algorithm
40- if (selectedDataset) {
41- filtered = filtered.filter(
42- (result) => result.dataset === selectedDataset,
43- );
44- } else if (selectedDatasetTags.length > 0) {
45- // Only apply dataset tag filtering if no specific dataset is selected
36+ if (selectedDatasetTags.length > 0) {
4637 const datasetNames = filteredDatasets.map((d) => d.name);
4738 filtered = filtered.filter((result) =>
4839 datasetNames.includes(result.dataset),
4940 );
5041 }
5142
52- if (selectedAlgorithm) {
53- filtered = filtered.filter(
54- (result) => result.algorithm === selectedAlgorithm,
55- );
56- } else if (selectedAlgorithmTags.length > 0) {
57- // Only apply algorithm tag filtering if no specific algorithm is selected
43+ if (selectedAlgorithmTags.length > 0) {
5844 const algorithmNames = filteredAlgorithms.map((a) => a.name);
5945 filtered = filtered.filter((result) =>
6046 algorithmNames.includes(result.algorithm),
@@ -64,8 +50,6 @@ function Home({ benchmarkData }: HomeProps) {
6450 return filtered;
6551 }, [
6652 benchmarkData,
67- selectedDataset,
68- selectedAlgorithm,
6953 selectedDatasetTags,
7054 selectedAlgorithmTags,
7155 filteredDatasets,
@@ -107,14 +91,10 @@ function Home({ benchmarkData }: HomeProps) {
10791 <label htmlFor="dataset-select">Dataset:</label>
10892 <select
10993 id="dataset-select"
110- value={selectedDataset}
94+ value={undefined}
11195 onChange={(e) => {
11296 if (e.target.value) {
113- setSearchParams({ dataset: e.target.value });
114- } else {
115- setSearchParams(
116- selectedAlgorithm ? { algorithm: selectedAlgorithm } : {},
117- );
97+ navigate(`/dataset/${e.target.value}`);
11898 }
11999 }}
120100 style={{
@@ -138,14 +118,10 @@ function Home({ benchmarkData }: HomeProps) {
138118 <label htmlFor="algorithm-select">Algorithm:</label>
139119 <select
140120 id="algorithm-select"
141- value={selectedAlgorithm}
121+ value={undefined}
142122 onChange={(e) => {
143123 if (e.target.value) {
144- setSearchParams({ algorithm: e.target.value });
145- } else {
146- setSearchParams(
147- selectedDataset ? { dataset: selectedDataset } : {},
148- );
124+ navigate(`/algorithm/${e.target.value}`);
149125 }
150126 }}
151127 style={{
@@ -170,23 +146,18 @@ function Home({ benchmarkData }: HomeProps) {
170146 <div
171147 style={{ display: "flex", flexDirection: "column", gap: "1rem" }}
172148 >
173- {!selectedDataset && (
174- <TagFilter
175- availableTags={availableDatasetTags}
176- selectedTags={selectedDatasetTags}
177- onTagToggle={toggleDatasetTag}
178- label="Filter datasets"
179- />
180- )}
181-
182- {!selectedAlgorithm && (
183- <TagFilter
184- availableTags={availableAlgorithmTags}
185- selectedTags={selectedAlgorithmTags}
186- onTagToggle={toggleAlgorithmTag}
187- label="Filter algorithms"
188- />
189- )}
149+ <TagFilter
150+ availableTags={availableDatasetTags}
151+ selectedTags={selectedDatasetTags}
152+ onTagToggle={toggleDatasetTag}
153+ label="Filter datasets"
154+ />
155+ <TagFilter
156+ availableTags={availableAlgorithmTags}
157+ selectedTags={selectedAlgorithmTags}
158+ onTagToggle={toggleAlgorithmTag}
159+ label="Filter algorithms"
160+ />
190161 </div>
191162 </div>
192163
zia_benchmark/src/zia_benchmark/algorithms/simple_ans/__init__.pymodified+1−1View file
@@ -264,7 +264,7 @@ algorithms = [
264264 },
265265 {
266266 "name": "simple-ans-markov",
267- "version": "5",
267+ "version": "6",
268268 "encode": lambda x: simple_ans_markov_encode(x),
269269 "decode": lambda x, dtype: simple_ans_markov_decode(x, dtype),
270270 "description": "ANS compression with Markov prediction for exploiting temporal correlations in the data.",