Skip to content

Commit

Permalink
Sort by in datasets gui (#22)
Browse files Browse the repository at this point in the history
* version

* first draft of sorting datasets

* smoke tested on 761
  • Loading branch information
marcmengel authored Mar 18, 2024
1 parent 6cae01f commit a0227f0
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 10 deletions.
2 changes: 1 addition & 1 deletion metacat/version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Version = "4.0.0.pre"
Version = "4.0.0"

if __name__ == "__main__":
print(Version)
18 changes: 14 additions & 4 deletions webserver/gui_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -835,7 +835,7 @@ def make_page_links(self, npages, page, page_size, all_page_links, window=2):


@sanitize()
def datasets(self, request, relpath, selection=None, page=0, page_size=1000, **args):
def datasets(self, request, relpath, selection=None, page=0, page_size=1000, sort_by="Name", sort_asc="a", **args):
user, auth_error = self.authenticated_user()
if not user:
self.redirect(self.scriptUri() + "/auth/login?redirect=" + self.scriptUri() + relpath)
Expand All @@ -860,8 +860,18 @@ def datasets(self, request, relpath, selection=None, page=0, page_size=1000, **a
else:
# assume selection == "all"
datasets = DBDataset.list(db)

sort_by_map = {
"Name": lambda x: (x.Namespace, x.Name),
"Creator": lambda x: x.Creator,
"Created": lambda x: x.CreatedTimestamp,
"Files": lambda x: x.FileCount,
}

all_datasets = sorted(datasets, key=lambda x: (x.Namespace, x.Name))
if not (sort_by in sort_by_map):
sort_by = "Name"

all_datasets = sorted(datasets, key=sort_by_map[sort_by], reverse=(sort_asc != "a"))
ndatasets = len(all_datasets)
npages = (ndatasets + page_size - 1) // page_size
istart = page * page_size
Expand All @@ -873,10 +883,10 @@ def datasets(self, request, relpath, selection=None, page=0, page_size=1000, **a
ds.GUI_OwnerRole = ns.OwnerRole
ds.GUI_Authorized = user is not None and (admin or self._namespace_authorized(db, ds.Namespace, user))

all_page_links = [f"./datasets?selection={selection}&page_size={page_size}&page={p}" for p in range(npages)]
all_page_links = [f"./datasets?selection={selection}&page_size={page_size}&page={p}&sort_by={sort_by}&sort_asc={sort_asc}" for p in range(npages)]
page_links = self.make_page_links(npages, page, page_size, all_page_links, 2)

return self.render_to_response("datasets.html", datasets=datasets,
return self.render_to_response("datasets.html", datasets=datasets,
page=page, npages=npages, page_links=page_links,
owned_namespaces = owned_namespaces, other_namespaces=other_namespaces,
selection=selection, user=user, **self.messages(args))
Expand Down
11 changes: 6 additions & 5 deletions webserver/templates/datasets.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<a href="./create_dataset">create</a>
</p>

<!-- Info: {{info}} -->

<form target="" method="GET">
<!-- selection: [{{selection}}] -->
Expand Down Expand Up @@ -61,13 +62,13 @@

<table class="data">
<tr>
<th>Name</th>
<th>Name<a href="./datasets?sort_by=Name&sort_asc=d" style="text-decoration: none">&dArr;</a><a href="./datasets?sort_by=Name&sort_asc=a" style="text-decoration: none">&uArr;</a></th>
<th>Namespace</th>
{% if logged_in %}<th>Creator</th>{% endif %}
<th>Created</th>
{% if logged_in %}<th>Owner</th>{% endif %}
{% if logged_in %}<th>Creator<a href="./datasets?sort_by=Creator&sort_asc=d" style="text-decoration: none">&dArr;</a><a href="./datasets?sort_by=Creator&sort_asc=a" style="text-decoration: none">&uArr;</a></th>{% endif %}
<th>Created<a href="./datasets?sort_by=Created&sort_asc=d" style="text-decoration: none">&dArr;</a><a href="./datasets?sort_by=Created&sort_asc=a" style="text-decoration: none">&uArr;</a></th>
{% if logged_in %}<th>Owner<a href="./datasets?sort_by=Owner&sort_asc=d" style="text-decoration: none">&dArr;</a><a href="./datasets?sort_by=Owner&sort_asc=a" style="text-decoration: none">&uArr;</a></th>{% endif %}
<th>Flags</th>
<th>Files<sup>*</sup></th>
<th>Files<sup>*</sup><a href="./datasets?sort_by=Files&sort_asc=d" style="text-decoration: none">&dArr;</a><a href="./datasets?sort_by=Files&sort_asc=a" style="text-decoration: none">&uArr;</a></th>
<th>Children</th>
<th>Subsets</th>
<th>Parents</th>
Expand Down

0 comments on commit a0227f0

Please sign in to comment.