From 76a7acf498486d0f5d0773244f53992bf094f77e Mon Sep 17 00:00:00 2001 From: Daniel Weschke Date: Wed, 26 Aug 2026 12:48:55 +0200 Subject: [PATCH] change storing configuration --- app.py | 79 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 65 insertions(+), 14 deletions(-) diff --git a/app.py b/app.py index fb49caf..295529a 100644 --- a/app.py +++ b/app.py @@ -1,6 +1,7 @@ """ """ +# binding propagation for 7 active links took 0.013 s import os import numpy as np import time @@ -30,7 +31,7 @@ pio.templates["plotly_light"].layout['yaxis']['gridcolor'] = 'lightgray' pio.templates["plotly_light"].layout['yaxis']['zerolinecolor'] = 'lightgray' ELM = { - 'name': 'tempplot', + 'name': 'tempview', 'filedir': './data', 'filename': None, 'label_file_fmt': 'File: {filename}', @@ -43,6 +44,43 @@ ELM = { 'update_timeout': 1.0, '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(): import argparse @@ -87,14 +125,16 @@ def np2pgo(x, y, label=None): res.update({'name': label}) return res -def fntl(): - if ELM['filename'] is not None: - return os.path.relpath(ELM['filename'], ELM['filedir']) +def fntl(filename, filedir): + # if ELM['filename'] is not None: + # 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 - if ELM['filename'] is not None: - fn = os.path.basename(ELM['filename']) + if filename is not None and filename: + fn = os.path.basename(filename) n = len(fn) if n == 18: 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}') if result: 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 ui.timer(0, lambda: update_data(), once=True) -def get_data(filename=ELM['filename']): +def get_data(filename=None): data = None if filename is not None and os.path.isfile(filename): 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'] \ or time.time() - ELM['update_last'] > ELM['update_timeout']: ELM['update_busy'] = True - filename=ELM['filename'] + # filename=ELM['filename'] + filename = load('filename') t1 = time.time() data_all = await run.cpu_bound(get_data, filename) t2 = time.time() @@ -263,7 +305,15 @@ def update_fig(): rangemode="nonnegative") @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 pio.templates.default = 'plotly_dark' 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"') 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', - 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) \ - .bind_text_from(ELM, 'filename', lambda filename: fnttt()) \ + .bind_text_from(ELM, 'filename', lambda filename: fnttt(get('filename'))) \ .bind_visibility_from(ELM, 'filename', bool) \ .move(ELM['label_file']) ELM['label_data_len'] = ui.label(ELM['label_data_len_fmt'].format(num=0, numa=0))