baja/obj/StatusValue.js
/**
* @copyright 2020 Tridium, Inc. All Rights Reserved.
* @author Cody Short
*/
/**
* Defines {@link baja.StatusValue}.
* @module baja/obj/StatusValue
*/
define([
"bajaScript/sys",
"bajaScript/baja/comp/Struct",
"bajaPromises" ], function (
baja,
Struct,
Promise) {
"use strict";
var subclass = baja.subclass,
callSuper = baja.callSuper;
function getStatusValueString(valueStr, statusStr) {
return valueStr + " " + statusStr;
}
/**
* Represents a `baja:StatusValue` in BajaScript.
*
* @alias baja.StatusValue
* @extends baja.Struct
*/
var StatusValue = function StatusValue() {
callSuper(StatusValue, this, arguments);
};
subclass(StatusValue, Struct);
/**
* Returns a promise that resolves with the string value of the `StatusValue`
*
* @param {Object} [cx] a context object passed to status / value toString
* @param {Object} [cx.lex] a `baja` Lexicon value
* @returns {Promise.<string>|string}
*/
StatusValue.prototype.toString = function (cx) {
var status = this.get('status'),
value = this.getValue();
if (!cx) {
var valueStr = status.isNull() ? "-" : value.toString();
return getStatusValueString(valueStr, status.toString());
}
return Promise.all([
status.isNull() ? "-" : value.toString(cx),
status.toString(cx)
]).then(function (results) {
return getStatusValueString(results[0], results[1]);
});
};
return StatusValue;
});