Skip to content

Commit

Permalink
Update app w.r.t new external code setup notebook
Browse files Browse the repository at this point in the history
  • Loading branch information
edan-bainglass committed Dec 26, 2024
1 parent da3b50a commit ca7a4a5
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 35 deletions.
41 changes: 25 additions & 16 deletions src/aiidalab_qe/app/submission/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,14 @@ def _render(self):
(self.submission_warning_messages, "value"),
)

self.refresh_resources_button = ipw.Button(
description="Refresh resources",
icon="refresh",
button_style="primary",
layout=ipw.Layout(width="fit-content", margin="2px 2px 12px"),
)
self.refresh_resources_button.on_click(self._refresh_resources)

self.tabs = ipw.Tab(
layout=ipw.Layout(min_height="250px"),
selected_index=None,
Expand All @@ -146,33 +154,30 @@ def _render(self):

self.children = [
InAppGuide(identifier="submission-step"),
ipw.HTML("""
<div style="padding-top: 0px; padding-bottom: 0px">
<h4>Codes</h4>
</div>
"""),
ipw.HTML("""
<div style="line-height: 140%; padding-top: 0px; padding-bottom: 10px">
Select the code to use for running the calculations. The codes on
Select the codes to use for running the calculations. The codes on
the local machine (localhost) are installed by default, but you can
configure new ones on potentially more powerful machines by clicking
on "Setup new code".
configure new ones on potentially more powerful machines by visiting
the <a href="../home/code_setup.ipynb" target="_blank">resource
setup</a> page (see also <i class="fa fa-database"></i>
button at the top of the app). Make sure to click the <b>Refresh
resources</b> button below after making changes to AiiDA resources
to update the app resources.
</div>
"""),
self.refresh_resources_button,
self.tabs,
self.sssp_installation,
self.qe_setup,
self.submission_blocker_messages,
self.submission_warning_messages,
ipw.HTML("""
<div style="padding-top: 0px; padding-bottom: 0px">
<h4>Labeling your job</h4>
<p style="line-height: 140%; padding-top: 0px; padding-bottom: 10px">
Label your job and provide a brief description. These details
help identify the job later and make the search process easier.
While optional, adding a description is recommended for better
clarity.
</p>
<div style="line-height: 140%; padding-top: 0px; padding-bottom: 10px">
Label your job and provide a brief description. These details
help identify the job later and make the search process easier.
While optional, adding a description is recommended for better
clarity.
</div>
"""),
self.process_label,
Expand Down Expand Up @@ -277,6 +282,10 @@ def _toggle_qe_installation_widget(self):
qe_installation_display = "none" if self._model.qe_installed else "block"
self.qe_setup.layout.display = qe_installation_display

def _refresh_resources(self, _=None):
for _, model in self._model.get_models():
model.refresh_codes()

def _update_tabs(self):
children = []
titles = []
Expand Down
8 changes: 0 additions & 8 deletions src/aiidalab_qe/app/submission/global_settings/setting.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,14 +117,6 @@ def _render_code_widget(
],
)

def update_options(_, model=code_model):
model.update(self._model.DEFAULT_USER_EMAIL, refresh=True)

code_widget.code_selection.code_select_dropdown.observe(
update_options,
"options",
)

def toggle_widget(_=None, model=code_model, widget=code_widget):
widget = self.code_widgets[model.name]
widget.layout.display = "block" if model.is_active else "none"
Expand Down
10 changes: 9 additions & 1 deletion src/aiidalab_qe/app/wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,13 +212,21 @@ def __init__(self) -> None:
disabled=True,
)

self.setup_resources_link = LinkButton(
description="Setup resources",
link="../home/code_setup.ipynb",
icon="database",
disabled=True,
)

self.controls = ipw.HBox(
children=[
self.guide_toggle,
self.about_toggle,
self.calculation_history_link,
self.setup_resources_link,
self.new_workchain_link,
]
],
)
self.controls.add_class("app-controls")

Expand Down
13 changes: 4 additions & 9 deletions src/aiidalab_qe/common/panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,10 @@ def add_model(self, identifier, model):
super().add_model(identifier, model)
model.update(self.DEFAULT_USER_EMAIL)

def refresh_codes(self):
for _, code_model in self.get_models():
code_model.update(self.DEFAULT_USER_EMAIL, refresh=True)

def update_submission_blockers(self):
self.submission_blockers = list(self._check_submission_blockers())

Expand Down Expand Up @@ -335,7 +339,6 @@ def _render_code_widget(
code_model.observe(
self._on_code_resource_change,
[
"options",
"selected",
"num_cpus",
"num_nodes",
Expand Down Expand Up @@ -374,9 +377,6 @@ def update(self):
default_calc_job_plugin = code_model.default_calc_job_plugin
if default_calc_job_plugin in self.global_codes:
code_resources: dict = self.global_codes[default_calc_job_plugin] # type: ignore
options = code_resources.get("options", [])
if options != code_model.options:
code_model.update(self.DEFAULT_USER_EMAIL, refresh=True)
code_model.set_model_state(code_resources)

def get_model_state(self):
Expand Down Expand Up @@ -483,11 +483,6 @@ def _link_override_to_widget_disable(self, code_model, code_widget):
(code_widget.num_nodes, "disabled"),
lambda override: not override,
)
ipw.dlink(
(code_model, "override"),
(code_widget.code_selection.btn_setup_new_code, "disabled"),
lambda override: not override,
)
ipw.dlink(
(code_model, "override"),
(code_widget.btn_setup_resource_detail, "disabled"),
Expand Down
6 changes: 5 additions & 1 deletion src/aiidalab_qe/common/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -676,7 +676,11 @@ def __init__(self, **kwargs):
"""Widget to setup the compute resources, which include the code,
the number of nodes and the number of cpus.
"""
self.code_selection = ComputationalResourcesWidget(**kwargs)
self.code_selection = ComputationalResourcesWidget(
include_setup_widget=False,
fetch_codes=True, # TODO resolve testing issues when set to `False`
**kwargs,
)
self.code_selection.layout.width = "80%"

self.num_nodes = ipw.BoundedIntText(
Expand Down

0 comments on commit ca7a4a5

Please sign in to comment.