import argparse import panel as pn from panel.theme.fast import FastDarkTheme, FastDefaultTheme from qcpanel.viewer import QuaccTestViewer # pn.config.design = Fast # pn.config.theme = "dark" pn.config.notifications = True def app_instance(): param_init = { k: v for k, v in pn.state.location.query_params.items() if k in ["root", "dataset", "metric", "plot_view", "mode", "estimators"] } qtv = QuaccTestViewer(param_init=param_init) pn.state.location.sync( qtv, { "root": "root", "dataset": "dataset", "metric": "metric", "plot_view": "plot_view", "mode": "mode", "estimators": "estimators", }, ) 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=FastDefaultTheme, theme_toggle=True, ) app.servable() return app def serve(address="localhost"): __port = 33420 __allowed = [address] if address == "localhost": __allowed.append("127.0.0.1") pn.serve( app_instance, 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__": run()