diff --git a/data/js/app.js b/data/js/app.js index 187590bb32a01c67144a666bb9c519bbd21c5dc3..3760002118be2a0c6b4a2630c665c3b0dfafd13b 100644 --- a/data/js/app.js +++ b/data/js/app.js @@ -11,6 +11,8 @@ var postValueTimer = {}; var ignoreColorChange = false; +var patternData = {}; + var ws = new ReconnectingWebSocket('ws://' + address + ':81/', ['arduino']); ws.debug = true; @@ -44,6 +46,9 @@ $(document).ready(function() { } else if (field.type == "Setting") { handleSetting(field); } + if (field.name == "pattern") { + patternData = field; + } }); $(".minicolors").minicolors({ @@ -54,6 +59,8 @@ $(document).ready(function() { inline: true }); + updateDisplayedFields(); + $("#status").html("Ready"); }) .fail(function(errorThrown) { @@ -158,7 +165,7 @@ function addSelectField(field) { select.attr("id", id); for (var i = 0; i < field.options.length; i++) { - var optionText = field.options[i]; + var optionText = field.options[i].name; var option = $("<option></option>"); option.text(optionText); option.attr("value", i); @@ -170,6 +177,9 @@ function addSelectField(field) { select.change(function() { var value = template.find("#" + id + " option:selected").index(); postValue(field.name, value); + if (field.name == "pattern") { + updateDisplayedFields(value); + } }); var previousButton = template.find(".btn-previous"); @@ -183,6 +193,9 @@ function addSelectField(field) { value = count - 1; select.val(value); postValue(field.name, value); + if (field.name == "pattern") { + updateDisplayedFields(value); + } }); nextButton.click(function() { @@ -193,6 +206,9 @@ function addSelectField(field) { value = 0; select.val(value); postValue(field.name, value); + if (field.name == "pattern") { + updateDisplayedFields(value); + } }); $("#form").append(template); @@ -389,6 +405,9 @@ function updateFieldValue(name, value) { } else if (type == "Select") { var select = group.find(".form-control"); select.val(value); + if (name == "pattern") { + updateDisplayedFields(value); + } } else if (type == "Color") { var input = group.find(".form-control"); input.val("rgb(" + value + ")"); @@ -396,7 +415,6 @@ function updateFieldValue(name, value) { } function handleSetting(field) { - console.log(field); if (field.name == "hostname") { $("#inputHostname").val(field.value); @@ -496,3 +514,58 @@ function rgbToComponents(rgb) { return components; } + +function updateDisplayedFields(pattern = null) { + + // default value + var pattern_index = patternData.value; + + if (pattern != null) { + pattern_index = pattern; + } + + this_pattern = patternData.options[pattern_index]; + + if (this_pattern.show_palette == false) { + $("#form-group-palette").addClass("hidden"); + } else { + $("#form-group-palette").removeClass("hidden"); + } + + if (this_pattern.show_speed == false) { + $("#form-group-speed").addClass("hidden"); + } else { + $("#form-group-speed").removeClass("hidden"); + } + + if (this_pattern.show_color_picker == false) { + $("#form-group-section-solidColor").addClass("hidden"); + $("#colorPaletteTemplate").addClass("hidden"); + $("#form-group-solidColor").addClass("hidden"); + } else { + $("#form-group-section-solidColor").removeClass("hidden"); + $("#colorPaletteTemplate").removeClass("hidden"); + $("#form-group-solidColor").removeClass("hidden"); + } + + if (this_pattern.show_cooling_sparking == false) { + $("#form-group-section-fire").addClass("hidden"); + $("#form-group-cooling").addClass("hidden"); + $("#form-group-sparking").addClass("hidden"); + } else { + $("#form-group-section-fire").removeClass("hidden"); + $("#form-group-cooling").removeClass("hidden"); + $("#form-group-sparking").removeClass("hidden"); + } + + if (this_pattern.show_twinkle == false) { + $("#form-group-section-twinkles").addClass("hidden"); + $("#form-group-twinkleSpeed").addClass("hidden"); + $("#form-group-twinkleDensity").addClass("hidden"); + } else { + $("#form-group-section-twinkles").removeClass("hidden"); + $("#form-group-twinkleSpeed").removeClass("hidden"); + $("#form-group-twinkleDensity").removeClass("hidden"); + } + +} \ No newline at end of file diff --git a/esp8266-fastled-iot-webserver.ino b/esp8266-fastled-iot-webserver.ino index ff2466785b0c75ca9d567b0fb4ba0d459860787b..c25356aa2af48a5254b15a52a95efb2d4d89d0a0 100644 --- a/esp8266-fastled-iot-webserver.ino +++ b/esp8266-fastled-iot-webserver.ino @@ -460,6 +460,11 @@ typedef Pattern PatternList[]; typedef struct { Pattern pattern; String name; + bool show_palette; + bool show_speed; + bool show_color_picker; + bool show_cooling_sparking; + bool show_twinkle; } PatternAndName; typedef PatternAndName PatternAndNameList[]; @@ -471,123 +476,123 @@ typedef PatternAndName PatternAndNameList[]; PatternAndNameList patterns = { // Time patterns - #if DEVICE_TYPE == 2 - { displayTimeStatic, "Time" }, - { displayTimeColorful, "Time Colorful" }, - { displayTimeGradient, "Time Gradient" }, - { displayTimeGradientLarge, "Time Gradient large" }, - { displayTimeRainbow, "Time Rainbow" }, - #endif +#if DEVICE_TYPE == 2 + { displayTimeStatic, "Time", true, true, true, true, true}, + { displayTimeColorful, "Time Colorful", true, true, true, true, true}, + { displayTimeGradient, "Time Gradient", true, true, true, true, true}, + { displayTimeGradientLarge, "Time Gradient large", true, true, true, true, true}, + { displayTimeRainbow, "Time Rainbow", true, true, true, true, true}, +#endif #if DEVICE_TYPE == 3 - { pride_Waves, "Pride Waves" }, - { pride_Rings, "Pride Rings" }, - { colorWaves_hori, "Vertical Waves" }, - { colorWaves_vert, "Color Rings" }, - { rainbow_vert, "Vertical Rainbow" }, + { pride_Waves, "Pride Waves", true, true, true, true, true}, + { pride_Rings, "Pride Rings", true, true, true, true, true}, + { colorWaves_hori, "Vertical Waves", true, true, true, true, true}, + { colorWaves_vert, "Color Rings", true, true, true, true, true}, + { rainbow_vert, "Vertical Rainbow", true, true, true, true, true}, #endif // animation patterns - { pride, "Pride" }, - { colorWaves, "Color Waves" }, - { rainbow, "Horizontal Rainbow" }, - { rainbowSolid, "Solid Rainbow" }, - { confetti, "Confetti" }, - { sinelon, "Sinelon" }, - { bpm, "Beat" }, - { juggle, "Juggle" }, - { fire, "Fire" }, - { water, "Water" }, - { strobe, "Strobe"}, - { rainbow_strobe, "Rainbow Strobe"}, - { smooth_rainbow_strobe, "Smooth Rainbow Strobe"}, + { pride, "Pride", true, true, true, true, true}, + { colorWaves, "Color Waves", true, true, true, true, true}, + { rainbow, "Horizontal Rainbow", true, true, true, true, true}, + { rainbowSolid, "Solid Rainbow", true, true, true, true, true}, + { confetti, "Confetti", true, true, true, true, true}, + { sinelon, "Sinelon", true, true, true, true, true}, + { bpm, "Beat", true, true, true, true, true}, + { juggle, "Juggle", true, true, true, true, true}, + { fire, "Fire", true, true, true, true, true}, + { water, "Water", true, true, true, true, true}, + { strobe, "Strobe", true, true, true, true, true}, + { rainbow_strobe, "Rainbow Strobe", true, true, true, true, true}, + { smooth_rainbow_strobe, "Smooth Rainbow Strobe", true, true, true, true, true}, // DigitalJohnson patterns - { rainbowRoll, "Rainbow Roll" }, - { rainbowBeat, "Rainbow Beat" }, - { randomPaletteFades, "Palette Fades" }, - { rainbowChase, "Rainbow Chase" }, - { randomDots, "Rainbow Dots" }, - { randomFades, "Rainbow Fades" }, - { policeLights, "Police Lights" }, - { glitter, "Glitter" }, - { snowFlakes, "Snow Flakes" }, - { lightning, "Lightning"}, + { rainbowRoll, "Rainbow Roll", true, true, true, true, true}, + { rainbowBeat, "Rainbow Beat", true, true, true, true, true}, + { randomPaletteFades, "Palette Fades", true, true, true, true, true}, + { rainbowChase, "Rainbow Chase", true, true, true, true, true}, + { randomDots, "Rainbow Dots", true, true, true, true, true}, + { randomFades, "Rainbow Fades", true, true, true, true, true}, + { policeLights, "Police Lights", true, true, true, true, true}, + { glitter, "Glitter", true, true, true, true, true}, + { snowFlakes, "Snow Flakes", true, true, true, true, true}, + { lightning, "Lightning", true, true, true, true, true}, // twinkle patterns - { rainbowTwinkles, "Rainbow Twinkles" }, - { snowTwinkles, "Snow Twinkles" }, - { cloudTwinkles, "Cloud Twinkles" }, - { incandescentTwinkles, "Incandescent Twinkles" }, + { rainbowTwinkles, "Rainbow Twinkles", true, true, true, true, true}, + { snowTwinkles, "Snow Twinkles", true, true, true, true, true}, + { cloudTwinkles, "Cloud Twinkles", true, true, true, true, true}, + { incandescentTwinkles, "Incandescent Twinkles", true, true, true, true, true}, // TwinkleFOX patterns - { retroC9Twinkles, "Retro C9 Twinkles" }, - { redWhiteTwinkles, "Red & White Twinkles" }, - { blueWhiteTwinkles, "Blue & White Twinkles" }, - { redGreenWhiteTwinkles, "Red, Green & White Twinkles" }, - { fairyLightTwinkles, "Fairy Light Twinkles" }, - { snow2Twinkles, "Snow 2 Twinkles" }, - { hollyTwinkles, "Holly Twinkles" }, - { iceTwinkles, "Ice Twinkles" }, - { partyTwinkles, "Party Twinkles" }, - { forestTwinkles, "Forest Twinkles" }, - { lavaTwinkles, "Lava Twinkles" }, - { fireTwinkles, "Fire Twinkles" }, - { cloud2Twinkles, "Cloud 2 Twinkles" }, - { oceanTwinkles, "Ocean Twinkles" }, + { retroC9Twinkles, "Retro C9 Twinkles", true, true, true, true, true}, + { redWhiteTwinkles, "Red & White Twinkles", true, true, true, true, true}, + { blueWhiteTwinkles, "Blue & White Twinkles", true, true, true, true, true}, + { redGreenWhiteTwinkles, "Red, Green & White Twinkles", true, true, true, true, true}, + { fairyLightTwinkles, "Fairy Light Twinkles", true, true, true, true, true}, + { snow2Twinkles, "Snow 2 Twinkles", true, true, true, true, true}, + { hollyTwinkles, "Holly Twinkles", true, true, true, true, true}, + { iceTwinkles, "Ice Twinkles", true, true, true, true, true}, + { partyTwinkles, "Party Twinkles", true, true, true, true, true}, + { forestTwinkles, "Forest Twinkles", true, true, true, true, true}, + { lavaTwinkles, "Lava Twinkles", true, true, true, true, true}, + { fireTwinkles, "Fire Twinkles", true, true, true, true, true}, + { cloud2Twinkles, "Cloud 2 Twinkles", true, true, true, true, true}, + { oceanTwinkles, "Ocean Twinkles", true, true, true, true, true}, #ifndef REMOVE_VISUALIZATION // Visualization Patterns -#if DEVICE_TYPE == 1 // Matrix - { RainbowVisualizer, "Rainbow Visualization"}, - { SingleColorVisualizer, "Single Color Visualization"}, - { RainbowVisualizerDoubleSided, "Rainbow Visualization Outside"}, - { SingleColorVisualizerDoubleSided, "Single Color Visualization Outside"}, +#if DEVICE_TYPE == 1 // Matrix + { RainbowVisualizer, "Rainbow Visualization", true, true, true, true, true}, + { SingleColorVisualizer, "Single Color Visualization", true, true, true, true, true}, + { RainbowVisualizerDoubleSided, "Rainbow Visualization Outside", true, true, true, true, true}, + { SingleColorVisualizerDoubleSided, "Single Color Visualization Outside" true, true, true, true, true}, #ifdef AddLogoVisualizers - #if LENGTH == 32 && HEIGHT == 8 // Logo Visualizers - { HbzVisualizerRainbow, "Hbz Visualizer Spectrum"}, - { HbzVisualizerWhite, "Hbz Visualizer"}, + #if LENGTH == 32 && HEIGHT == 8 // Logo Visualizers + { HbzVisualizerRainbow, "Hbz Visualizer Spectrum", true, true, true, true, true}, + { HbzVisualizerWhite, "Hbz Visualizer", true, true, true, true, true}, #endif #endif #endif #ifdef DEVICE_TYPE // Generic Visualization Patterns - { vuMeterSolid, "Solid Volume Visualizer"}, - { vuMeterStaticRainbow, "Static Rainbow Volume Visualizer"}, - { vuMeterRainbow, "Flowing Rainbow Volume Visualizer"}, - { vuMeterTriColor, "Tri-Color Volume Visualizer"}, - { RefreshingVisualizer, "Wave Visualizer"}, - { CentralVisualizer, "Center Visualizer"}, - { SolidColorDualTone, "Solid-Color Pair Bullet Visualizer"}, - { SolidColorComplementary, "Solid-Color Complementary Bullet Visualizer"}, - { BluePurpleBullets, "Blue/Purple Bullet Visualizer"}, - { BulletVisualizer, "Beat-Bullet Visualization"}, - //{ RainbowPeaks, "Rainbow Peak Visualizer"}, // broken - { RainbowBassRings, "Bass Ring Visualizer"}, - { RainbowKickRings, "Kick Ring Visualizer"}, - //{ TrailingBulletsVisualizer, "Trailing Bullet Visualization"}, // obsolete - //{ BrightnessVisualizer, "Brightness Visualizer"}, // broken - { RainbowBandVisualizer, "Rainbow Band Visualizer"}, - { SingleColorBandVisualizer, "Single Color Band Visualizer"}, + { vuMeterSolid, "Solid Volume Visualizer", true, true, true, true, true}, + { vuMeterStaticRainbow, "Static Rainbow Volume Visualizer", true, true, true, true, true}, + { vuMeterRainbow, "Flowing Rainbow Volume Visualizer", true, true, true, true, true}, + { vuMeterTriColor, "Tri-Color Volume Visualizer", true, true, true, true, true}, + { RefreshingVisualizer, "Wave Visualizer", true, true, true, true, true}, + { CentralVisualizer, "Center Visualizer", true, true, true, true, true}, + { SolidColorDualTone, "Solid-Color Pair Bullet Visualizer", true, true, true, true, true}, + { SolidColorComplementary, "Solid-Color Complementary Bullet Visualizer", true, true, true, true, true}, + { BluePurpleBullets, "Blue/Purple Bullet Visualizer", true, true, true, true, true}, + { BulletVisualizer, "Beat-Bullet Visualization", true, true, true, true, true}, + //{ RainbowPeaks, "Rainbow Peak Visualizer"}, // broken + { RainbowBassRings, "Bass Ring Visualizer", true, true, true, true, true}, + { RainbowKickRings, "Kick Ring Visualizer", true, true, true, true, true}, + //{ TrailingBulletsVisualizer, "Trailing Bullet Visualization"}, // obsolete + //{ BrightnessVisualizer, "Brightness Visualizer"}, // broken + { RainbowBandVisualizer, "Rainbow Band Visualizer", true, true, true, true, true}, + { SingleColorBandVisualizer, "Single Color Band Visualizer", true, true, true, true, true}, #endif #endif #if DEVICE_TYPE == 4 - { NanoleafWaves, "Nanoleaf Wave Visualizer" }, - { NanoleafBand, "Nanoleaf Rainbow Band Visualizer" }, - { NanoleafSingleBand, "Nanoleaf Solid Color Band Visualizer" }, + { NanoleafWaves, "Nanoleaf Wave Visualizer", true, true, true, true, true}, + { NanoleafBand, "Nanoleaf Rainbow Band Visualizer", true, true, true, true, true}, + { NanoleafSingleBand, "Nanoleaf Solid Color Band Visualizer", true, true, true, true, true}, #endif #ifdef ENABLE_SERIAL_AMBILIGHT - { ambilight, "⋆Serial Ambilight"}, + { ambilight, "⋆Serial Ambilight", true, true, true, true, true}, #endif // ENABLE_SERIAL_AMBILIGHT #ifdef SOUND_SENSOR_SUPPORT - { soundReactive, "Sound Reactive" }, + { soundReactive, "Sound Reactive", true, true, true, true, true}, #endif - { showSolidColor, "Solid Color" } + { showSolidColor, "Solid Color", true, true, true, true, true} };