import { defaultValue } from '../../../util'
import { Symbol } from '../../../base/symbol'
/**
* 三维专题图-单值信息
* @class UniqueValueInfo
* @moduleEX RendererModule
* @classdesc 三维专题图-单值信息
* @param {Object} options 初始化参数
* @param {String|Number} [options.value] 指定字段下的要素值,具有此值的要素将使用给定的符号可视化
* @param {Symbol} [options.symbol] 符号,用来渲染指定要素
* @param {String} [options.label] 标签,用来描述符号表示的值
* @param {Boolean} [options.visible = true] 是否可视化单值信息
*/
class UniqueValueInfo {
constructor(options) {
options = defaultValue(options, {})
/**
* 指定字段下的要素值,具有此值的要素将使用给定的符号可视化
* @member {String|Number} UniqueValueInfo.prototype.value
*/
this.value = options.value
/**
* 符号,用来渲染指定要素
* @member {Symbol} UniqueValueInfo.prototype.symbol
*/
this.symbol = Symbol.fromJSON(options.symbol)
/**
* 标签,用来描述符号表示的值
* @member {String} UniqueValueInfo.prototype.label
*/
this.label = defaultValue(options.label, null)
/**
* 描述信息
* @member {String} UniqueValueInfo.prototype.description
*/
this.description = defaultValue(options.description, null)
/**
* 是否可视化单值信息
* @member {Boolean} UniqueValueInfo.prototype.visible
*/
this.visible = defaultValue(options.visible, true)
}
/**
* @description 将JSON格式的单值信息转换为JS对象
* @param {UniqueValueInfo} 单值信息描述对象
*/
static fromJSON(json) {
json = defaultValue(json, {})
return new UniqueValueInfo(json)
}
/**
* 将JS对象转换为JSON格式
* @returns {Object} 单值信息的实例化JSON
*/
toJSON() {
return {
value: this.value,
symbol: this.symbol.toJSON(),
label: this.label,
description: this.description,
visible: this.visible
}
}
/**
* 克隆UniqueValueInfo对象
* @return {UniqueValueInfo} 克隆后的UniqueValueInfo对象
*/
clone() {
return new UniqueValueInfo(this.toJSON())
}
}
export default UniqueValueInfo