This is an automated email from the ASF dual-hosted git repository.
kaxilnaik pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 9a33a25c487 Fix registry providers page not sorting by downloads on
initial load (#63764)
9a33a25c487 is described below
commit 9a33a25c48764056c37aa4f14e9b01ca4a3acd28
Author: Kaxil Naik <[email protected]>
AuthorDate: Mon Mar 16 23:27:30 2026 +0000
Fix registry providers page not sorting by downloads on initial load
(#63764)
The sort dropdown defaulted to "Most Downloads" but the sort logic only
ran on the `change` event, so providers stayed in alphabetical order
(the template render order) until the user manually toggled the dropdown.
---
registry/src/js/provider-filters.js | 41 ++++++++++++++++++++-----------------
1 file changed, 22 insertions(+), 19 deletions(-)
diff --git a/registry/src/js/provider-filters.js
b/registry/src/js/provider-filters.js
index 9c99aedcf89..721594659c9 100644
--- a/registry/src/js/provider-filters.js
+++ b/registry/src/js/provider-filters.js
@@ -132,29 +132,32 @@
});
}
- if (sortSelect) {
- sortSelect.addEventListener('change', () => {
- const sortBy = sortSelect.value;
- const items = Array.from(providerItems);
-
- items.sort((a, b) => {
- switch (sortBy) {
- case 'downloads':
- return Number(b.dataset.downloads || 0) -
Number(a.dataset.downloads || 0);
- case 'name':
- return (a.dataset.name || '').localeCompare(b.dataset.name || '');
- case 'updated':
- return (b.dataset.updated || '').localeCompare(a.dataset.updated
|| '');
- default:
- return 0;
- }
- });
-
- items.forEach(item => providerGrid.appendChild(item));
+ function sortProviders() {
+ const sortBy = sortSelect.value;
+ const items = Array.from(providerItems);
+
+ items.sort((a, b) => {
+ switch (sortBy) {
+ case 'downloads':
+ return Number(b.dataset.downloads || 0) - Number(a.dataset.downloads
|| 0);
+ case 'name':
+ return (a.dataset.name || '').localeCompare(b.dataset.name || '');
+ case 'updated':
+ return (b.dataset.updated || '').localeCompare(a.dataset.updated ||
'');
+ default:
+ return 0;
+ }
});
+
+ items.forEach(item => providerGrid.appendChild(item));
+ }
+
+ if (sortSelect) {
+ sortSelect.addEventListener('change', sortProviders);
}
readURLParams();
+ sortProviders();
if (currentCategory !== 'all' || currentLifecycle !== 'all' ||
currentSearch) {
filterProviders();
}