From 787797232bf05148e02455192335be23d51b96f8 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan@faked.org>
Date: Wed, 7 Jun 2023 00:44:28 +0200
Subject: [PATCH] hide UI elements not needed for current color mode

---
 data_src/index.html |  8 ++++----
 data_src/main.js    | 17 ++++++++++++++---
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/data_src/index.html b/data_src/index.html
index 2f81ac2..523b36a 100644
--- a/data_src/index.html
+++ b/data_src/index.html
@@ -36,22 +36,22 @@
           <!-- color mode -->
           <div class="row mb-3 px-3">
             <div class="btn-group" role="group">
-              <input type="radio" class="btn-check btnColorMode" id="btnColorMode_0" data-mode="0" autocomplete="off" disabled>
+              <input type="radio" class="btn-check btnColorMode" id="btnColorMode_0" data-mode="0" data-control="#collapseColorpicker" autocomplete="off" disabled>
               <label class="btn btn-outline-primary" for="btnColorMode_0">Static</label>
             
               <input type="radio" class="btn-check btnColorMode" id="btnColorMode_1" data-mode="1" autocomplete="off" disabled>
               <label class="btn btn-outline-primary" for="btnColorMode_1">Simple</label>
             
-              <input type="radio" class="btn-check btnColorMode" id="btnColorMode_2" data-mode="2" autocomplete="off" disabled>
+              <input type="radio" class="btn-check btnColorMode" id="btnColorMode_2" data-mode="2" data-control="#collapseDecay" autocomplete="off" disabled>
               <label class="btn btn-outline-primary" for="btnColorMode_2">Dynamic</label>
             </div>
           </div>
           <!-- // color mode -->
 
-          <div class="row mb-2 px-3">
+          <div class="row mb-2 px-3 collapse collapseSettings" id="collapseColorpicker">
             <div id="colorpicker" class="d-flex justify-content-center"></div>
           </div>
-          <div class="row mb-2 px-3">
+          <div class="row mb-2 px-3 collapse collapseSettings" id="collapseDecay">
             <label for="rangeDecay" class="col-form-label">Cell Aging</label>
             <input type="range" class="form-range rangeSetting" id="rangeDecay" data-name="colorDecay" min="1"
               max="100" steps="1" disabled>
diff --git a/data_src/main.js b/data_src/main.js
index 3cec1f3..9d4879c 100644
--- a/data_src/main.js
+++ b/data_src/main.js
@@ -27,7 +27,7 @@ $(window).on('load', function () {
     colorPicker.on('input:end', function (color) {
         settings.color = color.rgb;
         sendSettings();
-    });    
+    });
 });
 
 $(document).on('change', '.rangeSetting', function () {
@@ -48,6 +48,12 @@ $(document).on('change', '.rangeSetting', function () {
 });
 
 $('.btnColorMode').on('click', function () {
+    $('.collapseSettings').each(function () {
+        bootstrap.Collapse.getInstance($(this)).hide();
+    });
+    if ($(this).data('control')) {
+        bootstrap.Collapse.getInstance($(this).data('control')).show();
+    }
     $('.btnColorMode').not(this).prop('checked', false);
     var mode = $(this).data('mode');
     settings['colorMode'] = mode;
@@ -57,7 +63,7 @@ $('.btnColorMode').on('click', function () {
 $('.btnAction').on('click', function () {
     var action = $(this).data('action');
     sendAction(action);
-    if(modalConfirm._isShown) {
+    if (modalConfirm._isShown) {
         modalConfirm.hide();
     }
 });
@@ -165,7 +171,7 @@ function loadSettings(data) {
     colorPicker.color.rgb = data.color;
     enabledUI(true);
     $('.btnColorMode').prop('checked', false);
-    $('#btnColorMode_'+settings.colorMode).prop('checked', true);
+    $('#btnColorMode_' + settings.colorMode).prop('checked', true);
     $('#rangeDecay').val(data.colorDecay);
     $('#rangeBrightness').val(mapRange(data.brightness, 8, 255, 1, 100));
     $('#rangeSpeed').val(mapRange(data.interval, 1000, 10, 1, 100));
@@ -206,3 +212,8 @@ function mapRange(number, inMin, inMax, outMin, outMax) {
 }
 
 const modalConfirm = new bootstrap.Modal('#modalConfirm', {});
+
+const collapseElements = document.querySelectorAll('.collapseSettings');
+const collapseList = [...collapseElements].map(collapseEl => new bootstrap.Collapse(collapseEl, {
+    toggle: false,
+}));
-- 
GitLab