diff --git a/autosubmit_api/autosubmit_legacy/job/job_list.py b/autosubmit_api/autosubmit_legacy/job/job_list.py
index 9a7770bcf990d72896cbc104ff38833720b07487..a1f0476ff67576ba057816ac24e39c7e073fde11 100644
--- a/autosubmit_api/autosubmit_legacy/job/job_list.py
+++ b/autosubmit_api/autosubmit_legacy/job/job_list.py
@@ -1404,6 +1404,7 @@ class JobList:
date_member_groups = {}
result_header = {}
result_exp = []
+ result_exp_wrappers = []
sync_jobs = []
# members (sections in database)
members = {job.section for job in job_list if len(job.section) > 0}
@@ -1685,7 +1686,10 @@ class JobList:
failed_tag = " " + \
str(failed) + " FAILED"
# Wrapper group
- result_exp.append({'title': 'Wrapper: ' + str(package) + completed_tag + (failed_tag if failed > 0 else '') + (running_tag if running > 0 else '') + (queueing_tag if queueing > 0 else '') + (check_mark if completed == len(jobs_in_package) else ''),
+ # todo: apply sort here
+ # create an auxiliary list to sort
+
+ result_exp_wrappers.append({'title': 'Wrapper: ' + str(package) + completed_tag + (failed_tag if failed > 0 else '') + (running_tag if running > 0 else '') + (queueing_tag if queueing > 0 else '') + (check_mark if completed == len(jobs_in_package) else ''),
'folder': True,
'refKey': 'Wrapper: ' + str(package),
'data': {'completed': completed, 'failed': failed, 'running': running, 'queuing': queueing, 'total': len(jobs_in_package)},
@@ -1763,8 +1767,14 @@ class JobList:
'rm_id': job.job_id,
'status_color': Monitor.color_status(Status.STRING_TO_CODE[job.status])})
+
+ result_exp_wrappers.sort(key=lambda x: x["title"])
+ for wrapper_job in result_exp_wrappers:
+ result_exp.append(wrapper_job)
+
return result_exp, nodes, result_header
+
def get_tree_structured(self, BasicConfig, chunk_unit=None, chunk_size=1):
"""
Return the structured tree
@@ -1788,6 +1798,7 @@ class JobList:
job_name_to_job_title = {}
sync_jobs = []
result_exp = []
+ result_exp_wrappers = []
result_header = {}
job_dictionary = {}
year_per_sim = datechunk_to_year(chunk_unit, chunk_size)
@@ -2130,7 +2141,7 @@ class JobList:
failed_tag = " " + \
str(failed) + " FAILED"
# Wrapper group
- result_exp.append({'title': 'Wrapper: ' + str(package) + completed_tag + (failed_tag if failed > 0 else '') + (running_tag if running > 0 else '') + (queueing_tag if queueing > 0 else '') + (check_mark if completed == len(jobs_in_package) else ''),
+ result_exp_wrappers.append({'title': 'Wrapper: ' + str(package) + completed_tag + (failed_tag if failed > 0 else '') + (running_tag if running > 0 else '') + (queueing_tag if queueing > 0 else '') + (check_mark if completed == len(jobs_in_package) else ''),
'folder': True,
'refKey': 'Wrapper: ' + str(package),
'data': {'completed': completed, 'failed': failed, 'running': running, 'queuing': queueing, 'total': len(jobs_in_package)},
@@ -2226,6 +2237,11 @@ class JobList:
'rm_id': job.id if job.id and job.id > 0 else None,
'status_color': Monitor.color_status(job.status)})
+ # sort and add these sorted elements to the result list
+ result_exp_wrappers.sort(key=lambda x: x["title"])
+ for wrapper_job in result_exp_wrappers:
+ result_exp.append(wrapper_job)
+
return result_exp, nodes, result_header
@staticmethod