From 0d59414104faacfbe194c56328ba3ded3775e312 Mon Sep 17 00:00:00 2001 From: siinus Date: Fri, 19 Mar 2021 23:08:10 +0200 Subject: [PATCH] Add program selecting for status update --- pyleds/lib/Litsimaja.py | 7 ++++++- pyleds/lib/ProgramLoading.py | 1 + pyleds/templates/index.html | 32 ++++++++++++++++++++------------ 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/pyleds/lib/Litsimaja.py b/pyleds/lib/Litsimaja.py index e366dc9..183c74c 100644 --- a/pyleds/lib/Litsimaja.py +++ b/pyleds/lib/Litsimaja.py @@ -13,6 +13,7 @@ class Litsimaja(object): self._strip.begin() self._regions: Regions = Regions(self.count_pixels(), [46, 96, 191, 241]) self._tempo: Tempo = Tempo(60) + self._selected_program = None def count_pixels(self) -> int: return self._strip.numPixels() @@ -47,9 +48,10 @@ class Litsimaja(object): def build_status_array(self): data = {'success': True} features = { + 'program': self._selected_program, 'tempo': { 'bpm': self.get_tempo().get_bpm() - } + }, } regions = [] for region_id in self._regions.list_region_ids(): @@ -60,3 +62,6 @@ class Litsimaja(object): def get_tempo(self): return self._tempo + + def set_selected_program(self, program_name: str): + self._selected_program = program_name diff --git a/pyleds/lib/ProgramLoading.py b/pyleds/lib/ProgramLoading.py index ede2b53..66570d4 100644 --- a/pyleds/lib/ProgramLoading.py +++ b/pyleds/lib/ProgramLoading.py @@ -15,6 +15,7 @@ def run(namespace: str, class_name: str, lm: Litsimaja, logger, args: [] = None) program = loaded_class(lm) logger.info('Loaded "' + module.name() + '" from ' + namespace + '.' + class_name + ' with args: ' + repr(args)) lm.add_loop(program.get_loop()) + lm.set_selected_program(namespace + '.' + class_name) program.run(args) diff --git a/pyleds/templates/index.html b/pyleds/templates/index.html index 648294d..b8e9781 100644 --- a/pyleds/templates/index.html +++ b/pyleds/templates/index.html @@ -55,19 +55,23 @@ let status = JSON.parse(json); document.getElementById('tempo').value = status.features.tempo.bpm; let regions = status.features.region; - let regLen = regions.length; - for(let i = 0; i < regLen; i++) { + for (let i = 0, len = regions.length; i < len; i++) { if (regions[i]) { document.getElementById('region_' + i).classList.remove('region_off'); } else { document.getElementById('region_' + i).classList.add('region_off'); } } + let programs = document.getElementsByName('program_select'); + for (var i = 0, len = programs.length; i < len; i++) { + if (programs[i].value === status.features.program) { + programs[i].checked = true; + } + } } function getProgramSelection() { - let radios = document.getElementsByName('program_select'); - + let radios = document.getElementsByName('program_select'); for (var i = 0, length = radios.length; i < length; i++) { if (radios[i].checked) { return radios[i].value; @@ -136,14 +140,18 @@ + {% set pr_checked = '' %} + {% if status.features.program == program.prg %} + {% set pr_checked = ' checked' %} + {% endif %} +
  • + +
  • + {% endfor %} + {% endfor %}