working #41

Merged
derek merged 4 commits from working into main 2025-09-08 18:34:53 -07:00
4 changed files with 44 additions and 14 deletions
+1 -1
View File
@@ -42,7 +42,6 @@ Client:
Allow users to look up jobs and apply [ Boost visibility | Completely manual ] Allow users to look up jobs and apply [ Boost visibility | Completely manual ]
Mark ghost listings to allow users to be informed and put companies on blast Mark ghost listings to allow users to be informed and put companies on blast
Dont allow users to apply to the same job more than once Dont allow users to apply to the same job more than once
Need to add 'job field' to job for better filtering
Need to add 'clear filter button' Need to add 'clear filter button'
resume/viewer: resume/viewer:
@@ -55,6 +54,7 @@ Client:
Format phone number for database Format phone number for database
Check DataType's for email and phone. Check DataType's for email and phone.
Edit employees not implimented yet Edit employees not implimented yet
verify email buttons are very tall
resume/editor: resume/editor:
There is no data validation There is no data validation
@@ -16,6 +16,7 @@ button {
.top-bar { .top-bar {
display: flex; display: flex;
flex-wrap: wrap;
break-inside: avoid; break-inside: avoid;
padding: 20px; padding: 20px;
border-radius: 20px; border-radius: 20px;
@@ -28,7 +29,8 @@ button {
.top-bar-sub { .top-bar-sub {
display: flex; display: flex;
height: 20px; height: 40px;
align-items: center;
} }
.top-bar-sub :nth-child(1) { .top-bar-sub :nth-child(1) {
@@ -39,7 +41,9 @@ button {
.top-bar-sub :nth-child(2) { .top-bar-sub :nth-child(2) {
margin-right: 50px; margin-right: 50px;
margin-left: 5px; margin-left: 5px;
height: 15px; margin-top: 0;
padding: initial;
height: 20px;
} }
.full-width { .full-width {
@@ -115,6 +119,19 @@ button {
color: var(--Mistox-Black); color: var(--Mistox-Black);
} }
.jobs-per-page {
display: flex;
justify-content: end;
padding: 20px;
padding-top: 0;
}
.jobs-per-page h1 {
margin: 0;
margin-right: 5px;
font-size: 20px;
}
@media (max-width: 1920px) { @media (max-width: 1920px) {
.tile-frame{ .tile-frame{
grid-template-columns: repeat(3, 1fr); grid-template-columns: repeat(3, 1fr);
@@ -2,33 +2,37 @@
<div class="top-bar"> <div class="top-bar">
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Country</h1> <h1>Country</h1>
<input name="CountryCode" [(ngModel)]="currentFilter.CountryCode" (ngModelChange)="reloadFilters()" type="text" /> <input name="CountryCode" [(ngModel)]="currentFilter.CountryCode" (ngModelChange)="checkUpdate()" type="text" />
</div> </div>
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Postal Code</h1> <h1>Postal Code</h1>
<input name="PostalCode" [(ngModel)]="currentFilter.PostalCode" (ngModelChange)="reloadFilters()" type="text" /> <input name="PostalCode" [(ngModel)]="currentFilter.PostalCode" (ngModelChange)="checkUpdate()" type="text" />
</div> </div>
@if (currentFilter.CountryCode != null && currentFilter.CountryCode !== "" && currentFilter.PostalCode != null && currentFilter.PostalCode !== ""){ @if (currentFilter.CountryCode != null && currentFilter.CountryCode !== "" && currentFilter.PostalCode != null && currentFilter.PostalCode !== ""){
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Distance</h1> <h1>Distance</h1>
<input name="Distance" [(ngModel)]="currentFilter.Distance" (ngModelChange)="reloadFilters()" type="number" /> <input name="Distance" [(ngModel)]="currentFilter.Distance" type="number" />
</div> </div>
} }
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Job Type</h1> <h1>Job Type</h1>
<input name="CountryCode" [(ngModel)]="currentFilter.JobType" (ngModelChange)="reloadFilters()" type="text" /> <input name="CountryCode" [(ngModel)]="currentFilter.JobType" type="text" />
</div> </div>
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Remote</h1> <h1>Remote</h1>
<input name="Remote" [(ngModel)]="currentFilter.Remote" (ngModelChange)="reloadFilters()" type="checkbox" /> <input name="Remote" [(ngModel)]="currentFilter.Remote" type="checkbox" />
</div> </div>
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Minimum Salary</h1> <h1>Minimum Salary</h1>
<input name="SalaryMin" [(ngModel)]="currentFilter.SalaryMin" (ngModelChange)="reloadFilters()" type="number" /> <input name="SalaryMin" [(ngModel)]="currentFilter.SalaryMin" type="number" />
</div> </div>
<div class="top-bar-sub"> <div class="top-bar-sub">
<h1>Maximum Salary</h1> <h1>Maximum Salary</h1>
<input name="SalaryMax" [(ngModel)]="currentFilter.SalaryMax" (ngModelChange)="reloadFilters()" type="number" /> <input name="SalaryMax" [(ngModel)]="currentFilter.SalaryMax" type="number" />
</div>
<div class="top-bar-sub">
<h1></h1>
<input name="ApplyButton" style="height: 25px;" value="APPLY" type="button" (click)="reloadFilters()" />
</div> </div>
</div> </div>
@@ -44,6 +48,8 @@
<h1>{{ cur.jobType }}</h1> <h1>{{ cur.jobType }}</h1>
@if(cur.remote){ @if(cur.remote){
<h1>Remote</h1> <h1>Remote</h1>
}@else{
<h1>In-Person</h1>
} }
</div> </div>
<div class="tile-split"> <div class="tile-split">
@@ -55,8 +61,9 @@
</div> </div>
</div> </div>
} }
<div> </div>
<div class="jobs-per-page">
<h1>Jobs Per Page</h1> <h1>Jobs Per Page</h1>
<input name="JobsPerPage" [(ngModel)]="currentFilter.JobsPerPage" (ngModelChange)="reloadFilters()" type="number" /> <input name="JobsPerPage" [(ngModel)]="currentFilter.JobsPerPage" (ngModelChange)="reloadFilters()" type="number" />
</div>
</div> </div>
@@ -38,6 +38,12 @@ export class JobsComponent {
}); });
} }
checkUpdate(){
if ( this.currentFilter.PostalCode === "" || this.currentFilter.CountryCode === "" ){
this.currentFilter.Distance = null;
}
}
reloadFilters(){ reloadFilters(){
var queryBuilder = "api/joblisting?PageQuantity=" + this.currentFilter.JobsPerPage + "&Page=" + this.currentFilter.CurrentPage; var queryBuilder = "api/joblisting?PageQuantity=" + this.currentFilter.JobsPerPage + "&Page=" + this.currentFilter.CurrentPage;