From 39f853fc4a67e0714fde68c726651535a6f08ca9 Mon Sep 17 00:00:00 2001 From: Kata Martin Date: Thu, 9 Dec 2021 16:54:10 -0800 Subject: [PATCH 1/2] Inspect datasets array instead of using kwargs --- src/utils.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/utils.js b/src/utils.js index faf51ae..1bc5d19 100644 --- a/src/utils.js +++ b/src/utils.js @@ -249,12 +249,10 @@ export const getTilesOfRegion = (region, level) => { } export const getPyramidMetadata = (metadata) => { - const kwargs = metadata.metadata['.zattrs'].multiscales[0].metadata.kwargs - const maxZoom = kwargs.levels - 1 - const levels = Array(maxZoom + 1) - .fill() - .map((_, i) => i) - const tileSize = kwargs.pixels_per_tile + const datasets = metadata.metadata['.zattrs'].multiscales[0].datasets + const levels = datasets.map((dataset) => Number(dataset.path)) + const maxZoom = Math.max(...levels) + const tileSize = datasets[0].pixels_per_tile return { levels, maxZoom, tileSize } } From 686012f728a1a379cd11812089f1902d53796535 Mon Sep 17 00:00:00 2001 From: Kata Martin Date: Fri, 10 Dec 2021 16:53:08 -0800 Subject: [PATCH 2/2] Throw errors for breadcrumbs in metadata getter --- src/utils.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/utils.js b/src/utils.js index 1bc5d19..222ad78 100644 --- a/src/utils.js +++ b/src/utils.js @@ -249,10 +249,31 @@ export const getTilesOfRegion = (region, level) => { } export const getPyramidMetadata = (metadata) => { - const datasets = metadata.metadata['.zattrs'].multiscales[0].datasets + const multiscales = metadata.metadata['.zattrs'].multiscales + + if (!multiscales) { + throw new Error( + 'Missing `multiscales` value in .zattrs. Please check your pyramid generation code.' + ) + } + + const datasets = multiscales[0].datasets + + if (!datasets || datasets.length === 0) { + throw new Error( + 'No datasets provided in `multiscales` metadata. Please check your pyramid generation code.' + ) + } + const levels = datasets.map((dataset) => Number(dataset.path)) const maxZoom = Math.max(...levels) const tileSize = datasets[0].pixels_per_tile + + if (!tileSize) { + throw new Error( + 'Missing required `pixels_per_tile` value in `multiscales` metadata. Please check your pyramid generation code.' + ) + } return { levels, maxZoom, tileSize } }