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
7 changes: 5 additions & 2 deletions .github/workflows/updateCodeGov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
- name: Update CodeGov.json
run: node config/updateCodeGov.js

- name: Update issue-pool.json
run: node config/updateIssuePool.js

- name: Configure Git
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
Expand All @@ -36,6 +39,6 @@ jobs:
- name: Commit and push changes
run: |
git pull
git add codegov.json
git diff --staged --quiet || git commit -m "updated codegov.json file with latest index additions"
git add issue-pool.json
git diff --staged --quiet || git commit -m "updated codegov.json and issue-pool.json files with latest additions"
git push
70 changes: 70 additions & 0 deletions _data/issuesData.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
const fs = require('fs');
const path = require('path');

module.exports = function() {

Check warning on line 4 in _data/issuesData.js

View workflow job for this annotation

GitHub Actions / Run linter

Unexpected unnamed function
const rawData = fs.readFileSync(path.join(__dirname, '../issue-pool.json'), 'utf8');
const data = JSON.parse(rawData);

const issues = [];
const organizations = new Set();
const statuses = new Set();

Object.entries(data).forEach(([issueId, issueData]) => {
if (issueData.repo_owner) {
organizations.add(issueData.repo_owner);
}

if (issueData.status_has_assignee) {
statuses.add('Assigned');
} else {
statuses.add('Unassigned');
}

if (issueData.flags_is_bug) {
statuses.add('Bug');
}

if (issueData.flags_is_feature) {
statuses.add('Feature');
}

if (issueData.flags_needs_help) {
statuses.add('Help Wanted');
}

if (issueData.flags_is_beginner_friendly) {
statuses.add('Good First Issue');
}

issues.push({
id: issueId,
title: issueData.content_title,
url: issueData.url,
owner: issueData.repo_owner,
isOpen: issueData.status_is_open,
hasAssignee: issueData.status_has_assignee,
author: issueData.people_author,
assignee: issueData.people_assignee,
createdDate: issueData.time_created_date,
lastUpdated: issueData.time_last_updated,
daysOld: issueData.time_days_old,
commentCount: issueData.engagement_comment_count,
reactionCount: issueData.engagement_reaction_count,
labels: issueData.labels_list || [],
labelCount: issueData.labels_count,
isBeginner: issueData.flags_is_beginner_friendly,
needsHelp: issueData.flags_needs_help,
isBug: issueData.flags_is_bug,
isFeature: issueData.flags_is_feature,
repoName: issueData.url ? issueData.url.split('/').slice(-3, -2)[0] : 'Unknown'
});
});

return {
issues,
filters: {
organizations: Array.from(organizations).sort(),
statuses: Array.from(statuses).sort(),
}
};
};
2 changes: 2 additions & 0 deletions _data/navigation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@ codegov:
url: /
- name: Agencies
url: /agencies/
- name: Issues
url: /issues/
- name: Guidance
url: /agency-compliance/compliance/dashboard/
35 changes: 26 additions & 9 deletions _includes/filters.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<div class="filters-container" data-filter-target="{{ filterTarget }}">
<form class="usa-form usa-form--large" id="filter-form">
<form class="usa-form usa-form--large padding-right-3" id="filter-form">
<div class="filter-inputs grid-col grid-gap">
<div class="grid-col-12 tablet:grid-col-6 desktop:grid-col-10">
<label class="usa-label" for="search-input">Search</label>
Expand All @@ -16,11 +16,18 @@
<label class="usa-label" for="select-status">Status</label>
<select class="usa-select" id="status-select" name="status" data-filter-type="select">
<option value="">All Statuses</option>
{% for status in codegovData.filters.statuses %}
<option value="{{ status }}">{{ status }}</option>
{% endfor %}
{% if filterTarget == 'issues' %}
{% for status in issuesData.filters.statuses %}
<option value="{{ status }}">{{ status }}</option>
{% endfor %}
{% else %}
{% for status in codegovData.filters.statuses %}
<option value="{{ status }}">{{ status }}</option>
{% endfor %}
{% endif %}
</select>
</div>
{% if filterTarget != 'issues' %}
<div class="grid-col-12 tablet:grid-col-6 desktop:grid-col-10">
<label class="usa-label" for="agency-status">Federal Agency</label>
<select class="usa-select" id="agency-select" name="agency" data-filter-type="select">
Expand All @@ -30,6 +37,7 @@
{% endfor %}
</select>
</div>
{% endif %}
{% if filterTarget == 'projects' %}
<div class="grid-col-12 tablet:grid-col-6 desktop:grid-col-10">
<label class="usa-label" for="category-select">Category</label>
Expand Down Expand Up @@ -63,9 +71,15 @@
<label class="usa-label" for="org-select">Organization</label>
<select class="usa-select" id="org-select" name="organization" data-filter-type="select">
<option value="">All Organizations</option>
{% for org in codegovData.filters.organizations %}
<option value="{{ org }}">{{ org }}</option>
{% endfor %}
{% if filterTarget == 'issues' %}
{% for org in issuesData.filters.organizations %}
<option value="{{ org }}">{{ org }}</option>
{% endfor %}
{% else %}
{% for org in codegovData.filters.organizations %}
<option value="{{ org }}">{{ org }}</option>
{% endfor %}
{% endif %}
</select>
</div>
</div>
Expand All @@ -78,6 +92,11 @@
<option value="name-desc">Name (Z-A)</option>
<option value="projects-asc">Fewest Projects</option>
<option value="projects-desc">Most Projects</option>
{% else if filterTarget == 'issues' %}
<option value="comments-desc">Most Comments</option>
<option value="comments-asc">Fewest Comments</option>
<option value="reactions-asc">Fewest Reactions</option>
<option value="reactions-desc">Most Reactions</option>
{% else %}
<option value="name-asc">Name (A-Z)</option>
<option value="name-desc">Name (Z-A)</option>
Expand All @@ -94,8 +113,6 @@
<button type="button" class="filter-clear-button usa-button usa-button--outline margin-left-4" id="clear-filters">
Clear Filters
</button>
</div>
<div class="grid-col-auto">
<span id="results-count" class="usa-hint margin-left-2"></span>
</div>
</div>
Expand Down
Loading
Loading