UNPKG

node-red-contrib-dynamic-dimmer

Version:
82 lines (81 loc) 3.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var dim_processor_1 = require("./services/dim-processor"); var node_1 = require("./models/node"); var rxjs_1 = require("rxjs"); var marshal_1 = require("@marcj/marshal"); var dtos_1 = require("./models/dtos"); var dto_converter_1 = require("./converter/dto-converter"); module.exports = function (RED) { var DynamicDimmerController = (function () { function DynamicDimmerController(config) { this.config = config; RED.nodes.createNode(this, this.config); this.node = this; this.dimProcessor = dim_processor_1.DimProcessorFactory.getProcessor({ eventInterval: this.config.eventInterval, minValue: this.config.minValue, maxValue: this.config.maxValue, step: 1.0 / this.config.steps }); this.registerInput(); } DynamicDimmerController.prototype.registerInput = function () { var _this = this; this.node.on('input', function (msg, send, done) { try { var inputMsg = (0, dto_converter_1.convertInput)(msg); var sendValue = { next: function (v) { _this.reportStatus(v); send(Object.assign(msg, { payload: v })); }, complete: function () { _this.clearStatus(); done(); } }; _this.mapCommand(inputMsg.payload).subscribe(sendValue); } catch (error) { if (error instanceof marshal_1.ValidationFailed) { done(new node_1.InputValidationError("Invalid message type provided!", error.errors).toString()); } else { done(error.toString()); } } }); }; DynamicDimmerController.prototype.reportStatus = function (dimValue) { this.node.status({ fill: "blue", shape: "dot", text: "dimming (" + dimValue + ")" }); }; DynamicDimmerController.prototype.clearStatus = function () { this.node.status({}); }; DynamicDimmerController.prototype.mapCommand = function (dimMsg) { var dimOperation$; var config = (0, dto_converter_1.convertDimConfigUpdate)(dimMsg.config); switch (dimMsg.command) { case dtos_1.DimCommand.DIM: dimOperation$ = this.dimProcessor.dim(dimMsg.target, dimMsg.start, config); break; case dtos_1.DimCommand.PAUSE: dimOperation$ = this.dimProcessor.pause(); break; case dtos_1.DimCommand.SET: dimOperation$ = this.dimProcessor.set(dimMsg.target, config); break; case dtos_1.DimCommand.RESET: dimOperation$ = this.dimProcessor.reset(config); break; default: dimOperation$ = (0, rxjs_1.empty)(); break; } return dimOperation$; }; return DynamicDimmerController; }()); RED.nodes.registerType('dynamic-dimmer', DynamicDimmerController); };