terriajs
Version:
Geospatial data visualization platform.
143 lines (132 loc) • 9.73 kB
JavaScript
;
/*global require*/
var AbsIttCatalogGroup = require('./AbsIttCatalogGroup');
var AbsIttCatalogItem = require('./AbsIttCatalogItem');
var ArcGisCatalogGroup = require('./ArcGisCatalogGroup');
var ArcGisFeatureServerCatalogGroup = require('./ArcGisFeatureServerCatalogGroup');
var ArcGisFeatureServerCatalogItem = require('./ArcGisFeatureServerCatalogItem');
var ArcGisMapServerCatalogGroup = require('./ArcGisMapServerCatalogGroup');
var ArcGisMapServerCatalogItem = require('./ArcGisMapServerCatalogItem');
var ResultPendingCatalogItem = require('./ResultPendingCatalogItem');
var BingMapsCatalogItem = require('./BingMapsCatalogItem');
var CatalogGroup = require('./CatalogGroup');
var Cesium3DTilesCatalogItem = require('./Cesium3DTilesCatalogItem');
var CesiumTerrainCatalogItem = require('./CesiumTerrainCatalogItem');
var CkanCatalogGroup = require('./CkanCatalogGroup');
var CkanCatalogItem = require('./CkanCatalogItem');
var CompositeCatalogItem = require('./CompositeCatalogItem');
var createCatalogItemFromUrl = require('./createCatalogItemFromUrl');
var createCatalogMemberFromType = require('./createCatalogMemberFromType');
var CsvCatalogItem = require('./CsvCatalogItem');
var CswCatalogGroup = require('./CswCatalogGroup');
var CzmlCatalogItem = require('./CzmlCatalogItem');
var GeoJsonCatalogItem = require('./GeoJsonCatalogItem');
var GpxCatalogItem = require('./GpxCatalogItem');
var IonImageryCatalogItem = require('./IonImageryCatalogItem');
var KmlCatalogItem = require('./KmlCatalogItem');
var OgrCatalogItem = require('./OgrCatalogItem');
var OpenStreetMapCatalogItem = require('./OpenStreetMapCatalogItem');
var SdmxJsonCatalogItem = require('./SdmxJsonCatalogItem');
var SensorObservationServiceCatalogItem = require('./SensorObservationServiceCatalogItem');
var SocrataCatalogGroup = require('./SocrataCatalogGroup');
var TerriaJsonCatalogFunction = require('./TerriaJsonCatalogFunction');
var UrlTemplateCatalogItem = require('./UrlTemplateCatalogItem');
var WebFeatureServiceCatalogGroup = require('./WebFeatureServiceCatalogGroup');
var WebFeatureServiceCatalogItem = require('./WebFeatureServiceCatalogItem');
var WebMapServiceCatalogGroup = require('./WebMapServiceCatalogGroup');
var WebMapServiceCatalogItem = require('./WebMapServiceCatalogItem');
var WebMapTileServiceCatalogGroup = require('./WebMapTileServiceCatalogGroup');
var WebMapTileServiceCatalogItem = require('./WebMapTileServiceCatalogItem');
var WebProcessingServiceCatalogGroup = require('./WebProcessingServiceCatalogGroup');
var WebProcessingServiceCatalogItem = require('./WebProcessingServiceCatalogItem');
var WebProcessingServiceCatalogFunction = require('./WebProcessingServiceCatalogFunction');
var WfsFeaturesCatalogGroup = require('./WfsFeaturesCatalogGroup');
var MagdaCatalogItem = require('./MagdaCatalogItem');
var registerCatalogMembers = function() {
createCatalogMemberFromType.register('3d-tiles', Cesium3DTilesCatalogItem);
createCatalogMemberFromType.register('abs-itt', AbsIttCatalogItem);
createCatalogMemberFromType.register('abs-itt-dataset-list', AbsIttCatalogGroup);
createCatalogMemberFromType.register('result-pending', ResultPendingCatalogItem);
createCatalogMemberFromType.register('bing-maps', BingMapsCatalogItem);
createCatalogMemberFromType.register('ckan', CkanCatalogGroup);
createCatalogMemberFromType.register('ckan-resource', CkanCatalogItem);
createCatalogMemberFromType.register('composite', CompositeCatalogItem);
createCatalogMemberFromType.register('csv', CsvCatalogItem);
createCatalogMemberFromType.register('csw', CswCatalogGroup);
createCatalogMemberFromType.register('cesium-terrain', CesiumTerrainCatalogItem);
createCatalogMemberFromType.register('czml', CzmlCatalogItem);
createCatalogMemberFromType.register('esri-group', ArcGisCatalogGroup);
createCatalogMemberFromType.register('esri-featureServer', ArcGisFeatureServerCatalogItem);
createCatalogMemberFromType.register('esri-featureServer-group', ArcGisFeatureServerCatalogGroup);
createCatalogMemberFromType.register('esri-mapServer', ArcGisMapServerCatalogItem);
createCatalogMemberFromType.register('esri-mapServer-group', ArcGisMapServerCatalogGroup);
createCatalogMemberFromType.register('geojson', GeoJsonCatalogItem);
createCatalogMemberFromType.register('gpx', GpxCatalogItem);
createCatalogMemberFromType.register('group', CatalogGroup);
createCatalogMemberFromType.register('ion-imagery', IonImageryCatalogItem);
createCatalogMemberFromType.register('kml', KmlCatalogItem);
createCatalogMemberFromType.register('kmz', KmlCatalogItem);
createCatalogMemberFromType.register('ogr', OgrCatalogItem);
createCatalogMemberFromType.register('open-street-map', OpenStreetMapCatalogItem);
createCatalogMemberFromType.register('sdmx-json', SdmxJsonCatalogItem);
createCatalogMemberFromType.register('socrata', SocrataCatalogGroup);
createCatalogMemberFromType.register('sos', SensorObservationServiceCatalogItem);
createCatalogMemberFromType.register('terria-json', TerriaJsonCatalogFunction);
createCatalogMemberFromType.register('url-template', UrlTemplateCatalogItem);
createCatalogMemberFromType.register('wfs', WebFeatureServiceCatalogItem);
createCatalogMemberFromType.register('wfs-features-group', WfsFeaturesCatalogGroup);
createCatalogMemberFromType.register('wfs-getCapabilities', WebFeatureServiceCatalogGroup);
createCatalogMemberFromType.register('wms', WebMapServiceCatalogItem);
createCatalogMemberFromType.register('wms-getCapabilities', WebMapServiceCatalogGroup);
createCatalogMemberFromType.register('wmts', WebMapTileServiceCatalogItem);
createCatalogMemberFromType.register('wmts-getCapabilities', WebMapTileServiceCatalogGroup);
createCatalogMemberFromType.register('wps-getCapabilities', WebProcessingServiceCatalogGroup);
createCatalogMemberFromType.register('wps-result', WebProcessingServiceCatalogItem);
createCatalogMemberFromType.register('wps', WebProcessingServiceCatalogFunction);
createCatalogMemberFromType.register('magda-item', MagdaCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('csv'), CsvCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('czm'), CzmlCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('czml'), CzmlCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('geojson'), GeoJsonCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('gpx'), GpxCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('json'), GeoJsonCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('kml'), KmlCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('kmz'), KmlCatalogItem);
createCatalogItemFromUrl.register(matchesExtension('topojson'), GeoJsonCatalogItem);
// These items work by trying to match a URL, then loading the data. If it fails, they move on.
createCatalogItemFromUrl.register(matchesUrl(/\/WMTS\b/i), WebMapTileServiceCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/wfs/i), WebFeatureServiceCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/wms/i), WebMapServiceCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/arcgis\/rest\/.*\/MapServer\/\d+\b/i), ArcGisMapServerCatalogItem, true);
createCatalogItemFromUrl.register(matchesUrl(/\/arcgis\/rest\/.*\/FeatureServer\/\d+\b/i), ArcGisFeatureServerCatalogItem, true);
createCatalogItemFromUrl.register(matchesUrl(/\/arcgis\/rest\/.*\/MapServer(\/.*)?$/i), ArcGisMapServerCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/arcgis\/rest\/.*\/FeatureServer(\/.*)?$/i), ArcGisFeatureServerCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/arcgis\/rest\/.*\/\d+\b/i), ArcGisMapServerCatalogItem, true);
createCatalogItemFromUrl.register(matchesUrl(/\/ArcGis\/rest\//i), ArcGisCatalogGroup, true);
createCatalogItemFromUrl.register(matchesUrl(/\/sdmx-json\//i), SdmxJsonCatalogItem, true);
// These don't even try to match a URL, they're just total fallbacks. We really, really want something to work.
createCatalogItemFromUrl.register(undefined, WebMapServiceCatalogGroup, true);
createCatalogItemFromUrl.register(undefined, WebFeatureServiceCatalogGroup, true);
createCatalogItemFromUrl.register(undefined, ArcGisMapServerCatalogItem, true);
createCatalogItemFromUrl.register(undefined, ArcGisMapServerCatalogGroup, true);
createCatalogItemFromUrl.register(undefined, ArcGisCatalogGroup, true);
createCatalogItemFromUrl.register(undefined, ArcGisFeatureServerCatalogItem, true);
createCatalogItemFromUrl.register(undefined, ArcGisFeatureServerCatalogGroup, true);
};
function matchesExtension(extension) {
var regex = new RegExp('\\.' + extension + '$', 'i');
return function(url) {
return url.match(regex);
};
}
function matchesUrl(regex) {
return /./.test.bind(regex);
}
// Uncomment this if you need to deprecated a catalog item type.
// function createDeprecatedConstructor(deprecatedName, CatalogItemConstructor) {
// return function(terria) {
// deprecationWarning(deprecatedName, 'The catalog member type "' + deprecatedName + '" has been deprecated. Please update your catalog to use "' + CatalogItemConstructor.prototype.type + '" instead.');
// return new CatalogItemConstructor(terria);
// };
// }
module.exports = registerCatalogMembers;