holly-sdk
Version:
More details coming soon.
125 lines (95 loc) • 3.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DeviceManager = undefined;
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _got = require("got");
var _got2 = _interopRequireDefault(_got);
var _device = require("./model/device");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var DeviceManager = exports.DeviceManager = function () {
function DeviceManager(app, devices) {
_classCallCheck(this, DeviceManager);
this.app = app;
this.devices = devices;
}
// Initialiser for DeviceManager
_createClass(DeviceManager, [{
key: "getLinkedDevicesByReferenceName",
// Gets all devices that are liked by reference name
value: function getLinkedDevicesByReferenceName(referenceName) {
var _this = this;
var linkedDevices = this.app.devices.filter(function (device) {
return device.reference_device_name === referenceName;
});
return linkedDevices.map(function (device) {
return _this.getDeviceById(device.device_id);
});
}
// Gets a single device that fits the specified name
}, {
key: "getDeviceByName",
value: function getDeviceByName(name) {
return this.devices.find(function (device) {
return device.name === name;
});
}
// Gets a single device that fits the specified id
}, {
key: "getDeviceById",
value: function getDeviceById(id) {
return this.devices.find(function (device) {
return device.id === id;
});
}
// Returns all devices that linked by capabilites
// Takes an array of capabilities
}, {
key: "getLinkedDevicesByCapabilities",
value: function getLinkedDevicesByCapabilities(capabilities) {
var _this2 = this;
var devices = this.devices.filter(function (device) {
return compare(capabilities, device.capabilities);
});
var foundDevices = [];
devices.forEach(function (device) {
_this2.app.devices.forEach(function (dev) {
if (dev.device_id === device.id) {
foundDevices.push(device);
}
});
});
return foundDevices;
}
}], [{
key: "create",
value: function create(app) {
return app.api.devices.getAll(true).then(function (res) {
return res.map(function (device) {
return new _device.Device(app, device);
});
}).then(function (devices) {
return new DeviceManager(app, devices);
});
}
}]);
return DeviceManager;
}();
// Compare two arrays
var compare = function compare(findables, object) {
// Get all values in object
var values = [];
for (var i in object) {
values.push(object[i]);
}
// For each findable
for (var _i = 0; _i < findables.length; _i++) {
// Is it in the values?
if (values.indexOf(findables[_i]) == -1) {
return false;
}
}
return true;
};