diff --git a/.github/scripts/generate-packages.js b/.github/scripts/generate-packages.js index 07e74603..8cb31fa8 100644 --- a/.github/scripts/generate-packages.js +++ b/.github/scripts/generate-packages.js @@ -93,6 +93,7 @@ function scanRepositoryDirectory(repoPath) { if (releases.length > 0) { return { name: repoName, + archived: false, // Default to false, will be updated by sync process releases: releases }; } diff --git a/.github/scripts/sync-assets.js b/.github/scripts/sync-assets.js index fad45025..96137905 100644 --- a/.github/scripts/sync-assets.js +++ b/.github/scripts/sync-assets.js @@ -34,6 +34,7 @@ async function processRepository(github, context, repo, repositoryData, totalAss const repoData = { name: repo.name, + archived: repo.archived, releases: [] }; diff --git a/gh-pages-template/assets/js/app.js b/gh-pages-template/assets/js/app.js index 796e6716..218849ad 100644 --- a/gh-pages-template/assets/js/app.js +++ b/gh-pages-template/assets/js/app.js @@ -67,14 +67,22 @@ class RepositoryDataManager { } /** - * Filter repositories based on search term + * Filter repositories based on search term and archived status */ - filterRepositories(searchTerm) { + filterRepositories(searchTerm, showArchived = true) { + let filteredRepos = this.repositoryData; + + // Filter by archived status first + if (!showArchived) { + filteredRepos = filteredRepos.filter(repo => !repo.archived); + } + + // Then filter by search term if provided if (!searchTerm) { - return this.repositoryData; + return filteredRepos; } - return this.repositoryData.filter(repo => { + return filteredRepos.filter(repo => { const repoMatch = repo.name.toLowerCase().includes(searchTerm.toLowerCase()); const releaseMatch = repo.releases && repo.releases.some(release => release.tag.toLowerCase().includes(searchTerm.toLowerCase())); @@ -157,32 +165,52 @@ class UIManager { } /** - * Search Manager - * Handles search functionality + * Filter Manager + * Handles search and archived repository filtering functionality */ -class SearchManager { +class FilterManager { constructor(dataManager, uiManager) { this.dataManager = dataManager; this.uiManager = uiManager; this.searchInput = document.getElementById('searchInput'); - this.initializeSearch(); + this.archivedToggle = document.getElementById('showArchivedToggle'); + this.initializeFilters(); } /** - * Initialize search functionality + * Initialize filter functionality */ - initializeSearch() { + initializeFilters() { + // Search input handler this.searchInput.addEventListener('input', (e) => { - this.performSearch(e.target.value); + this.applyFilters(); + }); + + // Archived toggle handler + this.archivedToggle.addEventListener('change', (e) => { + this.applyFilters(); }); } /** - * Perform search and update UI + * Apply all filters and update UI */ - performSearch(searchTerm) { - const filteredRepos = this.dataManager.filterRepositories(searchTerm); + applyFilters() { + const searchTerm = this.searchInput.value; + const showArchived = this.archivedToggle.checked; + + const filteredRepos = this.dataManager.filterRepositories(searchTerm, showArchived); this.uiManager.renderRepositories(filteredRepos); + this.uiManager.updateStats(filteredRepos); + } + + /** + * Reset all filters + */ + resetFilters() { + this.searchInput.value = ''; + this.archivedToggle.checked = true; + this.applyFilters(); } } @@ -194,7 +222,7 @@ class LizardByteAssetsApp { constructor() { this.dataManager = new RepositoryDataManager(); this.uiManager = new UIManager(); - this.searchManager = null; + this.filterManager = null; } /** @@ -213,8 +241,8 @@ class LizardByteAssetsApp { this.uiManager.renderRepositories(repositories); this.uiManager.updateStats(repositories); - // Initialize search functionality - this.searchManager = new SearchManager(this.dataManager, this.uiManager); + // Initialize filter functionality + this.filterManager = new FilterManager(this.dataManager, this.uiManager); console.log(`Loaded ${repositories.length} repositories`); diff --git a/gh-pages-template/index.html b/gh-pages-template/index.html index 6033df88..c04ec553 100644 --- a/gh-pages-template/index.html +++ b/gh-pages-template/index.html @@ -20,6 +20,17 @@ +
+
+
+ + +
+
+
+