change storing configuration

This commit is contained in:
Daniel Weschke
2026-08-26 12:48:55 +02:00
parent 8a0e5f2a54
commit 76a7acf498
+65 -14
View File
@@ -1,6 +1,7 @@
""" """
""" """
# binding propagation for 7 active links took 0.013 s
import os import os
import numpy as np import numpy as np
import time import time
@@ -30,7 +31,7 @@ pio.templates["plotly_light"].layout['yaxis']['gridcolor'] = 'lightgray'
pio.templates["plotly_light"].layout['yaxis']['zerolinecolor'] = 'lightgray' pio.templates["plotly_light"].layout['yaxis']['zerolinecolor'] = 'lightgray'
ELM = { ELM = {
'name': 'tempplot', 'name': 'tempview',
'filedir': './data', 'filedir': './data',
'filename': None, 'filename': None,
'label_file_fmt': 'File: {filename}', 'label_file_fmt': 'File: {filename}',
@@ -43,6 +44,43 @@ ELM = {
'update_timeout': 1.0, 'update_timeout': 1.0,
'label_update_last_fmt': 'Last refresh: {last}', 'label_update_last_fmt': 'Last refresh: {last}',
} }
SK = ['dark_mode', 'time_range', 'timer', 'filename']
SKFB = [False, 6.0, False, None]
def set(key, value):
ELM[key] = value
# app.storage.user[key] = value
# app.storage.tab[key] = value
return value
def get(key):
return ELM[key]
def save(k, v):
app.storage.tab[k] = v
return v
def load(k, fb=None):
return app.storage.tab.get(k, fb)
# def load(k=None, fb=None):
# if k is None:
# ks = SK
# elif isinstance(k, str):
# ks = [k]
# else:
# ks = k
# if fb is None:
# fbs = SKFB
# elif isinstance(fb, str):
# fbs = [fb]
# else:
# fbs = fb
# for k, fb in zip(ks, fbs):
# # ELM[k] = app.storage.user.get(k, None)
# ELM[k] = app.storage.tab.get(k, fb)
def main_cli(): def main_cli():
import argparse import argparse
@@ -87,14 +125,16 @@ def np2pgo(x, y, label=None):
res.update({'name': label}) res.update({'name': label})
return res return res
def fntl(): def fntl(filename, filedir):
if ELM['filename'] is not None: # if ELM['filename'] is not None:
return os.path.relpath(ELM['filename'], ELM['filedir']) # return os.path.relpath(ELM['filename'], ELM['filedir'])
if filename is not None and filename and filedir is not None:
return os.path.relpath(filename, filedir)
def fnttt(): def fnttt(filename):
res = None res = None
if ELM['filename'] is not None: if filename is not None and filename:
fn = os.path.basename(ELM['filename']) fn = os.path.basename(filename)
n = len(fn) n = len(fn)
if n == 18: if n == 18:
res = f'{fn[:4]}-{fn[4:6]}-{fn[6:8]} {fn[8:10]}:{fn[10:12]}:{fn[12:14]}' res = f'{fn[:4]}-{fn[4:6]}-{fn[6:8]} {fn[8:10]}:{fn[10:12]}:{fn[12:14]}'
@@ -128,11 +168,12 @@ async def pick_file() -> None:
# ui.notify(f'You chose {result}') # ui.notify(f'You chose {result}')
if result: if result:
filename = result[-1] filename = result[-1]
ELM['filename'] = filename # ELM['filename'] = filename
save('filename', filename)
# see timer below, but still here active b/c the time might be inactive # see timer below, but still here active b/c the time might be inactive
ui.timer(0, lambda: update_data(), once=True) ui.timer(0, lambda: update_data(), once=True)
def get_data(filename=ELM['filename']): def get_data(filename=None):
data = None data = None
if filename is not None and os.path.isfile(filename): if filename is not None and os.path.isfile(filename):
data = np.genfromtxt(fname=filename, skip_header=1, max_rows=2) data = np.genfromtxt(fname=filename, skip_header=1, max_rows=2)
@@ -154,7 +195,8 @@ async def update_data():
if not app.storage.user['timer'] \ if not app.storage.user['timer'] \
or time.time() - ELM['update_last'] > ELM['update_timeout']: or time.time() - ELM['update_last'] > ELM['update_timeout']:
ELM['update_busy'] = True ELM['update_busy'] = True
filename=ELM['filename'] # filename=ELM['filename']
filename = load('filename')
t1 = time.time() t1 = time.time()
data_all = await run.cpu_bound(get_data, filename) data_all = await run.cpu_bound(get_data, filename)
t2 = time.time() t2 = time.time()
@@ -263,7 +305,15 @@ def update_fig():
rangemode="nonnegative") rangemode="nonnegative")
@ui.page('/') @ui.page('/')
def index(): async def index():
await ui.context.client.connected()
# print(app.storage.browser.get('filename', None))
# app.storage.browser['filename'] = 'foo'
# print(app.storage.browser.get('filename', None))
print(app.storage.tab.get('filename', None))
# initialize objects # initialize objects
pio.templates.default = 'plotly_dark' pio.templates.default = 'plotly_dark'
ELM['fig'] = prs.FigureResampler(pgo.Figure()).set_subplots( ELM['fig'] = prs.FigureResampler(pgo.Figure()).set_subplots(
@@ -307,11 +357,12 @@ def index():
).bind_value(app.storage.user, 'dark_mode').props('icon="dark_mode"') ).bind_value(app.storage.user, 'dark_mode').props('icon="dark_mode"')
with ui.row(): with ui.row():
ELM['label_file'] = ui.label(ELM['label_file_fmt'].format(filename=fntl())) \ set('filename', load('filename'))
ELM['label_file'] = ui.label(ELM['label_file_fmt'].format(filename=fntl(get('filename'), get('filedir')))) \
.bind_text_from(ELM, 'filename', .bind_text_from(ELM, 'filename',
lambda filename: ELM['label_file_fmt'].format(filename=fntl())) lambda filename: ELM['label_file_fmt'].format(filename=fntl(get('filename'), get('filedir'))))
ELM['label_file_tt'] = ui.tooltip(None) \ ELM['label_file_tt'] = ui.tooltip(None) \
.bind_text_from(ELM, 'filename', lambda filename: fnttt()) \ .bind_text_from(ELM, 'filename', lambda filename: fnttt(get('filename'))) \
.bind_visibility_from(ELM, 'filename', bool) \ .bind_visibility_from(ELM, 'filename', bool) \
.move(ELM['label_file']) .move(ELM['label_file'])
ELM['label_data_len'] = ui.label(ELM['label_data_len_fmt'].format(num=0, numa=0)) ELM['label_data_len'] = ui.label(ELM['label_data_len_fmt'].format(num=0, numa=0))