Skip to content

Commit

Permalink
Merge pull request #1 from suyiwong/fix/update-sublayer-generation
Browse files Browse the repository at this point in the history
Update looping and sublayer property
  • Loading branch information
chunkangwong committed May 15, 2024
2 parents 0eb5e79 + ffa5936 commit a6fe226
Showing 1 changed file with 29 additions and 13 deletions.
42 changes: 29 additions & 13 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ view.whenLayerView(mapImageLayer).then(async () => {
btn.innerHTML = "";
btn.appendChild(loadingIcon);

const popupTemplate = await generatePopupTemplate(mapImageLayerUrl);
const popupTemplate = await generateMapLayers(mapImageLayerUrl);

const a = document.createElement("a");
a.href = `data:text/json;charset=utf-8,${encodeURIComponent(
Expand All @@ -63,11 +63,26 @@ view.whenLayerView(mapImageLayer).then(async () => {
});
});

const generatePopupTemplate = async (url: string, id?: number) => {
const response = await esriRequest(`${url}/${id ?? ""}?f=json`);
const generateMapLayers = async (url: string) => {
const response = await esriRequest(`${url}/?f=json`);
const layers = response.data;
const sublayers = (layers.layers || layers.subLayers).filter(
(layer: { parentLayerId: number }) => layer.parentLayerId === -1
);

return await Promise.all(
sublayers.map(async (layer: { id: number }) => {
return await generatePopupTemplate(url, layer.id);
})
);
};

const generatePopupTemplate = async (url: string, id: number) => {
const response = await esriRequest(`${url}/${id}?f=json`);
const layer = response.data;
const sublayers = layer.layers || layer.subLayers;
if (!sublayers || sublayers.length === 0) {
console.log(layer);
return {
title: layer.name,
id: layer.id,
Expand All @@ -88,15 +103,16 @@ const generatePopupTemplate = async (url: string, id?: number) => {
],
},
};
} else {
return {
title: layer.name || layer.mapName,
visible: layer.defaultVisibility,
id: layer.id,
sublayers: await Promise.all(
sublayers.map(
async (sublayer: any) => await generatePopupTemplate(url, sublayer.id)
)
),
};
}
return {
title: layer.name || layer.mapName,
visible: layer.defaultVisibility,
id: layer.id,
subLayers: await Promise.all(
sublayers.map(
async (sublayer: any) => await generatePopupTemplate(url, sublayer.id)
)
),
};
};

0 comments on commit a6fe226

Please sign in to comment.