UNPKG

terriajs

Version:

Geospatial data visualization platform.

58 lines (49 loc) 2.17 kB
'use strict'; /*global require*/ var defined = require('terriajs-cesium/Source/Core/defined'); var TerriaError = require('../Core/TerriaError'); var LineParameter = require('./LineParameter'); var RectangleParameter = require('./RectangleParameter'); var PolygonParameter = require('./PolygonParameter'); var DateTimeParameter = require('./DateTimeParameter'); var EnumerationParameter = require('./EnumerationParameter'); var StringParameter = require('./StringParameter'); var PointParameter = require('./PointParameter'); var BooleanParameter = require('./BooleanParameter'); var mapping = { [StringParameter.prototype.type]: StringParameter, [EnumerationParameter.prototype.type]: EnumerationParameter, [BooleanParameter.prototype.type]: BooleanParameter, [DateTimeParameter.prototype.type]: DateTimeParameter, [PointParameter.prototype.type]: PointParameter, [LineParameter.prototype.type]: LineParameter, [PolygonParameter.prototype.type]: PolygonParameter, [RectangleParameter.prototype.type]: RectangleParameter }; /** * Creates a type derived from {@link FunctionParameter} based on a given type string. * * @param {String} type The derived type name. * @param {Object} options Options to pass to the constructor. */ var createParameterFromType = function(type, options) { var Constructor = mapping[type]; if (!defined(Constructor)) { throw new TerriaError({ title: 'Unsupported function parameter type', message: 'Unknown function parameter type: ' + type + '.' }); } return new Constructor(options); }; /** * Registers a constructor for a given type of {@link FunctionParameter}. * * @param {String} type The type name for which to register a constructor. * @param {Function} constructor The constructor for function parameters of this type. The constructor is expected to take an options * object as its first and only parameter. */ createParameterFromType.register = function(type, constructor) { mapping[type] = constructor; }; module.exports = createParameterFromType;