change storing configuration
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user