diff --git a/assets/webconfig/content/colors.html b/assets/webconfig/content/colors.html index 9e699102..81af1370 100644 --- a/assets/webconfig/content/colors.html +++ b/assets/webconfig/content/colors.html @@ -2,7 +2,7 @@
-

Image Processing

+

Color calibration, smoothing (color transistions) and detection of blackbars.

diff --git a/assets/webconfig/content/dashboard.html b/assets/webconfig/content/dashboard.html index 89425f5f..7eef11df 100644 --- a/assets/webconfig/content/dashboard.html +++ b/assets/webconfig/content/dashboard.html @@ -1,7 +1,7 @@
-

Dashboard

+

The dashboard give you a quick overview about the status of Hyperion and show you the latest news of the Hyperion Blog.

diff --git a/assets/webconfig/content/effects.html b/assets/webconfig/content/effects.html index 2322c0e0..019d17f9 100644 --- a/assets/webconfig/content/effects.html +++ b/assets/webconfig/content/effects.html @@ -1,7 +1,7 @@
-

Effects

+

Setting up a booteffect/color that is visible after Hyperion startup. Configure a background effect/color which is active, when all capture sources are disabled (also temporarily via Kodi Watch)

diff --git a/assets/webconfig/content/effects_configurator.html b/assets/webconfig/content/effects_configurator.html index 10bb0700..998d7248 100644 --- a/assets/webconfig/content/effects_configurator.html +++ b/assets/webconfig/content/effects_configurator.html @@ -1,7 +1,7 @@
-

Effects Configurator

+

Create out of the base effects new effects that are tuned to your liking. Depending on Effect there are options like color, speed, direction and more available.

@@ -28,6 +28,13 @@
+
+
+ + +
LEDs
+
+
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+ +
+ +
%
+
+
+
+ +
+ +
%
+
+
+
+
+
+
+
+
-
+
- just a reminder ... this are the needed form elements: -
-led count links
-led count rechts
-led count oben
-led count unten rechts
-led count unten links
-start
-
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
LEDs
+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+
+
+ +
+
+

This textfield shows by default your current loaded layout and will be overwritten if you generate a new one above. Optional you could perform further edits.

+

Don't forget to save!

+ +
+
-
-
-
-
-

Generated Configuration

-
-
-
- - +
+
+

LED Layout preview

+
+
+
No preview requested
+
+
+
+
+
- -
-
-
- +
diff --git a/assets/webconfig/content/network.html b/assets/webconfig/content/network.html index 09cb1103..8a813b07 100644 --- a/assets/webconfig/content/network.html +++ b/assets/webconfig/content/network.html @@ -2,7 +2,7 @@
-

Network Services

+

All network based settings could you find here.

diff --git a/assets/webconfig/content/remote.html b/assets/webconfig/content/remote.html index b7ba743c..baf86305 100644 --- a/assets/webconfig/content/remote.html +++ b/assets/webconfig/content/remote.html @@ -1,5 +1,5 @@
-

Remote Control

+

Set an effect/color. You could also select a source manually. The Components control give the opportunity to enable/disable components of Hyprion during runtime. All changes you made here are lost after a restart.

diff --git a/assets/webconfig/content/support.html b/assets/webconfig/content/support.html index 3ccf7255..187e85eb 100644 --- a/assets/webconfig/content/support.html +++ b/assets/webconfig/content/support.html @@ -1,7 +1,7 @@
-

Support Hyperion

+

Hyperion is a free non-profit software. A small team is working on it and this is why we need your steady support.

diff --git a/assets/webconfig/content/update.html b/assets/webconfig/content/update.html index 80df218d..c85ff832 100644 --- a/assets/webconfig/content/update.html +++ b/assets/webconfig/content/update.html @@ -1,7 +1,7 @@
-

Update

+

This page gives you an overview of all Hyperion versions available. On top you could update or downgrade your version of Hyperion whenever you want. Sorted from newest to oldest

