UNPKG

terriajs

Version:

Geospatial data visualization platform.

64 lines (49 loc) 2.65 kB
'use strict'; /*global require*/ var defaultValue = require('terriajs-cesium/Source/Core/defaultValue'); var defined = require('terriajs-cesium/Source/Core/defined'); var when = require('terriajs-cesium/Source/ThirdParty/when'); var TerriaError = require('../Core/TerriaError'); /** * Adds a user's catalog item or group to the catalog. * * @param {Terria} terria The Terria instance to contain the catalog member. * @param {CatalogItem|Promise} newCatalogItemOrPromise The catalog member to add, or a promise for a catalog member. * @param {Object} [options] An object with the following members: * @param {Boolean} [options.enable=true] True to enable the newly-added member if it is an item; otherwise, false. * @param {Boolean} [options.open=true] True to open the newly-added member if it is a group; otherwise, false. * @param {Boolean} [options.zoomTo=true] True to zoom and use the clock of the newly-added member if it is an item; otherwise, false. * @return {Promise} A promise that resolves to the catalog item when loaded successfully, or to a {@link TerriaError} if loading fails. The {@link TerriaError} is reported * by raising {@link Terria#error} prior to resolving. The promise never rejects. */ var addUserCatalogMember = function(terria, newCatalogMemberOrPromise, options) { options = defaultValue(options, defaultValue.EMPTY_OBJECT); return when(newCatalogMemberOrPromise, function(newCatalogItem) { if (!defined(newCatalogItem)) { return; } newCatalogItem.isUserSupplied = true; terria.catalog.userAddedDataGroup.add(newCatalogItem); if (defaultValue(options.open, true) && defined(newCatalogItem.isOpen)) { newCatalogItem.isOpen = true; } if (defaultValue(options.enable, true) && defined(newCatalogItem.isEnabled)) { newCatalogItem.isEnabled = true; } if (defaultValue(options.zoomTo, true) && defined(newCatalogItem.zoomToAndUseClock)) { newCatalogItem.zoomToAndUseClock(); } terria.catalog.userAddedDataGroup.isOpen = true; return newCatalogItem; }).otherwise(function(e) { if (!(e instanceof TerriaError)) { e = new TerriaError({ title: 'Data could not be added', message: 'The specified data could not be added because it is invalid or does not have the expected format.' }); } terria.error.raiseEvent(e); return e; }); }; module.exports = addUserCatalogMember;