diff --git a/src/UiItems.js b/src/UiItems.js index f65f4b9..0f49157 100644 --- a/src/UiItems.js +++ b/src/UiItems.js @@ -3,6 +3,7 @@ import React from "react"; import Toggle from "material-ui/Toggle"; import SelectField from 'material-ui/SelectField'; import MenuItem from 'material-ui/MenuItem'; +import Slider from 'material-ui/Slider'; import Config from "./config"; import R from "ramda"; @@ -72,3 +73,19 @@ export const dropDown = (state: State, props: ControlUI) => ( {R.values(R.mapObjIndexed(dropDownItem(props.topic), props.options))} ); + +const onSliderChange = (state: State, props: ControlUI) => + (event, value) => { + if (state.mqtt != null) { + state.mqtt.publish(Config.topics[props.topic].command, value.toString()); + } + }; + +export const slider = (state: State, props: ControlUI) => ( + +); diff --git a/src/config.js b/src/config.js index ad23351..1d077f5 100644 --- a/src/config.js +++ b/src/config.js @@ -32,6 +32,13 @@ const config : Config = { values: { off: "blackout", yellow: "yellow", purple: "purple", blue: "blue", green: "green", red: "red", random: "random", cycle: "cycle-random" } + }, + onkyo_volume: { + state: "/service/onkyo/status/volume", + command: "/service/onkyo/set/volume", + value: 0, + values: {}, + parseState: msg => JSON.parse(msg.toString()).val } }, controls: { @@ -109,6 +116,20 @@ const config : Config = { enableCondition: val => val != "off" } ] + }, + onkyo: { + name: "Onkyo", + position: [350, 350], + icon: "", + ui: [ + { + type: "slider", + text: "Volume", + topic: "onkyo_volume", + min: 0, + max: 100 + } + ] } } }; diff --git a/types/types.js b/types/types.js index f2afd18..f0eb277 100644 --- a/types/types.js +++ b/types/types.js @@ -10,7 +10,7 @@ declare type Topic = { declare type Topics = Map; declare type ControlUI = { - type: "toggle" | "dropDown", + type: "toggle" | "dropDown" | "slider", text: string, topic: string, @@ -22,7 +22,12 @@ declare type ControlUI = { toggled?: (val: any) => boolean, // DROPDOWN optional properties - options?: Map //options for dropDown + options?: Map, //options for dropDown + + // SLIDER optional properties + min?: number, + max?: number, + step?: number }; declare type Control = {