diff --git a/assets/webconfig/css/hyperion.css b/assets/webconfig/css/hyperion.css index 271c1277..22e66f9c 100644 --- a/assets/webconfig/css/hyperion.css +++ b/assets/webconfig/css/hyperion.css @@ -17,9 +17,12 @@ table.borderless td,table.borderless th{border: none !important;} .sidebar{margin-top:61px;padding-top:20px;} .dropdown{font-size:18px;} @media (max-width: 767px) {.sidebar{margin-top:0px;}} +.page-header{margin-top:15px;} /*Panels*/ .panel-heading{font-size:18px;} +.headcollapse{cursor:pointer;} +.headcollapse a:hover{text-decoration:none;} /*Dashboard*/ .component-on{color:green;} diff --git a/assets/webconfig/index.html b/assets/webconfig/index.html index 0c54f55d..86f52f61 100644 --- a/assets/webconfig/index.html +++ b/assets/webconfig/index.html @@ -5,7 +5,7 @@ - + Hyperion - WebUI diff --git a/assets/webconfig/js/content_effectsconfigurator.js b/assets/webconfig/js/content_effectsconfigurator.js index b47445e8..634aec91 100644 --- a/assets/webconfig/js/content_effectsconfigurator.js +++ b/assets/webconfig/js/content_effectsconfigurator.js @@ -1,3 +1,52 @@ + JSONEditor.defaults.editors.colorPicker = JSONEditor.defaults.editors.string.extend({ + + getValue: function() { + color = $(this.input).data('colorpicker').color.toRGB(); + return [color.r, color.g, color.b]; + }, + + setValue: function(val) { + function rgb2hex(rgb){ + return "#" + + ("0" + parseInt(rgb[0],10).toString(16)).slice(-2) + + ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + + ("0" + parseInt(rgb[2],10).toString(16)).slice(-2); + } + + $(this.input).colorpicker('setValue', rgb2hex(val)); + }, + + build: function() { + this._super(); + var myinput = this + $(this.input).colorpicker({ + format: 'rgb', + customClass: 'colorpicker-2x', + sliders: { + saturation: { + maxLeft: 200, + maxTop: 200 + }, + hue: { + maxTop: 200 + }, + }, + + }) + //$(this.input).colorpicker().on('changeColor', function(e) { + //$(this.input).trigger("change"); + //}); + + } + }); + + JSONEditor.defaults.resolvers.unshift(function(schema) { + if(schema.type === "array" && schema.format === "colorpicker") { + return "colorPicker"; + } + + }); + $(hyperion).one("cmd-config-getschema", function(event) { effects = parsedConfSchemaJSON.properties.effectSchemas.internal EffectsHtml = ""; @@ -83,7 +132,25 @@ $(hyperion).one("cmd-config-getschema", function(event) { $('#btn_cont_test').off().on('click',function() { toggleClass('#btn_cont_test', "btn-success", "btn-danger"); }); - + +// Delete effect + delList=parsedServerInfoJSON.info.effects + var EffectHtml + + for(var idx=0; idx'+delList[idx].name+''; + } + } + $("#effectsdellist").html(EffectHtml); + + $('#btn_delete').off().on('click',function() { + var name = $("#effectsdellist").val(); + requestDeleteEffect(name); + }); + $(document).ready( function() { requestServerConfigSchema(); }); diff --git a/assets/webconfig/js/content_leds.js b/assets/webconfig/js/content_leds.js index b8dd550e..e2543fa4 100644 --- a/assets/webconfig/js/content_leds.js +++ b/assets/webconfig/js/content_leds.js @@ -1,5 +1,6 @@ var ledsCustomCfgInitialized = false; +var finalLedArray = []; function get_hue_lights(){ $.ajax({ @@ -16,8 +17,284 @@ function get_hue_lights(){ }); } +function validateText(){ + e = isJsonString($("#ledconfig").val()); + + if (e.length != 0){ + showInfoDialog("error", "Validation failed!", e); + return false + } + return true +} + +function createLedPreview(leds, origin){ + + if (origin == "classic"){ + $('#previewcreator').html('
Created from: Classic Layout (LED Frame)
'); + $('#leds_preview').css("padding-top", "56.25%"); + } + else if(origin == "text"){ + $('#previewcreator').html('
Created from: Textfield
'); + $('#leds_preview').css("padding-top", "56.25%"); + } + else if(origin == "matrix"){ + $('#previewcreator').html('
Created from: Matrix Layout(LED wall)
'); + $('#leds_preview').css("padding-top", "100%"); + } + + $('#previewledcount').html('
Total LED count: '+leds.length+'
'); + + $('.st_helper').css("border", "8px solid grey"); + + canvas_height = $('#leds_preview').innerHeight(); + canvas_width = $('#leds_preview').innerWidth(); + + leds_html = ""; + for(var idx=0; idx'+idx+'
'; + } + $('#leds_preview').html(leds_html); + $('#ledc_0').css({"background-color":"black","z-index":"10"}); + $('#ledc_1').css({"background-color":"grey","z-index":"10"}); + $('#ledc_2').css({"background-color":"#A9A9A9","z-index":"10"}); +} + +function createClassicLeds(){ + //get values + var ledsTop = parseInt($("#ip_cl_ledstop").val()); + var ledsBottom = parseInt($("#ip_cl_ledsbottom").val()); + var ledsLeft = parseInt($("#ip_cl_ledsleft").val()); + var ledsRight = parseInt($("#ip_cl_ledsright").val()); + var ledsGlength = parseInt($("#ip_cl_ledsglength").val()); + var ledsGPos = parseInt($("#ip_cl_ledsgpos").val()); + var position = parseInt($("#ip_cl_position").val()); + var reverse = $("#ip_cl_reverse").is(":checked"); + var edgeGap = 0.1 + + //advanced values + var rawledsVDepth = parseInt($("#ip_cl_ledsvdepth").val()); + var rawledsHDepth = parseInt($("#ip_cl_ledshdepth").val()); + + //helper + var ledsVDepth = rawledsVDepth / 100; + var ledsHDepth = rawledsHDepth / 100; + var min = 0.0 + edgeGap; + var max = 1.0 - edgeGap; + var ledArray = []; + + createLeftLeds(createBottomLeds(createRightLeds(createTopLeds()))); + + if(ledsGlength != "0" && validateGap()){ + ledArray.splice(ledsGPos, ledsGlength); + } + + if (position != "0"){ + rotateArray(ledArray, position); + } + + if (reverse) + ledArray.reverse(); + + createLedPreview(ledArray, 'classic'); + createFinalArray(ledArray); + + function createFinalArray(array){ + for(var i = 0; i ledArray.length){ + showInfoDialog('error','GAP LOST IN SPACE!','You moved the gap out of your TV frame, lower the gap length or position and try again!'); + return false + } + return true + } + + function rotateArray(array, times){ + if (times > "0"){ + while( times-- ){ + array.push(array.shift()) + } + return array; + } + else + { + while( times++ ){ + array.unshift(array.pop()) + } + return array; + } + } + + function createLedArray(hmin, hmax, vmin, vmax){ + ledArray.push( { "hscan" : { "minimum" : hmin, "maximum" : hmax }, "vscan": { "minimum": vmin, "maximum": vmax }} ); + } + + function createTopLeds(){ + vmin=0.0; + vmax=vmin+ledsHDepth; + for (var i = 0; i0; i--){ + step = 1/ledsLeft; + factor = i/ledsLeft; + vmin=factor-step; + vmax=factor; + createLedArray(hmin, hmax, vmin, vmax); + } + } + + function createRightLeds(){ + hmax=1.0; + hmin=hmax-ledsVDepth; + for (var i = 0; i0; i--){ + step = 1/ledsBottom; + factor = i/ledsBottom; + hmin=factor-step; + hmax=factor; + createLedArray(hmin, hmax, vmin, vmax); + } + } +} + +function createMatrixLeds(){ +// Big thank you to RanzQ (Juha Rantanen) from Github for this script +// https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js + + //get values + var width = parseInt($("#ip_ma_ledshoriz").val()); + var height = parseInt($("#ip_ma_ledsvert").val()); + var cabling = $("#ip_ma_cabling").val(); + //var order = $("#ip_ma_order").val(); + var start = $("#ip_ma_start").val(); + + var parallel = false + var index = 0 + var leds = [] + var hblock = 1.0 / width + var vblock = 1.0 / height + + if (cabling == "parallel"){ + parallel = true + } + +/** + * Adds led to the hyperion config led array + * @param {Number} index Index of the led + * @param {Number} x Horizontal position in matrix + * @param {Number} y Vertical position in matrix + */ + function addLed (index, x, y) { + var hscanMin = x * hblock + var hscanMax = (x + 1) * hblock + var vscanMin = y * vblock + var vscanMax = (y + 1) * vblock + + leds.push({ + index: index, + hscan: { + minimum: hscanMin, + maximum: hscanMax + }, + vscan: { + minimum: vscanMin, + maximum: vscanMax + } + }) + } + + var startYX = start.split('-') + var startX = startYX[1] === 'right' ? width - 1 : 0 + var startY = startYX[0] === 'bottom' ? height - 1 : 0 + var endX = startX === 0 ? width - 1 : 0 + var endY = startY === 0 ? height - 1 : 0 + var forward = startX < endX + + var downward = startY < endY + + var x, y + + for (y = startY; downward && y <= endY || !downward && y >= endY; y += downward ? 1 : -1) { + for (x = startX; forward && x <= endX || !forward && x >= endX; x += forward ? 1 : -1) { + addLed(index, x, y) + index++ + } + if (!parallel) { + forward = !forward + var tmp = startX + startX = endX + endX = tmp + } + } + + finalLedArray = leds + createLedPreview(leds, 'matrix'); +} $(document).ready(function() { + //------------------------------------------------------------------- + $('.ledCLconstr').bind("change", function() { + createClassicLeds(); + }); + + $('.ledMAconstr').bind("change", function() { + createMatrixLeds(); + }); + + $('#btn_cl_generate').off().on("click", function() { + if (finalLedArray != ""){ + $("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t")); + $('#collapse1').collapse('hide') + $('#collapse4').collapse('show'); + } + }); + + $('#btn_ma_generate').off().on("click", function() { + if (finalLedArray != ""){ + $("#ledconfig").text(JSON.stringify(finalLedArray, null, "\t")); + $('#collapse2').collapse('hide') + $('#collapse4').collapse('show'); + } + }); + // ------------------------------------------------------------------ $(hyperion).on("cmd-ledcolors-ledstream-update",function(event){ if ($("#leddevices").length == 0) @@ -80,7 +357,7 @@ $(document).ready(function() { leds_html += '
'+led.index+'
'; } $('#leds_canvas').html(leds_html); - $('#led_0').css("border","2px dotted red"); + $('#led_0').css({"z-index":"10"}); }); // ------------------------------------------------------------------ @@ -109,15 +386,13 @@ $(document).ready(function() { }); // ------------------------------------------------------------------ - $("#leds_custom_check").off().on("click", function() { - e = isJsonString($("#ledconfig").val()); - - if (e.length == 0) - showInfoDialog("success", "Validation success", "Your config is valid!"); - else - showInfoDialog("error", "Validation failed!", e); + $("#leds_custom_updsim").off().on("click", function() { + if (validateText()){ + string = $("#ledconfig").val(); + createLedPreview(JSON.parse(string), 'text'); + } }); - + // ------------------------------------------------------------------ $("#leds_custom_save").off().on("click", function() { diff --git a/assets/webconfig/js/hyperion.js b/assets/webconfig/js/hyperion.js index b298bd80..74da85c8 100644 --- a/assets/webconfig/js/hyperion.js +++ b/assets/webconfig/js/hyperion.js @@ -213,3 +213,7 @@ function requestWriteEffect(effectName,effectPy,effectArgs) function requestTestEffect(effectName,effectPy,effectArgs) { websocket.send('{"command":"effect", "tan":'+wsTan+',"effect":{"name":"'+effectName+'", "args":'+effectArgs+'},"priority":1, "pythonScript":"'+effectPy+'"}'); } + +function requestDeleteEffect(effectName) { + websocket.send('{"command":"delete-effect","name":"'+effectName+'"}'); +} diff --git a/assets/webconfig/lang/de.json b/assets/webconfig/lang/de.json index 016fb3b8..2e13e78e 100644 --- a/assets/webconfig/lang/de.json +++ b/assets/webconfig/lang/de.json @@ -54,8 +54,41 @@ "conf_leds_contr_label_contrtype" : "Steuerungstyp:", "conf_leds_layout_frame" : "Klassisches Layout (Rahmen)", "conf_leds_layout_matrix" : "Matrix Layout (LED Wand)", - "conf_leds_layout_generatedconf" : "Generierte Konfiguration", - "conf_leds_layout_button_validateconf" : "Überprüfe Syntax", + "conf_leds_layout_generatedconf" : "Generierte/Aktuelle Konfiguration", + "conf_leds_layout_button_savelay" : "Speichere Layout", + "conf_leds_layout_button_updsim" : "Aktualisiere Vorschau", + "conf_leds_layout_peview" : "LED Layout Vorschau", + "conf_leds_layout_advanced" : "Erweiterte Optionen", + "conf_leds_layout_preview_originCL" : "Erstellt von: Klassisches Layout (Rahmen)", + "conf_leds_layout_preview_originTEXT" : "Erstellt von: Textfeld", + "conf_leds_layout_preview_originMA" : "Erstellt von: Matrix Layout (LED Wand)", + "conf_leds_layout_preview_empty" : "Es wurde keine Vorschau angefordert", + "conf_leds_layout_cl_top" : "Oben", + "conf_leds_layout_cl_bottom" : "Unten", + "conf_leds_layout_cl_left" : "Links", + "conf_leds_layout_cl_right" : "Rechts", + "conf_leds_layout_cl_gaglength" : "Lückenlänge", + "conf_leds_layout_cl_gappos" : "Lückenposition", + "conf_leds_layout_cl_inppos" : "Einspeisepunkt", + "conf_leds_layout_cl_reversdir" : "Richtung umkehren", + "conf_leds_layout_cl_hleddepth" : "Horizontale LED Tiefe", + "conf_leds_layout_cl_vleddepth" : "Vertikale LED Tiefe", + "conf_leds_layout_cl_generate" : "Generiere Konfiguartion", + "conf_leds_layout_ma_horiz" : "Horizontal", + "conf_leds_layout_ma_vert" : "Vertical", + "conf_leds_layout_ma_cabling" : "Verkabelung", + "conf_leds_layout_ma_optsnake" : "Schlange", + "conf_leds_layout_ma_optparallel" : "Parallel", + "conf_leds_layout_ma_order" : "Reihenfolge", + "conf_leds_layout_ma_opthoriz" : "Horizontal", + "conf_leds_layout_ma_optvert" : "Vertikal", + "conf_leds_layout_ma_position" : "Einpeisung", + "conf_leds_layout_ma_opttopleft" : "Oben links", + "conf_leds_layout_ma_opttopright" : "Oben rechts", + "conf_leds_layout_ma_optbottomleft" : "Unten links", + "conf_leds_layout_ma_optbottomright" : "Unten rechts", + "conf_leds_layout_textf1" : "Das Textfeld zeigt dir dein aktuell geladenes Layout, sofern du kein neues Layout mit den Optionen oben erstellt hast. Optional kann man die Werte hier weiter bearbeiten.", + "conf_leds_layout_textf2" : "Vergiss nicht zu speichern!", "conf_leds_test_button_toggleleds" : "LEDs", "conf_leds_test_button_togglelednumber" : "LED Nummern", "conf_leds_test_button_toggleliveleds" : "LED Echtzeitansicht", @@ -89,6 +122,8 @@ "effectsconfigurator_button_starttest" : "Starte Effekttest", "effectsconfigurator_button_stoptest" : "Stoppe Effekttest", "effectsconfigurator_button_conttest" : "Fortlaufender Test", + "effectsconfigurator_label_deleffect" : "Effekt entfernen:", + "effectsconfigurator_button_deleffect" : "Effekt entfernen", "support_label_title" : "Unterstütze Hyperion", "support_label_intro" : "Hyperion ist ein kostenloses Open Source Projekt und ein kleines Team arbeitet an seiner Weiterentwicklung. Darum benötigen wir DEINE Unterstützung um den Ball weiter rollen zu lassen und um weiter in bessere Infrastruktur und Weiterentwicklung investieren zu können.", "support_label_spreadtheword" : "Weitersagen!", diff --git a/effects/schema/fade.schema.json b/effects/schema/fade.schema.json index 7c61dc22..b8adf146 100644 --- a/effects/schema/fade.schema.json +++ b/effects/schema/fade.schema.json @@ -1,42 +1,45 @@ { - "type":"object", - "script" : "fade.py", - "title":"Fade", - "required":true, - "properties":{ - "fade-time": { - "type": "number", - "title":"Fade Time", - "default": 5.0, - "minimum" : 0.1, - "propertyOrder" : 1 - }, - "color-start": { - "type": "array", - "title":"Color Start", - "default": [255,174,11], - "items" : { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "minItems": 3, - "maxItems": 3, - "propertyOrder" : 2 - }, - "color-end": { - "type": "array", - "title":"Color End", - "default": [100,100,100], - "items" : { - "type": "integer", - "minimum": 0, - "maximum": 255 - }, - "minItems": 3, - "maxItems": 3, - "propertyOrder" : 3 - } - }, - "additionalProperties": false + "type":"object", + "script" : "fade.py", + "title":"Fade", + "required":true, + "properties":{ + "fade-time": { + "type": "number", + "title":"Fade Time", + "default": 5.0, + "minimum" : 0.1, + "propertyOrder" : 1 + }, + "color-start": { + "type": "array", + "title":"Color Start", + "format":"colorpicker", + "default": [255,174,11], + "items" : { + "type": "integer", + "minimum": 0, + "maximum": 255 + + }, + "minItems": 3, + "maxItems": 3, + "propertyOrder" : 2 + }, + "color-end": { + "type": "array", + "title":"Color End", + "format":"colorpicker", + "default": [100,100,100], + "items" : { + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "minItems": 3, + "maxItems": 3, + "propertyOrder" : 3 + } + }, + "additionalProperties": false } diff --git a/effects/schema/knight-rider.schema.json b/effects/schema/knight-rider.schema.json index ed13a031..edee31de 100644 --- a/effects/schema/knight-rider.schema.json +++ b/effects/schema/knight-rider.schema.json @@ -21,6 +21,7 @@ "color": { "type": "array", "title":"Color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", diff --git a/effects/schema/mood-blobs.schema.json b/effects/schema/mood-blobs.schema.json index 173ed075..884d35f7 100644 --- a/effects/schema/mood-blobs.schema.json +++ b/effects/schema/mood-blobs.schema.json @@ -7,6 +7,7 @@ "color": { "type": "array", "title":"Color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", diff --git a/effects/schema/police.schema.json b/effects/schema/police.schema.json index 1b9319c9..aa516232 100644 --- a/effects/schema/police.schema.json +++ b/effects/schema/police.schema.json @@ -7,6 +7,7 @@ "color_one": { "type": "array", "title":"Color one", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", @@ -20,6 +21,7 @@ "color_two": { "type": "array", "title":"Color two", + "format":"colorpicker", "default": [0,0,255], "items" : { "type": "integer", diff --git a/effects/schema/shutdown.schema.json b/effects/schema/shutdown.schema.json index 0c975d93..3b4998af 100644 --- a/effects/schema/shutdown.schema.json +++ b/effects/schema/shutdown.schema.json @@ -14,6 +14,7 @@ "alarm-color": { "type": "array", "title":"Alarm color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", diff --git a/effects/schema/snake.schema.json b/effects/schema/snake.schema.json index 1117c487..8f567619 100644 --- a/effects/schema/snake.schema.json +++ b/effects/schema/snake.schema.json @@ -7,6 +7,7 @@ "color": { "type": "array", "title":"Color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", diff --git a/effects/schema/sparks.schema.json b/effects/schema/sparks.schema.json index 6115a50e..835f0cad 100644 --- a/effects/schema/sparks.schema.json +++ b/effects/schema/sparks.schema.json @@ -4,9 +4,10 @@ "title":"Sparks", "required":true, "properties":{ - "color_one": { + "color": { "type": "array", "title":"Color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer", diff --git a/effects/schema/strobe.schema.json b/effects/schema/strobe.schema.json index ec05cce9..984282ab 100644 --- a/effects/schema/strobe.schema.json +++ b/effects/schema/strobe.schema.json @@ -7,6 +7,7 @@ "color": { "type": "array", "title":"Color", + "format":"colorpicker", "default": [255,0,0], "items" : { "type": "integer",