parent
d6e599d4f9
commit
b6d7a52b06
@ -5,6 +5,7 @@ import tempfile
|
|||||||
import types
|
import types
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from bokeh.io import curdoc
|
||||||
from bokeh.layouts import column, row
|
from bokeh.layouts import column, row
|
||||||
from bokeh.models import (
|
from bokeh.models import (
|
||||||
BasicTicker,
|
BasicTicker,
|
||||||
@ -70,12 +71,19 @@ for (let i = 0; i < js_data.data['fname'].length; i++) {
|
|||||||
|
|
||||||
|
|
||||||
def create():
|
def create():
|
||||||
|
doc = curdoc()
|
||||||
det_data = {}
|
det_data = {}
|
||||||
fit_params = {}
|
fit_params = {}
|
||||||
js_data = ColumnDataSource(data=dict(content=["", ""], fname=["", ""], ext=["", ""]))
|
js_data = ColumnDataSource(data=dict(content=["", ""], fname=["", ""], ext=["", ""]))
|
||||||
|
|
||||||
def proposal_textinput_callback(_attr, _old, new):
|
def file_select_update_for_proposal():
|
||||||
proposal = new.strip()
|
proposal = proposal_textinput.value.strip()
|
||||||
|
if not proposal:
|
||||||
|
file_select.options = []
|
||||||
|
file_open_button.disabled = True
|
||||||
|
file_append_button.disabled = True
|
||||||
|
return
|
||||||
|
|
||||||
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
||||||
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
||||||
if os.path.isdir(proposal_path):
|
if os.path.isdir(proposal_path):
|
||||||
@ -92,6 +100,11 @@ def create():
|
|||||||
file_open_button.disabled = False
|
file_open_button.disabled = False
|
||||||
file_append_button.disabled = False
|
file_append_button.disabled = False
|
||||||
|
|
||||||
|
doc.add_periodic_callback(file_select_update_for_proposal, 5000)
|
||||||
|
|
||||||
|
def proposal_textinput_callback(_attr, _old, _new):
|
||||||
|
file_select_update_for_proposal()
|
||||||
|
|
||||||
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
||||||
proposal_textinput.on_change("value", proposal_textinput_callback)
|
proposal_textinput.on_change("value", proposal_textinput_callback)
|
||||||
|
|
||||||
@ -150,6 +163,7 @@ def create():
|
|||||||
def upload_button_callback(_attr, _old, new):
|
def upload_button_callback(_attr, _old, new):
|
||||||
nonlocal det_data
|
nonlocal det_data
|
||||||
det_data = []
|
det_data = []
|
||||||
|
proposal_textinput.value = ""
|
||||||
for f_str, f_name in zip(new, upload_button.filename):
|
for f_str, f_name in zip(new, upload_button.filename):
|
||||||
with io.StringIO(base64.b64decode(f_str).decode()) as file:
|
with io.StringIO(base64.b64decode(f_str).decode()) as file:
|
||||||
base, ext = os.path.splitext(f_name)
|
base, ext = os.path.splitext(f_name)
|
||||||
|
@ -58,9 +58,11 @@ def create():
|
|||||||
|
|
||||||
num_formatter = NumberFormatter(format="0.00", nan_format="")
|
num_formatter = NumberFormatter(format="0.00", nan_format="")
|
||||||
|
|
||||||
def proposal_textinput_callback(_attr, _old, new):
|
def file_select_update_for_proposal():
|
||||||
nonlocal cami_meta
|
proposal = proposal_textinput.value.strip()
|
||||||
proposal = new.strip()
|
if not proposal:
|
||||||
|
return
|
||||||
|
|
||||||
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
||||||
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
||||||
if os.path.isdir(proposal_path):
|
if os.path.isdir(proposal_path):
|
||||||
@ -75,13 +77,19 @@ def create():
|
|||||||
file_list.append((os.path.join(proposal_path, file), file))
|
file_list.append((os.path.join(proposal_path, file), file))
|
||||||
file_select.options = file_list
|
file_select.options = file_list
|
||||||
|
|
||||||
|
doc.add_periodic_callback(file_select_update_for_proposal, 5000)
|
||||||
|
|
||||||
|
def proposal_textinput_callback(_attr, _old, _new):
|
||||||
|
nonlocal cami_meta
|
||||||
cami_meta = {}
|
cami_meta = {}
|
||||||
|
file_select_update_for_proposal()
|
||||||
|
|
||||||
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
||||||
proposal_textinput.on_change("value", proposal_textinput_callback)
|
proposal_textinput.on_change("value", proposal_textinput_callback)
|
||||||
|
|
||||||
def upload_button_callback(_attr, _old, new):
|
def upload_button_callback(_attr, _old, new):
|
||||||
nonlocal cami_meta
|
nonlocal cami_meta
|
||||||
|
proposal_textinput.value = ""
|
||||||
with io.StringIO(base64.b64decode(new).decode()) as file:
|
with io.StringIO(base64.b64decode(new).decode()) as file:
|
||||||
cami_meta = pyzebra.parse_h5meta(file)
|
cami_meta = pyzebra.parse_h5meta(file)
|
||||||
file_list = cami_meta["filelist"]
|
file_list = cami_meta["filelist"]
|
||||||
|
@ -6,6 +6,7 @@ import tempfile
|
|||||||
import types
|
import types
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
from bokeh.io import curdoc
|
||||||
from bokeh.layouts import column, row
|
from bokeh.layouts import column, row
|
||||||
from bokeh.models import (
|
from bokeh.models import (
|
||||||
BasicTicker,
|
BasicTicker,
|
||||||
@ -75,12 +76,19 @@ def color_palette(n_colors):
|
|||||||
|
|
||||||
|
|
||||||
def create():
|
def create():
|
||||||
|
doc = curdoc()
|
||||||
det_data = []
|
det_data = []
|
||||||
fit_params = {}
|
fit_params = {}
|
||||||
js_data = ColumnDataSource(data=dict(content=["", ""], fname=["", ""]))
|
js_data = ColumnDataSource(data=dict(content=["", ""], fname=["", ""]))
|
||||||
|
|
||||||
def proposal_textinput_callback(_attr, _old, new):
|
def file_select_update_for_proposal():
|
||||||
proposal = new.strip()
|
proposal = proposal_textinput.value.strip()
|
||||||
|
if not proposal:
|
||||||
|
file_select.options = []
|
||||||
|
file_open_button.disabled = True
|
||||||
|
file_append_button.disabled = True
|
||||||
|
return
|
||||||
|
|
||||||
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
for zebra_proposals_path in pyzebra.ZEBRA_PROPOSALS_PATHS:
|
||||||
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
proposal_path = os.path.join(zebra_proposals_path, proposal)
|
||||||
if os.path.isdir(proposal_path):
|
if os.path.isdir(proposal_path):
|
||||||
@ -97,6 +105,11 @@ def create():
|
|||||||
file_open_button.disabled = False
|
file_open_button.disabled = False
|
||||||
file_append_button.disabled = False
|
file_append_button.disabled = False
|
||||||
|
|
||||||
|
doc.add_periodic_callback(file_select_update_for_proposal, 5000)
|
||||||
|
|
||||||
|
def proposal_textinput_callback(_attr, _old, _new):
|
||||||
|
file_select_update_for_proposal()
|
||||||
|
|
||||||
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
proposal_textinput = TextInput(title="Proposal number:", width=210)
|
||||||
proposal_textinput.on_change("value", proposal_textinput_callback)
|
proposal_textinput.on_change("value", proposal_textinput_callback)
|
||||||
|
|
||||||
@ -160,6 +173,7 @@ def create():
|
|||||||
def upload_button_callback(_attr, _old, new):
|
def upload_button_callback(_attr, _old, new):
|
||||||
nonlocal det_data
|
nonlocal det_data
|
||||||
det_data = []
|
det_data = []
|
||||||
|
proposal_textinput.value = ""
|
||||||
for f_str, f_name in zip(new, upload_button.filename):
|
for f_str, f_name in zip(new, upload_button.filename):
|
||||||
with io.StringIO(base64.b64decode(f_str).decode()) as file:
|
with io.StringIO(base64.b64decode(f_str).decode()) as file:
|
||||||
base, ext = os.path.splitext(f_name)
|
base, ext = os.path.splitext(f_name)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user