80 lines
1.7 KiB
Python
80 lines
1.7 KiB
Python
import argparse
|
|
|
|
import panel as pn
|
|
|
|
from qcpanel.viewer import QuaccTestViewer
|
|
|
|
# pn.config.design = pn.theme.Bootstrap
|
|
# pn.config.theme = "dark"
|
|
pn.config.notifications = True
|
|
|
|
|
|
def serve(address="localhost"):
|
|
qtv = QuaccTestViewer()
|
|
|
|
def save_callback(event):
|
|
app.open_modal()
|
|
|
|
def refresh_callback(event):
|
|
qtv.update_datasets()
|
|
|
|
save_button = pn.widgets.Button(
|
|
# name="Save",
|
|
icon="device-floppy",
|
|
icon_size="16px",
|
|
# sizing_mode="scale_width",
|
|
button_style="solid",
|
|
button_type="success",
|
|
)
|
|
save_button.on_click(save_callback)
|
|
|
|
refresh_button = pn.widgets.Button(
|
|
icon="refresh",
|
|
icon_size="16px",
|
|
button_style="solid",
|
|
)
|
|
refresh_button.on_click(refresh_callback)
|
|
|
|
app = pn.template.FastListTemplate(
|
|
title="quacc tests",
|
|
sidebar=[
|
|
pn.FlexBox(save_button, refresh_button, flex_direction="row-reverse"),
|
|
qtv.get_param_pane,
|
|
],
|
|
main=[pn.Column(qtv.get_plot, sizing_mode="stretch_both")],
|
|
modal=[qtv.modal_pane],
|
|
theme=pn.theme.DarkTheme,
|
|
theme_toggle=False,
|
|
)
|
|
|
|
app.servable()
|
|
__port = 33420
|
|
__allowed = [address]
|
|
if address == "localhost":
|
|
__allowed.append("127.0.0.1")
|
|
|
|
pn.serve(
|
|
app,
|
|
autoreload=True,
|
|
port=__port,
|
|
show=False,
|
|
address=address,
|
|
websocket_origin=[f"{_a}:{__port}" for _a in __allowed],
|
|
)
|
|
|
|
|
|
def run():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"--address",
|
|
action="store",
|
|
dest="address",
|
|
default="localhost",
|
|
)
|
|
args = parser.parse_args()
|
|
serve(address=args.address)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
serve()
|