Add resume viewer

This commit is contained in:
2025-08-26 17:28:55 -07:00
parent fda27fdb4b
commit d89b10b345
3 changed files with 197 additions and 0 deletions
@@ -0,0 +1,134 @@
button {
height: 45px;
border-radius: 5px;
margin: 10px;
text-align: center;
padding: 15px 20px;
transition: 0.5s;
background-color: #00000000;
border: 1px solid var(--Mistox-Black);
color: var(--Mistox-Black);
text-decoration: none;
font: inherit;
}
button:hover {
background-color: #00000044;
color: var(--Mistox-Light);
}
.top-bar {
width: 100%;
height: 60px;
}
.content-frame {
background-color: #3c3c3c;
width: calc(100% - 40px);
height: calc(100vh - 400px);
border-radius: 20px;
margin: 10px;
overflow: scroll;
padding: 10px;
color: var(--Mistox-White);
}
.center-item {
display: flex;
width: 100%;
justify-content: center;
}
.content-edit {
position: absolute;
right: 20px;
}
.center-item img {
width: 300px;
}
.content-name {
width: 300px;
text-align: center;
font-size: 30px;
}
.content-name h1 {
margin: 0;
}
.content-link {
display: flex;
width: 300px;
justify-content: center;
}
.content-link a {
text-decoration: none;
color: var(--Mistox-White);
margin-top: auto;
}
.content-desc {
border: solid 1px red;
border-radius: 5px;
padding: 20px;
margin: 0 100px;
margin-bottom: 50px;
}
.content-desc h1 {
margin: 0;
font-size: 20px;
color: #ddd;
}
.content-button {
display: flex;
justify-content: center;
}
.content-button span {
align-content: center;
}
.split-frame {
display: flex;
width: 100%;
}
.half-frame {
width: 50%;
border-right: solid 1px var(--Mistox-Black);
border-left: solid 1px var(--Mistox-Black);
}
.half-frame h2 {
text-align: center;
}
.job-tile {
display: flex;
background-color: var(--Mistox-Black);
justify-content: end;
align-items: center;
border-radius: 10px;
margin: 0 5px;
margin-bottom: 10px;
}
.center-text {
display: flex;
flex: 1;
justify-content: center;
}
.job-tile h1 {
margin: 0;
}
.job-tile button {
color: white;
border-color: white;
}
@@ -0,0 +1,15 @@
<div>
@for (application of List; track application.trackUUID){
<div>
<h1>{{ application.responseEmail }}</h1>
<h1>{{ application.notes }}</h1>
<h1>{{ application.hasBeenViewed }}</h1>
<h1>{{ application.rating }}</h1>
<h1>{{ application.responseStatus }}</h1>
<h1>Date Applied: </h1><h1>{{ application.dateApplied }}</h1>
<button type="button" (click)="viewResume(application)" >VIEW RESUME</button>
</div>
}
</div>
@@ -0,0 +1,48 @@
import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { FormsModule } from '@angular/forms';
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
import { Title } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { Authentication } from 'app/services/Authentication';
import { Application } from 'app/models/Application';
@Component({
selector: 'App-Viewer',
templateUrl: './appviewer.component.html',
styleUrls: [ './appviewer.component.css' ],
imports: [ FormsModule, CommonModule, RouterModule ]
})
export class AppViewerComponent {
public ErrorMsg: string = "";
public List: Application[] = [];
constructor( private http: HttpClient, private router: Router, private route: ActivatedRoute, private title: Title, public auth: Authentication ) {
this.title.setTitle("Applications | BoredCareers");
if (!auth.isLoggedIn){
router.navigate(["/"]);
}
};
ngOnInit(){
this.route.queryParams.subscribe(params => {
const JobListingID = params['JobID'] ? +params['JobID'] : null;
if (JobListingID !== null){
this.http.get<Application[]>("api/application?JobListingID=" + JobListingID).subscribe({
next: data => {
this.List = data;
},
error: err => {
this.ErrorMsg = err.error;
}
});
}
});
}
viewResume(app: Application) {
window.open('/resumes/viewer?ResumeID=' + app.resumeID, '_blank');
}
}