in examples/demo-app/src/cloud-providers/carto/carto-provider.js [196:253]
async downloadMap(queryParams) {
try {
const {owner: username, mapId, privateMap} = queryParams;
if (!username || !mapId) {
return;
}
let visualization;
if (privateMap.trim().toLowerCase() === 'true') {
await this._carto.login();
const currentUsername = this.getUserName();
if (currentUsername && currentUsername === username) {
const cs = await this._carto.getCustomStorage();
visualization = await cs.getVisualization(mapId);
}
} else {
visualization = await this._carto.PublicStorageReader.getVisualization(username, mapId);
}
if (!visualization) {
throw new Error(`Can't find map with ID: ${mapId}`);
}
// These are the options required for the action. For now, all datasets that come from CARTO are CSV
const datasets = visualization.datasets.map(dataset => {
const datasetId = dataset.name;
return {
info: {
id: datasetId,
label: datasetId,
description: dataset.description,
dataUrl: '',
configUrl: '',
panelDisabled: true
},
data: dataset.file
};
});
// const datasets = visualization.datasets.map(dataset => dataset.file);
this.currentMap = visualization.vis;
return {
map: {
datasets,
config: visualization.vis.config,
info: {title: visualization.vis.name, description: visualization.vis.description}
},
format: 'csv'
};
} catch (error) {
this._manageErrors(error);
}
}