diffusion
Version:
Diffusion JavaScript client
98 lines (79 loc) • 2.8 kB
JavaScript
var _implements = require('util/interface')._implements;
var TimeSeries = require('../../../features/timeseries');
var RangeQueryImpl = require('features/time-series/range-query-impl');
var DataTypes = require('data/datatypes');
var Services = require('services/services');
var Emitter = require('events/emitter');
var Result = require('events/result');
var requireNonNull = require('util/require-non-null');
module.exports = _implements(TimeSeries, function TimeSeriesImpl(internal) {
var locator = internal.getServiceLocator();
var rangeQuery = RangeQueryImpl.createDefault(locator.obtain(Services.RANGE_QUERY));
var appendService = locator.obtain(Services.TIME_SERIES_APPEND);
var editService = locator.obtain(Services.TIME_SERIES_EDIT);
this.rangeQuery = function() {
return rangeQuery;
};
this.edit = function(path, sequence, value, valueType) {
var emitter = new Emitter();
var result = new Result(emitter);
var datatype;
try {
if (valueType) {
datatype = DataTypes.getChecked(valueType);
} else {
datatype = DataTypes.getByValue(value);
}
requireNonNull(path, "Path");
requireNonNull(value, "Value");
requireNonNull(sequence, "Sequence");
requireNonNull(datatype, "Data type");
} catch (e) {
emitter.error(e);
return result;
}
editService.send({
path : path,
sequence : sequence,
dataType : datatype,
value : datatype.writeValue(value)
}, function(err, metadata) {
if (err) {
emitter.error(err);
} else {
emitter.emit('complete', metadata);
}
});
return result;
};
this.append = function(path, value, valueType) {
var emitter = new Emitter();
var result = new Result(emitter);
var datatype;
try {
if (valueType) {
datatype = DataTypes.getChecked(valueType);
} else {
datatype = DataTypes.getByValue(value);
}
requireNonNull(path, "Path");
requireNonNull(value, "Value");
requireNonNull(datatype, "Data type");
} catch (e) {
emitter.error(e);
return result;
}
appendService.send({
path : path,
value : datatype.writeValue(value),
dataType : datatype
}, function(err, metadata) {
if (err) {
emitter.error(err);
} else {
emitter.emit('complete', metadata);
}
});
return result;
};
});