Files
Zos/Skills/@be/node_modules/node-hue-api/hue-api/scene.js

85 lines
1.7 KiB
JavaScript

"use strict";
var utils = require("./utils")
, Scene = function () {
}
;
module.exports.create = function () {
var scene
, arg
;
if (arguments.length == 0) {
scene = new Scene();
} else {
arg = arguments[0];
if (arg instanceof Scene) {
scene = arg;
} else {
scene = new Scene();
// try to populate the new scene using any values that match scene properties
if (arg.name) {
scene.withName(arg.name);
}
if (arg.lights) {
scene.withLights(arg.lights);
}
if (arg.transitionTime) {
scene.withTransitionTime(arg.transitionTime);
}
if (arg.data || arg.appData) {
scene.withAppData(arg.data || arg.appData);
}
if (arg.picture) {
scene.withPicture(arg.picture);
}
}
}
return scene;
};
Scene.prototype.withName = function(name) {
utils.combine(this, {name: utils.getStringValue(name, 32)});
return this;
};
Scene.prototype.withLights = function(lightIds) {
var ids;
if (Array.isArray(lightIds)) {
ids = lightIds;
} else {
ids = Array.prototype.slice.call(arguments);
}
utils.combine(this, {lights: utils.createStringValueArray(ids)});
return this;
};
Scene.prototype.withTransitionTime = function(milliseconds) {
utils.combine(this, {transitiontime: milliseconds});
return this;
};
Scene.prototype.withAppData = function(data) {
utils.combine(this, {appdata: {data: data, version: 1}});
return this;
};
Scene.prototype.withPicture = function(picture) {
utils.combine(this, {picture: picture});
return this;
};
Scene.prototype.withRecycle = function(recycle) {
utils.combine(this, {"recycle": recycle});
return this;
};