Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/scripts/generate-packages.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
}
Expand Down
1 change: 1 addition & 0 deletions .github/scripts/sync-assets.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ async function processRepository(github, context, repo, repositoryData, totalAss

const repoData = {
name: repo.name,
archived: repo.archived,
releases: []
};

Expand Down
62 changes: 45 additions & 17 deletions gh-pages-template/assets/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()));
Expand Down Expand Up @@ -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();
}
}

Expand All @@ -194,7 +222,7 @@ class LizardByteAssetsApp {
constructor() {
this.dataManager = new RepositoryDataManager();
this.uiManager = new UIManager();
this.searchManager = null;
this.filterManager = null;
}

/**
Expand All @@ -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`);

Expand Down
11 changes: 11 additions & 0 deletions gh-pages-template/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@
</div>
</div>

<div class="row justify-content-center mb-4">
<div class="col-auto">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="showArchivedToggle">
<label class="form-check-label" for="showArchivedToggle">
Show archived repositories
</label>
</div>
</div>
</div>

<div class="row justify-content-center mb-4">
<div class="col-auto">
<div class="card h-100 shadow border-0 rounded-0">
Expand Down