Skip to content

Develop#9

Merged
raymondjstone merged 2 commits into
masterfrom
develop
Apr 8, 2026
Merged

Develop#9
raymondjstone merged 2 commits into
masterfrom
develop

Conversation

@raymondjstone
Copy link
Copy Markdown
Owner

filter changes

Raymond Stone added 2 commits April 8, 2026 19:47
Added a filter to allow users to view jobs with or without descriptions. Updated Jobs.razor UI with a new dropdown, extended filter logic and JobListingService to support the new NeedsDescription property, and persisted filter state in JobViewState. Updated binary assets to reflect these changes.
Copilot AI review requested due to automatic review settings April 8, 2026 18:48
@raymondjstone raymondjstone merged commit 2187b38 into master Apr 8, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 8, 2026

Qodana for JVM

It seems all right 👌

No new problems were found according to the checks applied

☁️ View the detailed Qodana report

Contact Qodana team

Contact us at qodana-support@jetbrains.com

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new “Description” filter to the job listing UI and filtering pipeline so users can narrow results based on whether listings are missing descriptions, alongside updating the bundled portable artifacts.

Changes:

  • Added NeedsDescription to JobListingFilter and applied it in FilterJobListings.
  • Added a Description dropdown filter in Jobs.razor and persisted it via JobViewState.
  • Updated Git LFS pointers for portable ZIP split parts (x86/x64).

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
Services/JobListingService.cs Introduces NeedsDescription filter logic and adds the filter field to JobListingFilter.
Components/Pages/Jobs.razor Adds the UI control and wires it into filtering and view-state persistence.
Models/AppSettings.cs Persists the new filter selection in JobViewState.
Portable/JobTracker-x86.zip.001 Updates LFS pointer for x86 portable artifact part.
Portable/JobTracker-x86.zip.002 Updates LFS pointer for x86 portable artifact part.
Portable/JobTracker-x64.zip.001 Updates LFS pointer for x64 portable artifact part.
Portable/JobTracker-x64.zip.002 Updates LFS pointer for x64 portable artifact part.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +2283 to +2289
// Needs description filter
if (filter.NeedsDescription.HasValue)
{
if (filter.NeedsDescription.Value)
query = query.Where(j => string.IsNullOrWhiteSpace(j.Description));
else
query = query.Where(j => !string.IsNullOrWhiteSpace(j.Description));
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new NeedsDescription filter only checks for an empty/whitespace Description, but elsewhere in this service “needs description” is defined as empty OR very short (e.g., < 100 chars in UpdateJobDescription, GetJobsNeedingDescriptions, and stats). This makes the UI filter inconsistent with the existing badge/API and will miss jobs that have a stub description. Consider using the same predicate here (including the length threshold) and reusing it for both the true and false branches to keep behavior consistent.

Suggested change
// Needs description filter
if (filter.NeedsDescription.HasValue)
{
if (filter.NeedsDescription.Value)
query = query.Where(j => string.IsNullOrWhiteSpace(j.Description));
else
query = query.Where(j => !string.IsNullOrWhiteSpace(j.Description));
const int MinimumDescriptionLength = 100;
bool NeedsDescription(JobListing job) =>
string.IsNullOrWhiteSpace(job.Description) ||
job.Description.Trim().Length < MinimumDescriptionLength;
// Needs description filter
if (filter.NeedsDescription.HasValue)
{
if (filter.NeedsDescription.Value)
query = query.Where(NeedsDescription);
else
query = query.Where(j => !NeedsDescription(j));

Copilot uses AI. Check for mistakes.
Comment on lines 2937 to 2941
filter.Interest = string.IsNullOrEmpty(selectedInterest) ? null : Enum.Parse<InterestStatus>(selectedInterest);
filter.HasSalary = selectedHasSalary == "true" ? true : selectedHasSalary == "false" ? false : null;
filter.SalarySourceFilter = selectedHasSalary == "posted" || selectedHasSalary == "estimated" || selectedHasSalary == "not-estimated" ? selectedHasSalary : null;
filter.NeedsDescription = selectedNeedsDescription == "true" ? true : selectedNeedsDescription == "false" ? false : null;
filter.ApplicationStage = string.IsNullOrEmpty(selectedApplicationStage) ? null : Enum.Parse<ApplicationStage>(selectedApplicationStage);
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

selectedNeedsDescription is now part of the active filter state (filter.NeedsDescription), but it isn’t included in the filter preset save/restore logic (SaveCurrentAsPreset / OnPresetSelected). This means presets won’t persist the new Description filter selection. Consider extending SavedFilterPreset and updating preset save/restore to include this field for consistent behavior with the other filter controls.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants