{"version":3,"file":"src_modules_landing_landing_module_ts.1fbd569752272ade.js","mappings":"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","names":["i0","PasswordResetDialogComponent","constructor","dialogRef","data","screenSizeSvc","this","Subscription","title","TitleText","iconcolor","IconColor","iconname","IconName","canceltext","CancelText","showIcon","ShowIcon","subrelease","ScreenSizeSub","subscribe","size","SmallDisplay","IsSmallDisplay","sub","_subrelease","add","CancelHandler","close","OKHandler","emailval","Email","trim","emailCtrl","control","Validators","markAsTouched","emailInput","nativeElement","focus","ngOnInit","ngOnDestroy","unsubscribe","MAT_DIALOG_DATA","selectors","ctx","PasswordResetDialogService","matDialog","mediaChange","smallMediaSize","includes","Alias","CloseAllDialogs","closeAll","Open","options","dlgoptions","disableClose","MessageText","OKText","maxHeight","width","maxWidth","panelClass","open","afterClosed","factory","PasswordResetDialogModule","imports","FormsModule","CoreDialogModule","MatDialogModule","MatButtonModule","MatFormFieldModule","MatIconModule","MatInputModule","LandingService","configSvc","http","CreateNewAccount","email","password","post","hostAddress","Password","responseType","SendResetEmail","_r7","LoginPanelComponent","EventEmitter","ViewReady","pwdfield","_pwd","_pwdfield","emailfield","_email","_emailfield","ngOnChanges","ShowRegistration","ScreenSize","ngAfterViewInit","setTimeout","CreateAccount","create","emit","NewUserEmail","NewUserPassword","PasswordVerification","NewUserPassword2","LoginUser","login","ImpersonatedEmail","ResetPassword","resetPassword","JobBrowserComponent","AvailableFilters","DisplayText","Code","NonInstFilters","Object","entries","AdvertisedJobs","filter","j","Category","reduce","p","c","SubCategory","map","key","value","Count","sort","a","b","localeCompare","SetFilter","code","filterChange","SetSubfilter","subfilterChange","ViewLogin","viewLogin","ViewVacancies","viewVacancies","VacancyTableComponent","Subject","MatTableDataSource","SearchUpdate","pipe","debounceTime","distinctUntilChanged","val","UpdateFilter","paginator","_paginator","_pag","VacanciesSource","sorter","_sorter","_sort","VisibleHeaders","AllColumns","VisibleColumns","ShowJobDetails","item","view","self","filtered","Vacancies","v","SearchText","keep","ltext","toLowerCase","PositionLocalJobTitle","DepartmentName","ActiveFilter","ActiveSubfilter","MatPaginator","MatSort","LandingComponent","authSvc","errSvc","landingSvc","msgBoxSvc","optionBoxSvc","pwdResSvc","route","screensizeSvc","splashSvc","webappSvc","combineLatest","GetSystemConfig","params","GetAdvertisedJobs","next","packet","JobFairActive","TimedOut","inactive","Now","Date","ActiveAlerts","SystemWindows","d","Description","Active","BeginDate","EndDate","LastUserInfo","Expiration","error","err","HandleServiceError","info","endsWith","SnackbarAlert","OpenSplash","CloseSplash","test","SnackbarError","HandleFilterChange","type","HandleJobViewer","GetJobDescription","PositionLocalJobCode","desc","SelectedJobDescription","ShowingJobDescription","ValidateUser","addDays","ProcessLogin","result","emailResult","Options","Response","ClosesDialog","Color","oresult","window","location","href","$event","LocalStorage","routes","path","component","LandingRoutingModule","RouterModule","LandingModule","CommonModule","JFlexLayoutModule","MatDividerModule","MatPaginatorModule","MatSortModule","MatTableModule","MessageBoxDialogModule","OptionBoxDialogModule","JobDescriptionModule","ResponsivePaginationModule","SafeHTMLPipeModule","MatchValidatorModule","PasswordComplexityValidatorModule"],"sourceRoot":"webpack:///","sources":["./src/modules/landing/dialogs/password-reset/password-reset.dialog.component.html","./src/modules/landing/dialogs/password-reset/password-reset.dialog.component.ts","./src/modules/landing/dialogs/password-reset/password-reset.dialog.module.ts","./src/modules/landing/services/landing.service.ts","./src/modules/landing/components/login/login.component.html","./src/modules/landing/components/login/login.component.ts","./src/modules/landing/components/jobbrowser/jobbrowser.component.html","./src/modules/landing/components/jobbrowser/jobbrowser.component.ts","./src/modules/landing/components/vacancy-table/vacancy-table.component.html","./src/modules/landing/components/vacancy-table/vacancy-table.component.ts","./src/modules/landing/components/landing/landing.component.html","./src/modules/landing/components/landing/landing.component.ts","./src/modules/landing/landing.routing-module.ts","./src/modules/landing/landing.module.ts"],"sourcesContent":["
\r\n

\r\n {{ title }}\r\n {{ iconname }}\r\n

\r\n
\r\n
\r\n Enter your email address and we will email you instructions on how to reset your password.\r\n
\r\n \r\n \r\n Please provide a valid email address.\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n","import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { AbstractControl, NgModel, Validators } from '@angular/forms';\r\nimport { MatDialogConfig, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport { Subscription, TeardownLogic } from 'rxjs';\r\nimport { ScreenSizeService } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\n\r\n// #region Custom Classes\r\n\r\nexport interface PasswordResetDialogOptions extends MatDialogConfig {\r\n TitleText?: string;\r\n CancelText?: string;\r\n IconColor?: string;\r\n IconName?: string;\r\n ShowIcon?: boolean;\r\n}\r\n\r\nexport interface PasswordResetDialogResult {\r\n Email?: string;\r\n}\r\n\r\n// #endregion\r\n\r\n@Component({\r\n selector: 'dialog-password-reset-component',\r\n styleUrls: ['password-reset.dialog.component.scss'],\r\n templateUrl: 'password-reset.dialog.component.html',\r\n})\r\nexport class PasswordResetDialogComponent implements OnInit, OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n\r\n @ViewChild('email') emailCtrl: NgModel | null = null;\r\n @ViewChild('emailInput') emailInput: ElementRef | null = null;\r\n\r\n title: string;\r\n iconcolor: string;\r\n iconname: string;\r\n canceltext: string;\r\n showIcon: boolean;\r\n\r\n Email = '';\r\n SmallDisplay = false;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) data: PasswordResetDialogOptions,\r\n private screenSizeSvc: ScreenSizeService\r\n ) {\r\n this.title = data?.TitleText || 'Reset Your Password';\r\n this.iconcolor = data?.IconColor || 'primary';\r\n this.iconname = data?.IconName || 'help';\r\n this.canceltext = data?.CancelText || 'Cancel';\r\n this.showIcon = data?.ShowIcon != null ? data.ShowIcon : false;\r\n\r\n this.subrelease = this.screenSizeSvc.ScreenSizeSub.subscribe((size) => (this.SmallDisplay = size.IsSmallDisplay));\r\n }\r\n\r\n CancelHandler(): void {\r\n this.dialogRef.close(null);\r\n }\r\n\r\n OKHandler() {\r\n const emailval = (this.Email || '').trim();\r\n\r\n if (this.emailCtrl?.control && !!emailval && !Validators.email(this.emailCtrl.control)) {\r\n this.dialogRef.close(emailval);\r\n } else {\r\n this.emailCtrl?.control?.markAsTouched();\r\n this.emailInput?.nativeElement?.focus();\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngOnDestroy(): void {\r\n this._subrelease?.unsubscribe();\r\n }\r\n}\r\n","import { NgModule, Injectable, OnDestroy } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { Observable, Subscription, TeardownLogic } from 'rxjs';\r\n\r\nimport { CoreDialogModule, ScreenSizeService } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\n\r\nimport { PasswordResetDialogComponent, PasswordResetDialogOptions } from './password-reset.dialog.component';\r\n\r\n@Injectable()\r\nexport class PasswordResetDialogService implements OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n smallMediaSize = false;\r\n\r\n constructor(private matDialog: MatDialog, private mediaChange: ScreenSizeService) {\r\n this.subrelease = this.mediaChange.ScreenSizeSub.subscribe((size) => {\r\n this.smallMediaSize = ['xs', 'sm', 'md'].includes(size.Alias);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subrelease.unsubscribe();\r\n }\r\n\r\n // #region Close All Dialogs Service Call\r\n\r\n CloseAllDialogs(): void {\r\n this.matDialog.closeAll();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Open\r\n\r\n Open(options?: PasswordResetDialogOptions): Observable {\r\n const self = this;\r\n const dlgoptions: PasswordResetDialogOptions = {\r\n disableClose: true,\r\n data: {\r\n TitleText: 'Reset Your Password',\r\n MessageText: '',\r\n OKText: 'OK',\r\n CancelText: 'Cancel',\r\n ...options,\r\n },\r\n maxHeight: '90vh',\r\n };\r\n\r\n if (self.smallMediaSize) {\r\n dlgoptions.width = '90vw';\r\n dlgoptions.maxWidth = '90vw';\r\n dlgoptions.maxHeight = '90vh';\r\n dlgoptions.panelClass = 'smalldialogpanel';\r\n }\r\n\r\n const openHandle = this.matDialog.open(PasswordResetDialogComponent, dlgoptions);\r\n\r\n return openHandle.afterClosed();\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\n@NgModule({\r\n imports: [FormsModule, CoreDialogModule, MatDialogModule, MatButtonModule, MatFormFieldModule, MatIconModule, MatInputModule],\r\n declarations: [PasswordResetDialogComponent],\r\n exports: [PasswordResetDialogComponent],\r\n providers: [PasswordResetDialogService],\r\n})\r\nexport class PasswordResetDialogModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { ConfigService } from 'services/config/config.service';\r\nimport { Nullable } from 'classes/nullable';\r\n\r\n@Injectable({\r\n providedIn: 'any',\r\n})\r\nexport class LandingService {\r\n constructor(private configSvc: ConfigService, private http: HttpClient) {}\r\n\r\n // #region Create New Account\r\n\r\n CreateNewAccount(email: Nullable, password: Nullable) {\r\n return this.http.post(\r\n this.configSvc.hostAddress + `api/Account/create`,\r\n {\r\n Email: email || '',\r\n Password: password || '',\r\n },\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Send Reset Email\r\n\r\n SendResetEmail(email: Nullable) {\r\n return this.http.post(\r\n this.configSvc.hostAddress + `api/Account/reset`,\r\n {\r\n Email: email || '',\r\n },\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n // #endregion\r\n}\r\n","
\r\n
Login or Register
\r\n
\r\n Note: During the online application process, you will be assigned a reference number. This is your Polk County\r\n Public Schools application number.\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Existing User\r\n
\r\n \r\n First Time User?\r\n \r\n
\r\n
Login to access your application.
\r\n \r\n \r\n Please enter a valid email address.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
You were logged out due to being inactive for 20 minutes.
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
First Time Users
\r\n \r\n Existing User?\r\n \r\n
\r\n\r\n
Register now to start your application.
\r\n \r\n \r\n Please enter a valid email address.\r\n \r\n \r\n \r\n Must be at least {{pwd1?.errors?.['MinLength']?.requiredLength}} characters.\r\n \r\n \r\n \r\n Passwords do not match. Try again.\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewChild } from '@angular/core';\r\n\r\nimport { Subscription, TeardownLogic } from 'rxjs';\r\nimport { LocalStorage } from 'ngx-webstorage';\r\n\r\nimport { NewUserInfo } from 'modules/landing/services/landing.service.class';\r\n\r\n@Component({\r\n selector: 'app-login-panel',\r\n styleUrls: ['login.component.scss'],\r\n templateUrl: 'login.component.html',\r\n})\r\nexport class LoginPanelComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n\r\n @ViewChild('pwdfield') set pwdfield(_pwd: ElementRef | null) {\r\n this._pwdfield = _pwd;\r\n }\r\n get pwdfield() {\r\n return this._pwdfield;\r\n }\r\n private _pwdfield: ElementRef | null = null;\r\n\r\n @ViewChild('emailfield') set emailfield(_email: ElementRef | null) {\r\n this._emailfield = _email;\r\n }\r\n get emailfield() {\r\n return this._emailfield;\r\n }\r\n private _emailfield: ElementRef | null = null;\r\n\r\n @Input() Email = '';\r\n ImpersonatedEmail = '';\r\n NewUserEmail = '';\r\n NewUserPassword = '';\r\n NewUserPassword2 = '';\r\n Password = '';\r\n @Input() ScreenSize = '';\r\n ShowImpersonation = false;\r\n ShowRegistration = true;\r\n @Input() TimedOut = false;\r\n ViewReady = false;\r\n\r\n @Output() create = new EventEmitter();\r\n @Output() login = new EventEmitter();\r\n @Output() resetPassword = new EventEmitter();\r\n\r\n constructor() {\r\n this.ViewReady = true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subrelease.unsubscribe();\r\n }\r\n\r\n ngOnChanges() {\r\n this.ShowRegistration = this.ScreenSize !== 'xs';\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n !!this.Email ? this.pwdfield?.nativeElement?.focus() : this.emailfield?.nativeElement?.focus();\r\n }, 50);\r\n }\r\n\r\n // #region Create Account\r\n\r\n CreateAccount() {\r\n this.create.emit({\r\n Email: this.NewUserEmail,\r\n Password: this.NewUserPassword,\r\n PasswordVerification: this.NewUserPassword2,\r\n } as NewUserInfo);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Login User\r\n\r\n LoginUser() {\r\n this.login.emit({\r\n Email: this.Email,\r\n Password: this.Password,\r\n ImpersonatedEmail: this.ImpersonatedEmail,\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Reset Password\r\n\r\n ResetPassword() {\r\n this.resetPassword.emit();\r\n }\r\n\r\n // #endregion\r\n}\r\n","\r\n
Browse Jobs
\r\n
To see a list of vacancies, select a category below.
\r\n \r\n \r\n \r\n {{ btn.DisplayText }}\r\n \r\n \r\n \r\n
\r\n
Filter by Vacancy Subcategory:
\r\n \r\n {{ btn.DisplayText }} ({{ btn.Count }})\r\n \r\n
\r\n \r\n \r\n Back To Vacancies\r\n \r\n \r\n \r\n chevron_left\r\n Login\r\n \r\n\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output } from '@angular/core';\r\n\r\nimport { Subscription, TeardownLogic } from 'rxjs';\r\nimport { AdvertisedJobInfo } from 'services/webapp/webapp.service.class';\r\n\r\n@Component({\r\n selector: 'app-job-browser',\r\n styleUrls: ['jobbrowser.component.scss'],\r\n templateUrl: 'jobbrowser.component.html',\r\n})\r\nexport class JobBrowserComponent implements OnChanges, OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n\r\n @Input() AdvertisedJobs: AdvertisedJobInfo[] = [];\r\n @Input() ActiveFilter = '';\r\n @Input() ActiveSubfilter = '';\r\n AvailableFilters: Filter[];\r\n NonInstFilters: SubFilter[] = [];\r\n @Input() ShowingJobDescription = false;\r\n ViewReady = false;\r\n\r\n @Output() filterChange = new EventEmitter();\r\n @Output() subfilterChange = new EventEmitter();\r\n @Output() viewLogin = new EventEmitter();\r\n @Output() viewVacancies = new EventEmitter();\r\n\r\n constructor() {\r\n this.AvailableFilters = [\r\n { DisplayText: 'All', Code: 'all' },\r\n { DisplayText: 'Administrative', Code: 'Administrative' },\r\n { DisplayText: 'Instructional', Code: 'Instructional' },\r\n { DisplayText: 'Non-Instructional', Code: 'Non-Instructional' },\r\n ];\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subrelease.unsubscribe();\r\n }\r\n\r\n ngOnChanges(): void {\r\n // Parse the provided advertised jobs and build out the possible subcategories and their counts.\r\n this.NonInstFilters = Object.entries(\r\n (this.AdvertisedJobs || [])\r\n .filter((j) => j.Category === 'Non-Instructional')\r\n .reduce((p, c) => ((p[c.SubCategory] = (p[c.SubCategory] || 0) + 1), p), {} as any)\r\n )\r\n .map(\r\n ([key, value]) =>\r\n ({\r\n DisplayText: key,\r\n Code: key,\r\n Count: value,\r\n } as SubFilter)\r\n )\r\n .sort((a, b) => a.DisplayText.localeCompare(b.DisplayText));\r\n\r\n this.ViewReady = true;\r\n }\r\n\r\n // #region Set Filter\r\n\r\n SetFilter(code: string) {\r\n this.filterChange.emit(code);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Set Subfilter\r\n\r\n SetSubfilter(code: string) {\r\n this.subfilterChange.emit(code);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region View Login\r\n\r\n ViewLogin() {\r\n this.SetFilter('');\r\n this.viewLogin.emit();\r\n }\r\n\r\n // #endregion\r\n\r\n // #region View Vacancies\r\n\r\n ViewVacancies() {\r\n this.viewVacancies.emit();\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\ninterface Filter {\r\n DisplayText: string;\r\n Code: string;\r\n}\r\n\r\ninterface SubFilter extends Filter {\r\n Count: number;\r\n}\r\n","
\r\n
Vacancy List
\r\n
\r\n Search:\r\n \r\n \r\n \r\n
\r\n \r\n \r\n Title\r\n \r\n {{ item.PositionLocalJobTitle }}\r\n \r\n \r\n\r\n \r\n Location\r\n \r\n {{ item.DepartmentName }}\r\n \r\n \r\n\r\n \r\n Schedule\r\n \r\n {{ item.Schedule }}\r\n \r\n \r\n\r\n \r\n Expires\r\n \r\n {{ item.VacancyEndDate | date: 'M/d/yyyy' }}\r\n \r\n \r\n\r\n \r\n Job Description\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n Title\r\n {{ item.PositionLocalJobTitle }}\r\n
\r\n
\r\n Location\r\n {{ item.DepartmentName }}\r\n
\r\n
\r\n Schedule\r\n {{ item.Schedule }}\r\n
\r\n
\r\n Expires\r\n {{ item.VacancyEndDate | date: 'M/d/yyyy' }}\r\n
\r\n
\r\n Job Description\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n There are no records found.\r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewChild } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\n\r\nimport { debounceTime, distinctUntilChanged, Subject, Subscription, TeardownLogic } from 'rxjs';\r\nimport { AdvertisedJobInfo } from 'services/webapp/webapp.service.class';\r\n\r\n@Component({\r\n selector: 'app-vacancy-table',\r\n styleUrls: ['vacancy-table.component.scss'],\r\n templateUrl: 'vacancy-table.component.html',\r\n})\r\nexport class VacancyTableComponent implements OnChanges, OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n\r\n @ViewChild(MatPaginator) get paginator() {\r\n return this._paginator;\r\n }\r\n set paginator(_pag: MatPaginator | null) {\r\n this._paginator = _pag;\r\n\r\n if (_pag && this.VacanciesSource) {\r\n this.VacanciesSource.paginator = _pag;\r\n }\r\n }\r\n private _paginator: MatPaginator | null = null;\r\n\r\n @ViewChild(MatSort) get sorter() {\r\n return this._sorter;\r\n }\r\n set sorter(_sort: MatSort | null) {\r\n this._sorter = _sort;\r\n\r\n if (_sort && this.VacanciesSource) {\r\n this.VacanciesSource.sort = _sort;\r\n }\r\n }\r\n private _sorter: MatSort | null = null;\r\n\r\n @Input() ActiveFilter = 'all';\r\n @Input() ActiveSubfilter = '';\r\n AllColumns = ['PositionLocalJobTitle', 'DepartmentName', 'Schedule', 'VacancyEndDate', 'Actions'];\r\n SearchText = '';\r\n SearchUpdate = new Subject();\r\n @Input() ScreenSize = '';\r\n @Input() Vacancies: AdvertisedJobInfo[] = [];\r\n VacanciesSource = new MatTableDataSource([]);\r\n ViewReady = false;\r\n VisibleColumns: string[] = [];\r\n VisibleHeaders: string[] = [];\r\n\r\n @Output() view = new EventEmitter();\r\n\r\n constructor() {\r\n // Listen for the search field update subject.\r\n this.subrelease = this.SearchUpdate.pipe(debounceTime(200), distinctUntilChanged()).subscribe((val) => {\r\n // Update the filtering.\r\n this.UpdateFilter();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subrelease.unsubscribe();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.VisibleHeaders = this.ScreenSize === 'xs' ? ['SmallDisplay'] : this.AllColumns;\r\n this.VisibleColumns = this.VisibleHeaders;\r\n\r\n // Do a filter update, since the input(s) changed.\r\n this.UpdateFilter();\r\n\r\n this.ViewReady = true;\r\n }\r\n\r\n // #region Show Job Details\r\n\r\n ShowJobDetails(item: AdvertisedJobInfo) {\r\n if (!item) return;\r\n\r\n this.view.emit(item);\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Update Filter\r\n\r\n UpdateFilter() {\r\n const self = this;\r\n\r\n const filtered = self.Vacancies.filter((v) => {\r\n // Text filter\r\n if (self.SearchText) {\r\n let keep = false; // Assume we aren't meeting the search text until we do.\r\n const ltext = self.SearchText.toLowerCase();\r\n\r\n if (v.PositionLocalJobTitle?.toLowerCase().includes(ltext)) keep = true;\r\n if (!keep && v.DepartmentName?.toLowerCase().includes(ltext)) keep = true;\r\n\r\n if (!keep) return false;\r\n }\r\n\r\n // Category filter\r\n if (self.ActiveFilter === 'all') return true;\r\n\r\n // If the filter is NOT Non-Instructional, we only need to match the category to the filter.\r\n if (self.ActiveFilter !== 'Non-Instructional') return self.ActiveFilter === v.Category;\r\n\r\n // For non-instructional, we also need to possibly match on the sub category as well.\r\n return v.Category === 'Non-Instructional' && (!self.ActiveSubfilter || v.SubCategory === self.ActiveSubfilter);\r\n });\r\n\r\n self.VacanciesSource = new MatTableDataSource(filtered);\r\n self.VacanciesSource.paginator = self.paginator;\r\n self.VacanciesSource.sort = self.sorter;\r\n }\r\n\r\n // #endregion\r\n}\r\n","\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { combineLatest, Subscription, TeardownLogic } from 'rxjs';\r\nimport { addDays } from 'date-fns';\r\nimport { LocalStorage } from 'ngx-webstorage';\r\n\r\nimport { MessageBoxDialogService } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\nimport { OptionBoxDialogService } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\nimport { PasswordResetDialogService } from 'modules/landing/dialogs/password-reset';\r\nimport { SplashService } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\n\r\nimport { AuthService } from 'services/auth/auth.service';\r\nimport { ErrorService } from 'services/error/error.service';\r\nimport { LandingService } from 'modules/landing/services/landing.service';\r\nimport { NewUserInfo } from 'modules/landing/services/landing.service.class';\r\nimport { ScreenSizeService } from 'services/screensize/screensize.service';\r\nimport { WebApplicationService } from 'services/webapp/webapp.service';\r\nimport { AdvertisedJobInfo, JobDescriptionInfo, SystemWindowInfo } from 'services/webapp/webapp.service.class';\r\n\r\n@Component({\r\n selector: 'app-landing',\r\n styleUrls: ['landing.component.scss'],\r\n templateUrl: 'landing.component.html',\r\n})\r\nexport class LandingComponent implements OnInit, OnDestroy {\r\n private _subrelease = new Subscription();\r\n set subrelease(sub: TeardownLogic) {\r\n this._subrelease.add(sub);\r\n }\r\n\r\n ActiveAlerts: SystemWindowInfo[] = [];\r\n ActiveFilter = '';\r\n ActiveSubfilter = '';\r\n AdvertisedJobs: AdvertisedJobInfo[] = [];\r\n JobFairActive = false;\r\n @LocalStorage() LastUserInfo!: LastUserInfo | null;\r\n ScreenSize = '';\r\n SelectedJobDescription: JobDescriptionInfo | null = null;\r\n ShowingJobDescription = false;\r\n TimedOut = false;\r\n ViewReady = false;\r\n\r\n constructor(\r\n private authSvc: AuthService,\r\n private errSvc: ErrorService,\r\n private landingSvc: LandingService,\r\n private msgBoxSvc: MessageBoxDialogService,\r\n private optionBoxSvc: OptionBoxDialogService,\r\n private pwdResSvc: PasswordResetDialogService,\r\n private route: ActivatedRoute,\r\n private screensizeSvc: ScreenSizeService,\r\n private splashSvc: SplashService,\r\n private webappSvc: WebApplicationService\r\n ) {\r\n // Monitor for the current screen size.\r\n this.subrelease = this.screensizeSvc.ScreenSizeSub.subscribe((size) => (this.ScreenSize = size.Alias));\r\n\r\n // Load the items needed for this component.\r\n combineLatest([this.webappSvc.GetSystemConfig(), this.route.params, this.webappSvc.GetAdvertisedJobs()]).subscribe({\r\n next: (packet) => {\r\n this.JobFairActive = packet[0].JobFairActive ?? false;\r\n this.TimedOut = !!packet[1]['inactive'];\r\n this.AdvertisedJobs = packet[2] || [];\r\n\r\n // If there are any active/current alerts, filter them out now for display.\r\n const Now = new Date();\r\n this.ActiveAlerts = (packet[0]?.SystemWindows || []).filter(\r\n (d) =>\r\n d.Description === 'AppNotice' &&\r\n d.Active === true &&\r\n d.BeginDate != null &&\r\n d.BeginDate <= Now &&\r\n d.EndDate != null &&\r\n d.EndDate >= Now\r\n );\r\n\r\n // Is there a last user, and if so, is it not yet expired?\r\n if (this.LastUserInfo != null) {\r\n const Now = new Date();\r\n\r\n if (this.LastUserInfo.Expiration && this.LastUserInfo.Expiration < Now) {\r\n // Expired, so remove the local storage for now.\r\n this.LastUserInfo = null;\r\n }\r\n }\r\n\r\n this.ViewReady = true;\r\n },\r\n error: (err) => {\r\n this.ViewReady = true;\r\n this.errSvc.HandleServiceError(err);\r\n },\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._subrelease.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n // #region Create New Account\r\n\r\n CreateNewAccount(info: NewUserInfo) {\r\n if (!info) return;\r\n\r\n if (info.Email.toLowerCase().endsWith('@polk-fl.net')) {\r\n this.splashSvc.SnackbarAlert('Please login with your PCPS credentials.');\r\n return;\r\n }\r\n\r\n // Submit the request to the system.\r\n this.splashSvc\r\n .OpenSplash({\r\n TitleText: 'Please Wait',\r\n MessageText: 'Creating Your Account...',\r\n })\r\n .subscribe(() => {\r\n this.landingSvc.CreateNewAccount(info.Email, info.Password).subscribe({\r\n next: (packet) => {\r\n this.splashSvc.CloseSplash();\r\n\r\n if (!packet) {\r\n this.splashSvc.SnackbarError('An error occurred while creating your account. The process has failed.');\r\n } else if (packet === 'AD') {\r\n this.splashSvc.SnackbarAlert('Please login with your PCPS credentials');\r\n } else if (packet === 'emailExists') {\r\n // Put up a dialog for this.\r\n this.msgBoxSvc\r\n .Open({\r\n TitleText: 'Email Address Exists',\r\n MessageText: `An account using this email address already exists. If you have forgotten your password, close this window and select the \"Forgot My Password\" link to reset your password. You will need to have access to the email address you provided to proceed.`,\r\n OKText: 'OK',\r\n })\r\n .subscribe();\r\n } else {\r\n // We either got a valid ValToken back, or we got an unexpected result. Verify that right now.\r\n var tokenRegex =\r\n /^([a-zA-Z0-9]){8}-([a-zA-Z0-9]){4}-4([a-zA-Z0-9]){3}-([a-zA-Z0-9]){4}-([a-zA-Z0-9]){12}$/;\r\n\r\n if (!tokenRegex.test(packet)) {\r\n this.splashSvc.SnackbarError(\r\n 'An unknown error occurred while creating your account. The process has failed.'\r\n );\r\n } else {\r\n // Alert success.\r\n this.msgBoxSvc\r\n .Open({\r\n TitleText: 'Success!',\r\n MessageText: `Your account has been created! You will receive a confirmation email containing further instructions on how to proceed at the email address you specified. Please follow the instructions in order to activate the account for use.`,\r\n OKText: 'OK',\r\n })\r\n .subscribe();\r\n }\r\n }\r\n },\r\n error: (err) => {\r\n this.splashSvc.CloseSplash();\r\n this.errSvc.HandleServiceError(err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Handle Filter Change\r\n\r\n HandleFilterChange(type: number, code: string) {\r\n if (type === 0) {\r\n this.ActiveFilter = code;\r\n\r\n // If this is a change to non-instructional, clear out the subfilter.\r\n if (this.ActiveFilter === 'Non-Instructional') this.ActiveSubfilter = '';\r\n } else {\r\n this.ActiveSubfilter = code;\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Handle Job Viewer\r\n\r\n HandleJobViewer(item: AdvertisedJobInfo) {\r\n // Call to the service to get the job description for display in the browser.\r\n this.webappSvc.GetJobDescription(item.PositionLocalJobCode).subscribe({\r\n next: (desc) => {\r\n this.SelectedJobDescription = desc;\r\n\r\n // If we have a job description, display the viewer.\r\n if (this.SelectedJobDescription) {\r\n this.ShowingJobDescription = true;\r\n }\r\n },\r\n error: (err) => this.errSvc.HandleServiceError(err),\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Login User\r\n\r\n LoginUser(info: NewUserInfo) {\r\n if (!info) return;\r\n\r\n this.splashSvc\r\n .OpenSplash({\r\n TitleText: 'Please Wait',\r\n MessageText: 'Logging in...',\r\n })\r\n .subscribe(() => {\r\n this.authSvc.ValidateUser(info.Email, info.Password, info.ImpersonatedEmail).subscribe({\r\n next: (packet) => {\r\n // Hand off to the auth service to check the returned login token and route accordingly.\r\n this.splashSvc.CloseSplash();\r\n\r\n // Before logging in, save the email address just used to login.\r\n const Now = new Date();\r\n\r\n this.LastUserInfo = {\r\n Email: info.Email,\r\n Expiration: addDays(Now, 7),\r\n };\r\n\r\n this.authSvc.ProcessLogin(packet);\r\n },\r\n error: (err) => {\r\n this.splashSvc.CloseSplash();\r\n this.errSvc.HandleServiceError(err);\r\n },\r\n });\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region Reset Password\r\n\r\n ResetPassword() {\r\n const self = this;\r\n\r\n // Display the dialog to get the email address to use for the sending.\r\n self.pwdResSvc.Open().subscribe((result) => {\r\n if (!result) return;\r\n\r\n // Send request to transmit reset email to server. If the user is confirmed, they will get sent the reset email. If they are not confirmed (or\r\n // are not found), they get a message about getting an email sent to confirm their account (even if the account is unknown, to mitigate sniffing)\r\n self.landingSvc.SendResetEmail(result).subscribe({\r\n next: (emailResult) => {\r\n switch (emailResult) {\r\n case 'ACTIVEDIR':\r\n // Provide option to redirect to the Password Reset Tool.\r\n self.optionBoxSvc\r\n .Open({\r\n TitleText: 'Unable To Reset Password',\r\n MessageText: `Individuals with Polk County Public Schools (PCPS) credentials cannot change their password using the Applicant Registration System (ARS) reset process. Please visit the district Password Reset Tool by clicking the button below to change your password.`,\r\n Options: [\r\n { DisplayText: 'OK', Response: 'OK', ClosesDialog: true, Color: 'primary' },\r\n {\r\n DisplayText: 'Go To Password Reset Tool',\r\n Response: 'Reset',\r\n ClosesDialog: true,\r\n Color: 'accent',\r\n },\r\n ],\r\n })\r\n .subscribe((oresult) => {\r\n if (oresult === 'Reset') {\r\n // Move the user to the password reset tool.\r\n window.location.href = 'https://password.mypolkschools.net/?from=jobs';\r\n }\r\n });\r\n break;\r\n case 'RESET':\r\n self.msgBoxSvc\r\n .Open({\r\n TitleText: 'Reset Email Sent',\r\n MessageText: `A password reset email has been sent to the email address ${result} with instructions on how to proceed with resetting your Applicant Registration System (ARS) password.`,\r\n })\r\n .subscribe();\r\n break;\r\n case 'CONFIRM':\r\n self.msgBoxSvc\r\n .Open({\r\n TitleText: 'Confirmation Email Sent',\r\n MessageText: `The email address ${result} has not yet been confirmed in the Applicant Registration System (ARS). You must first confirm your email address before you can reset your password. Please follow the instructions in the confirmation email which was just sent to this address.`,\r\n })\r\n .subscribe();\r\n break;\r\n default:\r\n self.msgBoxSvc\r\n .Open({\r\n TitleText: 'Unexpected Error',\r\n MessageText: `An unexpected error has occurred while attempting to send you a password reset email. You may try again, or wait until a later time to try again if you continue to encounter errors.`,\r\n })\r\n .subscribe();\r\n break;\r\n }\r\n },\r\n error: (err) => self.errSvc.HandleServiceError(err),\r\n });\r\n });\r\n }\r\n\r\n // #endregion\r\n\r\n // #region View Login\r\n\r\n ViewLogin() {\r\n this.SelectedJobDescription = null;\r\n this.ShowingJobDescription = false;\r\n }\r\n\r\n // #endregion\r\n\r\n // #region View Vacancies\r\n\r\n ViewVacancies() {\r\n this.SelectedJobDescription = null;\r\n this.ShowingJobDescription = false;\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\nexport interface LastUserInfo {\r\n Email: string;\r\n Expiration: Date;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { LandingComponent } from './components/landing/landing.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: ':inactive',\r\n component: LandingComponent,\r\n },\r\n {\r\n path: '',\r\n component: LandingComponent,\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class LandingRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { JFlexLayoutModule } from 'modules/flex-layout/flex-layout.module';\r\n\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\n\r\nimport { MessageBoxDialogModule } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\nimport { OptionBoxDialogModule } from '@polk_county_public_schools/ngx-pcps-dialogs';\r\nimport { PasswordResetDialogModule } from './dialogs/password-reset';\r\n\r\nimport { JobDescriptionComponent } from 'modules/shared/ui/job-description/job-description.component';\r\nimport { ResponsivePaginationModule } from 'modules/shared/ui/responsive-paginator/resppaginator.directive';\r\nimport { SafeHTMLPipeModule } from 'modules/pipes';\r\n\r\nimport { MatchValidatorModule } from 'validators/match/match.validator';\r\nimport { PasswordComplexityValidatorModule } from 'src/validators/password-complexity/password-complexity.validator';\r\n\r\nimport { LandingRoutingModule } from './landing.routing-module';\r\n\r\nimport { LandingComponent } from './components/landing/landing.component';\r\nimport { LoginPanelComponent } from './components/login/login.component';\r\nimport { JobBrowserComponent } from './components/jobbrowser/jobbrowser.component';\r\nimport { VacancyTableComponent } from './components/vacancy-table/vacancy-table.component';\r\nimport { JobDescriptionModule } from 'modules/shared/ui/job-description/job-description.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n JFlexLayoutModule,\r\n\r\n MatButtonModule,\r\n MatDividerModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatPaginatorModule,\r\n MatSortModule,\r\n MatTableModule,\r\n\r\n MessageBoxDialogModule,\r\n OptionBoxDialogModule,\r\n PasswordResetDialogModule,\r\n\r\n JobDescriptionModule,\r\n ResponsivePaginationModule,\r\n SafeHTMLPipeModule,\r\n\r\n MatchValidatorModule,\r\n PasswordComplexityValidatorModule,\r\n\r\n // Application Modules\r\n LandingRoutingModule,\r\n ],\r\n declarations: [LandingComponent, LoginPanelComponent, JobBrowserComponent, VacancyTableComponent],\r\n})\r\nexport class LandingModule {}\r\n"],"x_google_ignoreList":[]}