yahoo-swiv
Version:
A web-based exploratory visualization UI for Druid.io
60 lines (59 loc) • 2.51 kB
JavaScript
;
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var immutable_class_1 = require('immutable-class');
var swiv_plywood_1 = require('swiv-plywood');
var time_tag_1 = require('../time-tag/time-tag');
var Timekeeper = (function (_super) {
__extends(Timekeeper, _super);
function Timekeeper(parameters) {
_super.call(this, parameters);
}
Timekeeper.isTimekeeper = function (candidate) {
return immutable_class_1.isInstanceOf(candidate, Timekeeper);
};
Timekeeper.globalNow = function () {
return new Date();
};
Timekeeper.fromJS = function (parameters) {
return new Timekeeper(immutable_class_1.BaseImmutable.jsToValue(Timekeeper.PROPERTIES, parameters));
};
Timekeeper.prototype.now = function () {
return this.nowOverride || Timekeeper.globalNow();
};
Timekeeper.prototype.getTime = function (name) {
var timeTag = swiv_plywood_1.findByName(this.timeTags, name);
if (!timeTag || timeTag.special === 'realtime')
return this.now();
return timeTag.time || this.now();
};
Timekeeper.prototype.updateTime = function (name, time) {
var value = this.valueOf();
var tag = swiv_plywood_1.findByName(value.timeTags, name);
if (!tag)
return this;
value.timeTags = swiv_plywood_1.overrideByName(value.timeTags, tag.changeTime(time, this.now()));
return new Timekeeper(value);
};
Timekeeper.prototype.addTimeTagFor = function (name) {
var value = this.valueOf();
value.timeTags = value.timeTags.concat(new time_tag_1.TimeTag({ name: name }));
return new Timekeeper(value);
};
Timekeeper.prototype.removeTimeTagFor = function (name) {
var value = this.valueOf();
value.timeTags = value.timeTags.filter(function (tag) { return tag.name !== name; });
return new Timekeeper(value);
};
Timekeeper.PROPERTIES = [
{ name: 'timeTags', immutableClassArray: time_tag_1.TimeTag },
{ name: 'nowOverride', isDate: true, defaultValue: null }
];
return Timekeeper;
}(immutable_class_1.BaseImmutable));
exports.Timekeeper = Timekeeper;
immutable_class_1.BaseImmutable.finalize(Timekeeper);
Timekeeper.EMPTY = new Timekeeper({ timeTags: [] });