UNPKG

terriajs

Version:

Geospatial data visualization platform.

70 lines (58 loc) 1.82 kB
"use strict"; /*global require*/ var defineProperties = require('terriajs-cesium/Source/Core/defineProperties'); var knockout = require('terriajs-cesium/Source/ThirdParty/knockout'); /** * Represents a metadata item associated with Metadata * * @alias MetadataItem * @constructor */ var MetadataItem = function(name, value) { /** * Gets or sets the name of the metadata item. This property is observable. * @type {String} */ this.name = name; /** * Gets or sets the value of the metadata item. * @type {Object} */ this.value = value; /** * Gets the list of metadata items contained in this group. This property is observable. * @type {MetadataItem[]} */ this.items = []; /** * Gets or sets a value indicating whether this metadata item is currently open. When an * item is open, its child items (if any) are visible. This property is observable. * @type {Boolean} */ this.isOpen = true; knockout.track(this, ['name', 'value', 'items', 'isOpen']); }; defineProperties(MetadataItem.prototype, { /** * Gets a value indicating whether this item has child items. * @type {Boolean} */ hasChildren : { get : function() { return this.items.length > 0; } }, valueIsArray : { get : function() { return this.value instanceof Array; } } }); /** * Toggles the {@link MetadataItem#isOpen} property. If this item's list of children is open, * calling this method will close it. If the list is closed, calling this method will open it. */ MetadataItem.prototype.toggleOpen = function() { this.isOpen = !this.isOpen; }; module.exports = MetadataItem;