Add input for proposal to simplify access data

This commit is contained in:
usov_i 2020-09-29 15:13:20 +02:00
parent ddc5522d8b
commit b5476fc9b0

View File

@ -21,6 +21,7 @@ from bokeh.models import (
Select, Select,
Spacer, Spacer,
TextAreaInput, TextAreaInput,
TextInput,
Toggle, Toggle,
) )
@ -42,11 +43,39 @@ setTimeout(function() {
}, 500); }, 500);
""" """
PROPOSAL_PATH = "/afs/psi.ch/project/sinqdata/2020/zebra/"
def create(): def create():
det_data = {} det_data = {}
js_data = ColumnDataSource(data=dict(cont=[], ext=[])) js_data = ColumnDataSource(data=dict(cont=[], ext=[]))
def proposal_textinput_callback(_attr, _old, new):
ccl_path = os.path.join(PROPOSAL_PATH, new)
ccl_file_list = []
for file in os.listdir(ccl_path):
if file.endswith(".ccl"):
ccl_file_list.append((os.path.join(ccl_path, file), file))
ccl_file_select.options = ccl_file_list
ccl_file_select.value = ccl_file_list[0][0]
proposal_textinput = TextInput(title="Enter proposal number:")
proposal_textinput.on_change("value", proposal_textinput_callback)
def ccl_file_select_callback(_attr, _old, new):
nonlocal det_data
with open(new) as file:
_, ext = os.path.splitext(new)
det_data = pyzebra.parse_1D(file, ext)
meas_list = list(det_data["Measurements"].keys())
meas_select.options = meas_list
meas_select.value = None
meas_select.value = meas_list[0]
ccl_file_select = Select(title="Available .ccl files")
ccl_file_select.on_change("value", ccl_file_select_callback)
def upload_button_callback(_attr, _old, new): def upload_button_callback(_attr, _old, new):
nonlocal det_data nonlocal det_data
with io.StringIO(base64.b64decode(new).decode()) as file: with io.StringIO(base64.b64decode(new).decode()) as file:
@ -55,6 +84,7 @@ def create():
meas_list = list(det_data["Measurements"].keys()) meas_list = list(det_data["Measurements"].keys())
meas_select.options = meas_list meas_select.options = meas_list
meas_select.value = None
meas_select.value = meas_list[0] meas_select.value = meas_list[0]
upload_button = FileInput(accept=".ccl") upload_button = FileInput(accept=".ccl")
@ -112,7 +142,8 @@ def create():
# Measurement select # Measurement select
def meas_select_callback(_attr, _old, new): def meas_select_callback(_attr, _old, new):
_update_plot(new) if new is not None:
_update_plot(new)
meas_select = Select() meas_select = Select()
meas_select.on_change("value", meas_select_callback) meas_select.on_change("value", meas_select_callback)
@ -165,8 +196,9 @@ def create():
save_button.on_click(save_button_callback) save_button.on_click(save_button_callback)
save_button.js_on_click(CustomJS(args={"js_data": js_data}, code=javaScript)) save_button.js_on_click(CustomJS(args={"js_data": js_data}, code=javaScript))
upload_div = Div(text="Upload .ccl file:") upload_div = Div(text="Or upload .ccl file:")
tab_layout = column( tab_layout = column(
row(proposal_textinput, ccl_file_select),
row(column(Spacer(height=5), upload_div), upload_button, meas_select), row(column(Spacer(height=5), upload_div), upload_button, meas_select),
row(plot, Spacer(width=30), fit_output_textinput), row(plot, Spacer(width=30), fit_output_textinput),
row(column(smooth_toggle, process_button, save_button)), row(column(smooth_toggle, process_button, save_button)),