{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app.component.ts","./src/app/app.module.ts","./src/app/app.routes.ts","./src/app/core/components/layout-private/layout-private.component.ts","./src/app/core/components/layout-public/layout-public.component.ts","./src/app/core/components/not-found/not-found.component.ts","./src/app/core/services/alert.service.ts","./src/app/core/services/auth.service.ts","./src/app/core/services/category.service.ts","./src/app/core/services/grid.service.ts","./src/app/core/services/home.service.ts","./src/app/core/services/report.service.ts","./src/app/core/services/settings.service.ts","./src/app/core/services/tag.service.ts","./src/app/core/services/text.service.ts","./src/app/core/services/user.service.ts","./src/app/modules/categories/categories.module.ts","./src/app/modules/categories/pages/category-edit/category-edit.page.ts","./src/app/modules/categories/pages/category-list/category-list.page.ts","./src/app/modules/home/home.module.ts","./src/app/modules/home/pages/admin/admin.page.ts","./src/app/modules/home/pages/home/community.page.ts","./src/app/modules/home/pages/home/home.page.ts","./src/app/modules/home/pages/home/sasprivate.page.ts","./src/app/modules/home/pages/home/tableauprivate.page.ts","./src/app/modules/home/pages/home/tableauprivatestudent.page.ts","./src/app/modules/home/pages/home/tableaupublic.page.ts","./src/app/modules/reports/pages/report-edit/report-edit.page.ts","./src/app/modules/reports/pages/report-list/report-list.page.ts","./src/app/modules/reports/reports.module.ts","./src/app/modules/tags/pages/tag-edit/tag-edit.page.ts","./src/app/modules/tags/pages/tag-list/tag-list.page.ts","./src/app/modules/tags/tags.module.ts","./src/app/modules/text/pages/text-edit/text-edit.page.ts","./src/app/modules/text/pages/text-list/text-list.page.ts","./src/app/modules/text/text.module.ts","./src/app/modules/users/pages/user-edit/user-edit.page.ts","./src/app/modules/users/pages/user-list/user-list.page.ts","./src/app/modules/users/users.module.ts","./src/app/route-serializer.ts","./src/app/shared/components/column-date/column-date.component.ts","./src/app/shared/components/field-validation/field-validation.component.ts","./src/app/shared/components/grid-header/grid-header.component.ts","./src/app/shared/components/layout-header/layout-header.component.ts","./src/app/shared/components/multi-check-list/multi-check-list.component.ts","./src/app/shared/components/popup/popup.component.ts","./src/app/shared/components/required-field/required-field.component.ts","./src/app/shared/components/tool-button/tool-button.component.ts","./src/app/shared/components/tool-split-button/tool-split-button.component.ts","./src/app/shared/directives/autofocus.directive.ts","./src/app/shared/directives/trim.directive.ts","./src/app/shared/guards/auth.guard.ts","./src/app/shared/guards/can-deactivate.guard.ts","./src/app/shared/interceptors/session.interceptor.ts","./src/app/shared/models/gen.enums.ts","./src/app/shared/models/gen.validation.ts","./src/app/shared/models/grid.model.ts","./src/app/shared/shared.module.ts","./src/environments/environment.ts","./src/main.ts"],"sourcesContent":["import { Component, enableProdMode, OnDestroy, OnInit, Directive } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { AuthService } from './core/services/auth.service';\n\n@Directive()\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html'\n})\nexport class AppComponent {\n title = \"UMD\";\n subscription = new Subscription();\n routerSub = new Subscription();\n showPrivate = false;\n\n constructor(private authSvc: AuthService,\n private router: Router,\n ) {\n this.authSvc.initJsonDateParser();\n //this.authSvc.checkApplicationStatus();\n }\n\n ngOnInit() {\n this.subscription.add(this.authSvc.sessionSubject.subscribe((value) => {\n this.showPrivate = value.OnPrivateReportPage;\n }));\n\n this.routerSub = this.router.events.subscribe(\n (event: any) => {\n if (event instanceof NavigationEnd) {\n var session = this.authSvc.getSession();\n\n session.OnPublicListPage = false;\n session.OnPrivateListPage = false;\n session.OnPublicReportPage = false;\n session.OnPrivateReportPage = false;\n session.OnAdminPage = false;\n\n if (this.router.url == \"/\") {\n session.OnPublicListPage = true;\n }\n\n if (this.router.url == \"/community\") {\n session.OnPrivateListPage = true;\n }\n\n if (this.router.url.startsWith(\"/tableaupublic\")) {\n session.OnPublicReportPage = true;\n }\n\n if (this.router.url.startsWith(\"/community/tableauprivate\")\n || this.router.url.startsWith(\"/community/sasprivate\")) {\n session.OnPrivateReportPage = true;\n }\n\n // If none of these, must be on an admin page\n\n if (!session.OnPublicListPage\n && !session.OnPrivateListPage\n && !session.OnPublicReportPage\n && !session.OnPrivateReportPage) {\n session.OnAdminPage = true;\n }\n\n this.authSvc.updateSession(session);\n }\n }\n );\n }\n\n ngOnDestroy() {\n this.subscription && this.subscription.unsubscribe();\n this.routerSub && this.routerSub.unsubscribe();\n }\n}\n","import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { RouterModule, PreloadAllModules, UrlSerializer } from '@angular/router';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FormsModule } from '@angular/forms';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport * as $ from 'jquery';\n\nimport { SessionInterceptor } from './shared/interceptors/session.interceptor';\nimport { LowerCaseUrlSerializer } from './route-serializer';\n\nimport { NotFoundComponent } from './core/components/not-found/not-found.component';\nimport { AppComponent } from './app.component';\nimport { LayoutPublicComponent } from './core/components/layout-public/layout-public.component';\nimport { LayoutPrivateComponent } from './core/components/layout-private/layout-private.component';\n\nimport { APP_ROUTES } from './app.routes';\nimport { AuthGuard } from './shared/guards/auth.guard';\n\nimport { SharedModule } from './shared/shared.module';\n\nimport { CategoriesModule } from './modules/categories/categories.module';\nimport { HomeModule } from './modules/home/home.module';\nimport { ReportsModule } from './modules/reports/reports.module';\nimport { TagsModule } from './modules/tags/tags.module';\nimport { TextModule } from './modules/text/text.module';\nimport { UsersModule } from './modules/users/users.module';\n//import { NgxTextOverflowClampModule } from \"ngx-text-overflow-clamp\";\n\n@NgModule({\n declarations: [\n AppComponent,\n LayoutPublicComponent,\n LayoutPrivateComponent,\n NotFoundComponent\n ],\n imports: [\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\n BrowserAnimationsModule,\n HttpClientModule,\n FormsModule,\n SharedModule,\n HomeModule,\n ReportsModule,\n TagsModule,\n TextModule,\n CategoriesModule,\n UsersModule,\n TooltipModule,\n //NgxTextOverflowClampModule,\n RouterModule.forRoot(APP_ROUTES,\n {\n preloadingStrategy: PreloadAllModules\n }\n )\n ],\n providers: [AuthGuard, \n { provide: UrlSerializer, useClass: LowerCaseUrlSerializer },\n { provide: HTTP_INTERCEPTORS, useClass: SessionInterceptor, multi: true }\n ],\nbootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Routes } from '@angular/router';\nimport { AuthGuard } from './shared/guards/auth.guard';\nimport { NotFoundComponent } from './core/components/not-found/not-found.component';\n\nexport const APP_ROUTES: Routes = [\n { path: '', loadChildren: () => import('./modules/home/home.module').then(m => m.HomeModule) },\n { path: 'reports', loadChildren: () => import('./modules/reports/reports.module').then(m => m.ReportsModule), canActivate: [AuthGuard] },\n { path: 'tags', loadChildren: () => import('./modules/tags/tags.module').then(m => m.TagsModule), canActivate: [AuthGuard] },\n { path: 'categories', loadChildren: () => import('./modules/categories/categories.module').then(m => m.CategoriesModule), canActivate: [AuthGuard] },\n { path: 'text', loadChildren: () => import('./modules/text/text.module').then(m => m.TextModule), canActivate: [AuthGuard] },\n { path: 'users', loadChildren: () => import('./modules/users/users.module').then(m => m.UsersModule), canActivate: [AuthGuard] },\n { path: '**', component: NotFoundComponent }\n];\n","import { Component, OnInit, OnDestroy, Directive } from '@angular/core';\nimport { AuthService } from '../../../core/services/auth.service';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { Router } from '@angular/router';\nimport * as Auth from '../../../shared/models/auth.model';\nimport * as Common from '../../../shared/models/common.model';\nimport { take, tap } from 'rxjs/operators';\nimport { TextService } from '../../../core/services/text.service';\nimport * as Text from '../../../shared/models/gen.text.model';\nimport * as Enums from '../../../shared/models/gen.enums';\n\n@Directive()\n@Component({\n selector: 'app-layout-private',\n templateUrl: './layout-private.component.html',\n styles: []\n})\nexport class LayoutPrivateComponent implements OnInit, OnDestroy {\n subscription = new Subscription();\n session: Auth.SessionInfo;\n\n screenTopNotification: string;\n\n constructor(\n private authSvc: AuthService,\n private textSvc: TextService,\n private router: Router) {\n }\n\n ngOnInit() {\n this.subscription.add(this.authSvc.sessionSubject\n .subscribe(value => this.session = value));\n\n // Get screen top notification text\n const filter: Text.GetTextTypeFilter = {\n type: Enums.TextType.Notification\n };\n this.textSvc.getTextByType(filter)\n .pipe(take(1))\n .subscribe(result => {\n if (result) {\n this.screenTopNotification = result.text;\n }\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, OnInit, OnDestroy, Directive } from '@angular/core';\nimport { AuthService } from '../../../core/services/auth.service';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { Router } from '@angular/router';\nimport * as Auth from '../../../shared/models/auth.model';\nimport * as Common from '../../../shared/models/common.model';\nimport { take, tap } from 'rxjs/operators';\nimport { TextService } from '../../../core/services/text.service';\nimport * as Text from '../../../shared/models/gen.text.model';\nimport * as Enums from '../../../shared/models/gen.enums';\n\n\n@Directive()\n@Component({\n selector: 'app-layout-public',\n templateUrl: './layout-public.component.html',\n styles: []\n})\nexport class LayoutPublicComponent implements OnInit, OnDestroy {\n subscription = new Subscription();\n session: Auth.SessionInfo;\n\n screenTopNotification: string;\n\n constructor(\n private authSvc: AuthService,\n private textSvc: TextService,\n private router: Router) {\n }\n\n ngOnInit() {\n this.subscription.add(this.authSvc.sessionSubject\n .subscribe(value => this.session = value));\n\n // Get screen top notification text\n const filter: Text.GetTextTypeFilter = {\n type: Enums.TextType.Notification\n };\n this.textSvc.getTextByType(filter)\n .pipe(take(1))\n .subscribe(result => {\n if (result) {\n this.screenTopNotification = result.text;\n }\n });\n}\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n\tselector: 'app-not-found',\n templateUrl: './not-found.component.html',\n styles: []\n})\nexport class NotFoundComponent {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NotificationService } from '@progress/kendo-angular-notification';\nimport { UntypedFormGroup, UntypedFormControl } from '@angular/forms';\nimport { ModelError } from '../../shared/models/common.model';\nimport { ButtonState } from '../../shared/models/ui.model';\nimport { Observable } from 'rxjs';\nimport { DialogService, DialogRef, DialogCloseResult } from '@progress/kendo-angular-dialog';\nimport { map } from 'rxjs/operators';\nimport * as Common from '../../shared/models/common.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertService {\n constructor(\n private notificationSvc: NotificationService,\n private dialogSvc: DialogService) {\n }\n\n static revertDelay = 3000;\n static saveIcons = {\n original: \"fa-save\",\n invalid: \"fa-exclamation\",\n wait: \"fa-hourglass-half\",\n success: \"fa-check-circle\",\n error: \"fa-times\",\n }\n\n\n public showError(message: string) {\n this.notificationSvc.show({\n content: message,\n position: { horizontal: 'center', vertical: 'bottom' },\n type: { style: \"error\", icon: true }\n });\n }\n\n public showSuccess(message: string) {\n this.notificationSvc.show({\n content: message,\n position: { horizontal: 'center', vertical: 'bottom' },\n type: { style: \"success\", icon: true }\n });\n }\n\n public showInfo(message: string) {\n this.notificationSvc.show({\n content: message,\n position: { horizontal: 'center', vertical: 'bottom' },\n type: { style: \"info\", icon: true }\n });\n }\n\n public showWarning(message: string) {\n this.notificationSvc.show({\n content: message,\n position: { horizontal: 'center', vertical: 'bottom' },\n type: { style: \"warning\", icon: true }\n });\n }\n\n\n\n private saveRevertIcon(btnState: ButtonState, revertClass: string) {\n btnState.originalIconClass = revertClass;\n }\n\n private switchIcon(btnState: ButtonState, newClass: string) {\n if (!btnState.originalIconClass)\n this.saveRevertIcon(btnState, btnState.iconClass);\n btnState.iconClass = \"fad \" + newClass;\n }\n\n private revertIcon(btnState: ButtonState) {\n btnState.iconClass = btnState.originalIconClass;\n btnState.originalIconClass = null;\n }\n\n private switchIconDelay(btnState: ButtonState, newClass: string, onReverted?: () => void) {\n this.cancelRevert(btnState);\n\n this.switchIcon(btnState, newClass);\n\n btnState.timeoutId = setTimeout(() => {\n this.revertIcon(btnState);\n if (onReverted)\n onReverted();\n }, AlertService.revertDelay) as unknown as number;\n }\n\n public cancelRevert(btnState: ButtonState): boolean {\n const timeoutId = btnState.timeoutId;\n if (!timeoutId)\n return false;\n\n clearTimeout(timeoutId);\n btnState.timeoutId = null;\n return true;\n }\n\n\n\n private createControlMap(model: UntypedFormGroup) {\n const controlMap = {};\n const addControl = (prefix, controls) => {\n $.each(Object.keys(controls), (i: number, o: string) => {\n const control = controls[o];\n if (control.controls)\n addControl(prefix + o.toLowerCase() + \".\", control.controls); // FormGroup\n else\n controlMap[prefix + o.toLowerCase()] = control; // FormControl\n });\n };\n addControl(\"\", model.controls);\n return controlMap;\n }\n\n\n\n public processModelErrors(modelErrors: ModelError[], model: UntypedFormGroup,\n btnState: ButtonState, message?: string): boolean {\n if (!modelErrors || modelErrors.length === 0)\n return false;\n\n const controlMap = this.createControlMap(model);\n\n $.each(modelErrors, (i: number, o: ModelError) => {\n if (!o.propertyName) {\n message = o.description;\n } else {\n const control = controlMap[o.propertyName.toLowerCase()] as UntypedFormControl;\n if (control)\n control.setErrors({ serverError: o.description });\n }\n });\n\n this.showSubmitInvalid(btnState, message);\n return true;\n }\n\n\n\n public processAjaxError(error, model: UntypedFormGroup, btnState: ButtonState,\n invalidMsg: string, errorMsg: string) {\n if (error.status === 400 && error.error.errors) {\n const controlMap = this.createControlMap(model);\n\n $.each(error.error.errors, (key: string, values: string[]) => {\n const control = controlMap[key.toLowerCase()] as UntypedFormControl;\n if (control && values.length > 0)\n control.setErrors({ serverError: values[0] });\n });\n \n this.showSubmitInvalid(btnState, invalidMsg);\n } else {\n this.showSubmitError(btnState, errorMsg);\n console.error(error);\n }\n }\n\n\n\n public showSubmitInvalid(btnState: ButtonState, message?: string) {\n this.switchIconDelay(btnState, AlertService.saveIcons.invalid);\n btnState.disabled = false;\n if (message)\n this.showWarning(message);\n }\n\n public showSubmitStart(btnState: ButtonState) {\n this.switchIcon(btnState, AlertService.saveIcons.wait);\n btnState.disabled = true;\n }\n\n public showSubmitSuccess(btnState: ButtonState, message?: string, onReverted?: () => void) {\n this.switchIconDelay(btnState, AlertService.saveIcons.success, onReverted);\n btnState.disabled = false;\n if (message)\n this.showSuccess(message);\n }\n\n public showSubmitError(btnState: ButtonState, message?: string) {\n this.switchIconDelay(btnState, AlertService.saveIcons.error);\n btnState.disabled = false;\n if (message)\n this.showError(message);\n }\n\n public showSubmitComplete(btnState: ButtonState) {\n this.revertIcon(btnState);\n btnState.disabled = false;\n }\n\n\n\n public getButtonStateClass(model: UntypedFormGroup, allowPristine = true) {\n return (allowPristine && model?.pristine) ? 'btn-pristine' : model?.invalid ? 'btn-invalid' : 'btn-changed';\n }\n\n\n\n public confirm(options: Common.ConfirmOptions): Observable {\n const dialog: DialogRef = this.dialogSvc.open({\n title: options.title || \"Please confirm\",\n content: options.content || \"Are you sure?\",\n actions: [\n { text: options.yesText || \"Yes\", primary: true, value: true },\n { text: options.noText || \"No\", value: false }\n ],\n //width: options.width || 450,\n minWidth: options.minWidth || 250,\n actionsLayout: \"normal\"\n });\n\n return dialog.result\n .pipe(map((result): boolean => {\n if (result instanceof DialogCloseResult)\n return false;\n return (result as Common.ConfirmAction).value;\n }));\n }\n\n public confirmDelete(options: Common.ConfirmDeleteOptions) {\n let confirmMessage: string;\n let title: string;\n let successMessage: string;\n let errorMessage: string;\n\n const itemCount = options.detail.ids.length;\n title = \"Delete Items\";\n if (itemCount == 1) {\n confirmMessage = \"Are you sure you want to delete this \" + options.singularLower + \"?\";\n successMessage = \"The \" + options.singularLower + \" was deleted successfully\";\n errorMessage = \"An error occurred while deleting the \" + options.singularLower;\n }\n else {\n confirmMessage = \"Are you sure you want to delete these \" + itemCount + \" \" + options.pluralLower + \"?\";\n successMessage = \"The \" + itemCount + \" \" + options.pluralLower + \" were deleted successfully\";\n errorMessage = \"An error occurred while deleting the \" + options.pluralLower;\n }\n\n const confirmOptions: Common.ConfirmOptions = $.extend({}, {\n title: title,\n content: confirmMessage,\n yesText: \"Delete\",\n noText: \"Cancel\"\n }, options.confirmOptions);\n this.confirm(confirmOptions).subscribe(result => {\n if (result)\n options.action(successMessage, errorMessage);\n });\n }\n\n public showErrorInUse(btnState: ButtonState, modelErrors: ModelError[]) {\n this.switchIconDelay(btnState, AlertService.saveIcons.invalid);\n btnState.disabled = false;\n for (var msg in modelErrors) {\n this.showSubmitError(btnState, modelErrors[msg].description);\n }\n }\n\n public confirmToggleActive(options: Common.ConfirmToggleActiveOptions) {\n if (options.detail.active) {\n options.action(options.detail); // Don't confirm if we're changing from inactive to active\n } else {\n const objectType = options.objectType || \"Item\";\n const confirmOptions: Common.ConfirmOptions = $.extend({}, {\n title: \"Delete \" + objectType,\n content: \"Are you sure you want to delete the selected \" + objectType + \"?\",\n yesText: \"Delete\",\n noText: \"Cancel\"\n }, options.confirmOptions);\n this.confirm(confirmOptions).subscribe(result => {\n if (result)\n options.action(options.detail);\n });\n }\n }\n\n public confirmToggleDeleted(options: Common.ConfirmToggleDeletedOptions) {\n if (!options.detail.deleted) {\n options.action(options.detail); // Don't confirm if we're changing from indeleted to deleted\n } else {\n const objectType = options.objectType || \"Item\";\n const confirmOptions: Common.ConfirmOptions = $.extend({}, {\n title: \"Delete \" + objectType,\n content: \"Are you sure you want to delete the selected \" + objectType + \"?\",\n yesText: \"Delete\",\n noText: \"Cancel\"\n }, options.confirmOptions);\n this.confirm(confirmOptions).subscribe(result => {\n if (result)\n options.action(options.detail);\n });\n }\n }\n\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, RoutesRecognized, Data } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable, Subject, ReplaySubject } from 'rxjs';\nimport * as Enums from '../../shared/models/gen.enums';\nimport * as Auth from '../../shared/models/auth.model';\nimport { tap, filter } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n private static sessionKey = \"tv.session\";\n private static redirectKey = \"tv.redirect\";\n private session: Auth.SessionInfo;\n\n public baseUrl: string;\n\n //showPrivateToggle = false;\n //showPrivateToggleChange: Subject = new Subject();\n\n public sessionSubject = new BehaviorSubject(null);\n\n // These shouldn't have an initial value, so use ReplaySubject instead of BehaviorSubject.\n // Use ReplaySubject instead of Subject so late subscribers will still get a value.\n public routeDataSubject = new ReplaySubject(1);\n public applicationStatusSubject = new ReplaySubject(1);\n\n\n constructor(@Inject(DOCUMENT) private document: Document,\n private http: HttpClient,\n private router: Router,\n @Inject('BASE_URL') baseUrl: string)\n {\n this.baseUrl = baseUrl;\n this.initJsonDateParser();\n this.getSession();\n this.initStorageListener();\n\n //this.showPrivateToggleChange.subscribe((value) => {\n // this.showPrivateToggle = value;\n //});\n\n router.events.pipe(filter(event => event instanceof RoutesRecognized))\n .subscribe((event: RoutesRecognized) => {\n const data = event.state.root.firstChild.data;\n this.routeDataSubject.next(data);\n });\n }\n\n //checkApplicationStatus(): void {\n // this.http.get(\n // this.baseUrl + 'api/Configuration/ApplicationStatus')\n // .subscribe(result => {\n // this.applicationStatusSubject.next(result);\n // if (result.errors.length > 0)\n // this.router.navigateByUrl('/users/init-error');\n // //else if (!result.isActivated)\n // // this.router.navigateByUrl('/users/setup');\n // }, error => console.error(error));\n\n //}\n\n login(): void {\n this.http.get(\n this.baseUrl + 'auth/login')\n .subscribe(result => {\n }, error => console.error(error));\n}\n\n getUnauthenticatedSession(): Auth.SessionInfo {\n return {\n IsAuthenticated: false\n };\n }\n\n clearSession() {\n this.session = this.getUnauthenticatedSession();\n this.sessionSubject.next(this.session);\n localStorage.removeItem(AuthService.sessionKey);\n }\n\n updateSession(session: Auth.SessionInfo) {\n this.session = session;\n this.saveSession();\n }\n\n saveSession() {\n this.sessionSubject.next(this.session);\n localStorage.setItem(AuthService.sessionKey, JSON.stringify(this.session));\n }\n\n private initStorageListener() {\n // Catch any updates to the client session from other tabs and update the session\n // expiration in this tab. This is required so that a dormant tab doesn't expire\n // the client session if another tab is actively being used.\n //const that = this;\n $(window).on(\"storage\", e => {\n if (e.key === AuthService.sessionKey) {\n try {\n const otherSession = JSON.parse(localStorage.getItem(AuthService.sessionKey)) as Auth.SessionInfo;\n this.session.Expiration = otherSession.Expiration;\n } catch {\n // ignore any parsing errors\n }\n }\n });\n }\n\n getSession(): Auth.SessionInfo {\n if (!this.session) {\n let session = null;\n try {\n session = JSON.parse(localStorage.getItem(AuthService.sessionKey));\n } catch {\n // ignore any parsing errors\n }\n if (!session)\n session = this.getUnauthenticatedSession();\n this.session = session;\n this.sessionSubject.next(this.session);\n }\n return this.session;\n }\n\n isExpired(session: Auth.SessionInfo): boolean {\n const date = new Date();\n const isExpired = !session || !session.IsAuthenticated || session.Expiration <= date;\n return isExpired;\n }\n\n resetExpiration(newValue: Date) {\n if (!this.isExpired(this.session)) {\n this.session.Expiration = newValue;\n this.saveSession();\n }\n }\n\n initJsonDateParser() {\n if (JSON && !JSON[\"parseWithDate\"]) {\n const reISO = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(\\.\\d+)*)(?:Z|(\\+|-)([\\d|:]*))?$/;\n\n const dateParser = function (key, value) {\n /// \n /// Globally enables JSON date parsing for JSON.parse().\n /// Replaces the default JSON.parse() method and adds\n /// the datePaser() extension to the processing chain.\n /// \n /// property name that is parsed\n /// property value\n /// returns date or the original value if not a date string\n if (typeof value === 'string') {\n const a = reISO.exec(value);\n if (a)\n return new Date(value);\n return value;\n }\n return value;\n };\n\n const _savedParse = JSON.parse;\n\n JSON.parse = function (json) {\n /// \n /// Wrapper around the JSON.parse() function that adds a date\n /// filtering extension. Returns all dates as real JavaScript dates.\n /// \n /// JSON to be parsed\n /// parsed value or object\n try {\n const res = _savedParse(json, dateParser);\n return res;\n } catch (e) {\n // orignal error thrown has no error message so rethrow with message\n throw new Error(\"JSON content could not be parsed\");\n }\n };\n\n JSON[\"parseWithDate\"] = true;\n }\n }\n\n redirectToLogin(url) {\n if (url && url.length > 0)\n localStorage.setItem(AuthService.redirectKey, url);\n else\n localStorage.removeItem(AuthService.redirectKey);\n this.document.location.href = \"/auth/login?redirect=\" + encodeURIComponent(url);\n// this.router.navigateByUrl('auth/login');\n }\n\n redirectAfterLogin() {\n let url = localStorage.getItem(AuthService.redirectKey);\n if (!url || url.length === 0)\n url = '/';\n else\n localStorage.removeItem(AuthService.redirectKey);\n this.router.navigateByUrl(url);\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Category from '../../shared/models/gen.category.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CategoryService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n // Get\n\n getCategory(filter: Category.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Category/Get', filter);\n }\n\n // Save\n\n saveCategory(detail: Category.Detail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Category/Save', detail);\n }\n\n // Delete\n\n deleteCategories(detail: Category.DeletionDetail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Category/Delete', detail);\n }\n\n // Form\n\n getCategoryModel(fb: UntypedFormBuilder): UntypedFormGroup {\n return fb.group({\n\n id: [''],\n\n name: ['', [\n Validators.required,\n Validators.maxLength(Validation.CategoryName.maxLength)\n ]]\n\n });\n }\n\n // Validation\n\n static validationMsg = {\n name: {\n required: Validation.CategoryName.requiredMessage,\n maxlength: Validation.CategoryName.maxLengthMessage\n }\n };\n\n}\n","import { Injectable } from '@angular/core';\nimport { FilterService } from '@progress/kendo-angular-grid';\nimport { CompositeFilterDescriptor, FilterDescriptor } from '@progress/kendo-data-query';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class GridService {\n\tconstructor() { }\n\n\tprivate flattenFilters(filter) {\n\t\tconst filters = (filter || {}).filters;\n\t\tif (filters) {\n\t\t\treturn filters.reduce((acc, curr) => acc.concat(curr.filters ? this.flattenFilters(curr) : [curr]), []);\n\t\t}\n\t\treturn [];\n\t}\n\n public applyFilter(values: any[], filterService: FilterService, field: string): void {\n filterService.filter({\n filters: values.map(value => ({\n field: field,\n operator: \"eq\",\n value\n })),\n logic: \"or\"\n });\n }\n\n public applyFilterContains(values: any[], filterService: FilterService, field: string): void {\n filterService.filter({\n filters: values.map(value => ({\n field: field,\n operator: \"contains\",\n value\n })),\n logic: \"or\"\n });\n }\n\n\tpublic updateFilter(filter: CompositeFilterDescriptor, fieldFilter: any): FilterDescriptor[] {\n\t\tfieldFilter.splice(0, fieldFilter.length,\n\t\t\t...this.flattenFilters(filter).map(({ value }) => value)\n\t\t);\n\t\treturn fieldFilter;\n\t}\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Common from '../../shared/models/common.model';\nimport * as Report from '../../shared/models/gen.report.model';\nimport * as Auth from '../../shared/models/auth.model';\nimport * as License from '../../shared/models/gen.license.model';\nimport * as Configuration from '../../shared/models/gen.configuration.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { FormBuilder, Validators, FormGroup } from '@angular/forms';\nimport { ReportType } from '../../shared/models/gen.enums';\nimport * as Home from '../../shared/models/gen.home.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HomeService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n getReport(filter: Report.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Home/GetReportUrl', filter);\n }\n\n logReportHit(reportIdClass: Common.IdClass): Observable {\n return this.http.post(\n this.baseUrl + 'api/Home/LogReportHit', reportIdClass);\n }\n\n toggleFavorite(reportIdClass: Common.IdClass): Observable {\n return this.http.post(\n this.baseUrl + 'api/Home/ToggleFavorite', reportIdClass);\n }\n\n saveConfirmTos(): Observable {\n return this.http.post(\n this.baseUrl + 'api/Home/ConfirmTos', null);\n }\n\n updateUserReports(): Observable {\n return this.http.get(\n this.baseUrl + 'api/Home/UpdateUserReports');\n }\n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Common from '../../shared/models/common.model';\nimport * as Report from '../../shared/models/gen.report.model';\nimport * as Auth from '../../shared/models/auth.model';\nimport * as License from '../../shared/models/gen.license.model';\nimport * as Configuration from '../../shared/models/gen.configuration.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup } from '@angular/forms';\nimport { ReportType } from '../../shared/models/gen.enums';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ReportService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n getReport(filter: Report.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Report/Get', filter);\n }\n\n saveReport(detail: Report.Detail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Report/Save', detail);\n }\n\n addTag(detail: Report.TagDetail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Report/AddTag', detail);\n }\n\n addCategory(detail: Report.CategoryDetail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Report/AddCategory', detail);\n }\n\n toggleActive(detail: Common.IdActive): Observable {\n return this.http.post( \n this.baseUrl + 'api/Report/ToggleActive', detail);\n }\n\n toggleDeleted(detail: Common.IdDeleted): Observable {\n return this.http.post( \n this.baseUrl + 'api/Report/ToggleDeleted', detail);\n }\n\n adminResetReports(): Observable {\n return this.http.get(\n this.baseUrl + 'api/Report/AdminResetReports');\n }\n\n getReportModel(fb: UntypedFormBuilder): UntypedFormGroup {\n return fb.group({\n\n id: [''],\n\n title: ['', [\n Validators.required,\n Validators.maxLength(Validation.ReportTitle.maxLength)\n ]],\n\n overrideTitle: ['', [\n Validators.maxLength(Validation.ReportTitle.maxLength)\n ]],\n\n selectedTags: [''],\n\n newTag: ['', [\n Validators.maxLength(Validation.TagName.maxLength)\n ]],\n\n selectedCategories: [''],\n\n newCategory: ['', [\n Validators.maxLength(Validation.CategoryName.maxLength)\n ]],\n\n description: ['', [\n Validators.required,\n Validators.maxLength(Validation.ReportDescription.maxLength)\n ]],\n\n overrideDescription: ['', [\n Validators.maxLength(Validation.ReportDescription.maxLength)\n ]],\n\n reportTypeId: ['', [\n Validators.required\n ]],\n\n thumbnailUrl: ['', [\n Validators.maxLength(Validation.ReportThumbnailUrl.maxLength)\n ]],\n\n url: ['', [\n Validators.required,\n Validators.maxLength(Validation.ReportUrl.maxLength)\n ]],\n\n showTabs: [''],\n\n overrideUrl: [''],\n\n isActive: [''],\n isDeleted: ['']\n\n });\n }\n\n static validationMsg = {\n title: {\n required: Validation.ReportTitle.requiredMessage,\n maxlength: Validation.ReportTitle.maxLengthMessage\n },\n overrideTitle: {\n maxlength: Validation.ReportTitle.maxLengthMessage\n },\n newTag: {},\n newCategory: {},\n description: {\n required: Validation.ReportDescription.requiredMessage,\n maxlength: Validation.ReportDescription.maxLengthMessage\n },\n overrideDescription: {\n maxlength: Validation.ReportDescription.maxLengthMessage\n },\n reportType: {\n required: Validation.ReportType.requiredMessage,\n },\n thumbnailUrl: {\n maxlength: Validation.ReportThumbnailUrl.maxLengthMessage\n },\n url: {\n required: Validation.ReportUrl.requiredMessage,\n maxlength: Validation.ReportUrl.maxLengthMessage\n },\n overrideUrl: {\n maxlength: Validation.ReportUrl.maxLengthMessage\n },\n isActive: {\n required: Validation.ReportIsActive.requiredMessage,\n }\n }; \n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Common from '../../shared/models/common.model';\nimport * as User from '../../shared/models/gen.user.model';\nimport * as Auth from '../../shared/models/auth.model';\nimport * as License from '../../shared/models/gen.license.model';\nimport * as Configuration from '../../shared/models/gen.configuration.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { FormBuilder, Validators, FormGroup } from '@angular/forms';\n\n@Injectable({\n\tprovidedIn: 'root'\n})\nexport class SettingsService {\n\tpublic baseUrl: string;\n\n\tconstructor(private http: HttpClient,\n\t\t@Inject('BASE_URL') baseUrl: string) {\n\t\tthis.baseUrl = baseUrl;\n\t}\n\n\n\tgetAboutSummary(): Observable {\n\t\treturn this.http.get(\n\t\t\tthis.baseUrl + 'api/Configuration/AboutSummary');\n\t}\n\n\tgetSettingsSummary(): Observable {\n\t\treturn this.http.get(\n\t\t\tthis.baseUrl + 'api/Configuration/SettingsSummary');\n\t}\n\n /* Configuration */\n\n getSmtp(): Observable {\n return this.http.get(\n this.baseUrl + 'api/Configuration/SmtpDetail');\n }\n\n saveSmtpDetail(detail: Configuration.SmtpDetail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Configuration/SaveSmtpDetail', detail);\n }\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Tag from '../../shared/models/gen.tag.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TagService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n // Get\n\n getTag(filter: Tag.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Tag/Get', filter);\n }\n\n // Save\n\n saveTag(detail: Tag.Detail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Tag/Save', detail);\n }\n\n // Delete\n\n deleteTags(detail: Tag.DeletionDetail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Tag/Delete', detail);\n }\n\n // Form\n\n getTagModel(fb: UntypedFormBuilder): UntypedFormGroup {\n return fb.group({\n\n id: [''],\n\n name: ['', [\n Validators.required,\n Validators.maxLength(Validation.TagName.maxLength)\n ]]\n\n });\n }\n\n // Validation\n\n static validationMsg = { \n name: {\n required: Validation.TagName.requiredMessage,\n maxlength: Validation.TagName.maxLengthMessage\n }\n }; \n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Common from '../../shared/models/common.model';\nimport * as Text from '../../shared/models/gen.text.model';\nimport * as Auth from '../../shared/models/auth.model';\nimport * as Configuration from '../../shared/models/gen.configuration.model';\nimport * as Validation from '../../shared/models/gen.validation';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TextService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n getText(filter: Text.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Text/Get', filter);\n }\n\n getTextByType(filter: Text.GetTextTypeFilter): Observable {\n return this.http.post(\n this.baseUrl + 'api/Text/GetByType', filter);\n }\n\n saveText(detail: Text.Detail): Observable {\n return this.http.post(\n this.baseUrl + 'api/Text/Save', detail);\n }\n\n toggleActive(detail: Common.IdActive): Observable {\n return this.http.post( \n this.baseUrl + 'api/Text/ToggleActive', detail);\n }\n\n getTextModel(fb: UntypedFormBuilder): UntypedFormGroup {\n return fb.group({\n\n id: [''],\n\n type: ['', [\n Validators.required,\n ]],\n\n typeAsString: [''],\n\n text: ['', [\n Validators.required,\n ]],\n\n isActive: ['', [\n Validators.required,\n ]],\n\n });\n }\n\n static validationMsg = {\n type: {\n required: Validation.TextType.requiredMessage,\n },\n text: {\n required: Validation.TextText.requiredMessage,\n },\n isActive: {\n required: Validation.TextIsActive.requiredMessage,\n }\n }; \n\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport * as Common from '../../shared/models/common.model';\nimport * as User from '../../shared/models/gen.user.model';\nimport { UntypedFormBuilder, Validators, UntypedFormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n public baseUrl: string;\n\n constructor(private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n getUser(filter: User.Filter): Observable {\n return this.http.post(\n this.baseUrl + 'api/User/Get', filter);\n }\n\n saveUser(detail: User.Detail): Observable {\n return this.http.post(\n this.baseUrl + 'api/User/Save', detail);\n }\n\n toggleActive(detail: Common.IdActive): Observable {\n return this.http.post( \n this.baseUrl + 'api/User/ToggleActive', detail);\n }\n\n getUserModel(fb: UntypedFormBuilder): UntypedFormGroup {\n return fb.group({\n id: [''],\n userName: [''],\n displayName: [''],\n isActive: [''],\n isActiveAsString: [''],\n isAdmin: [''],\n isAdminAsString: [''],\n tableauUserId: [''],\n studentTableauUserId: [''],\n sasUserId: [''],\n dateLastLogin: ['']\n });\n }\n\n static validationMsg = {\n }; \n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module';\nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { CategoryListPage } from './pages/category-list/category-list.page';\nimport { CategoryEditPage } from './pages/category-edit/category-edit.page';\n\nconst MODULE_ROUTES: Routes = [\n {\n path: 'categories/:id',\n component: CategoryEditPage,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard]\n }, {\n path: 'categories',\n component: CategoryListPage,\n canActivate: [AuthGuard]\n }\n];\n\n@NgModule({\n\tdeclarations: [\n CategoryListPage,\n CategoryEditPage\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tRouterModule.forChild(MODULE_ROUTES),\n\t\tSharedModule\n\t],\n exports: [\n CategoryListPage,\n CategoryEditPage\n\t]\n})\nexport class CategoriesModule { } \n","import { Component, OnInit, HostListener, Directive, OnDestroy } from '@angular/core'; \nimport { ParamMap, ActivatedRoute, Router } from '@angular/router';\nimport { UntypedFormGroup, Validators, UntypedFormBuilder, FormControl } from '@angular/forms';\n\nimport { of, Observable, Subscription } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\n\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport * as Model from '../../../../shared/models/gen.category.model';\nimport { CategoryService } from '../../../../core/services/category.service';\n\n\n@Directive()\n@Component({\n selector: 'app-category-edit',\n templateUrl: './category-edit.page.html'\n})\nexport class CategoryEditPage implements OnInit, OnDestroy, Common.CanComponentDeactivate {\n\n thisThingLCS = \"category\";\n subscription = new Subscription();\n\n saveBtn: ButtonState = {\n iconClass: \"fad fa-save\"\n };\n runBtn: ButtonState = {\n iconClass: \"fad fa-play\"\n };\n deleteBtn: ButtonState = {\n iconClass: \"fad fa-trash\"\n };\n\n isReadOnly = false;\n\n model: UntypedFormGroup;\n view: Model.View;\n detail: Model.Detail;\n saveResult: Model.SaveResult;\n\n loaded = false;\n\n routeInfo: {\n id: string;\n };\n\n isNew: boolean;\n\n validationMsg = CategoryService.validationMsg;\n\n saveMsg = {\n invalid: \"Please fix the errors on this page before saving\",\n success: \"The \" + this.thisThingLCS + \" was saved successfully\",\n error: \"An error occurred while saving the \" + this.thisThingLCS\n };\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private svc: CategoryService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router) { }\n\n ngOnInit() {\n this.subscription = this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n ).subscribe(info => {\n this.routeInfo = info;\n\n const filter: Model.Filter = {\n id: info.id\n };\n this.svc.getCategory(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.detail = result.detail;\n\n // If we're making a copy, update the detail using the prior values.\n if (history.state.copyDetail) {\n this.detail = $.extend(true, {}, history.state.copyDetail);\n this.detail.id = null;\n if (this.detail.name)\n this.detail.name = this.detail.name + \" - Copy\";\n }\n\n this.isNew = this.detail.id === null;\n\n this.model = this.svc.getCategoryModel(this.fb);\n this.model.patchValue(this.detail);\n\n // If this is a copy, mark the form as dirty so the Save button is enabled.\n if (history.state.copyDetail)\n this.model.markAsDirty();\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n //\n\n get f() { return this.model.controls; }\n\n //\n\n save() {\n this.model.markAllAsTouched();\n\n if (!this.model.valid) {\n this.alertSvc.showSubmitInvalid(this.saveBtn, this.saveMsg.invalid);\n return;\n }\n\n this.alertSvc.showSubmitStart(this.saveBtn);\n\n this.svc.saveCategory(this.model.value)\n .pipe(take(1))\n .subscribe(result => {\n if (!this.alertSvc.processModelErrors(result.modelErrors, this.model, this.saveBtn, this.saveMsg.invalid)) {\n this.model.markAsPristine();\n this.router.navigateByUrl(\"/categories\");\n }\n }, error => {\n this.alertSvc.showSubmitError(this.saveBtn, this.saveMsg.error);\n console.error(error);\n });\n }\n\n copy() {\n const extras = {\n state: {\n copyDetail: this.model.value\n }\n };\n this.router.navigateByUrl(\"/categories/new\", extras);\n }\n\n delete() {\n const detail: Model.DeletionDetail = {\n ids: [this.detail.id]\n }\n\n this.alertSvc.confirmDelete({\n detail: detail,\n singularLower: \"category\",\n singularUpper: \"Category\",\n pluralLower: \"categories\",\n pluralUpper: \"Categories\",\n action: (successMessage: string, errorMessage: string) => {\n this.alertSvc.showSubmitStart(this.deleteBtn);\n this.svc.deleteCategories(detail)\n .pipe(take(1))\n .subscribe(result => {\n if (result) {\n this.router.navigateByUrl(\"/categories\");\n } else {\n this.alertSvc.showSubmitInvalid(this.deleteBtn, errorMessage);\n }\n }, error => {\n this.alertSvc.showSubmitError(this.deleteBtn, errorMessage);\n console.error(error);\n });\n }\n });\n\n }\n\n cancel() {\n this.router.navigateByUrl(\"/categories\");\n }\n\n //\n\n canDeactivate(): Observable | boolean {\n if (!this.model.dirty)\n return true;\n return this.alertSvc.confirm({\n title: \"Leave?\",\n content: \"Do you want to leave without saving your changes?\"\n });\n }\n\n ngOnDestroy() {\n this.subscription && this.subscription.unsubscribe();\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHander(e) {\n if (this.model.dirty)\n e.returnValue = \"Are you sure you want to leave?\";\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Grid from '../../../../shared/models/grid.model';\nimport * as Category from '../../../../shared/models/gen.category.model';\nimport { CategoryService } from '../../../../core/services/category.service';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-category-list',\n templateUrl: './category-list.page.html' \n})\nexport class CategoryListPage {\n thisThingLCS = \"category\";\n thisThingLCP = \"categories\";\n thisThingUCP = \"Categories\";\n\n loaded = false;\n activeBtn: ButtonState;\n grid: Grid.GridInfo;\n selectedRows: Category.Detail[] = [];\n\n deleteBtn: ButtonState = {\n iconClass: \"fad fa-trash\"\n };\n\n constructor(\n http: HttpClient, \n private alertSvc: AlertService,\n private categorySvc: CategoryService,\n private router: Router,\n private route: ActivatedRoute,\n @Inject('BASE_URL') baseUrl: string)\n {\n\n http.get(baseUrl + 'api/Category/GetList')\n .pipe(take(1))\n .subscribe(result => {\n this.grid = new Grid.GridInfo(result.details, {\n sort: [\n { field: 'name', dir: 'asc' }\n ]\n });\n\n this.activeBtn = this.grid.activeBtn;\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the list of {thisThingLCP}\");\n console.error(error);\n });\n }\n\n //\n\n getLinkUrl(dataItem) {\n return \"/categories/\" + (dataItem ? dataItem.id : \"new\");\n }\n\n newItem() {\n this.router.navigateByUrl(this.getLinkUrl(null));\n }\n\n openItem() {\n if (this.grid.selectedKeys.length === 1)\n this.router.navigateByUrl(this.getLinkUrl(this.grid.selectedKeys[0]));\n }\n\n //\n\n getDeletionDetail(): Category.DeletionDetail {\n const detail: Category.DeletionDetail = {\n ids: []\n };\n this.grid.selectedKeys.forEach((item) => {\n detail.ids.push(item.id);\n });\n return detail;\n }\n\n delete() {\n if (this.grid.selectedKeys.length > 0) {\n const detail = this.getDeletionDetail();\n\n this.alertSvc.confirmDelete({\n detail: detail,\n singularLower: \"category\",\n singularUpper: \"Category\",\n pluralLower: \"categories\",\n pluralUpper: \"Categories\",\n action: (successMessage: string, errorMessage: string) => {\n this.alertSvc.showSubmitStart(this.deleteBtn);\n this.categorySvc.deleteCategories(detail)\n .pipe(take(1))\n .subscribe(result => {\n\n if (result.inUse.length > 0) {\n if (result.inUse.length == 1) {\n var msg = \"The category '\" + result.inUse[0].name + \"' cannot be deleted because it is in use by a report\"\n this.alertSvc.showError(msg);\n }\n else {\n var msg = \"The categories '\" +\n Array.prototype.map.call(result.inUse, s => s.name).join(\"' , '\")\n + \"' cannot be deleted because they are in use by a report\";\n this.alertSvc.showError(msg);\n }\n }\n\n if (result.error.length > 0) {\n if (result.error.length == 1) {\n var msg = \"An error occurred deleting category '\" + result.error[0].name + \"'\"\n this.alertSvc.showError(msg);\n }\n else {\n var msg = \"An error occurred deleting categories '\" +\n Array.prototype.map.call(result.error, s => s.name).join(\"' , '\")\n + \"'\";\n this.alertSvc.showError(msg);\n }\n }\n\n if (result.deleted.length > 0) {\n if (result.deleted.length == 1) {\n var msg = \"The category '\" + result.deleted[0].name + \"' was deleted\"\n this.alertSvc.showSuccess(msg);\n }\n else {\n var msg = \"The categories '\" +\n Array.prototype.map.call(result.deleted, s => s.name).join(\"' , '\")\n + \"' were deleted\";\n this.alertSvc.showSuccess(msg);\n }\n this.grid.removeItems(result.deleted);\n }\n\n }, error => {\n this.alertSvc.showSubmitError(this.deleteBtn, errorMessage);\n console.error(error);\n });\n }\n });\n }\n }\n\n\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module';\nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { HomePage } from './pages/home/home.page';\nimport { CommunityPage } from './pages/home/community.page';\nimport { AdminPage } from './pages/admin/admin.page';\n\nimport { TableauPublicPage } from './pages/home/tableaupublic.page';\nimport { TableauPrivatePage } from './pages/home/tableauprivate.page';\nimport { TableauPrivateStudentPage } from './pages/home/tableauprivatestudent.page';\nimport { SasPrivatePage } from './pages/home/sasprivate.page';\n//import { NgxTextOverflowClampModule } from \"ngx-text-overflow-clamp\";\n\n\nconst MODULE_ROUTES: Routes = [\n {\n path: '', component: HomePage\n },\n {\n path: 'community/tableauprivate/:id',\n component: TableauPrivatePage\n },\n {\n path: 'community/tableauprivatestudent/:id',\n component: TableauPrivateStudentPage\n },\n {\n path: 'community/sasprivate/:id',\n component: SasPrivatePage\n },\n {\n path: 'community', component: CommunityPage\n },\n {\n path: 'tableaupublic/:id',\n component: TableauPublicPage\n },\n {\n path: 'admin', component: AdminPage\n }\n];\n\n@NgModule({\n\tdeclarations: [\n HomePage,\n CommunityPage,\n AdminPage,\n TableauPublicPage,\n TableauPrivatePage,\n TableauPrivateStudentPage,\n SasPrivatePage\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tRouterModule.forChild(MODULE_ROUTES),\n SharedModule,\n //NgxTextOverflowClampModule\n\t],\n exports: [\n HomePage,\n AdminPage,\n TableauPublicPage,\n TableauPrivatePage,\n TableauPrivateStudentPage,\n SasPrivatePage\n\t]\n})\nexport class HomeModule { }\n","import { Component, Inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.page.html'\n})\nexport class AdminPage {\n //view: Home.View;\n isLoaded = true;\n\n constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {\n //http.get(baseUrl + 'api/Home/GetView').subscribe(result => {\n // this.view = result;\n // this.isLoaded = true;\n //}, error => console.error(error));\n }\n}\n","import { Component, Input, Inject, SecurityContext, Directive } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { take } from 'rxjs/operators';\n\n@Directive()\n@Component({\n selector: 'app-community',\n templateUrl: './community.page.html'\n})\nexport class CommunityPage {\n view: Home.View;\n viewAll: Home.View;\n tosToggle: boolean = false;\n isLoaded = false;\n\n work: Home.Detail[];\n selectedTag: number = null;\n filterText: string = null;\n sortOptions: { id: number, name: string }[];\n selectedSort: number = 0;\n filterFavorites: boolean;\n\n isAuthenticated: boolean = false;\n\n thumbnailDict: Map = new Map();\n\n _baseUrl: string;\n\n constructor(\n private route: ActivatedRoute,\n private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string,\n private homeSvc: HomeService,\n private authSvc: AuthService,\n private alertSvc: AlertService,\n private router: Router,\n private sanitizer: DomSanitizer) {\n\n this._baseUrl = baseUrl;\n\n this.sortOptions = [\n { id: 0, name: \"Title\" },\n { id: 1, name: \"Most Popular\" },\n { id: 2, name: \"Recently Updated\" }\n ];\n }\n\n ngOnInit() {\n this.tosToggle = !this.authSvc.getSession().HasConfirmedTos;\n\n // Set flag for header\n //var session = this.authSvc.getSession();\n //session.OnPrivatePage = true;\n //session.OnLandingPage = true;\n //this.authSvc.updateSession(session);\n\n if (this.authSvc.isExpired(this.authSvc.getSession())) {\n this.authSvc.redirectToLogin(\"/community\");\n }\n else {\n this.init();\n }\n }\n\n init() {\n if (!this.authSvc.getSession().IsPrivateLoaded) {\n this.homeSvc.updateUserReports()\n .pipe(take(1))\n .subscribe(result => {\n\n // If any of them loaded, continue\n if (result.sasResult || result.tableauResult || result.tableauStudentResult) {\n var session = this.authSvc.getSession();\n\n // But show alerts for any that didn't load\n if (!result.sasResult) {\n this.alertSvc.showError(\"Problem loading SAS reports\")\n }\n if (!result.tableauResult) {\n this.alertSvc.showError(\"Problem loading Tableau default site reports\")\n }\n if (!result.tableauStudentResult) {\n this.alertSvc.showError(\"Problem loading Tableau student site reports\")\n }\n\n session.IsPrivateLoaded = true;\n this.authSvc.updateSession(session);\n this.loadAll();\n }\n else {\n this.alertSvc.showError(\"Error loading user reports\")\n }\n }, error => {\n this.alertSvc.showError(\"Error loading user reports\")\n });\n }\n else {\n this.loadAll();\n }\n }\n\n loadAll() {\n\n this.selectedTag = null;\n\n if (this.authSvc.isExpired(this.authSvc.getSession())) {\n this.authSvc.redirectToLogin(\"/community\");\n }\n\n this.http.get(this._baseUrl + 'api/Home/GetPrivateView')\n .pipe(take(1))\n .subscribe(result => {\n\n this.viewAll = result;\n\n // Get virtual URLs for images that are coming from the DB\n\n let url: string = \"\";\n for (let i of this.viewAll.details) {\n\n if (i.reportTypeId == Enums.ReportType.SASPrivate) {\n url = '/images/SAS_Thumbnail.png';\n i.tempThumbnailUrl = this.sanitizer.sanitize(SecurityContext.URL, this.sanitizer.bypassSecurityTrustUrl(url));\n this.thumbnailDict.set(i.id, i.tempThumbnailUrl);\n }\n\n else if (i.thumbnail != null) {\n url = 'data:image/png;base64,' + i.thumbnail;\n i.tempThumbnailUrl = this.sanitizer.sanitize(SecurityContext.URL, this.sanitizer.bypassSecurityTrustUrl(url));\n this.thumbnailDict.set(i.id, i.tempThumbnailUrl);\n }\n\n };\n\n // Continue loading and filtering\n\n this.cachedLoad();\n\n }, error => console.error(error));\n }\n\n sortNumbersDesc(a: number, b: number) {\n if (a === b) {\n return 0;\n }\n\n // nulls sort after anything else\n else if (a === null) {\n return 1;\n }\n else if (b === null) {\n return -1;\n }\n\n // otherwise, if we're ascending, lowest sorts first\n else {\n return a < b ? 1 : -1;\n }\n }\n\n cachedLoad()\n {\n this.isAuthenticated = this.authSvc.getSession().IsAuthenticated;\n\n // Filter by selected tag\n\n this.view = {\n details: null,\n tags: this.viewAll.tags,\n }\n\n this.work = this.viewAll.details;\n\n if (this.filterFavorites) {\n this.work = this.work.filter(o => o.isFavorite);\n }\n\n if (this.filterText) {\n this.work = this.work.filter(o => o.searchString.includes(this.filterText.toUpperCase()));\n }\n\n if (this.selectedTag) {\n this.work = this.work.filter(o => o.tags.map(a => a.id).includes(this.selectedTag));\n }\n\n // Sort by Popularity\n if (this.selectedSort == 1) {\n this.work.sort((one, two) => (one.totalReportHits > two.totalReportHits) ? -1 : 1);\n }\n // Sort by Last Updated\n else if (this.selectedSort == 2) {\n this.work.sort((one, two) => (one.updatedAt > two.updatedAt) ? -1 : 1);\n }\n // Default: Sort by Title\n else {\n this.work.sort((one, two) => (one.title.toLocaleUpperCase() < two.title.toLocaleUpperCase() ? -1 : 1));\n }\n\n this.view.details = this.work;\n\n this.isLoaded = true;\n }\n\n // Search, Filters, Favorites\n\n setSelectedTag(value: any) {\n this.selectedTag = value.id;\n this.cachedLoad();\n }\n\n setFilterText() {\n //this.filterText = value.value.toUpperCase();\n this.cachedLoad();\n }\n\n setSelectedSort(value: any) {\n this.selectedSort = value.id;\n this.cachedLoad();\n }\n\n clearFilter() {\n this.selectedTag = null;\n this.filterText = null;\n this.filterFavorites = false;\n this.cachedLoad();\n }\n\n toggleFavorite(id: number, event: any) {\n event.preventDefault();\n var reportIdClass: Common.IdClass = { id: id };\n this.homeSvc.toggleFavorite(reportIdClass)\n .pipe(take(1))\n .subscribe(result => {\n this.view.details.filter(o => o.id == id).forEach(o => o.isFavorite = result);\n // Update report with new favorite status\n }, error => {\n console.error(error);\n });\n }\n\n filterFavoritesOff(event: any) {\n event.preventDefault();\n this.filterFavorites = false;\n this.cachedLoad();\n }\n\n filterFavoritesOn(event: any) {\n event.preventDefault();\n this.filterFavorites = true;\n this.cachedLoad();\n }\n\n //\n\n getQueryStringValue(paramName) {\n const url = window.location.href;\n let paramValue;\n if (url.includes('?')) {\n const httpParams = new HttpParams({ fromString: url.split('?')[1] });\n paramValue = httpParams.get(paramName);\n }\n return paramValue;\n }\n\n //\n\n reportClick(id: number, event) {\n\n event.preventDefault();\n\n var thisItem = this.view.details.findIndex(o => o.id == id);\n\n var reportIdClass: Common.IdClass = { id: id };\n this.homeSvc.logReportHit(reportIdClass)\n .pipe(take(1))\n .subscribe(result => {\n }, error => {\n console.error(error);\n });\n\n // Lookup type of report\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.TableauPrivate) {\n window.open(\"/community/tableauprivate/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.TableauPrivateStudent) {\n window.open(\"/community/tableauprivatestudent/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.SASPrivate) {\n window.open(\"/community/sasprivate/\" + id, \"_blank\");\n }\n //if (this.view.details[thisItem].reportTypeId == Enums.ReportType.PDF) {\n // this.router.navigateByUrl(\"/pdf/\" + id);\n //}\n }\n\n //\n\n tosCancel() {\n this.tosToggle = false;\n this.router.navigateByUrl(\"/\");\n }\n\n tosConfirm() {\n this.tosToggle = false;\n this.homeSvc.saveConfirmTos()\n .pipe(take(1))\n .subscribe(result => {\n var session = this.authSvc.getSession();\n session.HasConfirmedTos = true;\n this.authSvc.updateSession(session);\n }, error => {\n console.error(error);\n });\n }\n\n toggleExpand(event) {\n $(event.target).closest(\".card\").toggleClass(\"card-private-expand\");\n }\n}\n","import { Component, Input, Inject, SecurityContext, Directive } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Router } from '@angular/router';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport { take } from 'rxjs/operators';\n\n@Directive()\n@Component({\n selector: 'app-home',\n templateUrl: './home.page.html'\n})\nexport class HomePage {\n view: Home.View;\n viewAll: Home.View;\n isLoaded = false;\n\n work: Home.Detail[];\n selectedTag: number = null;\n filterText: string = null;\n sortOptions: { id: number, name: string }[];\n selectedSort: number = 0;\n //filterFavorites: boolean = false;\n\n isAuthenticated: boolean = false;\n\n thumbnailDict: Map = new Map();\n\n _baseUrl: string;\n\n constructor(\n private route: ActivatedRoute,\n private http: HttpClient,\n @Inject('BASE_URL') baseUrl: string,\n private homeSvc: HomeService,\n private authSvc: AuthService,\n private router: Router,\n private sanitizer: DomSanitizer) {\n\n this._baseUrl = baseUrl;\n\n this.sortOptions = [\n { id: 0, name: \"Title\" },\n { id: 1, name: \"Most Popular\" },\n //{ id: 2, name: \"Recently Updated\" }\n ];\n }\n\n ngOnInit() {\n // Set flag for header\n //var session = this.authSvc.getSession();\n //session.OnPrivatePage = false;\n //session.OnLandingPage = true;\n ////session.OnHomePage = true;\n //this.authSvc.updateSession(session);\n\n this.cachedLoad();\n }\n\n\n loadAll() {\n\n this.selectedTag = null;\n\n this.http.get(this._baseUrl + 'api/Home/GetPublicView')\n .pipe(take(1))\n .subscribe(result => {\n\n this.viewAll = result;\n\n // Get virtual URLs for images that are coming from the DB\n\n let url: string = \"\";\n for (let i of this.viewAll.details) {\n if (i.thumbnail != null) {\n if (i.reportTypeId == Enums.ReportType.SASPrivate) {\n url = 'data:image/svg+xml;base64,' + i.thumbnail;\n } else {\n url = 'data:image/png;base64,' + i.thumbnail;\n }\n i.tempThumbnailUrl = this.sanitizer.sanitize(SecurityContext.URL, this.sanitizer.bypassSecurityTrustResourceUrl(url));\n this.thumbnailDict.set(i.id, i.tempThumbnailUrl);\n }\n };\n\n // Continue loading and filtering\n\n this.cachedLoad();\n\n }, error => console.error(error));\n }\n\n cachedLoad()\n {\n this.isAuthenticated = this.authSvc.getSession().IsAuthenticated;\n\n // Cache the list for quick tag filtering\n\n if (this.viewAll == null) {\n this.loadAll();\n return;\n }\n\n // Filter by selected tag\n\n this.view = {\n details: null,\n tags: this.viewAll.tags,\n }\n\n this.work = this.viewAll.details;\n\n //if (this.filterFavorites) {\n // this.work = this.work.filter(o => o.isFavorite);\n //}\n\n if (this.filterText) {\n this.work = this.work.filter(o => o.searchString.includes(this.filterText.toUpperCase()));\n }\n\n if (this.selectedTag) {\n this.work = this.work.filter(o => o.tags.map(a => a.id).includes(this.selectedTag));\n }\n\n // Sort by Popularity\n if (this.selectedSort == 1) {\n this.work.sort((one, two) => (one.totalReportHits > two.totalReportHits) ? -1 : 1);\n }\n // Sort by Last Updated\n else if (this.selectedSort == 2) {\n this.work.sort((one, two) => (one.updatedAt > two.updatedAt) ? -1 : 1);\n }\n // Default: Sort by Title\n else {\n this.work.sort((one, two) => (one.title.toLocaleUpperCase() < two.title.toLocaleUpperCase() ? -1 : 1));\n }\n\n this.view.details = this.work;\n\n this.isLoaded = true;\n }\n\n // Search, Filters, Favorites\n\n setSelectedTag(value: any) {\n this.selectedTag = value.id;\n this.cachedLoad();\n }\n\n setFilterText() {\n //this.filterText = value.value.toUpperCase();\n this.cachedLoad();\n }\n\n setSelectedSort(value: any) {\n this.selectedSort = value.id;\n this.cachedLoad();\n }\n\n clearFilter() {\n this.selectedTag = null;\n this.filterText = null;\n //this.filterFavorites = false;\n this.cachedLoad();\n }\n\n toggleFavorite(id: number) {\n var reportIdClass: Common.IdClass = { id: id };\n this.homeSvc.toggleFavorite(reportIdClass)\n .pipe(take(1))\n .subscribe(result => {\n this.view.details.filter(o => o.id == id).forEach(o => o.isFavorite = result);\n // Update report with new favorite status\n }, error => {\n console.error(error);\n });\n }\n\n //toggleFilterFavorites() {\n // this.filterFavorites = !this.filterFavorites;\n // this.cachedLoad();\n //}\n\n //\n\n getQueryStringValue(paramName) {\n const url = window.location.href;\n let paramValue;\n if (url.includes('?')) {\n const httpParams = new HttpParams({ fromString: url.split('?')[1] });\n paramValue = httpParams.get(paramName);\n }\n return paramValue;\n }\n\n\n reportClick(id: number, event) {\n\n event.preventDefault();\n\n var thisItem = this.view.details.findIndex(o => o.id == id);\n\n var reportIdClass: Common.IdClass = { id: id };\n this.homeSvc.logReportHit(reportIdClass)\n .pipe(take(1))\n .subscribe(result => {\n }, error => {\n console.error(error);\n });\n\n // Lookup type of report\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.TableauPublic) {\n window.open(\"/tableaupublic/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.TableauPrivate) {\n window.open(\"/community/tableauprivate/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.TableauPrivateStudent) {\n window.open(\"/community/tableauprivatestudent/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.SASPrivate) {\n window.open(\"/community/sasprivate/\" + id, \"_blank\");\n }\n if (this.view.details[thisItem].reportTypeId == Enums.ReportType.PDF) {\n window.open(\"/pdf/\" + id, \"_blank\");\n }\n\n }\n\n toggleExpand(event) {\n $(event.target).closest(\".card\").toggleClass(\"card-public-expand\");\n }\n}\n","import { Component, ViewChild, ElementRef, OnInit, Directive } from '@angular/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { switchMap, take } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Report from '../../../../shared/models/gen.report.model';\nimport { AuthService } from '../../../../core/services/auth.service';\n\n//declare var tableau: any;\n\n@Directive()\n@Component({\n selector: 'app-sasprivate',\n templateUrl: './sasprivate.page.html'\n})\nexport class SasPrivatePage implements OnInit {\n @ViewChild(\"loadingMessage\") loadingMessage: ElementRef;\n @ViewChild(\"sas-report\") sasReport: ElementRef;\n\n thisThingLCS = \"workbook\";\n\n routeInfo: {\n id: string;\n };\n\n _baseUrl: string;\n\n view: Home.ReportUrl;\n\n loaded = false;\n error = false;\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private homeSvc: HomeService,\n private alertSvc: AlertService,\n private route: ActivatedRoute) {\n }\n\n ngOnInit() {\n // Set flag for header\n //var session = this.authSvc.getSession();\n //session.OnPrivatePage = true;\n //session.OnLandingPage = false;\n //this.authSvc.updateSession(session);\n\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n\n this.routeInfo = info;\n const filter: Report.Filter = {\n id: info.id\n };\n this.homeSvc.getReport(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.loaded = true; \n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n this.error = true;\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred reading the parameters while loading the \" + this.thisThingLCS);\n this.error = true;\n console.error(error);\n });\n\n }\n\n}\n","import { Component, ViewChild, Input, Inject, SecurityContext, AfterViewInit, ElementRef, Directive } from '@angular/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { switchMap, take } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Report from '../../../../shared/models/gen.report.model';\nimport { AuthService } from '../../../../core/services/auth.service';\n\ndeclare var tableau: any;\n\n@Directive()\n@Component({\n selector: 'app-tableauprivate',\n templateUrl: './tableauprivate.page.html'\n})\nexport class TableauPrivatePage implements AfterViewInit {\n viz: any;\n @ViewChild(\"loadingMessage\") loadingMessage: ElementRef;\n @ViewChild(\"vizContainer\") containerDiv: ElementRef;\n\n thisThingLCS = \"workbook\";\n\n routeInfo: {\n id: string;\n };\n\n _baseUrl: string;\n\n view: Home.ReportUrl;\n\n loaded = false;\n\n constructor(private fb: UntypedFormBuilder,\n private homeSvc: HomeService,\n private alertSvc: AlertService,\n private authSvc: AuthService,\n private route: ActivatedRoute) { }\n\n ngOnInit() {\n // Set flag for header\n // var session = this.authSvc.getSession();\n // session.OnPrivatePage = true;\n // session.OnLandingPage = false;\n // this.authSvc.updateSession(session);\n }\n\n ngAfterViewInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n const filter: Report.Filter = {\n id: info.id\n };\n this.homeSvc.getReport(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n\n var url = this.view.server + \"/views/\" + this.view.url + \"?:embed=y&:toolbar=top\";\n if (this.view.showTabs) {\n url = url + \"&:tabs=yes\"\n } else {\n url = url + \"&:tabs=no\"\n }\n \n var divWidth = this.containerDiv.nativeElement.offsetWidth;\n var displayDevice;\n\n if (divWidth <= 500) {\n displayDevice = \"phone\";\n } else if (divWidth <= 800) {\n displayDevice = \"tablet\";\n } else {\n displayDevice = \"desktop\";\n }\n\n var options = {\n device: displayDevice,\n onFirstInteractive: function () {\n // The viz is now ready and can be safely used.\n $(\"#loadingMessage\").remove();\n }\n };\n\n // Creating a viz object and embed it in the container div.\n this.viz = new tableau.Viz(\n this.containerDiv.nativeElement, url, options);\n\n //$(function () {\n // var url = result.server;\n // $.ajax(url,\n // {\n // method: 'GET',\n // headers: {\n // \"accept\": \"application/json\",\n // \"Access-Control-Allow-Origin\": \"*\"\n // }\n // })\n // .fail(function (response) {\n // $(\".tableau-container\").hide();\n // $(\".errormessage\").html(\"

We're having trouble displaying this report. Please make sure your VPN is connected, then refresh this window.

\");\n // });\n //});\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred reading the parameters while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n\n}\n","import { Component, ViewChild, Input, Inject, SecurityContext, AfterViewInit, ElementRef, Directive } from '@angular/core';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { switchMap, take } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Report from '../../../../shared/models/gen.report.model';\nimport { AuthService } from '../../../../core/services/auth.service';\n\ndeclare var tableau: any;\n\n@Directive()\n@Component({\n selector: 'app-tableauprivatestudent',\n templateUrl: './tableauprivatestudent.page.html'\n})\nexport class TableauPrivateStudentPage implements AfterViewInit {\n viz: any;\n @ViewChild(\"loadingMessage\") loadingMessage: ElementRef;\n @ViewChild(\"vizContainer\") containerDiv: ElementRef;\n\n thisThingLCS = \"workbook\";\n\n routeInfo: {\n id: string;\n };\n\n _baseUrl: string;\n\n view: Home.ReportUrl;\n\n loaded = false;\n error = false;\n\n constructor(private fb: UntypedFormBuilder,\n private homeSvc: HomeService,\n private alertSvc: AlertService,\n private authSvc: AuthService,\n private route: ActivatedRoute) { }\n\n ngOnInit() {\n // Set flag for header\n // var session = this.authSvc.getSession();\n // session.OnPrivatePage = true;\n // session.OnLandingPage = false;\n // this.authSvc.updateSession(session);\n }\n\n ngAfterViewInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n const filter: Report.Filter = {\n id: info.id\n };\n this.homeSvc.getReport(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n\n var url = this.view.server + \"/t/StudentFacing/views/\" + this.view.url + \"?:embed=y&:toolbar=top\";\n if (this.view.showTabs) {\n url = url + \"&:tabs=yes\"\n } else {\n url = url + \"&:tabs=no\"\n }\n\n var divWidth = this.containerDiv.nativeElement.offsetWidth;\n var displayDevice;\n\n if (divWidth <= 500) {\n displayDevice = \"phone\";\n } else if (divWidth <= 800) {\n displayDevice = \"tablet\";\n } else {\n displayDevice = \"desktop\";\n }\n\n var options = {\n device: displayDevice,\n onFirstInteractive: function () {\n // The viz is now ready and can be safely used.\n $(\"#loadingMessage\").remove();\n }\n };\n\n // Creating a viz object and embed it in the container div.\n this.viz = new tableau.Viz(\n this.containerDiv.nativeElement, url, options);\n\n //$(function () {\n // var url = result.server;\n // $.ajax(url,\n // {\n // error: function () {\n // $(\".tableau-container\").hide();\n // $(\".errormessage\").html(\"

We're having trouble displaying this report. Please make sure your VPN is connected, then refresh this window.

\");\n // }\n // });\n //});\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred reading the parameters while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n\n}\n","import { Component, ViewChild, Input, Inject, SecurityContext, AfterViewInit, ElementRef, Directive } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport * as Home from '../../../../shared/models/gen.home.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { HomeService } from '../../../../core/services/home.service';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { ReportService } from '../../../../core/services/report.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { switchMap, take } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport * as Report from '../../../../shared/models/gen.report.model';\n\ndeclare var tableau: any;\n\n@Directive()\n@Component({\n selector: 'app-tableau-public',\n templateUrl: './tableaupublic.page.html'\n})\nexport class TableauPublicPage implements AfterViewInit {\n viz: any;\n @ViewChild(\"loadingMessage\") loadingMessage: ElementRef;\n @ViewChild(\"vizContainer\") containerDiv: ElementRef;\n\n thisThingLCS = \"workbook\";\n\n routeInfo: {\n id: string;\n };\n\n _baseUrl: string;\n\n view: Home.ReportUrl;\n\n loaded = false;\n error = false;\n\n showReportAid = true;\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private homeSvc: HomeService,\n private reportSvc: ReportService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router) { }\n\n ngOnInit() {\n // Set flag for header\n // var session = this.authSvc.getSession();\n // session.OnPrivatePage = false;\n // session.OnLandingPage = false;\n // this.authSvc.updateSession(session);\n }\n\n ngAfterViewInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n\n const filter: Report.Filter = {\n id: info.id\n };\n this.homeSvc.getReport(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n\n var url = this.view.server + \"/views/\" + this.view.url + \"?:embed=yes\";\n if (this.view.showTabs) {\n url = url + \"&:tabs=yes\"\n } else {\n url = url + \"&:tabs=no\"\n }\n\n var divWidth = this.containerDiv.nativeElement.offsetWidth;\n var displayDevice;\n\n if (divWidth <= 500) {\n displayDevice = \"phone\";\n } else if (divWidth <= 800) {\n displayDevice = \"tablet\";\n } else {\n displayDevice = \"desktop\";\n }\n\n var options = {\n device: displayDevice,\n onFirstInteractive: function () {\n // The viz is now ready and can be safely used.\n $(\"#loadingMessage\").remove();\n }\n };\n\n // Creating a viz object and embed it in the container div.\n this.viz = new tableau.Viz(\n this.containerDiv.nativeElement, url, options);\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred reading the parameters while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n\n getQueryStringValue(paramName) {\n const url = window.location.href;\n let paramValue;\n if (url.includes('?')) {\n const httpParams = new HttpParams({ fromString: url.split('?')[1] });\n paramValue = httpParams.get(paramName);\n }\n return paramValue;\n }\n\n openReportAid() {\n this.showReportAid = true;\n }\n\n closeReportAid() {\n this.showReportAid = false;\n }\n}\n","import { Component, OnInit, HostListener, Directive } from '@angular/core';\nimport { ParamMap, ActivatedRoute, Router } from '@angular/router';\nimport { UntypedFormGroup, Validators, UntypedFormBuilder, FormControl } from '@angular/forms';\n\nimport { of, Observable } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\n\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport * as Model from '../../../../shared/models/gen.report.model';\nimport { ReportService } from '../../../../core/services/report.service';\n\n\n@Directive()\n@Component({\n selector: 'app-report-edit',\n templateUrl: './report-edit.page.html'\n})\nexport class ReportEditPage implements OnInit, Common.CanComponentDeactivate {\n\n thisThingLCS = \"report\";\n\n saveBtn: ButtonState = {\n iconClass: \"fad fa-save\" \n };\n runBtn: ButtonState = {\n iconClass: \"fad fa-play\"\n };\n isReadOnly = false;\n showOverrideFields = false;\n\n allReportTypes = Enums.ReportType;\n \n model: UntypedFormGroup;\n view: Model.View;\n detail: Model.Detail;\n saveResult: Model.SaveResult;\n categorySaveResult: Model.CategorySaveResult;\n\n reportType: Model.ReportType;\n allTags: Model.Tag[];\n allCategories: Model.Category[];\n showOverrides: true;\n\n newTag = \"\";\n newCategory = \"\";\n\n loaded = false;\n\n routeInfo: {\n id: string;\n };\n\n isNew: boolean;\n \n validationMsg = ReportService.validationMsg;\n\n saveMsg = {\n invalid: \"Please fix the errors on this page before saving\",\n success: \"The test was saved successfully\",\n error: \"An error occurred while saving the test\"\n };\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private svc: ReportService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router)\n { }\n\n ngOnInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .subscribe(info => {\n this.routeInfo = info;\n\n const filter: Model.Filter = {\n id: info.id\n };\n this.svc.getReport(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.detail = result.detail;\n\n this.allTags = result.allTags;\n this.allCategories = result.allCategories;\n\n // If we're making a copy, update the detail using the prior values.\n if (history.state.copyDetail) {\n this.detail = $.extend(true, {}, history.state.copyDetail);\n this.detail.id = null;\n if (this.detail.title)\n this.detail.title = this.detail.title + \" - Copy\";\n }\n\n this.isNew = this.detail.id === null;\n\n this.model = this.svc.getReportModel(this.fb);\n this.model.patchValue(this.detail);\n\n // If this is a copy, mark the form as dirty so the Save button is enabled.\n if (history.state.copyDetail)\n this.model.markAsDirty();\n\n this.showOverrideFields =\n this.detail.reportTypeId == Enums.ReportType.TableauPrivate\n || this.detail.reportTypeId == Enums.ReportType.TableauPrivateStudent\n || this.detail.reportTypeId == Enums.ReportType.SASPrivate;\n\n this.loaded = true;\n \n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n //\n\n get f() { return this.model.controls; }\n\n //\n\n addTag() {\n var tagDetail: Model.TagDetail = {\n newTag: {\n id: 0,\n name: this.newTag,\n }\n }\n\n this.svc.addTag(tagDetail)\n .pipe(take(1))\n .subscribe(result => {\n\n this.allTags = result.allTags;\n this.model.controls.selectedTags.value.push(result.detail.newTag.id);\n this.newTag = \"\";\n \n // Although the tag was created, it hasn't been linked to the report yet\n this.model.markAsDirty();\n\n }, error => {\n this.alertSvc.showError(\"An error occurred adding the tag\");\n console.error(error);\n });\n }\n\n //\n\n addCategory() {\n var categoryDetail: Model.CategoryDetail = {\n newCategory: {\n id: 0,\n name: this.newCategory,\n }\n }\n\n this.svc.addCategory(categoryDetail)\n .pipe(take(1))\n .subscribe(result => {\n\n this.allCategories = result.allCategories;\n this.model.controls.selectedCategories.value.push(result.detail.newCategory.id);\n this.newCategory = \"\";\n\n // Although the category was created, it hasn't been linked to the report yet\n this.model.markAsDirty();\n\n }, error => {\n this.alertSvc.showError(\"An error occurred adding the category\");\n console.error(error);\n });\n }\n\n //\n\n save() {\n this.model.markAllAsTouched();\n\n if (!this.model.valid) {\n this.alertSvc.showSubmitInvalid(this.saveBtn, this.saveMsg.invalid);\n return;\n }\n\n this.alertSvc.showSubmitStart(this.saveBtn);\n\n this.f.isActive.setValue(true);\n\n this.svc.saveReport(this.model.value)\n .pipe(take(1))\n .subscribe(result => {\n if (!this.alertSvc.processModelErrors(result.modelErrors, this.model, this.saveBtn, this.saveMsg.invalid)) {\n this.model.markAsPristine();\n this.router.navigateByUrl(\"/reports\");\n }\n }, error => {\n this.alertSvc.showSubmitError(this.saveBtn, this.saveMsg.error);\n console.error(error);\n });\n }\n\n copy() {\n const extras = {\n state: {\n copyDetail: this.model.value\n }\n };\n this.router.navigateByUrl(\"/reports/new\", extras);\n }\n\n cancel() {\n this.router.navigateByUrl(\"/reports\");\n }\n\n //\n\n canDeactivate(): Observable | boolean {\n if (!this.model.dirty)\n return true;\n return this.alertSvc.confirm({\n title: \"Leave?\",\n content: \"Do you want to leave without saving your changes?\"\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHander(e) {\n if (this.model.dirty)\n e.returnValue = \"Are you sure you want to leave?\";\n }\n}\n","import { Component, Inject, Directive } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\nimport * as Grid from '../../../../shared/models/grid.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Report from '../../../../shared/models/gen.report.model';\nimport { ReportService } from '../../../../core/services/report.service';\nimport { GridService } from '../../../../core/services/grid.service';\nimport { take } from 'rxjs/operators';\n\n@Directive()\n@Component({\n selector: 'app-report-list',\n templateUrl: './report-list.page.html'\n})\nexport class ReportListPage {\n thisThingLCP = \"reports\";\n thisThingLCS = \"report\";\n loaded = false;\n deletedBtn: ButtonState;\n grid: Grid.GridInfo;\n selectedRows: Report.Detail[] = [];\n\n tagTypes: string[] = [];\n tagTypeFilter: string[] = [];\n reportTypes: string[] = [];\n reportTypeFilter: string[] = [];\n yesNoTypes: string[] = [\"Yes\", \"No\"];\n isActiveFilter: string[] = [];\n isDeletedFilter: string[] = [];\n\n applyFilter = this.gridSvc.applyFilter.bind(this.gridSvc);\n applyFilterContains = this.gridSvc.applyFilterContains.bind(this.gridSvc);\n updateFilter = this.gridSvc.updateFilter.bind(this.gridSvc);\n\n constructor(\n private http: HttpClient,\n private alertSvc: AlertService,\n private reportSvc: ReportService,\n private gridSvc: GridService,\n private router: Router,\n private route: ActivatedRoute,\n @Inject('BASE_URL') private baseUrl: string) { }\n\n ngOnInit() {\n this.load();\n }\n\n load() {\n this.http.get(this.baseUrl + 'api/Report/GetList')\n .pipe(take(1))\n .subscribe(result => {\n this.grid = new Grid.GridInfo(result.details, {\n sort: [\n { field: 'title', dir: 'asc' }\n ],\n filterPredicate: p => p.isActive,\n activeSettings: { checkboxLabel: \"Show reports not found on servers\" },\n deletedPredicate: p => p.isDeleted === true,\n });\n\n this.deletedBtn = this.grid.deletedBtn;\n\n // Not complete list of possible values, just the values that appear in this list\n this.reportTypes = result.reportTypes;\n this.tagTypes = result.tagTypes;\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the list of \"+this.thisThingLCP);\n console.error(error);\n });\n }\n\n //\n\n joinNames(array) {\n return Array.prototype.map.call(array, s => s.name).join(\", \");\n }\n\n getLinkUrl(dataItem) {\n return \"/reports/\" + (dataItem ? dataItem.id : \"new\");\n }\n\n newItem() {\n this.router.navigateByUrl(this.getLinkUrl(null));\n }\n\n openItem() {\n if (this.grid.selectedKeys.length === 1)\n this.router.navigateByUrl(this.getLinkUrl(this.grid.selectedKeys[0]));\n }\n\n toggleDeleted() {\n if (this.grid.selectedKeys.length === 1) {\n const dataItem = this.grid.selectedKeys[0];\n\n this.alertSvc.confirmToggleDeleted({\n detail: {\n id: dataItem.id,\n deleted: !dataItem.isDeleted\n },\n confirmOptions: {\n title: \"Delete\",\n content: \"Are you sure you want to delete this \" + this.thisThingLCS + \"?\",\n yesText: \"Delete\",\n },\n action: (detail: Common.IdDeleted) => {\n this.alertSvc.showSubmitStart(this.deletedBtn);\n this.reportSvc.toggleDeleted(detail)\n .pipe(take(1))\n .subscribe(result => {\n if (result.modelErrors.length > 0) {\n this.alertSvc.showWarning(result.modelErrors[0].description);\n this.grid.processDeletedStatus(this.deletedBtn, false);\n } else {\n dataItem.isDeleted = result.idDeleted.deleted;\n this.grid.processDeletedStatus(this.deletedBtn, true);\n }\n dataItem.isDeletedString = dataItem.isDeleted == true ? \"Yes\" : \"No\";\n }, error => {\n this.alertSvc.showSubmitError(this.deletedBtn, \"An error occurred while updating the \" + this.thisThingLCS);\n console.error(error);\n });\n }\n });\n }\n }\n\n adminResetReports() {\n this.alertSvc.confirm({\n content: \"Are you sure you want to permanently delete all reports in the portal not found on the server (other than the Tableau public reports)?\",\n })\n .pipe(take(1))\n .subscribe(result => {\n if (result) {\n this.reportSvc.adminResetReports()\n .pipe(take(1))\n .subscribe(result => {\n if (result.success) {\n this.alertSvc.showInfo(\"Report reset completed\");\n this.load();\n } else {\n this.alertSvc.showError(\"Error resetting reports\");\n }\n })\n }\n })\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module';\nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { ReportListPage } from './pages/report-list/report-list.page';\nimport { ReportEditPage } from './pages/report-edit/report-edit.page';\n\nconst MODULE_ROUTES: Routes = [\n {\n path: 'reports/:id',\n component: ReportEditPage,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard]\n }, {\n path: 'reports',\n component: ReportListPage,\n canActivate: [AuthGuard]\n }\n];\n\n@NgModule({\n\tdeclarations: [\n ReportListPage,\n ReportEditPage\n\t],\n\timports: [\n CommonModule,\n\t\tRouterModule.forChild(MODULE_ROUTES),\n SharedModule\n\t],\n exports: [\n ReportListPage,\n ReportEditPage\n\t]\n})\nexport class ReportsModule { }\n","import { Component, OnInit, HostListener, Directive } from '@angular/core';\nimport { ParamMap, ActivatedRoute, Router } from '@angular/router';\nimport { UntypedFormGroup, Validators, UntypedFormBuilder, FormControl } from '@angular/forms';\n\nimport { of, Observable } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\n\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport * as Tag from '../../../../shared/models/gen.tag.model';\nimport { TagService } from '../../../../core/services/tag.service';\n\n\n@Directive()\n@Component({\n selector: 'app-tag-edit',\n templateUrl: './tag-edit.page.html'\n})\nexport class TagEditPage implements OnInit, Common.CanComponentDeactivate {\n\n thisThingLCS = \"tag\";\n\n saveBtn: ButtonState = {\n iconClass: \"fad fa-save\"\n };\n runBtn: ButtonState = {\n iconClass: \"fad fa-play\"\n };\n deleteBtn: ButtonState = {\n iconClass: \"fad fa-trash\"\n };\n\n isReadOnly = false;\n\n model: UntypedFormGroup;\n view: Tag.View;\n detail: Tag.Detail;\n saveResult: Tag.SaveResult;\n\n loaded = false;\n\n routeInfo: {\n id: string;\n };\n\n isNew: boolean;\n\n validationMsg = TagService.validationMsg;\n\n saveMsg = {\n invalid: \"Please fix the errors on this page before saving\",\n success: \"The \" + this.thisThingLCS + \" was saved successfully\",\n error: \"An error occurred while saving the \" + this.thisThingLCS\n };\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private tagSvc: TagService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router) { }\n\n ngOnInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n\n const filter: Tag.Filter = {\n id: info.id\n };\n this.tagSvc.getTag(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.detail = result.detail;\n\n // If we're making a copy, update the detail using the prior values.\n if (history.state.copyDetail) {\n this.detail = $.extend(true, {}, history.state.copyDetail);\n this.detail.id = null;\n if (this.detail.name)\n this.detail.name = this.detail.name + \" - Copy\";\n }\n\n this.isNew = this.detail.id === null;\n\n this.model = this.tagSvc.getTagModel(this.fb);\n this.model.patchValue(this.detail);\n\n // If this is a copy, mark the form as dirty so the Save button is enabled.\n if (history.state.copyDetail)\n this.model.markAsDirty();\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n //\n\n get f() { return this.model.controls; }\n\n //\n\n save() {\n this.model.markAllAsTouched();\n\n if (!this.model.valid) {\n this.alertSvc.showSubmitInvalid(this.saveBtn, this.saveMsg.invalid);\n return;\n }\n\n this.alertSvc.showSubmitStart(this.saveBtn);\n\n this.tagSvc.saveTag(this.model.value)\n .pipe(take(1))\n .subscribe(result => {\n if (!this.alertSvc.processModelErrors(result.modelErrors, this.model, this.saveBtn, this.saveMsg.invalid)) {\n this.model.markAsPristine();\n this.router.navigateByUrl(\"/tags\");\n }\n }, error => {\n this.alertSvc.showSubmitError(this.saveBtn, this.saveMsg.error);\n console.error(error);\n });\n }\n\n copy() {\n const extras = {\n state: {\n copyDetail: this.model.value\n }\n };\n this.router.navigateByUrl(\"/tags/new\", extras);\n }\n\n delete() {\n const detail: Tag.DeletionDetail = {\n ids: [this.detail.id]\n }\n\n this.alertSvc.confirmDelete({\n detail: detail,\n singularLower: \"tag\",\n singularUpper: \"Tag\",\n pluralLower: \"tags\",\n pluralUpper: \"Tags\",\n action: (successMessage: string, errorMessage: string) => {\n this.alertSvc.showSubmitStart(this.deleteBtn);\n this.tagSvc.deleteTags(detail)\n .pipe(take(1))\n .subscribe(result => {\n if (result) {\n this.router.navigateByUrl(\"/tags\");\n } else {\n this.alertSvc.showSubmitInvalid(this.deleteBtn, errorMessage);\n }\n }, error => {\n this.alertSvc.showSubmitError(this.deleteBtn, errorMessage);\n console.error(error);\n });\n }\n });\n\n }\n\n cancel() {\n this.router.navigateByUrl(\"/tags\");\n }\n\n //\n\n canDeactivate(): Observable | boolean {\n if (!this.model.dirty)\n return true;\n return this.alertSvc.confirm({\n title: \"Leave?\",\n content: \"Do you want to leave without saving your changes?\"\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHander(e) {\n if (this.model.dirty)\n e.returnValue = \"Are you sure you want to leave?\";\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Grid from '../../../../shared/models/grid.model';\nimport * as Tag from '../../../../shared/models/gen.tag.model';\nimport { TagService } from '../../../../core/services/tag.service';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-tag-list',\n templateUrl: './tag-list.page.html'\n})\nexport class TagListPage {\n thisThingLCS = \"tag\";\n thisThingLCP = \"tags\";\n thisThingUCP = \"Tags\";\n\n loaded = false;\n activeBtn: ButtonState;\n grid: Grid.GridInfo;\n selectedRows: Tag.Detail[] = [];\n\n deleteBtn: ButtonState = {\n iconClass: \"fad fa-trash\"\n };\n\n constructor(\n http: HttpClient, \n private alertSvc: AlertService,\n private tagSvc: TagService,\n private router: Router,\n private route: ActivatedRoute,\n @Inject('BASE_URL') baseUrl: string)\n {\n\n http.get(baseUrl + 'api/Tag/GetList')\n .pipe(take(1))\n .subscribe(result => {\n this.grid = new Grid.GridInfo(result.details, {\n sort: [\n { field: 'name', dir: 'asc' }\n ]\n });\n\n this.activeBtn = this.grid.activeBtn;\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the list of {thisThingLCP}\");\n console.error(error);\n });\n }\n\n //\n\n getLinkUrl(dataItem) {\n return \"/tags/\" + (dataItem ? dataItem.id : \"new\");\n }\n\n newItem() {\n this.router.navigateByUrl(this.getLinkUrl(null));\n }\n\n openItem() {\n if (this.grid.selectedKeys.length === 1)\n this.router.navigateByUrl(this.getLinkUrl(this.grid.selectedKeys[0]));\n }\n\n //\n\n getDeletionDetail(): Tag.DeletionDetail {\n const detail: Tag.DeletionDetail = {\n ids: []\n };\n this.grid.selectedKeys.forEach((item) => {\n detail.ids.push(item.id);\n });\n return detail;\n }\n\n delete() {\n if (this.grid.selectedKeys.length > 0) {\n const detail = this.getDeletionDetail();\n\n this.alertSvc.confirmDelete({\n detail: detail,\n singularLower: \"tag\",\n singularUpper: \"Tag\",\n pluralLower: \"tags\",\n pluralUpper: \"Tags\",\n action: (successMessage: string, errorMessage: string) => {\n this.alertSvc.showSubmitStart(this.deleteBtn);\n this.tagSvc.deleteTags(detail)\n .pipe(take(1))\n .subscribe(result => {\n\n if (result.inUse.length > 0) {\n if (result.inUse.length == 1) {\n var msg = \"The tag '\" + result.inUse[0].name + \"' cannot be deleted because it is in use by a report\"\n this.alertSvc.showError(msg);\n }\n else {\n var msg = \"The tags '\" +\n Array.prototype.map.call(result.inUse, s => s.name).join(\"' , '\")\n + \"' cannot be deleted because they are in use by a report\";\n this.alertSvc.showError(msg);\n }\n }\n\n if (result.error.length > 0) {\n if (result.error.length == 1) {\n var msg = \"An error occurred deleting tag '\" + result.error[0].name + \"'\"\n this.alertSvc.showError(msg);\n }\n else {\n var msg = \"An error occurred deleting tags '\" +\n Array.prototype.map.call(result.error, s => s.name).join(\"' , '\")\n + \"'\";\n this.alertSvc.showError(msg);\n }\n }\n\n if (result.deleted.length > 0) {\n if (result.deleted.length == 1) {\n var msg = \"The tag '\" + result.deleted[0].name + \"' was deleted\"\n this.alertSvc.showSuccess(msg);\n }\n else {\n var msg = \"The tags '\" +\n Array.prototype.map.call(result.deleted, s => s.name).join(\"' , '\")\n + \"' were deleted\";\n this.alertSvc.showSuccess(msg);\n }\n this.grid.removeItems(result.deleted);\n }\n\n }, error => {\n this.alertSvc.showSubmitError(this.deleteBtn, errorMessage);\n console.error(error);\n });\n }\n });\n }\n }\n\n\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module';\nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { TagListPage } from './pages/tag-list/tag-list.page';\nimport { TagEditPage } from './pages/tag-edit/tag-edit.page';\n\nconst MODULE_ROUTES: Routes = [\n {\n path: 'tags/:id',\n component: TagEditPage,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard]\n }, {\n path: 'tags',\n component: TagListPage,\n canActivate: [AuthGuard]\n }\n];\n\n@NgModule({\n\tdeclarations: [\n TagListPage,\n TagEditPage\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tRouterModule.forChild(MODULE_ROUTES),\n\t\tSharedModule\n\t],\n exports: [\n TagListPage,\n TagEditPage\n\t]\n})\nexport class TagsModule { }\n","import { Component, OnInit, HostListener, Directive } from '@angular/core';\nimport { ParamMap, ActivatedRoute, Router } from '@angular/router';\nimport { UntypedFormGroup, Validators, UntypedFormBuilder, FormControl } from '@angular/forms';\n\nimport { of, Observable } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\n\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport * as Text from '../../../../shared/models/gen.text.model';\nimport { TextService } from '../../../../core/services/text.service';\n\n\n@Directive()\n@Component({\n selector: 'app-text-edit',\n templateUrl: './text-edit.page.html'\n})\nexport class TextEditPage implements OnInit, Common.CanComponentDeactivate {\n\n thisThingLCS = \"text\";\n\n saveBtn: ButtonState = {\n iconClass: \"fad fa-save\" \n };\n\n isReadOnly = false;\n\n model: UntypedFormGroup;\n view: Text.View;\n detail: Text.Detail;\n saveResult: Text.SaveResult;\n \n newCategory = \"\";\n newTag = \"\";\n\n loaded = false;\n\n routeInfo: {\n id: string;\n };\n\n isNew: boolean;\n \n validationMsg = TextService.validationMsg;\n\n saveMsg = {\n invalid: \"Please fix the errors on this page before saving\",\n success: \"The test was saved successfully\",\n error: \"An error occurred while saving the test\"\n };\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private textSvc: TextService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router)\n { }\n\n ngOnInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n\n const filter: Text.Filter = {\n id: info.id\n };\n this.textSvc.getText(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.detail = result.detail;\n\n this.isNew = this.detail.id === null;\n\n this.model = this.textSvc.getTextModel(this.fb);\n this.model.patchValue(this.detail);\n\n // If this is a copy, mark the form as dirty so the Save button is enabled.\n if (history.state.copyDetail)\n this.model.markAsDirty();\n\n this.loaded = true;\n \n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n //\n\n get f() { return this.model.controls; }\n\n//\n\n save() {\n this.model.markAllAsTouched();\n\n if (!this.model.valid) {\n this.alertSvc.showSubmitInvalid(this.saveBtn, this.saveMsg.invalid);\n return;\n }\n\n this.alertSvc.showSubmitStart(this.saveBtn);\n\n this.textSvc.saveText(this.model.value)\n .pipe(take(1))\n .subscribe(result => {\n if (!this.alertSvc.processModelErrors(result.modelErrors, this.model, this.saveBtn, this.saveMsg.invalid)) {\n this.model.markAsPristine();\n this.router.navigateByUrl(\"/text\");\n }\n }, error => {\n this.alertSvc.showSubmitError(this.saveBtn, this.saveMsg.error);\n console.error(error);\n });\n }\n\n copy() {\n const extras = {\n state: {\n copyDetail: this.model.value\n }\n };\n this.router.navigateByUrl(\"/text/new\", extras);\n }\n\n cancel() {\n this.router.navigateByUrl(\"/text\");\n }\n\n //\n\n canDeactivate(): Observable | boolean {\n if (!this.model.dirty)\n return true;\n return this.alertSvc.confirm({\n title: \"Leave?\",\n content: \"Do you want to leave without saving your changes?\"\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHander(e) {\n if (this.model.dirty)\n e.returnValue = \"Are you sure you want to leave?\";\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\nimport * as Grid from '../../../../shared/models/grid.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Text from '../../../../shared/models/gen.text.model';\nimport { TextService } from '../../../../core/services/text.service';\nimport { GridService } from '../../../../core/services/grid.service';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-text-list',\n templateUrl: './text-list.page.html'\n})\nexport class TextListPage {\n thisThingLCP = \"texts\";\n loaded = false;\n activeBtn: ButtonState;\n grid: Grid.GridInfo;\n selectedRows: Text.Detail[] = [];\n\n yesNoTypes: string[] = [\"Yes\", \"No\"];\n isActiveFilter: string[] = [];\n\n applyFilter = this.gridSvc.applyFilter.bind(this.gridSvc);\n applyFilterContains = this.gridSvc.applyFilterContains.bind(this.gridSvc);\n updateFilter = this.gridSvc.updateFilter.bind(this.gridSvc);\n\nconstructor(\n http: HttpClient, \n private alertSvc: AlertService,\n private textSvc: TextService,\n private gridSvc: GridService, \n private router: Router,\n private route: ActivatedRoute,\n @Inject('BASE_URL') baseUrl: string)\n {\n\n http.get(baseUrl + 'api/Text/GetList')\n .pipe(take(1))\n .subscribe(result => {\n this.grid = new Grid.GridInfo(result.details, {\n sort: [\n { field: 'type', dir: 'asc' }\n ],\n activePredicate: p => p.isActive\n });\n\n this.activeBtn = this.grid.activeBtn;\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the list of \" + this.thisThingLCP);\n console.error(error);\n });\n }\n\n //\n\n joinNames(array) {\n return Array.prototype.map.call(array, s => s.name).join(\", \");\n }\n\n getLinkUrl(dataItem) {\n return \"/text/\" + (dataItem ? dataItem.id : \"new\");\n }\n\n newItem() {\n this.router.navigateByUrl(this.getLinkUrl(null));\n }\n\n openItem() {\n if (this.grid.selectedKeys.length === 1)\n this.router.navigateByUrl(this.getLinkUrl(this.grid.selectedKeys[0]));\n }\n\n toggleActive() {\n if (this.grid.selectedKeys.length === 1) {\n const dataItem = this.grid.selectedKeys[0];\n\n this.alertSvc.confirmToggleActive({\n detail: {\n id: dataItem.id,\n active: !dataItem.isActive\n },\n confirmOptions: {\n title: \"Deactivate\",\n content: \"Are you sure you want to deactivate this text?\",\n yesText: \"Deactivate\",\n },\n action: (detail: Common.IdActive) => {\n this.alertSvc.showSubmitStart(this.activeBtn);\n this.textSvc.toggleActive(detail)\n .pipe(take(1))\n .subscribe(result => {\n if (result.modelErrors.length > 0) {\n this.alertSvc.showWarning(result.modelErrors[0].description);\n this.grid.processActiveStatus(this.activeBtn, false);\n } else {\n dataItem.isActive = result.idActive.active;\n dataItem.isActiveAsString = result.idActive.active ? 'Yes' : 'No';\n this.grid.processActiveStatus(this.activeBtn, true);\n }\n }, error => {\n this.alertSvc.showSubmitError(this.activeBtn, \"An error occurred while updating the text\");\n console.error(error);\n });\n }\n });\n }\n }\n\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module'; \nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { TextListPage } from './pages/text-list/text-list.page';\nimport { TextEditPage } from './pages/text-edit/text-edit.page';\n\nconst MODULE_ROUTES: Routes = [\n {\n path: 'text/:id',\n component: TextEditPage,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard]\n }, {\n path: 'text',\n component: TextListPage,\n canActivate: [AuthGuard]\n }\n];\n\n@NgModule({\n\tdeclarations: [\n TextListPage,\n TextEditPage\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tRouterModule.forChild(MODULE_ROUTES),\n\t\tSharedModule\n\t],\n exports: [\n TextListPage,\n TextEditPage\n\t]\n})\nexport class TextModule { }\n","import { Component, OnInit, HostListener, Directive } from '@angular/core';\nimport { ParamMap, ActivatedRoute, Router } from '@angular/router';\nimport { UntypedFormGroup, Validators, UntypedFormBuilder, FormControl } from '@angular/forms';\n\nimport { of, Observable } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { AuthService } from '../../../../core/services/auth.service';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\n\nimport * as Common from '../../../../shared/models/common.model';\nimport * as Enums from '../../../../shared/models/gen.enums';\nimport * as User from '../../../../shared/models/gen.user.model';\nimport { UserService } from '../../../../core/services/user.service';\n\n\n@Directive()\n@Component({\n selector: 'app-user-edit',\n templateUrl: './user-edit.page.html'\n})\nexport class UserEditPage implements OnInit, Common.CanComponentDeactivate {\n\n thisThingLCS = \"user\";\n\n saveBtn: ButtonState = {\n iconClass: \"fad fa-save\" \n };\n\n isReadOnly = false;\n\n model: UntypedFormGroup;\n view: User.View;\n detail: User.Detail;\n saveResult: User.SaveResult;\n \n newCategory = \"\";\n newTag = \"\";\n\n loaded = false;\n\n routeInfo: {\n id: string;\n };\n\n isNew: boolean;\n \n validationMsg = UserService.validationMsg;\n\n saveMsg = {\n invalid: \"Please fix the errors on this page before saving\",\n success: \"The test was saved successfully\",\n error: \"An error occurred while saving the test\"\n };\n\n constructor(private fb: UntypedFormBuilder,\n private authSvc: AuthService,\n private userSvc: UserService,\n private alertSvc: AlertService,\n private route: ActivatedRoute,\n private router: Router)\n { }\n\n ngOnInit() {\n this.route.paramMap.pipe(\n switchMap((params: ParamMap) => of({\n id: params.get('id')\n }))\n )\n .pipe(take(1))\n .subscribe(info => {\n this.routeInfo = info;\n\n const filter: User.Filter = {\n id: info.id\n };\n this.userSvc.getUser(filter)\n .pipe(take(1))\n .subscribe(result => {\n this.view = result;\n this.detail = result.detail;\n\n this.isNew = this.detail.id === null;\n\n this.model = this.userSvc.getUserModel(this.fb);\n this.model.patchValue(this.detail);\n\n // If this is a copy, mark the form as dirty so the Save button is enabled.\n if (history.state.copyDetail)\n this.model.markAsDirty();\n\n this.loaded = true;\n \n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the \" + this.thisThingLCS);\n console.error(error);\n });\n\n }\n //\n\n get f() { return this.model.controls; }\n\n//\n\n save() {\n this.model.markAllAsTouched();\n\n if (!this.model.valid) {\n this.alertSvc.showSubmitInvalid(this.saveBtn, this.saveMsg.invalid);\n return;\n }\n\n this.alertSvc.showSubmitStart(this.saveBtn);\n\n this.userSvc.saveUser(this.model.value)\n .pipe(take(1))\n .subscribe(result => {\n if (!this.alertSvc.processModelErrors(result.modelErrors, this.model, this.saveBtn, this.saveMsg.invalid)) {\n this.model.markAsPristine();\n this.router.navigateByUrl(\"/users\");\n }\n }, error => {\n this.alertSvc.showSubmitError(this.saveBtn, this.saveMsg.error);\n console.error(error);\n });\n }\n\n //copy() {\n // const extras = {\n // state: {\n // copyDetail: this.model.value\n // }\n // };\n // this.router.navigateByUrl(\"/users/new\", extras);\n //}\n\n cancel() {\n this.router.navigateByUrl(\"/users\");\n }\n\n //\n\n canDeactivate(): Observable | boolean {\n if (!this.model.dirty)\n return true;\n return this.alertSvc.confirm({\n title: \"Leave?\",\n content: \"Do you want to leave without saving your changes?\"\n });\n }\n\n @HostListener('window:beforeunload', ['$event'])\n beforeUnloadHander(e) {\n if (this.model.dirty)\n e.returnValue = \"Are you sure you want to leave?\";\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { Router, ActivatedRoute, ParamMap } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { AlertService } from '../../../../core/services/alert.service';\nimport { ButtonState } from '../../../../shared/models/ui.model';\nimport * as Grid from '../../../../shared/models/grid.model';\nimport * as Common from '../../../../shared/models/common.model';\nimport * as User from '../../../../shared/models/gen.user.model';\nimport { UserService } from '../../../../core/services/user.service';\nimport { GridService } from '../../../../core/services/grid.service';\nimport { take } from 'rxjs/operators';\n\n@Component({\n selector: 'app-user-list',\n templateUrl: './user-list.page.html'\n})\nexport class UserListPage {\n thisThingLCS = \"user\";\n thisThingLCP = \"users\";\n loaded = false;\n activeBtn: ButtonState;\n grid: Grid.GridInfo;\n selectedRows: User.Detail[] = [];\n\n yesNoTypes: string[] = [\"Yes\", \"No\"];\n isActiveFilter: string[] = [];\n isAdminFilter: string[] = [];\n\n applyFilter = this.gridSvc.applyFilter.bind(this.gridSvc);\n applyFilterContains = this.gridSvc.applyFilterContains.bind(this.gridSvc);\n updateFilter = this.gridSvc.updateFilter.bind(this.gridSvc);\n\nconstructor(\n http: HttpClient, \n private alertSvc: AlertService,\n private userSvc: UserService,\n private gridSvc: GridService, \n private router: Router,\n private route: ActivatedRoute,\n @Inject('BASE_URL') baseUrl: string)\n {\n\n http.get(baseUrl + 'api/User/GetList')\n .pipe(take(1))\n .subscribe(result => {\n this.grid = new Grid.GridInfo(result.details, {\n sort: [\n { field: 'userName', dir: 'asc' }\n ],\n activePredicate: p => p.isActive\n });\n\n this.activeBtn = this.grid.activeBtn;\n\n this.loaded = true;\n\n }, error => {\n this.alertSvc.showError(\"An error occurred while loading the list of \" + this.thisThingLCP);\n console.error(error);\n });\n }\n\n //\n\n joinNames(array) {\n return Array.prototype.map.call(array, s => s.name).join(\", \");\n }\n\n getLinkUrl(dataItem) {\n return \"/users/\" + (dataItem ? dataItem.id : \"new\");\n }\n\n //newItem() {\n // this.router.navigateByUrl(this.getLinkUrl(null));\n //}\n\n openItem() {\n if (this.grid.selectedKeys.length === 1)\n this.router.navigateByUrl(this.getLinkUrl(this.grid.selectedKeys[0]));\n }\n\n toggleActive() {\n if (this.grid.selectedKeys.length === 1) {\n const dataItem = this.grid.selectedKeys[0];\n\n this.alertSvc.confirmToggleActive({\n detail: {\n id: dataItem.id,\n active: !dataItem.isActive\n },\n confirmOptions: {\n title: \"Deactivate\",\n content: \"Are you sure you want to deactivate this \" + this.thisThingLCS + \"?\",\n yesText: \"Deactivate\",\n },\n action: (detail: Common.IdActive) => {\n this.alertSvc.showSubmitStart(this.activeBtn);\n this.userSvc.toggleActive(detail)\n .pipe(take(1))\n .subscribe(result => {\n if (result.modelErrors.length > 0) {\n this.alertSvc.showWarning(result.modelErrors[0].description);\n this.grid.processActiveStatus(this.activeBtn, false);\n } else {\n dataItem.isActive = result.idActive.active;\n dataItem.isActiveAsString = result.idActive.active ? 'Yes' : 'No';\n this.grid.processActiveStatus(this.activeBtn, true);\n }\n }, error => {\n this.alertSvc.showSubmitError(this.activeBtn, \"An error occurred while updating the \" + this.thisThingLCS);\n console.error(error);\n });\n }\n });\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { SharedModule } from '../../shared/shared.module';\nimport { AuthGuard } from '../../shared/guards/auth.guard';\nimport { CanDeactivateGuard } from '../../shared/guards/can-deactivate.guard';\n\nimport { UserListPage } from './pages/user-list/user-list.page';\nimport { UserEditPage } from './pages/user-edit/user-edit.page';\n\nconst MODULE_ROUTES: Routes = [\n {\n path: 'users/:id',\n component: UserEditPage,\n canActivate: [AuthGuard],\n canDeactivate: [CanDeactivateGuard]\n }, {\n path: 'users',\n component: UserListPage,\n canActivate: [AuthGuard]\n }\n];\n\n@NgModule({\n declarations: [\n UserListPage,\n UserEditPage\n ],\n imports: [\n CommonModule,\n RouterModule.forChild(MODULE_ROUTES),\n SharedModule\n ],\n exports: [\n UserListPage,\n UserEditPage\n ]\n})\nexport class UsersModule { }\n","import { DefaultUrlSerializer, UrlTree } from '@angular/router';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class LowerCaseUrlSerializer extends DefaultUrlSerializer {\n parse(url: string): UrlTree {\n // Override the reset password link because the token is case-sensitive.\n if (url.toLowerCase().startsWith(\"/users/reset-password/\")) {\n // Lower-case everything except for the last segment\n url = url.split('/').reverse().map((o, i) => i === 0 ? o : o.toLowerCase()).reverse().join(\"/\");\n return super.parse(url);\n }\n\n // Pass the lower-case version down to the next function.\n return super.parse(url.toLowerCase());\n }\n}\n","import { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'app-column-date',\n templateUrl: './column-date.component.html',\n styles: []\n})\nexport class ColumnDateComponent {\n @Input() url: string;\n @Input() title: string;\n @Input() date: Date;\n}\n","import { Component, Input } from '@angular/core';\nimport { UntypedFormControl, ValidationErrors } from '@angular/forms';\n\n\n@Component({\n selector: 'app-field-validation',\n templateUrl: './field-validation.component.html',\n styles: []\n})\nexport class FieldValidationComponent {\n @Input() field: UntypedFormControl;\n @Input() messages: {\n [key: string]: string;\n };\n\n constructor() {\n this.messages = {\n required: \"Field is required\"\n };\n }\n\n getErrors(errors: ValidationErrors) {\n return Object.keys(errors);\n }\n\n getErrorDisplay(key) {\n // TODO: Add formatting for other validation types.\n if (key === \"maxlength\") {\n const format = this.messages[key] || \"This field has a max length of {0} characters\";\n return format.replace(/\\{0\\}/, this.field.errors[key].requiredLength);\n }\n return this.messages[key] || this.field.errors[key];\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { GridInfo } from '../../../shared/models/grid.model';\nimport { GridDataResult } from '@progress/kendo-angular-grid';\n\n@Component({\n\tselector: 'app-grid-header',\n\ttemplateUrl: './grid-header.component.html',\n\tstyles: []\n})\nexport class GridHeaderComponent {\n @Input() grid: GridInfo;\n @Input() dataResult: GridDataResult;\n}\n","import { Component, OnInit, OnDestroy, Inject, Directive } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Subject, Subscription } from 'rxjs';\nimport * as Auth from '../../../shared/models/auth.model';\nimport { AuthService } from '../../../core/services/auth.service';\nimport { SettingsService } from '../../../core/services/settings.service';\nimport * as Enums from '../../../shared/models/gen.enums';\nimport { take } from 'rxjs/operators';\nimport { HttpParams } from '@angular/common/http';\n\n\n@Directive()\n@Component({\n selector: 'app-layout-header',\n templateUrl: './layout-header.component.html',\n styles: []\n})\nexport class LayoutHeaderComponent implements OnInit, OnDestroy {\n subscription = new Subscription();\n isLoggedIn: boolean;\n userId: number;\n userName: string;\n displayName: string;\n\n adminItems: any[];\n defaultAdminItem: any;\n adminValue: any;\n\n public onPublicReportPage: boolean = null;\n public onPrivateReportPage: boolean = null;\n public onPublicListPage: boolean = null;\n public onPrivateListPage: boolean = null;\n public onAdminPage: boolean = null;\n\n public isAdmin = false;\n\n\n constructor(@Inject(DOCUMENT) private document: Document,\n private authSvc: AuthService,\n private settingsSvc: SettingsService,\n private router: Router)\n {\n }\n\n\n ngOnInit() {\n this.subscription.add(this.authSvc.sessionSubject.subscribe(value => {\n this.isLoggedIn = value.IsAuthenticated;\n this.userName = value.UserName;\n this.displayName = value.DisplayName;\n this.isAdmin = value.IsAdmin;\n\n this.onPublicListPage = value.OnPublicListPage;\n this.onPrivateListPage = value.OnPrivateListPage;\n this.onPublicReportPage = value.OnPublicReportPage;\n this.onPrivateReportPage = value.OnPrivateReportPage;\n this.onAdminPage = value.OnAdminPage;\n\n this.adminItems = null;\n\n if (this.isLoggedIn && this.isAdmin) {\n\n this.defaultAdminItem = {\n value: null,\n text: 'Admin Functions',\n path: null,\n };\n\n this.adminItems = [\n {\n value: 10,\n text: 'Categories',\n path: \"/categories\",\n },\n {\n value: 20,\n text: 'General Text',\n path: \"/text\",\n },\n {\n value: 30,\n text: 'Reports',\n path: \"/reports\",\n },\n {\n value: 40,\n text: 'Tags',\n path: \"/tags\",\n },\n {\n value: 50,\n text: 'Users',\n path: \"/users\",\n },\n ];\n }\n }));\n }\n\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n\n login() {\n this.document.location.href = \"/auth/login\";\n }\n\n\n reportList() {\n if (this.onPrivateReportPage) {\n this.router.navigateByUrl(\"/community\");\n }\n else {\n this.router.navigateByUrl(\"/\");\n }\n }\n\n\n navigatePublic() {\n this.router.navigateByUrl(\"/\");\n }\n\n\n navigatePrivate() {\n this.router.navigateByUrl(\"/community\");\n }\n\n\n adminNavigate(event: any) {\n if (this.isAdmin && event.path) {\n var target = event.path;\n this.adminValue = null;\n this.router.navigateByUrl(target);\n }\n this.adminValue = null;\n }\n\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n\n@Component({\n selector: 'app-multi-check-list',\n templateUrl: './multi-check-list.component.html',\n styles: []\n})\nexport class MultiCheckListComponent {\n @Input() data: any[] = [];\n @Input() textField;\n @Input() valueField;\n @Input() value: any[];\n\n @Output() valueChange = new EventEmitter();\n\n\n change(event) {\n const $li = $(event.target);\n const dataIndex = $li.index();\n if (dataIndex < 0 || dataIndex >= this.data.length)\n return;\n\n const value = this.getValue(this.data[dataIndex]);\n const index = $.inArray(value, this.value);\n if (index < 0)\n this.value.push(value);\n else\n this.value.splice(index, 1);\n this.valueChange.emit(this.value);\n }\n\n getText(item: any) {\n return this.textField ? item[this.textField] : item;\n }\n\n getValue(item: any) {\n return this.valueField ? item[this.valueField] : item;\n }\n\n getSelected(item: any): boolean {\n return $.inArray(this.getValue(item), this.value) >= 0;\n }\n}\n","import { Component, ElementRef, ViewChild, HostListener, Input } from '@angular/core';\nimport { Align } from '@progress/kendo-angular-popup';\n\n@Component({\n selector: 'app-popup',\n templateUrl: './popup.component.html',\n styles: []\n})\nexport class PopupComponent {\n @ViewChild('anchor') anchor: ElementRef;\n @ViewChild('popup') popup: ElementRef;\n\n @Input() anchorAlign: Align = { horizontal: \"right\", vertical: \"bottom\" };\n @Input() popupAlign: Align = { horizontal: \"right\", vertical: \"top\" };\n\n showPopup = false;\n\n constructor() { }\n\n private contains(target: any, anchor: ElementRef, popup: ElementRef): boolean {\n return (anchor && anchor.nativeElement.contains(target)) ||\n (popup && popup.nativeElement ? popup.nativeElement.contains(target) : false);\n }\n\n @HostListener('document:click', ['$event'])\n public documentClick(event): void {\n if (!this.contains(event.target, this.anchor, this.popup))\n this.togglePopup(false);\n }\n\n togglePopup(show?: boolean) {\n this.showPopup = show !== undefined ? show : !this.showPopup;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\n\n@Component({\n selector: 'app-required-field',\n templateUrl: './required-field.component.html',\n styles: []\n})\nexport class RequiredFieldComponent {\n @Input() field: AbstractControl;\n\n isMissing(): boolean {\n const result = this.hasRequiredError(this.field);\n return result;\n }\n\n hasRequiredError(control: any): boolean {\n if (control.controls) {\n let hasError = false;\n $.each(control.controls, (k, c) => {\n hasError = hasError || this.hasRequiredError(c);\n });\n return hasError;\n }\n return control.errors?.required ? true : false;\n }\n}\n","import { Component, Input, forwardRef, ViewChild, TemplateRef, ElementRef, Output, EventEmitter } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { ToolBarToolComponent } from '@progress/kendo-angular-toolbar';\nimport { AlertService } from '../../../core/services/alert.service';\n\n\n@Component({\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolButtonComponent) }],\n selector: 'app-tool-button',\n templateUrl: './tool-button.component.html',\n styles: []\n})\nexport class ToolButtonComponent extends ToolBarToolComponent {\n tabIndex = -1;\n\n @Input() text = \"\";\n @Input() className = \"\";\n @Input() iconClass = \"\";\n @Input() disabled = false;\n @Input() disableWhenPristine = false;\n @Input() model: UntypedFormGroup;\n\n @ViewChild('toolbarTemplate', { static: true }) public toolbarTemplate: TemplateRef;\n @ViewChild('button') public button: ElementRef;\n\n @Output() click = new EventEmitter();\n\n constructor(private alertSvc: AlertService) {\n super();\n }\n\n canFocus(): boolean {\n return !this.disabled;\n }\n\n focus(ev): void {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n // focus the focusable element\n this.button.nativeElement.focus();\n }\n\n // manage the roving tabindex: see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex\n this.tabIndex = 0;\n }\n\n public handleKey(): boolean {\n // manage the roving tabindex: see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex\n this.tabIndex = -1;\n // tell the toolbar that the focus can move to the next/prev focusable tool\n return false;\n }\n\n\n isDisabled(): boolean {\n return this.disabled || (this.disableWhenPristine && this.model?.pristine);\n }\n\n getClass() {\n const state = this.alertSvc.getButtonStateClass(this.model);\n return !this.className ? state : [state, this.className].join(\" \");\n }\n}\n","import { Component, forwardRef, ViewChild, TemplateRef, Output, EventEmitter, Input } from '@angular/core';\nimport { ToolBarToolComponent, DisplayMode } from '@progress/kendo-angular-toolbar';\nimport { SplitButtonComponent, Button } from '@progress/kendo-angular-buttons';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { Keys } from '@progress/kendo-angular-common';\nimport { AlertService } from '../../../core/services/alert.service';\n\n\n@Component({\n // tslint:disable-next-line:no-forward-ref\n providers: [{ provide: ToolBarToolComponent, useExisting: forwardRef(() => ToolSplitButtonComponent) }],\n selector: 'app-tool-split-button',\n templateUrl: './tool-split-button.component.html',\n styles: []\n})\nexport class ToolSplitButtonComponent extends ToolBarToolComponent {\n @Input() showText: DisplayMode = 'both';\n @Input() showIcon: DisplayMode = 'both';\n @Input() text = \"\";\n @Input() className = \"\";\n @Input() icon = \"\";\n @Input() iconClass = \"\";\n @Input() disabled = false;\n @Input() disableWhenPristine = false;\n @Input() grayIconWhenPristine = false;\n @Input() model: UntypedFormGroup;\n @Input() textField = \"text\";\n @Input() data: any[];\n\n @ViewChild('toolbarTemplate', { static: true }) public toolbarTemplate: TemplateRef;\n @ViewChild('toolbarSplitButton') public toolbarSplitButton: SplitButtonComponent;\n\n @Output() buttonClick = new EventEmitter();\n @Output() itemClick = new EventEmitter();\n\n constructor(private alertSvc: AlertService) {\n super();\n }\n\n canFocus() {\n return !this.disabled;\n }\n\n focus(ev) {\n // guard against focusing twice on mousedown.\n if (!ev || ev.type === 'focus' || ev.type === 'keydown') {\n // focus the focusable element\n this.toolbarSplitButton.focus();\n }\n\n // manage the roving tabindex: see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex\n this.toolbarSplitButton.tabIndex = 0;\n }\n\n handleKey(ev) {\n if (ev.keyCode === Keys.ArrowLeft || ev.keyCode === Keys.ArrowRight) {\n // manage the roving tabindex: see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex\n this.toolbarSplitButton.tabIndex = -1;\n this.toolbarSplitButton.blur();\n }\n return false;\n }\n\n isDisabled(): boolean {\n return this.disabled || (this.disableWhenPristine && this.model?.pristine);\n }\n\n getClass() {\n if (this.toolbarSplitButton && this.toolbarSplitButton.button) {\n const buttonDisabled = this.isDisabled() || !this.grayIconWhenPristine || this.model?.pristine;\n $(this.toolbarSplitButton.button.nativeElement).prop(\"disabled\", buttonDisabled);\n }\n\n const state = this.alertSvc.getButtonStateClass(this.model);\n return !this.className ? state : [state, this.className].join(\" \");\n }\n}\n","import { Directive, AfterViewInit, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[appAutofocus]'\n})\nexport class AutofocusDirective implements AfterViewInit {\n constructor(private el: ElementRef) {\n }\n \n ngAfterViewInit() {\n setTimeout(() => this.el.nativeElement.focus(), 10);\n }\n}\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[appTrim]'\n})\nexport class TrimDirective {\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private formControl: NgControl) { }\n\n @HostListener('keyup.enter') onEnter() {\n this.trim();\n }\n\n @HostListener('focusout') onFocusout() {\n this.trim();\n }\n\n @HostListener('blur') onBlur() {\n this.trim();\n }\n\n private trim() {\n if (this.formControl.value)\n this.formControl.control.setValue(this.formControl.value.trim());\n this.elementRef.nativeElement.value = this.elementRef.nativeElement.value.trim();\n }\n\n}\n\n\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from '../../core/services/auth.service';\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(private router: Router, private authSvc: AuthService) {\n\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n if (!this.authSvc.isExpired(this.authSvc.getSession()))\n return true;\n\n this.authSvc.redirectToLogin(state.url);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport * as Common from '../../shared/models/common.model';\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class CanDeactivateGuard implements CanDeactivate {\n canDeactivate(component: Common.CanComponentDeactivate) {\n return component.canDeactivate ? component.canDeactivate() : true;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { tap } from \"rxjs/operators\";\nimport { AuthService } from \"../../core/services/auth.service\";\n\n@Injectable()\nexport class SessionInterceptor implements HttpInterceptor {\n private static sessionExpHeaderKey = \"x-tv-session-exp\";\n\n constructor(private authSvc: AuthService) {\n this.initializeAjaxComplete();\n }\n\n initializeAjaxComplete() {\n // This will catch AJAX requests triggered outside of Angular.\n $(document).ajaxComplete((event, xhr, options) => {\n this.processResponse(xhr.responseJSON,\n xhr.getResponseHeader(SessionInterceptor.sessionExpHeaderKey));\n });\n }\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n // This will catch any requests sent from Angular, but does not catch\n // AJAX requests triggered outside of Angular.\n\n //if (req.url.startsWith(\"https://sasreports.umd.edu/SASLogon/\")) {\n // req = req.clone({\n // //withCredentials: true, //not needed anymore\n // setHeaders: {\n // 'Content-Type': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',\n // //'API-TOKEN': 'xxx'\n // },\n // });\n //}\n\n return next.handle(req).pipe(\n tap((response: any) => {\n if (response.headers)\n this.processResponse(response.body,\n response.headers.get(SessionInterceptor.sessionExpHeaderKey));\n }));\n }\n\n processResponse(bodyJson, headerValue) {\n if (headerValue) {\n const newExpiration = new Date(headerValue) as any;\n if (!isNaN(newExpiration))\n this.authSvc.resetExpiration(newExpiration);\n }\n if (bodyJson && bodyJson.currentUserContext) {\n const userContext = bodyJson.currentUserContext;\n if (userContext.session && userContext.session.isAuthenticated)\n this.authSvc.updateSession(userContext.session);\n }\n }\n}\n","//------------------------------------------------------------------------------\n// \n// This code was generated from a template (tw.enums.tst).\n//\n// Manual changes to this file may cause unexpected behavior in your application.\n// Manual changes to this file will be overwritten if the code is regenerated.\n// \n//------------------------------------------------------------------------------\n\nexport enum CodeDefTypeId {\n AuditType = 300,\n Permissions = 200,\n ReportType = 100,\n TextType = 400\n}\n\nexport enum AuditType {\n Inactive = 315,\n NewUser = 305,\n SuccessfulLogin = 310\n}\n\nexport enum Permissions {\n GlobalAdmin = 210,\n None = 201\n}\n\nexport enum ReportType {\n PDF = 130,\n SASPrivate = 120,\n TableauPrivate = 115,\n TableauPrivateStudent = 116,\n TableauPublic = 110\n}\n\nexport enum TextType {\n Notification = 410\n} \n","//------------------------------------------------------------------------------\n// \n// This code was generated from a template (tw.validation.tst).\n//\n// Manual changes to this file may cause unexpected behavior in your application.\n// Manual changes to this file will be overwritten if the code is regenerated.\n// \n//------------------------------------------------------------------------------\n\nexport class UserFirstName { \n public static requiredMessage = \"First Name is required\";\n public static maxLength = 100;\n public static maxLengthMessage = \"First Name has a max length of 100 characters\";\n}\n\nexport class UserLastName { \n public static requiredMessage = \"Last Name is required\";\n public static maxLength = 100;\n public static maxLengthMessage = \"Last Name has a max length of 100 characters\";\n}\n\nexport class UserUsername { \n public static requiredMessage = \"Username is required\";\n public static maxLength = 200;\n public static maxLengthMessage = \"Username has a max length of 200 characters\";\n}\n\nexport class UserEmail { \n public static requiredMessage = \"Email is required\";\n public static maxLength = 200;\n public static maxLengthMessage = \"Email has a max length of 200 characters\";\n public static invalidMessage = \"Email is not valid\";\n}\n\nexport class AdAccount { \n public static maxLength = 100;\n public static maxLengthMessage = \"AD Account has a max length of 100 characters\";\n public static invalidMessage = \"AD Account is not valid\";\n}\n\nexport class EmailSubject { \n public static maxLength = 1000;\n public static maxLengthMessage = \"Email Subject has a max length of 1000 characters\";\n}\n\nexport class SmtpHost { \n public static requiredMessage = \"Host Name is required\";\n public static maxLength = 1000;\n public static maxLengthMessage = \"Host Name has a max length of 1,000 characters\";\n}\n\nexport class SmtpPort { \n public static requiredMessage = \"Port is required\";\n public static minValue = 1;\n public static maxValue = 65535;\n public static rangeMessage = \"Port must be between 1 and 65535\";\n}\n\nexport class SmtpUsername { \n public static maxLength = 1000;\n public static maxLengthMessage = \"Username has a max length of 1,000 characters\";\n}\n\nexport class SmtpPassword { \n public static maxLength = 1000;\n public static maxLengthMessage = \"Password has a max length of 1,000 characters\";\n}\n\nexport class SmtpFromAddress { \n public static requiredMessage = \"From Address is required\";\n public static maxLength = 1000;\n public static maxLengthMessage = \"From Address has a max length of 1,000 characters\";\n public static emailAddressMessage = \"From Address must be a valid email address\";\n}\n\nexport class ReportTitle { \n public static requiredMessage = \"Report Title is required\";\n public static maxLength = 100;\n public static maxLengthMessage = \"Report Title has a max length of 100 characters\";\n}\n\nexport class ReportDescription { \n public static requiredMessage = \"Report Description is required\";\n public static maxLength = 1000;\n public static maxLengthMessage = \"Report Description has a max length of 1,000 characters\";\n}\n\nexport class ReportType { \n public static requiredMessage = \"Report Type is required\";\n}\n\nexport class ReportThumbnailUrl { \n public static requiredMessage = \"Report Thumbnail Url is required\";\n public static maxLength = 1000;\n public static maxLengthMessage = \"Report Thambnail Url has a max length of 1,000 characters\";\n}\n\nexport class ReportUrl { \n public static requiredMessage = \"Report URL is required\";\n public static maxLength = 2000;\n public static maxLengthMessage = \"Report URL has a max length of 2,000 characters\";\n}\n\nexport class ReportIsActive { \n public static requiredMessage = \"Report IsActive is required\";\n}\n\nexport class TagName { \n public static requiredMessage = \"Tag Name is required\";\n public static maxLength = 50;\n public static maxLengthMessage = \"Tag Name has a max length of 50 characters\";\n}\n\nexport class CategoryName { \n public static requiredMessage = \"Category Name is required\";\n public static maxLength = 50;\n public static maxLengthMessage = \"Category Name has a max length of 50 characters\";\n}\n\nexport class TextType { \n public static requiredMessage = \"Text Type is required\";\n}\n\nexport class TextText { \n public static requiredMessage = \"Text is required\";\n}\n\nexport class TextIsActive { \n public static requiredMessage = \"Text IsActive is required\";\n}\n","import { SortDescriptor, orderBy, CompositeFilterDescriptor, filterBy } from \"@progress/kendo-data-query\";\nimport { SortSettings, RowClassArgs, CellClickEvent } from \"@progress/kendo-angular-grid\";\nimport { AlertService } from '../../core/services/alert.service';\nimport { UntypedFormControl } from \"@angular/forms\";\nimport { ButtonState, ActiveSettings } from \"./ui.model\";\n\nexport interface GridInit {\n sort: SortDescriptor[];\n filterPredicate: (o: T) => boolean;\n activePredicate: (o: T) => boolean;\n deletedPredicate: (o: T) => boolean;\n state: ButtonState;\n includeInactive: boolean;\n activeSettings: ActiveSettings;\n onSelectedKeysChanged: (o: T[]) => void;\n take: number;\n selectAll: {\n getKey: (dataItem: T) => string;\n getDataSelected: (dataItem: T) => boolean;\n setDataSelected: (dataItem: T, selected: boolean) => void;\n };\n}\n\nexport class GridInfo {\n private static activeSettings: ActiveSettings = {\n checkboxLabel: \"Include deleted\",\n btnLabel: {\n inactive: \"Undelete\",\n active: \"Delete\"\n },\n btnIconClass: {\n inactive: \"fad fa-eye-slash\",\n active: \"fad fa-eye\"\n }\n };\n\n allData: T[];\n filteredData: T[];\n selectedKeys: T[];\n totalCount: number;\n filteredCount: number;\n includeInactive: boolean;\n activeSettings: ActiveSettings;\n deletedSettings: ActiveSettings;\n skip: number;\n take: number;\n sort: SortDescriptor[];\n filter?: CompositeFilterDescriptor;\n filterPredicate?: (o: T) => boolean;\n activePredicate?: (o: T) => boolean;\n deletedPredicate?: (o: T) => boolean;\n onSelectedKeysChanged: (o: T[]) => void;\n sortable: SortSettings = {\n allowUnsort: true,\n mode: \"multiple\"\n };\n toolActions = {\n single: false,\n none: true\n }\n activeBtn: ButtonState;\n deletedBtn: ButtonState;\n selectAll: {\n getKey: (dataItem: T) => string;\n getDataSelected: (dataItem: T) => boolean;\n setDataSelected: (dataItem: T, selected: boolean) => void;\n state: {\n checked: boolean;\n indeterminate: boolean;\n selected: number;\n };\n }\n\n constructor(allData: T[], init?: Partial>) {\n this.allData = allData;\n this.totalCount = allData.length;\n this.sort = init?.sort || [];\n this.selectedKeys = [];\n this.onSelectedKeysChanged = init?.onSelectedKeysChanged;\n this.filterPredicate = init?.filterPredicate;\n this.activePredicate = init?.activePredicate || init?.filterPredicate;\n this.deletedPredicate = init?.deletedPredicate;\n this.includeInactive = init?.includeInactive || false;\n this.activeSettings = $.extend(true, {}, GridInfo.activeSettings, init.activeSettings);\n this.deletedSettings = $.extend(true, {}, GridInfo.activeSettings, init.activeSettings);\n this.take = init?.take;\n\n this.activeBtn = init.state || {\n text: this.activeSettings.btnLabel.inactive,\n iconClass: this.activeSettings.btnIconClass.inactive,\n };\n\n this.deletedBtn = init.state || {\n text: this.deletedSettings.btnLabel.inactive,\n iconClass: this.deletedSettings.btnIconClass.inactive,\n };\n\n if (init.selectAll) {\n this.selectAll = {\n getKey: init?.selectAll?.getKey,\n getDataSelected: init?.selectAll?.getDataSelected,\n setDataSelected: init?.selectAll?.setDataSelected,\n state: {\n checked: false,\n indeterminate: false,\n selected: 0\n }\n }\n }\n\n this.processData(true, false);\n }\n\n public changeSort(sort: SortDescriptor[]): void {\n this.sort = sort;\n this.processData(false, false);\n }\n\n public changeFilter(filter: CompositeFilterDescriptor): void {\n this.filter = filter;\n this.processData(false, true);\n }\n\n public toggleActive() {\n this.includeInactive = !this.includeInactive;\n this.processData(false, true);\n }\n\n public addItem(item: T, select: boolean) {\n this.allData.push(item);\n this.processData(false, true);\n\n if (select) {\n this.selectedKeys = [item];\n this.selectedKeysChanged();\n }\n }\n\n public removeItems(items: T[]) {\n items.forEach(item => {\n const index = this.allData.map(o => o[\"id\"]).indexOf(item[\"id\"]);\n //const index = this.allData.indexOf(item);\n if (index >= 0)\n this.allData.splice(index, 1);\n });\n this.processData(false, true);\n\n if (this.selectedKeys.length > 0) {\n this.selectedKeys = [];\n this.selectedKeysChanged();\n }\n }\n\n public resetItems(items: T[]) {\n this.allData = items;\n this.processData(false, true);\n\n if (this.selectedKeys.length > 0) {\n this.selectedKeys = [];\n this.selectedKeysChanged();\n }\n }\n\n private processData(init: boolean, updateCount: boolean) {\n let data = this.includeInactive || !this.filterPredicate\n ? this.allData : $.grep(this.allData, this.filterPredicate);\n if (this.filter)\n data = filterBy(data, this.filter);\n\n if (updateCount)\n this.totalCount = this.allData.length;\n\n this.filteredData = orderBy(data, this.sort);\n this.filteredCount = data.length;\n this.selectedKeys = [];\n\n if (!init)\n this.selectedKeysChanged();\n\n if (this.selectAll && (init || updateCount))\n this.updateSelectAllState(null);\n }\n\n public selectedKeysChanged() {\n this.cancelActiveRevert();\n this.toolActions.none = this.selectedKeys.length === 0;\n this.toolActions.single = this.selectedKeys.length === 1;\n if (this.onSelectedKeysChanged)\n this.onSelectedKeysChanged(this.selectedKeys);\n this.updateActiveButton(true);\n this.updateDeletedButton(true);\n }\n\n public setSelectedKeys(keys: T[]) {\n this.selectedKeys = keys;\n this.selectedKeysChanged();\n }\n\n public selectedCallback(args) {\n return args.dataItem;\n }\n\n // Use => to define the callback so the \"this\" parameter is correct.\n public rowCallback = (context: RowClassArgs) => {\n return {\n inactive: this.activePredicate && !this.activePredicate(context.dataItem),\n deleted: this.deletedPredicate && this.deletedPredicate(context.dataItem)\n };\n }\n\n public selectCellClick(control: UntypedFormControl, event: CellClickEvent) {\n if (event.type === \"click\")\n this.toggleItem(control, event.dataItem);\n }\n\n public processActiveStatus(btnState: ButtonState, success: boolean) {\n const newClass = this.updateActiveButton(false);\n\n btnState.disabled = false;\n this.activeBtn.iconClass = \"fad \" +\n (success ? AlertService.saveIcons.success : AlertService.saveIcons.invalid);\n if (this.activeBtn.timeoutId)\n clearTimeout(this.activeBtn.timeoutId);\n this.activeBtn.timeoutId = setTimeout(() => {\n this.activeBtn.timeoutId = 0;\n this.activeBtn.iconClass = newClass;\n }, AlertService.revertDelay) as unknown as number;\n }\n\n public processDeletedStatus(btnState: ButtonState, success: boolean) {\n const newClass = this.updateDeletedButton(false);\n\n btnState.disabled = false;\n this.deletedBtn.iconClass = \"fad \" +\n (success ? AlertService.saveIcons.success : AlertService.saveIcons.invalid);\n if (this.deletedBtn.timeoutId)\n clearTimeout(this.deletedBtn.timeoutId);\n this.deletedBtn.timeoutId = setTimeout(() => {\n this.deletedBtn.timeoutId = 0;\n this.deletedBtn.iconClass = newClass;\n }, AlertService.revertDelay) as unknown as number;\n }\n\n private cancelActiveRevert() {\n if (this.activeBtn.timeoutId) {\n clearTimeout(this.activeBtn.timeoutId);\n this.activeBtn.timeoutId = 0;\n }\n }\n\n private updateActiveButton(updateIcon) {\n if (!this.activeBtn || !this.activePredicate)\n return;\n\n const restore = this.toolActions.single && !this.activePredicate(this.selectedKeys[0]);\n const newClass = restore ? this.activeSettings.btnIconClass.active\n : this.activeSettings.btnIconClass.inactive;\n this.activeBtn.text = restore ? this.activeSettings.btnLabel.active\n : this.activeSettings.btnLabel.inactive;\n if (updateIcon)\n this.setDeleteButtonClass(newClass);\n return newClass;\n }\n\n private updateDeletedButton(updateIcon) {\n if (!this.deletedBtn || !this.deletedPredicate)\n return;\n\n const restore = this.toolActions.single && !this.deletedPredicate(this.selectedKeys[0]);\n const newClass = restore ? this.deletedSettings.btnIconClass.active\n : this.deletedSettings.btnIconClass.inactive;\n this.deletedBtn.text = restore ? this.deletedSettings.btnLabel.active\n : this.deletedSettings.btnLabel.inactive;\n if (updateIcon)\n this.setDeleteButtonClass(newClass);\n return newClass;\n }\n\n private setDeleteButtonClass(newClass: string) {\n // Set the class to an empty string first to force an update.\n this.deletedBtn.iconClass = \"\";\n this.deletedBtn.iconClass = newClass;\n }\n\n public toggleAll(control: UntypedFormControl, event) {\n if (!this.selectAll)\n return;\n\n const checked = $(event.currentTarget).prop(\"checked\");\n $.each(this.filteredData, (i, d) => {\n this.selectAll.setDataSelected(d, checked);\n });\n this.updateSelectAllState(control);\n }\n\n public toggleItem(control: UntypedFormControl, dataItem: T) {\n if (!this.selectAll)\n return;\n\n this.selectAll.setDataSelected(dataItem, !this.selectAll.getDataSelected(dataItem));\n this.updateSelectAllState(control);\n }\n\n public updateSelectAllState(control: UntypedFormControl) {\n if (!this.selectAll)\n return;\n\n const keys = $.map(this.filteredData,\n d => this.selectAll.getDataSelected(d) ? this.selectAll.getKey(d) : null);\n const all = this.filteredData.length;\n const selected = keys.length;\n this.selectAll.state.checked = all === selected;\n this.selectAll.state.indeterminate = selected > 0 && selected < all;\n this.selectAll.state.selected = selected;\n\n if (control) {\n // Look at all records to find selected keys, not just the filtered records.\n const allKeys = $.map(this.allData,\n d => this.selectAll.getDataSelected(d) ? this.selectAll.getKey(d) : null);\n control.setValue(allKeys);\n control.markAsDirty();\n }\n }\n}\n","import { CommonModule } from '@angular/common';\n\nimport { NgModule } from '@angular/core';\n\nimport { RouterModule } from '@angular/router';\n\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { LayoutModule, TabStripModule } from '@progress/kendo-angular-layout';\nimport { TreeViewModule } from '@progress/kendo-angular-treeview';\nimport { GridModule } from '@progress/kendo-angular-grid';\nimport { ToolBarModule } from '@progress/kendo-angular-toolbar';\nimport { DropDownListModule, MultiSelectModule } from '@progress/kendo-angular-dropdowns';\nimport { ButtonsModule } from '@progress/kendo-angular-buttons';\nimport { NotificationModule } from '@progress/kendo-angular-notification';\nimport { DialogsModule } from '@progress/kendo-angular-dialog';\nimport { PopupModule } from '@progress/kendo-angular-popup';\nimport { TooltipModule } from '@progress/kendo-angular-tooltip';\nimport { DateInputsModule, DatePickerModule, TimePickerModule } from '@progress/kendo-angular-dateinputs';\nimport { CheckBoxModule } from '@progress/kendo-angular-inputs';\nimport { TextBoxModule } from '@progress/kendo-angular-inputs';\nimport { LabelModule } from '@progress/kendo-angular-label';\nimport { InputsModule } from '@progress/kendo-angular-inputs';\n\nimport { GridHeaderComponent } from './components/grid-header/grid-header.component';\nimport { ToolButtonComponent } from './components/tool-button/tool-button.component';\nimport { ToolSplitButtonComponent } from './components/tool-split-button/tool-split-button.component';\nimport { RequiredFieldComponent } from './components/required-field/required-field.component';\nimport { FieldValidationComponent } from './components/field-validation/field-validation.component';\nimport { PopupComponent } from './components/popup/popup.component';\nimport { MultiCheckListComponent } from './components/multi-check-list/multi-check-list.component';\nimport { LayoutHeaderComponent } from './components/layout-header/layout-header.component';\nimport { ColumnDateComponent } from './components/column-date/column-date.component';\n\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { TrimDirective } from './directives/trim.directive';\n\n\n@NgModule({\n declarations: [\n GridHeaderComponent,\n ToolButtonComponent,\n ToolSplitButtonComponent,\n RequiredFieldComponent,\n FieldValidationComponent,\n PopupComponent,\n MultiCheckListComponent,\n LayoutHeaderComponent,\n ColumnDateComponent,\n AutofocusDirective,\n TrimDirective\n ],\n imports: [\n RouterModule,\n TabStripModule,\n ToolBarModule,\n DropDownListModule,\n TooltipModule,\n DialogsModule,\n DatePickerModule,\n TimePickerModule,\n ButtonsModule,\n CheckBoxModule,\n GridModule,\n PopupModule,\n TreeViewModule,\n MultiSelectModule,\n ReactiveFormsModule,\n FormsModule,\n TextBoxModule,\n LabelModule,\n InputsModule\n ],\n exports: [\n CommonModule,\n ReactiveFormsModule,\n FormsModule,\n TextBoxModule,\n LayoutModule,\n TreeViewModule,\n GridModule,\n MultiSelectModule,\n ToolBarModule,\n DropDownListModule,\n ButtonsModule,\n NotificationModule,\n DialogsModule,\n TabStripModule,\n PopupModule,\n TooltipModule,\n DateInputsModule,\n DatePickerModule,\n TimePickerModule,\n CheckBoxModule,\n GridHeaderComponent,\n ToolButtonComponent,\n ToolSplitButtonComponent,\n RequiredFieldComponent,\n FieldValidationComponent,\n PopupComponent,\n MultiCheckListComponent,\n LayoutHeaderComponent,\n ColumnDateComponent,\n AutofocusDirective,\n TrimDirective,\n TextBoxModule,\n LabelModule,\n InputsModule,\n ],\n providers: [\n ]\n})\nexport class SharedModule { }\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * In development mode, to ignore zone related error stack frames such as\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\n * import the following file, but please comment it out in production mode\n * because it will have performance impact when throw error\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","/***************************************************************************************************\n * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.\n */\nimport '@angular/localize/init';\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nexport function getBaseUrl() {\n return document.getElementsByTagName('base')[0].href;\n}\n\nconst providers = [\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] }\n];\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\n .catch(err => console.log(err));\n"],"names":[],"sourceRoot":"webpack:///","x_google_ignoreList":[]}