diff --git a/package.json b/package.json index f6c331d..f0a0bd2 100644 --- a/package.json +++ b/package.json @@ -1,63 +1,65 @@ { - "name": "visualization", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "test": "playwright test", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "deploy": "pnpm build && pnpx gh-pages -d build -t true", - "test:unit": "vitest", - "lint": "prettier --plugin-search-dir . --check . && eslint .", - "format": "prettier --plugin-search-dir . --write ." - }, - "devDependencies": { - "@playwright/test": "^1.40.1", - "@sveltejs/adapter-auto": "^2.1.1", - "@sveltejs/kit": "^1.27.6", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", - "eslint": "^8.55.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte3": "^4.0.0", - "gh-pages": "^6.1.0", - "prettier": "^3.1.0", - "prettier-plugin-svelte": "^3.1.2", - "svelte": "^4.2.8", - "svelte-check": "^3.6.2", - "tslib": "^2.6.2", - "typescript": "^5.3.2", - "vite": "^5.0.4", - "vitest": "^0.34.6" - }, - "type": "module", - "dependencies": { - "@duckdb/duckdb-wasm": "^1.28.0", - "@fontsource/inter": "^5.0.15", - "@sveltejs/adapter-static": "^2.0.3", - "@tweenjs/tween.js": "^21.0.0", - "@types/d3": "^7.4.3", - "@types/papaparse": "^5.3.14", - "@types/three": "^0.159.0", - "apache-arrow": "^14.0.1", - "autoprefixer": "^10.4.16", - "d3": "^7.8.5", - "deep-object-diff": "^1.1.9", - "feather-icons": "^4.29.1", - "monaco-editor": "^0.44.0", - "monaco-sql-languages": "0.12.0-beta.7", - "papaparse": "^5.4.1", - "postcss": "^8.4.32", - "sass": "^1.69.5", - "stats.js": "^0.17.0", - "svelte-feather-icons": "^4.0.1", - "svelte-icons-pack": "^2.1.0", - "tailwindcss": "^3.3.5", - "three": "^0.159.0", - "three.meshline": "^1.4.0", - "web-worker": "^1.2.0" - } + "name": "visualization", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "dataset": "rm -rf ./static/dataset && rm -rf ./static/tmp && git clone git@github.com:tum-db/partitioned-filters.git --no-checkout --depth 1 --sparse ./static/tmp/ && cd ./static/tmp/ && git sparse-checkout add benchmark && git checkout && mv ./benchmark/paper ../dataset && rm -rf ../tmp", + "preview": "vite preview", + "test": "playwright test", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "deploy": "pnpm build && pnpx gh-pages -d build -t true", + "test:unit": "vitest", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write ." + }, + "devDependencies": { + "@playwright/test": "^1.40.1", + "@sveltejs/adapter-auto": "^2.1.1", + "@sveltejs/kit": "^1.27.6", + "@types/d3": "^7.4.3", + "@types/papaparse": "^5.3.14", + "@types/three": "^0.159.0", + "@typescript-eslint/eslint-plugin": "^6.13.1", + "@typescript-eslint/parser": "^6.13.1", + "eslint": "^8.55.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte3": "^4.0.0", + "gh-pages": "^6.1.0", + "prettier": "^3.1.0", + "prettier-plugin-svelte": "^3.1.2", + "sass": "^1.69.5", + "svelte": "^4.2.8", + "svelte-check": "^3.6.2", + "tslib": "^2.6.2", + "typescript": "^5.3.2", + "vite": "^5.0.4", + "vitest": "^0.34.6" + }, + "type": "module", + "dependencies": { + "@duckdb/duckdb-wasm": "^1.28.0", + "@fontsource/inter": "^5.0.15", + "@sveltejs/adapter-static": "^2.0.3", + "@tweenjs/tween.js": "^21.0.0", + "apache-arrow": "^14.0.1", + "autoprefixer": "^10.4.16", + "d3": "^7.8.5", + "d3-delaunay": "^6.0.4", + "deep-object-diff": "^1.1.9", + "feather-icons": "^4.29.1", + "monaco-editor": "^0.44.0", + "monaco-sql-languages": "0.12.0-beta.7", + "papaparse": "^5.4.1", + "postcss": "^8.4.32", + "stats.js": "^0.17.0", + "svelte-feather-icons": "^4.0.1", + "svelte-icons-pack": "^2.1.0", + "tailwindcss": "^3.3.5", + "three": "^0.159.0", + "three.meshline": "^1.4.0", + "web-worker": "^1.2.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85869e1..11e2723 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,5 @@ lockfileVersion: '6.0' -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - dependencies: '@duckdb/duckdb-wasm': specifier: ^1.28.0 @@ -17,15 +13,6 @@ dependencies: '@tweenjs/tween.js': specifier: ^21.0.0 version: 21.0.0 - '@types/d3': - specifier: ^7.4.3 - version: 7.4.3 - '@types/papaparse': - specifier: ^5.3.14 - version: 5.3.14 - '@types/three': - specifier: ^0.159.0 - version: 0.159.0 apache-arrow: specifier: ^14.0.1 version: 14.0.1 @@ -35,6 +22,9 @@ dependencies: d3: specifier: ^7.8.5 version: 7.8.5 + d3-delaunay: + specifier: ^6.0.4 + version: 6.0.4 deep-object-diff: specifier: ^1.1.9 version: 1.1.9 @@ -53,9 +43,6 @@ dependencies: postcss: specifier: ^8.4.32 version: 8.4.32 - sass: - specifier: ^1.69.5 - version: 1.69.5 stats.js: specifier: ^0.17.0 version: 0.17.0 @@ -88,6 +75,15 @@ devDependencies: '@sveltejs/kit': specifier: ^1.27.6 version: 1.27.6(svelte@4.2.8)(vite@5.0.4) + '@types/d3': + specifier: ^7.4.3 + version: 7.4.3 + '@types/papaparse': + specifier: ^5.3.14 + version: 5.3.14 + '@types/three': + specifier: ^0.159.0 + version: 0.159.0 '@typescript-eslint/eslint-plugin': specifier: ^6.13.1 version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2) @@ -112,6 +108,9 @@ devDependencies: prettier-plugin-svelte: specifier: ^3.1.2 version: 3.1.2(prettier@3.1.0)(svelte@4.2.8) + sass: + specifier: ^1.69.5 + version: 1.69.5 svelte: specifier: ^4.2.8 version: 4.2.8 @@ -659,147 +658,147 @@ packages: /@types/d3-array@3.0.8: resolution: {integrity: sha512-2xAVyAUgaXHX9fubjcCbGAUOqYfRJN1em1EKR2HfzWBpObZhwfnZKvofTN4TplMqJdFQao61I+NVSai/vnBvDQ==} - dev: false + dev: true /@types/d3-axis@3.0.4: resolution: {integrity: sha512-ySnjI/7qm+J602VjcejXcqs1hEuu5UBbGaJGp+Cn/yKVc1iS3JueLVpToGdQsS2sqta7tqA/kG4ore/+LH90UA==} dependencies: '@types/d3-selection': 3.0.7 - dev: false + dev: true /@types/d3-brush@3.0.4: resolution: {integrity: sha512-Kg5uIsdJNMCs5lTqeZFsTKqj9lBvpiFRDkYN3j2CDlPhonNDg9/gXVpv1E/MKh3tEqArryIj9o6RBGE/MQe+6Q==} dependencies: '@types/d3-selection': 3.0.7 - dev: false + dev: true /@types/d3-chord@3.0.4: resolution: {integrity: sha512-p4PvN1N+7GL3Y/NI9Ug1TKwowUV6h664kmxL79ctp1HRYCk1mhP0+SXhjRsoWXCdnJfbLLLmpV99rt8dMrHrzg==} - dev: false + dev: true /@types/d3-color@3.1.1: resolution: {integrity: sha512-CSAVrHAtM9wfuLJ2tpvvwCU/F22sm7rMHNN+yh9D6O6hyAms3+O0cgMpC1pm6UEUMOntuZC8bMt74PteiDUdCg==} - dev: false + dev: true /@types/d3-contour@3.0.4: resolution: {integrity: sha512-B0aeX8Xg3MNUglULxqDvlgY1SVXuN2xtEleYSAY0iMhl/SMVT7snzgAveejjwM3KaWuNXIoXEJ7dmXE8oPq/jA==} dependencies: '@types/d3-array': 3.0.8 '@types/geojson': 7946.0.11 - dev: false + dev: true /@types/d3-delaunay@6.0.2: resolution: {integrity: sha512-WplUJ/OHU7eITneDqNnzK+2pgR+WDzUHG6XAUVo+oWHPQq74VcgUdw8a4ODweaZzF56OVYK+x9GxCyuq6hSu1A==} - dev: false + dev: true /@types/d3-dispatch@3.0.4: resolution: {integrity: sha512-NApHpGHRNxUy7e2Lfzl/cwOucmn4Xdx6FdmXzAoomo8T81LyGmlBjjko/vP0TVzawlvEFLDq8OCRLulW6DDzKw==} - dev: false + dev: true /@types/d3-drag@3.0.4: resolution: {integrity: sha512-/t53K1erTuUbP7WIX9SE0hlmytpTYRbIthlhbGkBHzCV5vPO++7yrk8OlisWPyIJO5TGowTmqCtGH2tokY5T/g==} dependencies: '@types/d3-selection': 3.0.7 - dev: false + dev: true /@types/d3-dsv@3.0.4: resolution: {integrity: sha512-YxfUVJ55HxR8oq88136w09mBMPNhgH7PZjteq72onWXWOohGif/cLQnQv8V4A5lEGjXF04LhwSTpmzpY9wyVyA==} - dev: false + dev: true /@types/d3-ease@3.0.0: resolution: {integrity: sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==} - dev: false + dev: true /@types/d3-fetch@3.0.4: resolution: {integrity: sha512-RleYajubALkGjrvatxWhlygfvB1KNF0Uzz9guRUeeA+M/2B7l8rxObYdktaX9zU1st04lMCHjZWe4vbl+msH2Q==} dependencies: '@types/d3-dsv': 3.0.4 - dev: false + dev: true /@types/d3-force@3.0.6: resolution: {integrity: sha512-G9wbOvCxkNlLrppoHLZ6oFpbm3z7ibfkXwLD8g5/4Aa7iTEV0Z7TQ0OL8UxAtvdOhCa2VZcSuqn1NQqyCEqmiw==} - dev: false + dev: true /@types/d3-format@3.0.2: resolution: {integrity: sha512-9oQWvKk2qVBo49FQq8yD/et8Lx0W5Ac2FdGSOUecqOFKqh0wkpyHqf9Qc7A06ftTR+Lz13Pi3jHIQis0aCueOA==} - dev: false + dev: true /@types/d3-geo@3.0.5: resolution: {integrity: sha512-ysEEU93Wv9p2UZBxTK3kUP7veHgyhTA0qYtI7bxK5EMXb3JxGv0D4IH54PxprAF26n+uHci24McVmzwIdLgvgQ==} dependencies: '@types/geojson': 7946.0.11 - dev: false + dev: true /@types/d3-hierarchy@3.1.4: resolution: {integrity: sha512-wrvjpRFdmEu6yAqgjGy8MSud9ggxJj+I9XLuztLeSf/E0j0j6RQYtxH2J8U0Cfbgiw9ZDHyhpmaVuWhxscYaAQ==} - dev: false + dev: true /@types/d3-interpolate@3.0.2: resolution: {integrity: sha512-zAbCj9lTqW9J9PlF4FwnvEjXZUy75NQqPm7DMHZXuxCFTpuTrdK2NMYGQekf4hlasL78fCYOLu4EE3/tXElwow==} dependencies: '@types/d3-color': 3.1.1 - dev: false + dev: true /@types/d3-path@3.0.0: resolution: {integrity: sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==} - dev: false + dev: true /@types/d3-polygon@3.0.0: resolution: {integrity: sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==} - dev: false + dev: true /@types/d3-quadtree@3.0.3: resolution: {integrity: sha512-GDWaR+rGEk4ToLQSGugYnoh9AYYblsg/8kmdpa1KAJMwcdZ0v8rwgnldURxI5UrzxPlCPzF7by/Tjmv+Jn21Dg==} - dev: false + dev: true /@types/d3-random@3.0.1: resolution: {integrity: sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==} - dev: false + dev: true /@types/d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==} - dev: false + dev: true /@types/d3-scale@4.0.5: resolution: {integrity: sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA==} dependencies: '@types/d3-time': 3.0.1 - dev: false + dev: true /@types/d3-selection@3.0.7: resolution: {integrity: sha512-qoj2O7KjfqCobmtFOth8FMvjwMVPUAAmn6xiUbLl1ld7vQCPgffvyV5BBcEFfqWdilAUm+3zciU/3P3vZrUMlg==} - dev: false + dev: true /@types/d3-shape@3.1.3: resolution: {integrity: sha512-cHMdIq+rhF5IVwAV7t61pcEXfEHsEsrbBUPkFGBwTXuxtTAkBBrnrNA8++6OWm3jwVsXoZYQM8NEekg6CPJ3zw==} dependencies: '@types/d3-path': 3.0.0 - dev: false + dev: true /@types/d3-time-format@4.0.1: resolution: {integrity: sha512-Br6EFeu9B1Zrem7KaYbr800xCmEDyq8uE60kEU8rWhC/XpFYX6ocGMZuRJDQfFCq6SyakQxNHFqIfJbFLf4x6Q==} - dev: false + dev: true /@types/d3-time@3.0.1: resolution: {integrity: sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA==} - dev: false + dev: true /@types/d3-timer@3.0.0: resolution: {integrity: sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==} - dev: false + dev: true /@types/d3-transition@3.0.5: resolution: {integrity: sha512-dcfjP6prFxj3ziFOJrnt4W2P0oXNj/sGxsJXH8286sHtVZ4qWGbjuZj+RRCYx4YZ4C0izpeE8OqXVCtoWEtzYg==} dependencies: '@types/d3-selection': 3.0.7 - dev: false + dev: true /@types/d3-zoom@3.0.5: resolution: {integrity: sha512-mIefdTLtxuWUWTbBupCUXPAXVPmi8/Uwrq41gQpRh0rD25GMU1ku+oTELqNY2NuuiI0F3wXC5e1liBQi7YS7XQ==} dependencies: '@types/d3-interpolate': 3.0.2 '@types/d3-selection': 3.0.7 - dev: false + dev: true /@types/d3@7.4.3: resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} @@ -834,14 +833,14 @@ packages: '@types/d3-timer': 3.0.0 '@types/d3-transition': 3.0.5 '@types/d3-zoom': 3.0.5 - dev: false + dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} /@types/geojson@7946.0.11: resolution: {integrity: sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg==} - dev: false + dev: true /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} @@ -862,7 +861,7 @@ packages: resolution: {integrity: sha512-LxJ4iEFcpqc6METwp9f6BV6VVc43m6MfH0VqFosHvrUgfXiFe6ww7R3itkOQ+TCK6Y+Iv/+RnnvtRZnkc5Kc9g==} dependencies: '@types/node': 20.8.0 - dev: false + dev: true /@types/pug@2.0.7: resolution: {integrity: sha512-I469DU0UXNC1aHepwirWhu9YKg5fkxohZD95Ey/5A7lovC+Siu+MCLffva87lnfThaOrw9Vb1DUN5t55oULAAw==} @@ -874,7 +873,7 @@ packages: /@types/stats.js@0.17.1: resolution: {integrity: sha512-OgfYE1x2w1jRUXzzKABX+kOdwz2y9PE0uSwnZabkWfJTWOzm7Pvfm4JI2xqRE0q2nwUe2jZLWcrcnhd9lQU63w==} - dev: false + dev: true /@types/three@0.159.0: resolution: {integrity: sha512-2gybdh7HtX+rGUgslzK7QEJfzD2I0qrbUGzKk+dK0FDx49UHkNX0rqZVRzIgeFjBd1HzzhNNgwNoMacm3Wyc7w==} @@ -883,11 +882,11 @@ packages: '@types/webxr': 0.5.5 fflate: 0.6.10 meshoptimizer: 0.18.1 - dev: false + dev: true /@types/webxr@0.5.5: resolution: {integrity: sha512-HVOsSRTQYx3zpVl0c0FBmmmcY/60BkQLzVnpE9M1aG4f2Z0aKlBWfj4XZ2zr++XNBfkQWYcwhGlmuu44RJPDqg==} - dev: false + dev: true /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2): resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} @@ -1964,7 +1963,7 @@ packages: /fflate@0.6.10: resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} - dev: false + dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -2414,7 +2413,7 @@ packages: /meshoptimizer@0.18.1: resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} - dev: false + dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -3530,3 +3529,7 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false diff --git a/src/dataset/tumPartitionParser.server.ts b/src/dataset/tumPartitionParser.server.ts index cb6d3d0..ac7ed73 100644 --- a/src/dataset/tumPartitionParser.server.ts +++ b/src/dataset/tumPartitionParser.server.ts @@ -10,7 +10,10 @@ import { type Dataset } from './types'; -const parseDirectory = (dir: string, stripPrefix: string | undefined = undefined): FSItem[] => { +export const parseDirectory = ( + dir: string, + stripPrefix: string | undefined = undefined +): FSItem[] => { const walkDir = (dir: string): FSItem[] => fs.readdirSync(dir).map((f) => { const dirPath = path.join(dir, f); diff --git a/src/lib/Sidebar.svelte b/src/lib/Sidebar.svelte index 2397e91..af615ef 100644 --- a/src/lib/Sidebar.svelte +++ b/src/lib/Sidebar.svelte @@ -1,22 +1,11 @@ -