Add program selecting for status update

pull/6/head
siinus 4 years ago
parent 3fa0bc376f
commit 0d59414104
  1. 7
      pyleds/lib/Litsimaja.py
  2. 1
      pyleds/lib/ProgramLoading.py
  3. 16
      pyleds/templates/index.html

@ -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

@ -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)

@ -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');
for (var i = 0, length = radios.length; i < length; i++) {
if (radios[i].checked) {
return radios[i].value;
@ -136,9 +140,13 @@
<ul>
<li>{{ group.group }}</li>
{% for program in group.programs %}
{% set pr_checked = '' %}
{% if status.features.program == program.prg %}
{% set pr_checked = ' checked' %}
{% endif %}
<li>
<label>
<input type="radio" name="program_select" value="{{ program.prg }}">
<input type="radio" name="program_select" value="{{ program.prg }}"{{ pr_checked }}>
{{ program.name }}
</label>
</li>

Loading…
Cancel
Save