{"version":3,"file":"main.js","mappings":"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I,mBAAmB,GAAG;IAC/B,wBAAwB,EAAE,mCAAmC;CACvC,CAAC;AAElB,IAAI,wBAAwB,GAAG;IACpC,wBAAwB,EAAE,wCAAwC;CACvC,CAAC;AAEvB,IAAI,4BAA4B,GAAG;IACxC,wBAAwB,EAAE,4CAA4C;CACvC,CAAC;AAE3B,IAAI,uBAAuB,GAAG;IACnC,kBAAkB,EAAE,kBAAkB;CACZ,CAAC;AAEtB,IAAI,iBAAiB,GAAG;IAC3B,gCAAgC,EAAE,wBAAwB;CACxC,CAAC;AAEhB,IAAI,mBAAmB,GAAG;IAC/B,wBAAwB,EAAE,kCAAkC;CACtC,CAAC;AAElB,IAAI,sBAAsB,GAAG;IAClC,yBAAyB,EAAE,uBAAuB;IAClD,mBAAmB,EAAE,mBAAmB;CACf,CAAC;AAE5B,SAAS,WAAW,CAAI,GAAW;IACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QAC/B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,OAAY,aAAa,CAAC;SAC3B;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,iBAAiB,CAAC,CAAC;SAClD;KACF;IAED,OAAU,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/api/website_enum.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/app.routes.ts","./src/app/authentication/auth.component.ts","./src/app/authentication/auth.component.html","./src/app/case-summary/case-summary-detail/case-summary-detail.component.ts","./src/app/case-summary/case-summary-detail/case-summary-detail.component.html","./src/app/case-summary/case-summary.component.ts","./src/app/case-summary/case-summary.component.html","./src/app/case-summary/index.ts","./src/app/dashboard/court-order/court-order-detail/court-order-detail.component.ts","./src/app/dashboard/court-order/court-order-detail/court-order-detail.component.html","./src/app/dashboard/court-order/court-order-milestone/court-order-milestone.component.ts","./src/app/dashboard/court-order/court-order-milestone/court-order-milestone.component.html","./src/app/dashboard/court-order/court-order.component.ts","./src/app/dashboard/court-order/court-order.component.html","./src/app/dashboard/court-order/index.ts","./src/app/dashboard/dashboard.component.ts","./src/app/dashboard/dashboard.component.html","./src/app/dashboard/home-visits/filter-settings.ts","./src/app/dashboard/home-visits/home-visit-detail/home-visit-detail.component.ts","./src/app/dashboard/home-visits/home-visit-detail/home-visit-detail.component.html","./src/app/dashboard/home-visits/home-visits.component.ts","./src/app/dashboard/home-visits/home-visits.component.html","./src/app/dashboard/home-visits/home-visits.service.ts","./src/app/dashboard/home-visits/index.ts","./src/app/dashboard/home-visits/overdue-visits/overdue-filter/overdue-filter.component.ts","./src/app/dashboard/home-visits/overdue-visits/overdue-filter/overdue-filter.component.html","./src/app/dashboard/home-visits/overdue-visits/overdue-visits.component.ts","./src/app/dashboard/home-visits/overdue-visits/overdue-visits.component.html","./src/app/dashboard/home-visits/upcoming-visits/upcoming-filter/upcoming-filter.component.ts","./src/app/dashboard/home-visits/upcoming-visits/upcoming-filter/upcoming-filter.component.html","./src/app/dashboard/home-visits/upcoming-visits/upcoming-visits.component.ts","./src/app/dashboard/home-visits/upcoming-visits/upcoming-visits.component.html","./src/app/dashboard/index.ts","./src/app/hero/activity-feed/activity-feed.component.ts","./src/app/hero/activity-feed/activity-feed.component.html","./src/app/hero/court-order-summary/court-order-details.ts","./src/app/hero/court-order-summary/court-order-summary.component.ts","./src/app/hero/court-order-summary/court-order-summary.component.html","./src/app/hero/court-order-summary/court-order-test-data.ts","./src/app/hero/hero.component.ts","./src/app/hero/hero.component.html","./src/app/hero/home-visits-summary/home-visits-summary.component.ts","./src/app/hero/home-visits-summary/home-visits-summary.component.html","./src/app/hero/index.ts","./src/app/hero/staff-whereabouts-summary/staff-whereabouts-summary.component.ts","./src/app/hero/staff-whereabouts-summary/staff-whereabouts-summary.component.html","./src/app/hero/tile-pagination.ts","./src/app/interceptors/authorization.interceptor.ts","./src/app/interceptors/token.interceptor.ts","./src/app/modal/modal.component.ts","./src/app/modal/modal.component.html","./src/app/page-layout/footer/footer.component.ts","./src/app/page-layout/footer/footer.component.html","./src/app/page-layout/header/header.component.ts","./src/app/page-layout/header/header.component.html","./src/app/page-layout/header/main-menu/main-menu.component.ts","./src/app/page-layout/header/main-menu/main-menu.component.html","./src/app/page-layout/index.ts","./src/app/page-not-found/page-not-found.component.ts","./src/app/page-not-found/page-not-found.component.html","./src/app/shared/FocusCheck.ts","./src/app/shared/date-input/date-input.component.ts","./src/app/shared/date-input/date-input.component.html","./src/app/shared/date-time-input/date-time-input.component.ts","./src/app/shared/date-time-input/date-time-input.component.html","./src/app/shared/directives/Sticky.directive.ts","./src/app/shared/error-message/error-message.component.ts","./src/app/shared/error-message/error-message.component.html","./src/app/shared/happy-day-motif/happy-day-motif.component.ts","./src/app/shared/happy-day-motif/happy-day-motif.component.html","./src/app/shared/index.ts","./src/app/shared/loading-pane/index.ts","./src/app/shared/loading-pane/loading-pane.component.ts","./src/app/shared/loading-pane/loading-pane.component.html","./src/app/shared/loading-pane/work-tracker.service.ts","./src/app/shared/no-results-message/no-results-message.component.ts","./src/app/shared/no-results-message/no-results-message.component.html","./src/app/shared/pagination/pagination.component.ts","./src/app/shared/pagination/pagination.component.html","./src/app/site-configuration/site-configuration.component.ts","./src/app/site-configuration/site-configuration.component.html","./src/app/staff-whereabouts/check-out/check-out.component.ts","./src/app/staff-whereabouts/check-out/check-out.component.html","./src/app/staff-whereabouts/staff-whereabouts.component.ts","./src/app/staff-whereabouts/staff-whereabouts.component.html","./src/app/unauthorised/unauthorised.component.ts","./src/app/unauthorised/unauthorised.component.html","./src/environments/environment.ts","./src/main.ts","./src/pipes/format-age.pipe.ts","./src/pipes/index.ts","./src/pipes/no-data.pipe.ts","./src/pipes/sanitize-html.pipe.ts","./src/pipes/unsafe-html.pipe.ts","./src/services/api/activity-feed.service.ts","./src/services/api/case-summary.service.ts","./src/services/api/feature-logger.service.ts","./src/services/api/office-lockdown-status.service.ts","./src/services/api/persona-switcher.service.ts","./src/services/api/service-centre-lockdown.service.ts","./src/services/api/staff-member.service.ts","./src/services/api/staff-whereabouts.service.ts","./src/services/api/task-subsystem.service.ts","./src/services/api/urls.ts","./src/services/api/utils.ts","./src/services/authentication-guard.ts","./src/services/court-order.service.ts","./src/services/home-visit-filter.service.ts","./src/services/idle-detection.service.ts","./src/services/index.ts","./src/services/local-storage.service.ts","./src/services/modal.service.ts","./src/services/msal.service.ts","./src/services/notifications/court-order-notify.service.ts","./src/services/notifications/court-order-promise-notify.service.ts","./src/services/notifications/filter-notification.service.ts","./src/services/notifications/home-visit-overdue-count-notify.service.ts","./src/services/notifications/home-visit-upcoming-count-notify.service.ts","./src/services/notifications/index.ts","./src/services/notifications/office-lockdown-notify.service.ts","./src/services/notifications/promise-notify.service.ts","./src/services/notifications/show-priority-notify.service.ts","./src/services/notifications/tab-notification.service.ts","./src/services/notifications/upcoming-visits-notification.service.ts","./src/services/priority-icon.service.ts","./src/services/record-change-detection.service.ts","./src/services/user-info.service.ts","./src/settings.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["export enum FeatureName {\r\n OverdueVisits = \"Overdue Visits\",\r\n UpcomingVisits = \"Upcoming Visits\",\r\n UpcomingVisitsShowMore = \"Upcoming Visits - Show More\",\r\n CourtOrders3Months = \"CourtOrders - 3 Months\",\r\n CourtOrders3MonthsShowMore = \"CourtOrders - 3 Months - Show More\",\r\n CourtOrders6Months = \"CourtOrders - 6 Months\", \r\n CourtOrders6MonthsShowMore = \"CourtOrders - 6 Months - Show More\", \r\n OICaseSummary = \"Case Summary - OI\", \r\n OICaseSummaryShowMore = \"Case Summary - OI - Show More\", \r\n StaffWhereabouts = \"Staff Whereabouts\", \r\n CaseNote = \"Visit ICMS Case Note\", \r\n LockDown = \"Lock down\",\r\n SafeToReturn = \"Safe to return\",\r\n PriorityIconsEnabled = \"Priority Icons Enabled\",\r\n PriorityIconsDisabled = \"Priority Icons Disabled\"\r\n}\r\n\r\nexport enum HeroSection {\r\n HomeVisits = \"Home Visits\",\r\n CourtOrders = \"Court Orders\",\r\n CourtOrders_2 = \"Court Orders 2\",\r\n CourtOrders_3 = \"Court Orders 3\",\r\n CourtOrders_4 = \"Court Orders 4\",\r\n StaffWhereabouts = \"Staff Whereabouts\"\r\n}\r\nexport enum FilterDateRange {\r\n ThisWeek = 0,\r\n Next4Weeks = 1,\r\n Custom = 2\r\n}\r\nexport function filterDateRangeDescription(value: FilterDateRange) {\r\n switch (value) {\r\n case FilterDateRange.ThisWeek:\r\n return `This Week`;\r\n case FilterDateRange.Next4Weeks:\r\n return `In the next 4 weeks`;\r\n case FilterDateRange.Custom:\r\n return `Custom`;\r\n default:\r\n return `In the next 4 weeks`;\r\n }\r\n}\r\nexport function filterDateRangeSummaryDescription(value: FilterDateRange) {\r\n switch (value) {\r\n case FilterDateRange.ThisWeek:\r\n return `this week`;\r\n case FilterDateRange.Next4Weeks:\r\n return `in the next 4 weeks`;\r\n case FilterDateRange.Custom:\r\n return `in your selected date range`;\r\n }\r\n}","\r\nimport {interval as observableInterval, Observable , Subscription } from 'rxjs';\r\nimport { MsalService } from '../services/msal.service';\r\nimport { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n time: string;\r\n date: string;\r\n dateWithoutYear: string;\r\n isAuthenticated: boolean;\r\n tracker: WorkTracker;\r\n isDestroyed: boolean = false;\r\n\r\n constructor(\r\n private adalService: MsalService,\r\n private personaSwitcherService: PersonaSwitcherService\r\n ) {\r\n this.tracker = new WorkTracker(true);\r\n this.personaSwitcherService.clearPersonaUpn();\r\n }\r\n\r\n intervalSubscription: Subscription;\r\n\r\n async ngOnInit() {\r\n await this.adalService.handleCallback();\r\n\r\n await this.load();\r\n\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n const refreshInterval = 60000;\r\n this.intervalSubscription = observableInterval(refreshInterval).subscribe(async () => {\r\n await this.load();\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n private async load() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n this.updateDateDisplay();\r\n }\r\n\r\n private updateDateDisplay() {\r\n let now = moment().local();\r\n this.time = now.format('h:mm a');\r\n this.date = now.format('ddd, MMM Do YYYY');\r\n this.dateWithoutYear = now.format('ddd, MMM Do');\r\n }\r\n}\r\n","\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { RouterModule } from '@angular/router';\r\nimport { appRoutes } from './app.routes';\r\nimport { StickyDirective } from './shared/directives/Sticky.directive';\r\nimport 'services/api/utils';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AngularMyDatePickerModule } from 'angular-mydatepicker';\r\n\r\nimport {\r\n AuthenticationGuard,\r\n MsalService,\r\n UserInfoService,\r\n StaffMemberService,\r\n StaffWhereaboutsService,\r\n ActivityFeedService,\r\n TaskSubsystemService,\r\n CaseSummaryService,\r\n IdleDetectionService,\r\n FeatureLoggerService,\r\n PersonaSwitcherService, \r\n OfficeLockdownStatusService, \r\n CourtOrderService, \r\n HomeVisitFilterService, \r\n ServiceCentreLockdownService, \r\n ModalService, \r\n LocalStorageService, \r\n PriorityIconService, \r\n RecordChangeDetectionService\r\n} from '../services';\r\nimport { LoadingPaneModule } from './shared/loading-pane';\r\nimport { UnsafeHtmlPipe, SanitizeHtmlPipe, FormatAgePipe, NoDataPipe } from './../pipes';\r\nimport { AppComponent } from './app.component';\r\nimport { AuthComponent } from './authentication/auth.component';\r\nimport { UnauthorisedComponent } from './unauthorised/unauthorised.component';\r\nimport { PageNotFoundComponent } from './page-not-found/page-not-found.component';\r\nimport { HeaderComponent, FooterComponent } from './page-layout';\r\nimport { MainMenuComponent } from './page-layout/header/main-menu/main-menu.component';\r\nimport { HeroComponent, HomeVisitsSummaryComponent, CourtOrderSummaryComponent, StaffWhereaboutsSummaryComponent, ActivityFeedComponent } from './hero';\r\nimport { NoResultsMessageComponent, ErrorMessageComponent } from './shared';\r\nimport { SiteConfigurationComponent } from './site-configuration/site-configuration.component';\r\nimport { HomeVisitsComponent, HomeVisitDetailComponent } from './dashboard/home-visits';\r\nimport { DashboardComponent } from './dashboard';\r\nimport { TabNotificationService, FilterNotificationService, UpcomingVisitsNotificationService, OfficeLockdownNotifyService, \r\n CourtOrderPromiseNotifyService, CourtOrderNotifyService, HomeVisitUpcomingCountNotifyService, HomeVisitOverdueCountNotifyService, \r\n ShowPriorityNotifyService, PromiseNotifyService } from '../services/notifications/';\r\nimport { CourtOrderComponent, CourtOrderDetailComponent, CourtOrderMilestoneComponent } from './dashboard/court-order';\r\nimport { StaffWhereaboutsComponent } from './staff-whereabouts/staff-whereabouts.component';\r\nimport { ModalComponent } from './modal/modal.component';\r\nimport { CaseSummaryComponent, CaseSummaryDetailComponent } from './case-summary';\r\nimport { FailedAuthorizationInterceptor } from './interceptors/authorization.interceptor';\r\nimport { TokenInterceptor } from './interceptors/token.interceptor';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { DateTimeInputComponent } from './shared/date-time-input/date-time-input.component';\r\nimport { CheckOutComponent } from './staff-whereabouts/check-out/check-out.component';\r\nimport { DateInputComponent } from './shared/date-input/date-input.component';\r\nimport { HappyDayMotifComponent } from './shared/happy-day-motif/happy-day-motif.component';\r\nimport { OverdueVisitsComponent } from './dashboard/home-visits/overdue-visits/overdue-visits.component';\r\nimport { UpcomingVisitsComponent } from './dashboard/home-visits/upcoming-visits/upcoming-visits.component';\r\nimport { PaginationComponent } from './shared/pagination/pagination.component';\r\nimport { HomeVisitsService } from './dashboard/home-visits/home-visits.service';\r\nimport { OverdueFilterComponent } from './dashboard/home-visits/overdue-visits/overdue-filter/overdue-filter.component';\r\nimport { UpcomingFilterComponent } from './dashboard/home-visits/upcoming-visits/upcoming-filter/upcoming-filter.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n AuthComponent,\r\n UnauthorisedComponent,\r\n PageNotFoundComponent,\r\n FooterComponent,\r\n HeaderComponent,\r\n MainMenuComponent,\r\n SiteConfigurationComponent,\r\n UnsafeHtmlPipe,\r\n SanitizeHtmlPipe,\r\n FormatAgePipe,\r\n NoDataPipe,\r\n StickyDirective,\r\n ErrorMessageComponent,\r\n HappyDayMotifComponent,\r\n NoResultsMessageComponent,\r\n HeroComponent,\r\n HomeVisitsSummaryComponent,\r\n CourtOrderSummaryComponent,\r\n StaffWhereaboutsSummaryComponent,\r\n ActivityFeedComponent,\r\n CaseSummaryComponent,\r\n CaseSummaryDetailComponent,\r\n HomeVisitsComponent,\r\n HomeVisitDetailComponent,\r\n StaffWhereaboutsComponent,\r\n CourtOrderComponent,\r\n CourtOrderDetailComponent,\r\n CourtOrderMilestoneComponent,\r\n DashboardComponent,\r\n ModalComponent, DateTimeInputComponent, CheckOutComponent, DateInputComponent, HappyDayMotifComponent, OverdueVisitsComponent, UpcomingVisitsComponent, PaginationComponent, OverdueFilterComponent, UpcomingFilterComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgSelectModule,\r\n HttpClientModule,\r\n LoadingPaneModule,\r\n ReactiveFormsModule,\r\n RouterModule.forRoot(appRoutes, { relativeLinkResolution: 'legacy' }),\r\n NgxMaterialTimepickerModule,\r\n BrowserAnimationsModule,\r\n ToastrModule.forRoot(),\r\n AngularMyDatePickerModule\r\n ],\r\n exports: [\r\n StickyDirective\r\n ],\r\n providers: [\r\n MsalService,\r\n UserInfoService,\r\n AuthenticationGuard,\r\n StaffMemberService,\r\n StaffWhereaboutsService,\r\n ActivityFeedService,\r\n TaskSubsystemService,\r\n CaseSummaryService,\r\n FeatureLoggerService,\r\n PersonaSwitcherService,\r\n OfficeLockdownStatusService,\r\n TabNotificationService,\r\n FilterNotificationService,\r\n UpcomingVisitsNotificationService,\r\n OfficeLockdownNotifyService,\r\n CourtOrderPromiseNotifyService,\r\n CourtOrderNotifyService,\r\n HomeVisitUpcomingCountNotifyService,\r\n HomeVisitOverdueCountNotifyService,\r\n ShowPriorityNotifyService,\r\n PromiseNotifyService,\r\n IdleDetectionService,\r\n CourtOrderService,\r\n HomeVisitFilterService,\r\n RecordChangeDetectionService,\r\n HomeVisitsService,\r\n ServiceCentreLockdownService,\r\n ModalService,\r\n LocalStorageService,\r\n PriorityIconService,\r\n SanitizeHtmlPipe,\r\n FormatAgePipe,\r\n NoDataPipe,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: FailedAuthorizationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TokenInterceptor,\r\n multi: true\r\n }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }","import { Routes } from '@angular/router';\r\nimport { AuthenticationGuard } from 'services/authentication-guard';\r\nimport { DashboardComponent } from './dashboard/dashboard.component';\r\nimport { StaffWhereaboutsComponent } from './staff-whereabouts/staff-whereabouts.component';\r\nimport { AuthComponent } from './authentication/auth.component';\r\nimport { UnauthorisedComponent } from './unauthorised/unauthorised.component';\r\nimport { PageNotFoundComponent } from './page-not-found/page-not-found.component';\r\nimport { CaseSummaryComponent } from './case-summary/case-summary.component';\r\nimport { SiteConfigurationComponent } from './site-configuration/site-configuration.component';\r\n\r\nexport const appRoutes: Routes = [\r\n {\r\n path: 'dashboard',\r\n component: DashboardComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n {\r\n path: 'home',\r\n redirectTo: 'dashboard',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: '',\r\n redirectTo: 'dashboard',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'whereabouts',\r\n component: StaffWhereaboutsComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n {\r\n path: 'case-summary',\r\n component: CaseSummaryComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n {\r\n path: 'site-config',\r\n component: SiteConfigurationComponent,\r\n canActivate: [AuthenticationGuard]\r\n },\r\n {\r\n path: 'auth',\r\n component: AuthComponent\r\n },\r\n {\r\n path: 'unauthorised',\r\n component: UnauthorisedComponent\r\n },\r\n {\r\n path: '**',\r\n component: PageNotFoundComponent\r\n }\r\n];\r\n","import { MsalService } from '../../services/msal.service';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { from, Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-auth',\r\n templateUrl: './auth.component.html',\r\n styleUrls: ['./auth.component.scss']\r\n})\r\nexport class AuthComponent implements OnInit {\r\n redirectUri: string = null;\r\n public isLoggedIn$: Observable\r\n\r\n constructor(private adalService: MsalService, private route: ActivatedRoute) {}\r\n\r\n async ngOnInit() {\r\n this.route.queryParams.subscribe(p => (this.redirectUri = p['redirectUrl']));\r\n this.isLoggedIn$ = from(this.adalService.isAuthenticated())\r\n }\r\n\r\n login() {\r\n this.adalService.login(this.redirectUri || '/');\r\n }\r\n\r\n logout() {\r\n this.adalService.logout();\r\n }\r\n\r\n\r\n get userName() {\r\n if (!this.adalService.userInfo || !this.adalService.userInfo.username) return null;\r\n\r\n return this.adalService.userInfo.username;\r\n }\r\n}\r\n","
\r\n \r\n

\r\n You are currently logged in as {{ userName }}. Click the button below to log out.\r\n \r\n

\r\n
\r\n \r\n

You have been logged out. Please click the button if you wish to log in again. Login

\r\n
\r\n
","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { CaseSummaryService, RecordChangeDetectionService } from 'services';\r\n\r\ninterface AlertCount {\r\n description: string;\r\n count: number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-case-summary-detail',\r\n templateUrl: './case-summary-detail.component.html',\r\n styleUrls: ['./case-summary-detail.component.scss']\r\n})\r\nexport class CaseSummaryDetailComponent implements OnChanges {\r\n @Input() ongoingIntervention: Api.OngoingIntervention;\r\n @Input() isExpanded: boolean;\r\n ongoingInterventionDetail: Api.OngoingInterventionDetail;\r\n tracker: WorkTracker;\r\n dataLoaded: boolean;\r\n hasError: boolean;\r\n amberAlerts: AlertCount[];\r\n redAlerts: AlertCount[];\r\n mood: string;\r\n\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n constructor(private caseSummaryService: CaseSummaryService) {\r\n this.tracker = new WorkTracker(true);\r\n\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['currentLocationType', 'frequency', 'amberAlerts', 'redAlerts', 'hasAmberAlert', 'hasRedAlert', 'latestKicboxMood'], \r\n ['subjectId'], 'case-summary-detail'\r\n );\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if(changes['ongoingIntervention'] && !changes['ongoingIntervention'].isFirstChange())\r\n {\r\n this.applyNewDataSet();\r\n }\r\n else if (changes['isExpanded'] && changes['isExpanded'].currentValue === true) {\r\n this.hasError = false;\r\n this.dataLoaded = false;\r\n await this.tracker.track(this.getOngoingInterventionDetailFromServer(this.ongoingIntervention.subjectId));\r\n }\r\n }\r\n\r\n formatShortDate(date: string) {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('DD/MM/YYYY')\r\n : 'n/a';\r\n }\r\n\r\n addressLines(address: string): string[] {\r\n let parts = (address || '').split(',');\r\n let partsLength = parts.length;\r\n if (partsLength === 0) return [];\r\n\r\n return parts.map((o, i) => (i < partsLength - 1) ? `${o},` : `${o}`);\r\n }\r\n\r\n private groupedAlerts(alerts: string[]): AlertCount[] {\r\n if (!alerts) return [];\r\n\r\n let grouped = alerts.reduce((g: any, alert: string) => {\r\n g[alert] = g[alert] || [];\r\n g[alert].push(alert);\r\n return g;\r\n }, {});\r\n\r\n return Object.keys(grouped).map(o => ({ count: grouped[o].length, description: o }));\r\n }\r\n\r\n private generateCurrentDataSet()\r\n {\r\n //if(!this.ongoingInterventionDetail || !this.ongoingIntervention) return null;\r\n return {\r\n currentLocationType: this.ongoingIntervention ? this.ongoingIntervention.currentLocationType : \"\",\r\n frequency: this.ongoingIntervention ? this.ongoingIntervention.frequency : \"\",\r\n amberAlerts: !!this.ongoingInterventionDetail ? this.ongoingInterventionDetail.amberAlerts : [],\r\n redAlerts: !!this.ongoingInterventionDetail ? this.ongoingInterventionDetail.redAlerts : [],\r\n hasAmberAlert: !!this.ongoingInterventionDetail ? this.ongoingInterventionDetail.hasAmberAlert : false,\r\n hasRedAlert: !!this.ongoingInterventionDetail ? this.ongoingInterventionDetail.hasRedAlert : false,\r\n latestKicboxMood: !!this.ongoingInterventionDetail ? this.ongoingInterventionDetail.latestKicboxMood : \"\"\r\n };\r\n }\r\n\r\n private applyNewDataSet()\r\n {\r\n var currentInstance = this.generateCurrentDataSet();\r\n if(!currentInstance) return;\r\n this.recordChangeDetectionService.applyNewDataSet([currentInstance]);\r\n }\r\n\r\n private getOngoingInterventionDetailFromServer(personId: string): Promise {\r\n try {\r\n return this.caseSummaryService.getOngoingInterventionDetails(personId).then(result => {\r\n this.hasError = (!result || result === null);\r\n if (!result.hasError) {\r\n this.ongoingInterventionDetail = result.value;\r\n this.mood = this.setMoodSpan(this.ongoingInterventionDetail.latestKicboxMood, this.ongoingInterventionDetail.kicboxStatus);\r\n this.amberAlerts = this.groupedAlerts(result.value.amberAlerts);\r\n this.redAlerts = this.groupedAlerts(result.value.redAlerts);\r\n this.dataLoaded = true;\r\n\r\n this.applyNewDataSet();\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n }\r\n }\r\n\r\n showUpdateGraphic(): boolean {\r\n var currentData = this.generateCurrentDataSet();\r\n if(!currentData) return;\r\n return this.recordChangeDetectionService.showUpdateGraphic(currentData);\r\n }\r\n\r\n private setMoodSpan(item: string, status: string): string {\r\n if (item && item.trim().length > 0) {\r\n item = `:${item}:`;\r\n let moodRegEx = new RegExp(/:other:[^\\:]+:|:[a-zA-Z-]+:/g);\r\n let result = moodRegEx.exec(item);\r\n\r\n if (result && result.length === 1) {\r\n let matchedText = result[0];\r\n\r\n // Remove mood if the status changes from 'Active' to anything else. Ref: Bug 12254\r\n if(!status || status !== 'Active')\r\n {\r\n return item.replace(`${matchedText}`, `No mood recorded`);\r\n }\r\n\r\n let parts = matchedText.split(':').filter(o => o && o.trim().length > 0);\r\n let moodText: string;\r\n let cssClassName: string;\r\n\r\n if (parts.length === 2) {\r\n // i.e. it's a 'custom' mood like :other:i've had enough:\r\n cssClassName = parts[0];\r\n moodText = parts[1];\r\n } else {\r\n // i.e. it's a pre-defined mood like :happy:\r\n cssClassName = parts[0];\r\n moodText = parts[0];\r\n }\r\n\r\n return item.replace(`${matchedText}`, ``);\r\n }\r\n }\r\n\r\n return item;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n Sensitive User\r\n \r\n \r\n
\r\n
Indigenous Status
\r\n
kicbox Status
\r\n
Expiry of CPO
\r\n
Location Type
\r\n
OI Commencement
\r\n
\r\n
\r\n
\r\n
Indigenous Status
\r\n
{{ongoingInterventionDetail.indigenousStatus | noData}}
\r\n
***
\r\n
\r\n
\r\n
kicbox Status
\r\n {{ongoingInterventionDetail.kicboxStatus | noData}}\r\n ***\r\n
\r\n
\r\n
Expiry of CPO
\r\n {{formatShortDate(ongoingInterventionDetail.expiryOfCPODate)}}\r\n ***\r\n
\r\n
\r\n
Location Type
\r\n {{ongoingIntervention.currentLocationType | noData}}\r\n
\r\n
\r\n
OI Commencement
\r\n {{formatShortDate(ongoingIntervention.commencementDate)}}\r\n
\r\n
\r\n
\r\n
Ethnicity
\r\n
Mood
\r\n
Initial CPO Application
\r\n
Frequency
\r\n
Address
\r\n
\r\n
\r\n
\r\n
Ethnicity
\r\n {{ongoingInterventionDetail.ethnicity | noData}}\r\n ***\r\n
\r\n
\r\n
Mood
\r\n
\r\n\r\n
\r\n
***
\r\n
\r\n
\r\n
Initial CPO Application
\r\n {{formatShortDate(ongoingInterventionDetail.applicationOfCPODate)}}\r\n ***\r\n
\r\n
\r\n
Frequency
\r\n
{{ ongoingIntervention.frequency }}
\r\n
\r\n
\r\n
Address
\r\n
\r\n
\r\n
{{ addressLine }}
\r\n
0\">Link to Google Maps
\r\n
No\r\n address recorded\r\n
\r\n
\r\n
\r\n ***\r\n
\r\n
\r\n
\r\n
Alerts
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Alerts
\r\n
    \r\n
  • \r\n \r\n {{ alert.description }}\r\n 1\">({{ alert.count }})\r\n
  • \r\n
  • \r\n \r\n {{ alert.description }}\r\n 1\">({{ alert.count }})\r\n
  • \r\n
\r\n No alerts\r\n recorded\r\n ***\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","\r\nimport {interval as observableInterval, Subscription, Observable } from 'rxjs';\r\nimport {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n HostListener\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { CaseSummaryService } from '../../services/api/case-summary.service';\r\nimport { caseSummarySettings } from '../../settings';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService, FeatureLoggerService, RecordChangeDetectionService } from 'services';\r\nimport { FocusCheck } from '../shared/FocusCheck';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Component({\r\n selector: 'app-case-summary',\r\n templateUrl: './case-summary.component.html',\r\n styleUrls: ['./case-summary.component.scss']\r\n})\r\nexport class CaseSummaryComponent extends FocusCheck implements OnInit, OnDestroy {\r\n tracker: WorkTracker;\r\n intervalSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n personaChangedSubscription: Subscription;\r\n ongoingInterventions: Api.OngoingIntervention[];\r\n\r\n selectedOngoingInterventions: Api.OngoingIntervention[] = [];\r\n hasError: boolean;\r\n dataLoaded: boolean;\r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n refreshIntervalInMilliseconds: number;\r\n\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n // Pagination settings\r\n currentPage: number = 0;\r\n pageCount: number = 0;\r\n pageSize: number = 10; // This is communicated from the pagination component\r\n caseSummaryCount: number = 0;\r\n caseSummaryStyle: string = 'case-summary';\r\n\r\n constructor(\r\n private titleService: Title,\r\n private caseSummaryService: CaseSummaryService,\r\n private idleDetectionService: IdleDetectionService,\r\n private featureLogger: FeatureLoggerService,\r\n private personaSwitcherService: PersonaSwitcherService\r\n ) {\r\n super();\r\n this.tracker = new WorkTracker(true);\r\n this.titleService.setTitle('CS Portal - Case Summary');\r\n this.refreshIntervalInMilliseconds = caseSummarySettings.refreshIntervalInSeconds * 1000;\r\n this.subscribeToPersonaChangedNotifications();\r\n\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['interventionType', 'lastVisitDtm'], \r\n ['subjectId'], 'case-summary'\r\n );\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.featureLogger.logFeatureUsage(FeatureName.OICaseSummary);\r\n\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n\r\n await this.tracker.track(\r\n this.loadData().then(() => {\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n async onPageChangedEvent(pageNumber: number)\r\n {\r\n if(pageNumber != this.currentPage)\r\n {\r\n this.currentPage = pageNumber;\r\n await this.tracker.track(\r\n this.loadData()\r\n );\r\n }\r\n }\r\n\r\n async onPageSizeChangedEvent(pageSize: number)\r\n {\r\n if(pageSize != this.pageSize)\r\n {\r\n this.pageSize = pageSize;\r\n await this.tracker.track(\r\n this.loadData()\r\n );\r\n }\r\n }\r\n\r\n async loadData() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n return await Promise.all([\r\n this.getCaseSummariesFromServer(),\r\n ]);\r\n }\r\n\r\n trackOiBy(index: number, item: Api.OngoingIntervention) {\r\n return `${item.subjectId}-${item.subjectName}`;\r\n }\r\n\r\n private clearSelectedVisits() {\r\n this.selectedOngoingInterventions = [];\r\n }\r\n\r\n private getCaseSummariesFromServer(): Promise {\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n // Retrieve all summary data for the given 'currentPage' with the given 'pageSize' count of records, at most\r\n return this.caseSummaryService.getCaseSummaries(this.currentPage, this.pageSize).then(result => {\r\n this.hasError = result.hasError;\r\n if(!!result && !!result.value && !this.hasError)\r\n {\r\n this.ongoingInterventions = result.value.ongoingInterventions;\r\n this.caseSummaryCount = result.value.ongoingInterventionCount;\r\n\r\n // The server will always respond with the count of pages available based on the given 'pageSize' paramter\r\n this.pageCount = result.value.ongoingInterventionsPages;\r\n }\r\n else\r\n {\r\n this.ongoingInterventions = [];\r\n this.caseSummaryCount = 0;\r\n }\r\n this.recordChangeDetectionService.applyNewDataSet(this.ongoingInterventions);\r\n this.dataLoaded = true;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n this.ongoingInterventions = [];\r\n this.caseSummaryCount = 0;\r\n }\r\n }\r\n\r\n showUpdateGraphic(intervention: Api.OngoingIntervention): boolean {\r\n return this.recordChangeDetectionService.showUpdateGraphic(intervention);\r\n }\r\n\r\n private subscribeToPersonaChangedNotifications() {\r\n this.personaSwitcherService.enable();\r\n if (!this.personaChangedSubscription) {\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n this.clearSelectedVisits();\r\n await this.tracker.track(this.loadData());\r\n });\r\n }\r\n }\r\n\r\n formatShortDate(date: string): string {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('DD/MM/YYYY')\r\n : 'n/a';\r\n }\r\n\r\n isEven(item: Api.OngoingIntervention): boolean {\r\n if (!this.ongoingInterventions || !this.ongoingInterventions) return false;\r\n\r\n let index = this.ongoingInterventions.indexOf(item, 0);\r\n\r\n return index % 2 === 0;\r\n }\r\n\r\n selectOngoingIntervention(item: Api.OngoingIntervention): void {\r\n\r\n if (this.isOngoingInterventionSelected(item)) {\r\n let foundItem = this.selectedOngoingInterventions.filter(o => o.subjectId === item.subjectId)[0];\r\n if (foundItem) {\r\n const index = this.selectedOngoingInterventions.indexOf(foundItem, 0);\r\n if (index > -1) {\r\n this.selectedOngoingInterventions.splice(index, 1);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n this.featureLogger.logFeatureUsage(FeatureName.OICaseSummaryShowMore);\r\n this.selectedOngoingInterventions.push(item);\r\n }\r\n\r\n isOngoingInterventionSelected(item: Api.OngoingIntervention): boolean {\r\n if (!item || !this.selectedOngoingInterventions) return false;\r\n\r\n return this.selectedOngoingInterventions.filter(o => o.subjectId === item.subjectId).length > 0;\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return !this.dataLoaded || (!this.userIsIdle && this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n

Ongoing Interventions

\r\n
\r\n
\r\n
\r\n
\r\n
Name
\r\n
Age
\r\n
Intervention Type
\r\n
Last Visit
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Name
\r\n
{{ oi.subjectName }}
\r\n
\r\n
\r\n
Age
\r\n {{ oi.age | formatAge }}\r\n
\r\n
\r\n
Intervention Type
\r\n {{ !oi.interventionType ? 'n/a' : oi.interventionType }}\r\n
\r\n
\r\n
Last Visit
\r\n {{\r\n oi.lastVisitDtm ? formatShortDate(oi.lastVisitDtm) : 'n/a'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
","export * from './case-summary.component';\r\nexport * from './case-summary-detail/case-summary-detail.component';","import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { TaskSubsystemService } from '../../../../services/api/task-subsystem.service';\r\nimport { CourtOrderService } from '../../../../services/court-order.service';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\n\r\n@Component({\r\n selector: 'app-court-order-detail',\r\n templateUrl: './court-order-detail.component.html',\r\n styleUrls: ['./court-order-detail.component.scss']\r\n})\r\nexport class CourtOrderDetailComponent implements OnInit, OnChanges {\r\n @Input() shown: boolean;\r\n @Input() courtOrder: Api.CourtOrder;\r\n @Input() isExpanded: boolean;\r\n @Input() orderSelectionChanged: string;\r\n\r\n courtOrderDetail: Api.HomeVisitPersonDetail;\r\n tracker: WorkTracker;\r\n dataLoaded: boolean;\r\n hasError: boolean;\r\n milestones: Api.CourtOrderMilestone[];\r\n firstThreeMilestones: Api.CourtOrderMilestone[];\r\n nextThreeMilestones: Api.CourtOrderMilestone[];\r\n lastThreeMilestones: Api.CourtOrderMilestone[];\r\n milestoneNames: string[];\r\n nextMilestone: string;\r\n\r\n constructor(private taskSubsystem: TaskSubsystemService, private courtOrderService: CourtOrderService) {\r\n this.tracker = new WorkTracker(true);\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if (changes['isExpanded'] && changes['isExpanded'].currentValue === true) {\r\n this.hasError = false;\r\n this.dataLoaded = false;\r\n\r\n this.milestones = this.courtOrderService.generateMilestones(this.courtOrder.orderExpiryDtm);\r\n this.firstThreeMilestones = this.milestones.slice(0, 3);\r\n this.nextThreeMilestones = this.milestones.slice(3, 6);\r\n this.lastThreeMilestones = this.milestones.slice(6, 9);\r\n this.nextMilestone = this.courtOrderService.getNextMilestone(this.courtOrder);\r\n\r\n await this.tracker.track(this.getUpcomingVisitDetailFromServer(this.courtOrder.subjectChildId));\r\n }\r\n }\r\n\r\n isTheNext(milestone: Api.CourtOrderMilestone) : boolean \r\n {\r\n return milestone.milestoneName == this.nextMilestone;\r\n }\r\n\r\n private getUpcomingVisitDetailFromServer(personId: string): Promise {\r\n try {\r\n return this.taskSubsystem.getUpcomingChildHomeVisitDetail(personId).then(result => {\r\n this.hasError = (result.hasError);\r\n if (!this.hasError) {\r\n this.courtOrderDetail = result.value;\r\n this.dataLoaded = true;\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n }\r\n }\r\n}\r\n\r\n","
\r\n \r\n
\r\n \r\n \r\n Sensitive User\r\n \r\n \r\n
\r\n
\r\n
\r\n
Age
\r\n
\r\n
Age
\r\n ***\r\n \r\n {{ courtOrderDetail.age | formatAge }}\r\n \r\n
\r\n
\r\n
\r\n
{{mstone.milestoneName}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Indigenous Status
\r\n
\r\n
Indigenous Status
\r\n ***\r\n \r\n
{{ courtOrderDetail.indigenousStatus ? courtOrderDetail.indigenousStatus : 'Unknown' }}
\r\n
\r\n
\r\n
\r\n
\r\n
{{mstone.milestoneName}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
 
\r\n
\r\n
{{mstone.milestoneName}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Age
\r\n
\r\n
Age
\r\n ***\r\n \r\n {{ courtOrderDetail.age | formatAge }}\r\n \r\n
\r\n
\r\n
\r\n
Indigenous Status
\r\n
\r\n
Indigenous Status
\r\n
***
\r\n \r\n
{{ courtOrderDetail.indigenousStatus ? courtOrderDetail.indigenousStatus : 'Unknown' }}
\r\n
\r\n
\r\n
\r\n
\r\n
{{mstone.milestoneName}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: '[app-court-order-milestone]',\r\n templateUrl: './court-order-milestone.component.html',\r\n styleUrls: ['./court-order-milestone.component.scss']\r\n})\r\nexport class CourtOrderMilestoneComponent implements OnInit {\r\n @Input() milestone: Api.CourtOrderMilestone;\r\n @Input() isNext: boolean;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
{{milestone.milestoneName}}
\r\n
\r\n
\r\n
\r\n Due {{ milestone.timeToDueDtDescription }}\r\n
\r\n
\r\n
\r\n
\r\n On {{ milestone.milestoneDueDt }}\r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy, HostListener\r\n} from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Subscription } from 'rxjs';\r\nimport { TabNotificationService } from '../../../services/notifications/tab-notification.service';\r\nimport { CourtOrderNotifyService } from '../../../services/notifications/court-order-notify.service';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { FeatureLoggerService } from 'services';\r\nimport { UserInfoService } from '../../../services/user-info.service';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { CourtOrderService } from 'services/court-order.service';\r\nimport { FeatureName } from \"api/website_enum\";\r\n// import { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-court-order',\r\n templateUrl: './court-order.component.html',\r\n styleUrls: ['./court-order.component.scss']\r\n})\r\nexport class CourtOrderComponent extends FocusCheck implements OnInit, OnDestroy {\r\n selectedTab: FeatureName;\r\n \r\n // This data is updated via notifications\r\n orderData: Api.SelectedCourtOrderData;\r\n\r\n // This is the data we will display in relation to pagination\r\n ordersToShow: Api.GroupedCourtOrders[];\r\n\r\n // The collection of orders that have been toggled to full view. This is just used to track what is/not open.\r\n selectedOrders: Api.CourtOrder[] = [];\r\n personaSwitcherSelectedUpn: string = null;\r\n tracker: WorkTracker;\r\n intervalSubscription: Subscription;\r\n tabNotificationSubscription: Subscription;\r\n courtOrderNotifySubscription: Subscription;\r\n personaChangedSubscription: Subscription;\r\n isDestroyed: boolean = false;\r\n officersUpn: string = '';\r\n\r\n // Pagination settings\r\n currentPageExpiryInThreeMonths: number = 0;\r\n pageSizeExpiryInThreeMonths: number = 10;\r\n orderCountExpiryInThreeMonths: number = 0;\r\n\r\n currentPageExpiryInSixMonths: number = 0;\r\n pageSizeExpiryInSixMonths: number = 10;\r\n orderCountExpiryInSixMonths: number = 0;\r\n\r\n courtOrderStyle: string = 'court-order';\r\n\r\n get expiryInThreeMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders3Months\r\n }\r\n get expiryInSixMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders6Months\r\n }\r\n get errorMsgAppSectionText(): string {\r\n return (this.expiryInThreeMonthsTabSelected ? 'court orders due in 3 months' : 'court orders due in 3 months');\r\n }\r\n get errorMsgHeaderText(): string {\r\n if(this.expiryInThreeMonthsTabSelected === true) return 'There are no children or young people with court orders expiring in the next 3 months.';\r\n\r\n if(!this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths || this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths === 0)\r\n {\r\n return 'There are no children or young people with court orders expiring between 3 to 6 months in the future.';\r\n }\r\n else if(this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths === 1)\r\n {\r\n return 'There is one order expiring between 3 to 6 months in the future. This was moved to the 0 to 3 month tab to be shown with the associated child.';\r\n }\r\n else if(this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths > 1 && \r\n this.orderData.countOfUniqueChildrenInNextThreeMonths === 1)\r\n {\r\n return 'There are ' + this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths + ' orders expiring between 3 to 6 months in the future. These were moved to the 0 to 3 month tab to be shown with the associated child.';\r\n }\r\n else // > 1 moved and > 2 child\r\n {\r\n return 'There are ' + this.orderData.countOfOrdersMovedFromSubsequentToNextThreeMonths + ' orders expiring between 3 to 6 months in the future. These were moved to the 0 to 3 month tab to be shown with the associated children.';\r\n }\r\n }\r\n\r\n constructor(\r\n private titleService: Title,\r\n private tabNotificationService: TabNotificationService,\r\n private courtOrderNotifyService: CourtOrderNotifyService,\r\n private featureLogger: FeatureLoggerService,\r\n private personaSwitcherService: PersonaSwitcherService, \r\n private courtOrderService: CourtOrderService,\r\n private userInfoService: UserInfoService,\r\n // private toastr: ToastrService\r\n ) {\r\n super();\r\n this.tracker = new WorkTracker(true);\r\n this.officersUpn = userInfoService.upn();\r\n this.orderCountExpiryInThreeMonths = 0;\r\n this.orderCountExpiryInSixMonths = 0;\r\n this.titleService.setTitle('CS Portal - Dashboard');\r\n this.subscribeToPersonaChangedNotifications();\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.updatePagedOrdersToShow();\r\n\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n this.updatePagedOrdersToShow();\r\n }\r\n });\r\n\r\n this.courtOrderNotifySubscription = this.courtOrderNotifyService.courtOrdersChanged.subscribe((orders) => {\r\n this.orderData = orders;\r\n this.updatePagedOrdersToShow();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n haveStaff(): boolean {\r\n if(!!this.personaSwitcherSelectedUpn && this.personaSwitcherSelectedUpn != this.officersUpn)\r\n {\r\n // We are masquerading. Even if masquerading as a team leader, return false\r\n return false;\r\n }\r\n\r\n return this.orderData.officerHasStaff;\r\n }\r\n\r\n onPageChangedEvent(pageNumber: number)\r\n {\r\n if(this.expiryInThreeMonthsTabSelected)\r\n {\r\n this.currentPageExpiryInThreeMonths = pageNumber;\r\n }\r\n else \r\n {\r\n this.currentPageExpiryInSixMonths = pageNumber;\r\n }\r\n this.updatePagedOrdersToShow();\r\n }\r\n\r\n onPageSizeChangedEvent(pageSize: number)\r\n {\r\n if(this.expiryInThreeMonthsTabSelected)\r\n {\r\n this.pageSizeExpiryInThreeMonths = pageSize;\r\n }\r\n else \r\n {\r\n this.pageSizeExpiryInSixMonths = pageSize;\r\n }\r\n this.updatePagedOrdersToShow();\r\n }\r\n\r\n updatePagedOrdersToShow()\r\n {\r\n var pageSizeToUse = this.expiryInThreeMonthsTabSelected ? this.pageSizeExpiryInThreeMonths : this.pageSizeExpiryInSixMonths;\r\n var currentPageToUse = this.expiryInThreeMonthsTabSelected ? this.currentPageExpiryInThreeMonths : this.currentPageExpiryInSixMonths;\r\n var firstElToShow = pageSizeToUse * currentPageToUse;\r\n var lastElToShow = firstElToShow + pageSizeToUse;\r\n\r\n if(this.expiryInThreeMonthsTabSelected)\r\n {\r\n this.orderCountExpiryInThreeMonths = !!this.orderData && this.orderData.groupedOrders ? this.orderData.groupedOrders.length : 0;\r\n }\r\n else\r\n {\r\n this.orderCountExpiryInSixMonths = !!this.orderData && this.orderData.groupedOrders ? this.orderData.groupedOrders.length : 0;\r\n }\r\n\r\n // Update the values that are displayed. All data is already pre-loaded. Just paginate in-memory\r\n if(!this.orderData || !this.orderData.groupedOrders || this.orderData.groupedOrders.length < 1) \r\n {\r\n this.ordersToShow = []; \r\n }\r\n else\r\n {\r\n this.ordersToShow = this.orderData.groupedOrders.slice(firstElToShow, lastElToShow);\r\n }\r\n }\r\n\r\n trackBy(index: number, item: Api.CourtOrder) {\r\n return item.orderExpiryDtm;\r\n }\r\n\r\n // When court orders are of type ‘TAO’, ‘CAO’ or ‘TCO’ then do not present a ‘View More’ button.\r\n enableViewMore(courtOrder: Api.CourtOrder)\r\n {\r\n return this.courtOrderService.enableViewMore(courtOrder);\r\n }\r\n\r\n formatShortDate(date: string): string {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('DD/MM/YYYY')\r\n : 'n/a';\r\n }\r\n\r\n nextMilestone(courtOrder: Api.CourtOrder)\r\n {\r\n return this.courtOrderService.getNextMilestone(courtOrder);\r\n }\r\n\r\n isEven(item: Api.GroupedCourtOrders): boolean {\r\n if (!this.orderData) return false;\r\n\r\n let index = this.orderData.groupedOrders.indexOf(item, 0);\r\n\r\n return index % 2 === 0;\r\n }\r\n \r\n // Add or remove the selected court order from the collection of orders that should be open\r\n\r\n // Add or remove the selected court order from the collection of orders that should be open\r\n toggleSelectCourtOrder(order: Api.CourtOrder): void {\r\n let matchedSelectedOrders = this.getMatchingSelectedCourtOrders(order);\r\n if (matchedSelectedOrders && matchedSelectedOrders.length > 0) {\r\n let foundOrder = matchedSelectedOrders[0];\r\n if (foundOrder) {\r\n const index = this.selectedOrders.indexOf(foundOrder, 0);\r\n if (index > -1) {\r\n // Selected and already shown. Close.\r\n this.selectedOrders.splice(index, 1);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n // Selected and not yet shown. Show\r\n if(this.selectedTab === FeatureName.CourtOrders3Months)\r\n {\r\n this.featureLogger.logFeatureUsage(FeatureName.CourtOrders3MonthsShowMore);\r\n }\r\n else\r\n {\r\n this.featureLogger.logFeatureUsage(FeatureName.CourtOrders6MonthsShowMore);\r\n }\r\n this.selectedOrders.push(order);\r\n }\r\n\r\n private subscribeToPersonaChangedNotifications() {\r\n this.personaSwitcherService.enable();\r\n if (!this.personaChangedSubscription) {\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n this.personaSwitcherSelectedUpn = upn; // When persona switcher is de-activated this will be called with a null upn\r\n this.clearSelectedOrders();\r\n this.updatePagedOrdersToShow();\r\n });\r\n }\r\n }\r\n\r\n private clearSelectedOrders() {\r\n this.selectedOrders = [];\r\n }\r\n\r\n isOrderSelected(order: Api.CourtOrder): boolean {\r\n if(!order || !this.selectedOrders) return false;\r\n let matches = this.getMatchingSelectedCourtOrders(order);\r\n return (matches && matches.length > 0);\r\n }\r\n\r\n getMatchingSelectedCourtOrders(order: Api.CourtOrder): Api.CourtOrder[] {\r\n if (!order || !this.selectedOrders) return null;\r\n\r\n let app = this;\r\n return this.selectedOrders.filter(o => app.ordersMatch(o, order));\r\n }\r\n\r\n ordersMatch(orderA: Api.CourtOrder, orderB: Api.CourtOrder): boolean\r\n {\r\n return (orderA.subjectChildId === orderB.subjectChildId \r\n && orderA.orderType === orderB.orderType \r\n && orderA.orderTypeDisplay === orderB.orderTypeDisplay \r\n && orderA.orderExpiryDtm === orderB.orderExpiryDtm);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Name
\r\n
Current Order Type
\r\n
Expiry Date
\r\n
Allocated To
\r\n
Current Step
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Name
\r\n
\r\n \r\n
\r\n {{ order.subjectChildName }}\r\n
\r\n
\r\n
\r\n
\r\n
Current Order Type
\r\n {{ order.orderTypeDisplay }}\r\n
\r\n
\r\n
Expiry Date
\r\n {{\r\n order.orderExpiryDtm ? formatShortDate(order.orderExpiryDtm) : 'n/a'\r\n }}\r\n
\r\n
\r\n
Allocated To
\r\n {{ order.officerName && order.officerName.length > 0 ? order.officerName : 'Me' }}\r\n
\r\n
\r\n
Current Step
\r\n {{ nextMilestone(order) }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n","export * from './court-order.component';\r\nexport * from './court-order-detail/court-order-detail.component';\r\nexport * from './court-order-milestone/court-order-milestone.component';\r\n","import {\r\n Component,\r\n OnDestroy,\r\n HostListener, \r\n ViewChild\r\n} from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Subscription } from 'rxjs';\r\nimport { TabNotificationService } from '../../services/notifications/tab-notification.service';\r\nimport { FocusCheck } from '../shared/FocusCheck';\r\nimport { FeatureLoggerService } from 'services';\r\nimport { HomeVisitsComponent } from './home-visits';\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Component({\r\n selector: 'app-dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent extends FocusCheck implements OnDestroy {\r\n @ViewChild('homeVisitsContainer') homeVisitsContainer: HomeVisitsComponent;\r\n tabNotificationSubscription: Subscription;\r\n \r\n selectedTab: FeatureName = FeatureName.OverdueVisits;\r\n overdueVisits: FeatureName = FeatureName.OverdueVisits;\r\n upcomingVisits: FeatureName = FeatureName.UpcomingVisits;\r\n ordersNextThreeMonths: FeatureName = FeatureName.CourtOrders3Months;\r\n ordersNextSixMonths: FeatureName = FeatureName.CourtOrders6Months;\r\n\r\n courtOrdersToDisplay: Api.SelectedCourtOrderData;\r\n\r\n isVisible: boolean = false;\r\n\r\n get overdueTabSelected(): boolean {\r\n return !this.selectedTab || this.selectedTab === FeatureName.OverdueVisits\r\n }\r\n get upcomingTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.UpcomingVisits\r\n }\r\n get expiryInThreeMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders3Months\r\n }\r\n get expiryInSixMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders6Months\r\n }\r\n\r\n constructor(\r\n private titleService: Title,\r\n private tabNotificationService: TabNotificationService, \r\n private featureLogger: FeatureLoggerService\r\n ) {\r\n super();\r\n this.titleService.setTitle('CS Portal - Dashboard');\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n\r\n this.featureLogger.logFeatureUsage(this.selectedTab);\r\n }\r\n });\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.featureLogger.logFeatureUsage(this.selectedTab);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n selectTab(tab: FeatureName) {\r\n this.tabNotificationService.ChangeSelectedTab(tab);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n\r\n showFilter(evt: Event): void {\r\n this.homeVisitsContainer.showFilter(evt);\r\n }\r\n\r\n public updateCourtOrderDisplay(ordersToDisplay: Api.SelectedCourtOrderData)\r\n {\r\n this.courtOrdersToDisplay = ordersToDisplay;\r\n }\r\n\r\n public updateDashboardVisibility(isVisible: boolean)\r\n {\r\n this.isVisible = isVisible;\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import * as moment from 'moment';\r\nimport { IMyDateModel, IMyDate } from 'angular-mydatepicker';\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { FilterDateRange } from '../../../api/website_enum';\r\n\r\nexport interface MultiChoiceOption {\r\n value: string;\r\n displayName: string;\r\n selected: boolean;\r\n}\r\n\r\nexport class SelectedDateRange {\r\n storagePrefix: string = '';\r\n dateRangeStorageName: string = 'dateRangeEnumValues';\r\n dateRangeType: FilterDateRange;\r\n customDateRange: IMyDateModel;\r\n\r\n constructor(prefix: string) {\r\n this.storagePrefix = prefix;\r\n\r\n this.seedValues.bind(this);\r\n this.setCustomRange.bind(this);\r\n this.setThisMonth.bind(this);\r\n this.setThisWeek.bind(this);\r\n this.effectiveStartDate.bind(this);\r\n this.effectiveEndDate.bind(this);\r\n this.dateFilterChanged.bind(this);\r\n }\r\n\r\n private getDatePickerModelFromDate(date: Date): IMyDate {\r\n if (!date) return null;\r\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\r\n }\r\n\r\n useCustomDateValue() : Boolean \r\n {\r\n return (this.dateRangeType === FilterDateRange.Custom);\r\n }\r\n\r\n haveDateValue() : Boolean \r\n {\r\n if (this.dateRangeType !== FilterDateRange.Custom) {\r\n return true;\r\n }\r\n return !!this.customDateRange && \r\n (\r\n (!!this.customDateRange.isRange && !!this.customDateRange.dateRange && !!this.customDateRange.dateRange.beginDate && this.customDateRange.dateRange.beginDate.year > 0) || \r\n (!this.customDateRange.isRange && !!this.customDateRange.singleDate && !!this.customDateRange.singleDate.date && this.customDateRange.singleDate.date.year > 0)\r\n );\r\n }\r\n\r\n setCustomRange(startDate: Date, endDate: Date) {\r\n this.dateRangeType = FilterDateRange.Custom;\r\n this.customDateRange = {\r\n isRange: true,\r\n dateRange: {\r\n beginDate: this.getDatePickerModelFromDate(startDate),\r\n //beginJsDate: startDate,\r\n endDate: this.getDatePickerModelFromDate(endDate)\r\n //endJsDate: endDate\r\n }/*,\r\n singleDate: {\r\n date: this.getDatePickerModelFromDate(startDate)\r\n }*/\r\n };\r\n }\r\n\r\n setThisWeek() {\r\n this.dateRangeType = FilterDateRange.ThisWeek;\r\n this.customDateRange = null;\r\n }\r\n\r\n setThisMonth() {\r\n this.dateRangeType = FilterDateRange.Next4Weeks;\r\n this.customDateRange = null;\r\n }\r\n\r\n effectiveStartDate(): Date {\r\n if (this.dateRangeType === FilterDateRange.Next4Weeks) {\r\n return moment()\r\n .local()\r\n .startOf('day')\r\n .toDate();\r\n }\r\n\r\n if (this.dateRangeType === FilterDateRange.ThisWeek) {\r\n return moment()\r\n .local()\r\n .startOf('isoWeek')\r\n .toDate();\r\n }\r\n\r\n if(this.customDateRange.dateRange && this.customDateRange.dateRange.beginDate && \r\n this.customDateRange.dateRange.beginDate.year && this.customDateRange.dateRange.beginDate.year > 0)\r\n {\r\n var returnValue = moment(`${this.customDateRange.dateRange.beginDate.year}-${this.customDateRange.dateRange.beginDate.month}-${this.customDateRange.dateRange.beginDate.day}`, \"YYYY-MM-DD\")\r\n .local()\r\n .startOf('day')\r\n .toDate();\r\n return returnValue;\r\n }\r\n\r\n if(!this.customDateRange || !this.customDateRange.dateRange || !this.customDateRange.dateRange.beginJsDate) \r\n {\r\n var response = moment()\r\n .local()\r\n .startOf('day')\r\n .toDate();\r\n\r\n return response;\r\n }\r\n\r\n return this.customDateRange.dateRange.beginJsDate; // This is not present when an invalid date, like with a year of '202' is defined.\r\n }\r\n\r\n effectiveEndDate(): Date {\r\n if (this.dateRangeType === FilterDateRange.Next4Weeks) {\r\n return moment()\r\n .local()\r\n .endOf('day')\r\n .add(4, 'week')\r\n .toDate();\r\n }\r\n\r\n if (this.dateRangeType === FilterDateRange.ThisWeek) {\r\n return moment()\r\n .local()\r\n .endOf('isoWeek')\r\n .toDate();\r\n }\r\n\r\n if(this.customDateRange.dateRange && this.customDateRange.dateRange.endDate && \r\n this.customDateRange.dateRange.endDate.year && this.customDateRange.dateRange.endDate.year > 0)\r\n {\r\n var returnValue = moment(`${this.customDateRange.dateRange.endDate.year}-${this.customDateRange.dateRange.endDate.month}-${this.customDateRange.dateRange.endDate.day}`, \"YYYY-MM-DD\")\r\n .local()\r\n .endOf('day')\r\n .toDate();\r\n return returnValue;\r\n }\r\n\r\n if(!this.customDateRange || !this.customDateRange.dateRange || !this.customDateRange.dateRange.endJsDate) return moment()\r\n .local()\r\n .endOf('day')\r\n .add(4, 'week')\r\n .toDate();\r\n\r\n return this.customDateRange.dateRange.endJsDate;\r\n }\r\n\r\n dateFilterChanged(newSettings: SelectedDateRange)\r\n {\r\n if (this.dateRangeType != newSettings.dateRangeType) {\r\n return true;\r\n }\r\n\r\n var start = this.effectiveStartDate().getTime();\r\n var newStart = newSettings.effectiveStartDate().getTime();\r\n\r\n if (start != newStart || this.effectiveEndDate().getTime() != newSettings.effectiveEndDate().getTime()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // A pipe delimited value containing the date range type and the start and end dates \r\n // where each date is in format: YYYY-MM-DD\r\n seedValues(localStorageService: LocalStorageService, defaultValues: boolean) {\r\n if(defaultValues)\r\n {\r\n this.setThisMonth();\r\n return;\r\n }\r\n\r\n var valuesSet = false;\r\n if(localStorageService.check(this.storagePrefix + this.dateRangeStorageName))\r\n {\r\n var val = localStorageService.get(this.storagePrefix + this.dateRangeStorageName);\r\n if(val && val.indexOf('|') >= 0)\r\n {\r\n var parts = val.split('|');\r\n if(parts && parts.length == 3)\r\n {\r\n this.dateRangeType = parseInt(parts[0]);\r\n if(this.dateRangeType == FilterDateRange.Custom)\r\n {\r\n var start = moment(parts[1], 'YYYY-MM-DD').toDate();\r\n var end = moment(parts[2], 'YYYY-MM-DD').toDate();\r\n this.setCustomRange(start, end);\r\n }\r\n valuesSet = true;\r\n }\r\n }\r\n }\r\n\r\n // There are no values set. Seed to the default 'in the next 4 weeks'.\r\n if(!valuesSet)\r\n {\r\n // Set values\r\n this.dateRangeType = FilterDateRange.Next4Weeks;\r\n this.customDateRange = null;\r\n\r\n // Seed storage key values\r\n this.storeStorageValue(localStorageService);\r\n }\r\n }\r\n\r\n storeStorageValue(localStorageService: LocalStorageService)\r\n {\r\n var storedValue = this.dateRangeType + '|';\r\n if(this.customDateRange == null)\r\n {\r\n storedValue += '|';\r\n }\r\n else\r\n {\r\n var startMoment = (!!this.customDateRange.dateRange.beginJsDate ? moment(this.customDateRange.dateRange.beginJsDate) : false);\r\n var endMoment = (!!this.customDateRange.dateRange.endJsDate ? moment(this.customDateRange.dateRange.endJsDate) : false);\r\n\r\n if(!startMoment && !!this.customDateRange.dateRange.beginDate)\r\n {\r\n startMoment = moment([\r\n this.customDateRange.dateRange.beginDate.year, \r\n this.customDateRange.dateRange.beginDate.month -1, \r\n this.customDateRange.dateRange.beginDate.day\r\n ]);\r\n }\r\n\r\n if(!endMoment && !!this.customDateRange.dateRange.endDate)\r\n {\r\n endMoment = moment([\r\n this.customDateRange.dateRange.endDate.year, \r\n this.customDateRange.dateRange.endDate.month -1, \r\n this.customDateRange.dateRange.endDate.day\r\n ]);\r\n }\r\n\r\n var startStr = !!startMoment ? startMoment.format('YYYY-MM-DD') : '';\r\n var endStr = !!endMoment ? endMoment.format('YYYY-MM-DD') : '';\r\n storedValue += startStr + '|' + endStr;\r\n }\r\n\r\n localStorageService.set(this.storagePrefix + this.dateRangeStorageName, storedValue);\r\n }\r\n}\r\n\r\nexport class ChildNameSearch {\r\n storagePrefix: string = '';\r\n childNameSearchStorageName: string = 'childNameSearch';\r\n childNameSearchValue: string = '';\r\n\r\n constructor(prefix: string) {\r\n this.storagePrefix = prefix;\r\n this.clear.bind(this);\r\n this.getMatchingChildren.bind(this);\r\n this.isEmpty.bind(this);\r\n this.seedValues.bind(this);\r\n }\r\n\r\n getMatchingChildren(homeVisits: Api.ChildHomeVisit[]): Api.ChildHomeVisit[] {\r\n if(!this.childNameSearchValue || this.childNameSearchValue.length <= 0) return homeVisits;\r\n var regex = new RegExp(this.childNameSearchValue, \"i\");\r\n return homeVisits.filter(o => regex.test(o.subjectChildName));\r\n }\r\n\r\n isEmpty() : boolean {\r\n return (!this.childNameSearchValue || this.childNameSearchValue.length < 1);\r\n }\r\n\r\n // When there are is no data stored this will set the child name search key to the empty string.\r\n // When keys are present, this will set the value based on the existing value.\r\n seedValues(localStorageService: LocalStorageService, defaultValues: boolean)\r\n {\r\n if(defaultValues)\r\n {\r\n // Default: Seed everything to selected\r\n this.clear(localStorageService);\r\n }\r\n else\r\n {\r\n if(localStorageService.check(this.storagePrefix + this.childNameSearchStorageName))\r\n {\r\n this.childNameSearchValue = localStorageService.get(this.storagePrefix + this.childNameSearchStorageName);\r\n }\r\n else\r\n {\r\n // Seed value\r\n localStorageService.set(this.storagePrefix + this.childNameSearchStorageName, '');\r\n }\r\n }\r\n }\r\n\r\n clear(localStorageService: LocalStorageService) {\r\n this.childNameSearchValue = '';\r\n this.storeStorageValue(localStorageService);\r\n }\r\n\r\n storeStorageValue(localStorageService: LocalStorageService)\r\n {\r\n localStorageService.set(this.storagePrefix + this.childNameSearchStorageName, this.childNameSearchValue);\r\n }\r\n}\r\n\r\n\r\nexport class MultiChoiceSearch {\r\n storagePrefix: string = '';\r\n referenceName: string; // Example: 'intervention'. Used in storage. eg. 'intervention_'\r\n checkboxOptions: MultiChoiceOption[] = [];\r\n selectedOptions: string[] = [];\r\n sortField: string;\r\n\r\n constructor(referenceNm: string, sortField: string, prefix: string) {\r\n this.storagePrefix = prefix;\r\n this.referenceName = referenceNm;\r\n this.sortField = sortField;\r\n this.selectAll.bind(this);\r\n this.selectNone.bind(this);\r\n this.allSelected.bind(this);\r\n this.noneSelected.bind(this);\r\n this.getOrderedOptions.bind(this);\r\n this.seedValues.bind(this);\r\n this.optionChanged.bind(this);\r\n this.setOptions.bind(this);\r\n this.setSelections.bind(this);\r\n this.setCustomOptions.bind(this);\r\n this.selectAllOptions.bind(this);\r\n }\r\n\r\n selectAllOptions()\r\n {\r\n this.checkboxOptions.forEach(function(option) {\r\n option.selected = true\r\n });\r\n }\r\n\r\n // This can be used when interacting with a Drop Down list\r\n // This will only include selected options and they will always be true\r\n // Set matching values to selected and all others to false.\r\n setSelections(options: string[])\r\n {\r\n if(!options) return;\r\n this.checkboxOptions.forEach(function(option) {\r\n var selectedOption = options.find(x => x == option.displayName);\r\n option.selected = !!selectedOption; // True when not undefined.\r\n });\r\n\r\n this.bindSelectionsForDisplay();\r\n }\r\n\r\n getOrderedOptions(): MultiChoiceOption[] {\r\n return this.checkboxOptions.sort((x: MultiChoiceOption, y: MultiChoiceOption) => {\r\n return x[this.sortField].localeCompare(y[this.sortField]);\r\n });\r\n }\r\n\r\n setCustomOptions(options: MultiChoiceOption[])\r\n {\r\n this.checkboxOptions = options;\r\n this.bindSelectionsForDisplay();\r\n }\r\n \r\n // This should be called when data is retrieved from the backend. It will seed all values to checked.\r\n // Example parameter: 'currentInterventionType'. This is a parameter of the Api.ChildHomeVisit object\r\n setOptions(homeVisits: Api.ChildHomeVisit[], parameter: string, localStorageService: LocalStorageService)\r\n {\r\n // Clear any existing options\r\n this.checkboxOptions = [];\r\n if(!homeVisits || homeVisits.length < 1) return;\r\n var options = [];\r\n var refName = this.referenceName;\r\n var selectionFunction = this.getStoredValue;\r\n var prefix = this.storagePrefix;\r\n homeVisits.forEach(function(visit: Api.ChildHomeVisit) {\r\n var existing = options.find(x => x.displayName == visit[parameter]);\r\n if(!existing || existing == null)\r\n {\r\n options.push({\r\n value: visit[parameter],\r\n displayName: visit[parameter],\r\n selected: selectionFunction(localStorageService, visit[parameter], refName, prefix)\r\n });\r\n }\r\n });\r\n this.checkboxOptions = options;\r\n // Ensure the options are ordered before initial display\r\n this.checkboxOptions = this.getOrderedOptions();\r\n this.bindSelectionsForDisplay();\r\n }\r\n\r\n bindSelectionsForDisplay()\r\n {\r\n // Bind back to form for display purposes\r\n var selections = [];\r\n this.checkboxOptions.forEach(function(option) {\r\n if(option.selected) selections.push(option.value);\r\n });\r\n this.selectedOptions = selections;\r\n }\r\n\r\n // When there are no keys storage this will set all interventionTypes to true and store as individual storage values\r\n // When keys are present for these interventionTypes, this will set the value based on the existing value.\r\n seedValues(localStorageService: LocalStorageService, defaultValues: boolean)\r\n {\r\n if(defaultValues)\r\n {\r\n // Default: Seed everything to selected\r\n this.selectAll(localStorageService);\r\n }\r\n else\r\n {\r\n this.checkboxOptions.forEach(r => {\r\n var storageKeyName = this.storagePrefix + this.referenceName + '_' + r.value;\r\n if(localStorageService.check(storageKeyName))\r\n {\r\n var val = localStorageService.get(storageKeyName);\r\n r.selected = (val && val === 'true');\r\n }\r\n else\r\n {\r\n // Set value\r\n r.selected = true;\r\n \r\n // Seed storage key values\r\n localStorageService.set(storageKeyName, '' + r.selected);\r\n }\r\n });\r\n this.bindSelectionsForDisplay();\r\n }\r\n }\r\n\r\n optionChanged(newOptions: MultiChoiceSearch)\r\n {\r\n if(this.checkboxOptions.length != newOptions.checkboxOptions.length) return true;\r\n for (let r = 0; r < this.checkboxOptions.length; r++) {\r\n const option1 = this.checkboxOptions[r];\r\n const option2 = newOptions.checkboxOptions[r];\r\n if (option1.selected != option2.selected) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n selectAll(localStorageService: LocalStorageService) {\r\n this.checkboxOptions.map(o => (o.selected = true));\r\n this.storeStorageValue(localStorageService);\r\n }\r\n\r\n selectNone(localStorageService: LocalStorageService) {\r\n this.checkboxOptions.map(o => (o.selected = false));\r\n this.storeStorageValue(localStorageService);\r\n }\r\n\r\n allSelected(): boolean {\r\n return this.checkboxOptions.filter(o => o.selected === true).length === this.checkboxOptions.length;\r\n }\r\n\r\n noneSelected(): boolean {\r\n return this.checkboxOptions.filter(o => o.selected === true).length === 0;\r\n }\r\n\r\n getStoredValue(localStorageService: LocalStorageService, displayName: string, referenceName: string, prefix: string): boolean\r\n {\r\n // console.log('MultiChoice. prefix: ' + prefix + '. referenceName: ' + referenceName + '. displayName: ' + displayName);\r\n var response = true;\r\n var storageKeyName = prefix + referenceName + '_' + displayName;\r\n if(localStorageService.check(storageKeyName))\r\n {\r\n var value = localStorageService.get(storageKeyName);\r\n response = (value && value === 'true');\r\n }\r\n return response;\r\n }\r\n\r\n storeStorageValue(localStorageService: LocalStorageService)\r\n {\r\n this.checkboxOptions.forEach(r => {\r\n var storageKeyName = this.referenceName + '_' + r.value;\r\n localStorageService.set(this.storagePrefix + storageKeyName, '' + r.selected);\r\n });\r\n this.bindSelectionsForDisplay();\r\n }\r\n}\r\n\r\n\r\nexport class FilterSettings {\r\n storagePrefix: string = '';\r\n selectedDateRange: SelectedDateRange;\r\n nameSearch: ChildNameSearch;\r\n nameSelect: MultiChoiceSearch;\r\n interventionSelect: MultiChoiceSearch;\r\n visitFrequencySelect: MultiChoiceSearch;\r\n priorityLevels: MultiChoiceSearch;\r\n\r\n constructor(\r\n private localStorageService: LocalStorageService,\r\n public defaultValues: boolean, \r\n public prefix: string\r\n ) {\r\n this.initialiseValues(prefix);\r\n\r\n this.setCustomRange.bind(this);\r\n this.setThisMonth.bind(this);\r\n this.setThisWeek.bind(this);\r\n this.effectiveStartDate.bind(this);\r\n this.effectiveEndDate.bind(this);\r\n this.persistSessionFilterSettings.bind(this);\r\n this.selectAllOptions.bind(this);\r\n }\r\n\r\n selectAllOptions()\r\n {\r\n this.nameSelect.selectAllOptions();\r\n this.interventionSelect.selectAllOptions();\r\n this.visitFrequencySelect.selectAllOptions();\r\n }\r\n\r\n initialiseValues(prefix)\r\n {\r\n if(this.defaultValues)\r\n {\r\n this.localStorageService.deleteAllWithPrefix(prefix);\r\n }\r\n this.priorityLevels = new MultiChoiceSearch('priorityLevel', 'value', prefix);\r\n this.initialisePriorities();\r\n this.priorityLevels.seedValues(this.localStorageService, this.defaultValues);\r\n\r\n this.selectedDateRange = new SelectedDateRange(prefix);\r\n this.selectedDateRange.seedValues(this.localStorageService, this.defaultValues);\r\n\r\n this.nameSearch = new ChildNameSearch(prefix);\r\n this.nameSearch.seedValues(this.localStorageService, this.defaultValues);\r\n\r\n this.nameSelect = new MultiChoiceSearch('subjectChildName', 'displayName', prefix);\r\n this.nameSelect.seedValues(this.localStorageService, this.defaultValues);\r\n\r\n this.interventionSelect = new MultiChoiceSearch('currentInterventionType', 'displayName', prefix);\r\n this.interventionSelect.seedValues(this.localStorageService, this.defaultValues);\r\n\r\n this.visitFrequencySelect = new MultiChoiceSearch('frequency', 'displayName', prefix);\r\n this.visitFrequencySelect.seedValues(this.localStorageService, this.defaultValues);\r\n }\r\n\r\n getPriorityLabel(isHighPriority: boolean, isModeratePriority: boolean) : string \r\n {\r\n if(!!isHighPriority) return 'Red';\r\n if(!!isModeratePriority) return 'Amber';\r\n return 'Normal';\r\n }\r\n\r\n initialisePriorities()\r\n {\r\n // Initialise hard-coded priority values\r\n this.priorityLevels.setCustomOptions([\r\n { value: '1', displayName: 'Normal', selected: true },\r\n { value: '2', displayName: 'Amber', selected: true },\r\n { value: '3', displayName: 'Red', selected: true }\r\n ]);\r\n }\r\n\r\n persistSessionFilterSettings(localStorageService: LocalStorageService)\r\n {\r\n this.selectedDateRange.storeStorageValue(localStorageService);\r\n this.nameSearch.storeStorageValue(localStorageService);\r\n this.nameSelect.storeStorageValue(localStorageService);\r\n this.interventionSelect.storeStorageValue(localStorageService);\r\n this.visitFrequencySelect.storeStorageValue(localStorageService);\r\n this.priorityLevels.storeStorageValue(localStorageService);\r\n }\r\n\r\n hasChanged(newSettings: FilterSettings) {\r\n if(this.dateFilterChanged(newSettings))\r\n {\r\n return true;\r\n }\r\n\r\n return (this.nameSearch.childNameSearchValue != newSettings.nameSearch.childNameSearchValue) || \r\n this.optionsChanged(this.nameSelect, newSettings.nameSelect) || \r\n this.optionsChanged(this.interventionSelect, newSettings.interventionSelect) || \r\n this.optionsChanged(this.visitFrequencySelect, newSettings.visitFrequencySelect) || \r\n this.optionsChanged(this.priorityLevels, newSettings.priorityLevels);\r\n }\r\n\r\n dateFilterChanged(newSettings: FilterSettings)\r\n {\r\n return this.selectedDateRange.dateFilterChanged(newSettings.selectedDateRange);\r\n }\r\n\r\n optionsChanged(currentOptions: MultiChoiceSearch, previousOptions: MultiChoiceSearch)\r\n {\r\n return currentOptions.optionChanged(previousOptions);\r\n }\r\n\r\n requireNewServerData(newSettings: FilterSettings, previousServerSearchStart: Date, previousServerSearchEnd: Date)\r\n {\r\n if(previousServerSearchStart == null || previousServerSearchEnd == null) return false;\r\n\r\n var response = this.dateFilterChanged(newSettings);\r\n if(!response) return false;\r\n\r\n // The dates have changed, but we only need new data if the new dates are outside\r\n // the bounds of the dates used to retrieve data\r\n return (newSettings.effectiveStartDate() < previousServerSearchStart || \r\n newSettings.effectiveEndDate() > previousServerSearchEnd);\r\n }\r\n\r\n setThisWeek() {\r\n this.selectedDateRange.setThisWeek();\r\n }\r\n\r\n setThisMonth() {\r\n this.selectedDateRange.setThisMonth();\r\n }\r\n\r\n setCustomRange(startDate: Date, endDate: Date) {\r\n this.selectedDateRange.setCustomRange(startDate, endDate);\r\n }\r\n\r\n effectiveStartDate(): Date {\r\n return this.selectedDateRange.effectiveStartDate();\r\n }\r\n\r\n effectiveEndDate(): Date {\r\n return this.selectedDateRange.effectiveEndDate();\r\n }\r\n\r\n getDefaultDateRangeTypeAsString() : string {\r\n return 'In the next 4 weeks';\r\n }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges, ChangeDetectionStrategy, ElementRef, ViewChild, AfterViewChecked } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { TaskSubsystemService, RecordChangeDetectionService } from '../../../../services';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\n\r\ninterface AlertCount {\r\n description: string;\r\n count: number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-home-visit-detail',\r\n templateUrl: './home-visit-detail.component.html',\r\n styleUrls: ['./home-visit-detail.component.scss']\r\n})\r\nexport class HomeVisitDetailComponent implements OnChanges, AfterViewChecked {\r\n @Input() shown: boolean;\r\n @Input() homeVisit: Api.ChildHomeVisit;\r\n @Input() isExpanded: boolean;\r\n homeVisitDetail: Api.HomeVisitPersonDetail;\r\n tracker: WorkTracker;\r\n dataLoaded: boolean;\r\n hasError: boolean;\r\n amberAlerts: AlertCount[];\r\n redAlerts: AlertCount[];\r\n @ViewChild('renderArea') renderArea:ElementRef;\r\n @ViewChild('divToResize') divToResize:ElementRef;\r\n @ViewChild('headerRow') headerRow:ElementRef;\r\n @ViewChild('riskArea') riskArea:ElementRef;\r\n renderAreaHeight: number = 0;\r\n heightSet: boolean;\r\n maxDetailsHeight: number = 400;\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n constructor(private taskSubsystem: TaskSubsystemService) {\r\n this.tracker = new WorkTracker(true);\r\n\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['dueDtm', 'currentInterventionType'], \r\n ['id'], 'home-visit-detail'\r\n );\r\n }\r\n\r\n async ngAfterViewChecked(): Promise {\r\n // Only conduct processing when the div is expanded and the height has changed\r\n if(this.isExpanded && this.renderArea && this.renderAreaHeight != this.renderArea.nativeElement.offsetHeight && !this.heightSet)\r\n {\r\n // capture the height of the component. This is the height of the inner home visit div. This is the div with class .details\r\n this.renderAreaHeight = this.renderArea.nativeElement.offsetHeight;\r\n const rowOneHeight = (this.headerRow ? this.headerRow.nativeElement.clientHeight : 0);\r\n\r\n // Only adjust height of the div if the UL rendering is complete and we have not added the associated \r\n // home visit id to our map (heightSet) yet.\r\n if(this.riskArea && this.riskArea != undefined)\r\n {\r\n // Find the ul containing the risks.\r\n const theUlHeight = this.riskArea.nativeElement.clientHeight;\r\n\r\n // The UL is now fully rendered and possibly obscured by and overflowing the surrounding div\r\n\r\n // Prevent infinite loop as the observer will be triggered again for this object\r\n this.heightSet = true;\r\n \r\n // Up to 6 alerts display well without the need to adjust height.\r\n var alertCount = this.getAlertCount();\r\n if(alertCount > 6)\r\n {\r\n // Estimate display height for each alert\r\n var heightPerAlert = theUlHeight / alertCount;\r\n // Derive the estimated 'extra' space required to be added to the surrounding div to show each extra alert\r\n var extra = theUlHeight - (6 * heightPerAlert);\r\n // Remove row-one height. This removes excess spacing.\r\n var heightToSet = this.renderAreaHeight + extra - rowOneHeight;\r\n // Don't exceed the max; artifically set to 400\r\n if(heightToSet > this.maxDetailsHeight) heightToSet = this.maxDetailsHeight;\r\n\r\n // Debugging\r\n //console.log('renderAreaHeight[' + `${this.renderAreaHeight}px` + ']. rowOneHeight[' + `${rowOneHeight}px` + \r\n // ']. theUlHeight[' + `${theUlHeight}px` + ']. alertCount[' + `${alertCount}` + ']. extra[' + `${extra}px` + \r\n // ']. heightToSet[' + `${heightToSet}px` + '].'\r\n //);\r\n\r\n // Set the height\r\n this.divToResize.nativeElement.style.height = `${ heightToSet }px`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if (changes['homeVisit'])\r\n {\r\n this.recordChangeDetectionService.applyNewDataSet([this.homeVisit]);\r\n }\r\n else if (changes['isExpanded'] && changes['isExpanded'].currentValue === true) {\r\n this.hasError = false;\r\n this.dataLoaded = false;\r\n await this.tracker.track(this.getUpcomingVisitDetailFromServer(this.homeVisit.subjectChildId));\r\n }\r\n }\r\n\r\n getAlertCount() : number {\r\n var response = this.amberAlerts != undefined ? this.amberAlerts.length : 0;\r\n response += this.redAlerts != undefined ? this.redAlerts.length : 0;\r\n return response;\r\n }\r\n\r\n formatShortDate(date: string) {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('DD/MM/YYYY')\r\n : 'n/a';\r\n }\r\n\r\n private groupedAlerts(alerts: string[]): AlertCount[] {\r\n if (!alerts) return [];\r\n\r\n let grouped = alerts.reduce((g: any, alert: string) => {\r\n g[alert] = g[alert] || [];\r\n g[alert].push(alert);\r\n return g;\r\n }, {});\r\n\r\n return Object.keys(grouped).map(o => ({ count: grouped[o].length, description: o }));\r\n }\r\n\r\n addressLines(address: string): string[] {\r\n let parts = (address || '').split(',');\r\n let partsLength = parts.length;\r\n if (partsLength === 0) return [];\r\n\r\n return parts.map((o, i) => (i < partsLength - 1) ? `${o},` : `${o}`);\r\n }\r\n\r\n private getUpcomingVisitDetailFromServer(personId: string): Promise {\r\n try {\r\n return this.taskSubsystem.getUpcomingChildHomeVisitDetail(personId).then(result => {\r\n this.hasError = result.hasError;\r\n if (!result.hasError) {\r\n this.homeVisitDetail = result.value;\r\n this.amberAlerts = this.groupedAlerts(result.value.amberAlerts);\r\n this.redAlerts = this.groupedAlerts(result.value.redAlerts);\r\n this.dataLoaded = true;\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n }\r\n }\r\n\r\n showUpdateGraphic(visit: Api.ChildHomeVisit): boolean {\r\n return this.recordChangeDetectionService.showUpdateGraphic(visit);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n Sensitive User\r\n \r\n \r\n
\r\n
Age
\r\n
Next Visit Due
\r\n
Current Intervention Type
\r\n
Current CP Alerts
\r\n
\r\n
\r\n
\r\n
Age
\r\n ***\r\n \r\n {{ homeVisitDetail.age | formatAge }}\r\n \r\n
\r\n
\r\n
Next Visit Due
\r\n {{ formatShortDate(homeVisit.dueDtm) }}\r\n
\r\n
\r\n
Current Intervention Type
\r\n {{ homeVisit.currentInterventionType ? homeVisit.currentInterventionType : 'n/a' }}\r\n
\r\n
\r\n
Current CP Alerts
\r\n ***\r\n \r\n
    \r\n
  • \r\n \r\n {{ alert.description }}\r\n 1\">({{ alert.count }})\r\n
  • \r\n
  • \r\n \r\n {{ alert.description }}\r\n 1\">({{ alert.count }})\r\n
  • \r\n
\r\n No alerts recorded\r\n
\r\n
\r\n
\r\n
\r\n
Indigenous Status
\r\n
Address
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Indigenous Status
\r\n
***
\r\n \r\n
{{ homeVisitDetail.indigenousStatus ? homeVisitDetail.indigenousStatus : 'Unknown' }}
\r\n
\r\n
\r\n
\r\n
Address
\r\n
***
\r\n \r\n
\r\n
{{ addressLine }}
\r\n \r\n
No address recorded
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, ViewChild, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Subscription } from 'rxjs';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { OverdueVisitsComponent } from \"./overdue-visits/overdue-visits.component\";\r\nimport { UpcomingVisitsComponent } from \"./upcoming-visits/upcoming-visits.component\";\r\nimport { TabNotificationService } from '../../../services/notifications';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\n\r\n@Component({\r\n selector: 'app-home-visits',\r\n templateUrl: './home-visits.component.html',\r\n styleUrls: ['./home-visits.component.scss']\r\n})\r\nexport class HomeVisitsComponent extends FocusCheck implements OnInit {\r\n @ViewChild('overdueVisitsContainer') overdueVisitsContainer: OverdueVisitsComponent;\r\n @ViewChild('upcomingVisitsContainer') upcomingVisitsContainer: UpcomingVisitsComponent;\r\n\r\n tabNotificationSubscription: Subscription;\r\n personaChangedSubscription: Subscription;\r\n selectedTab: FeatureName;\r\n @Input() homeVisitData: Api.HomeVisitData;\r\n\r\n get overdueTabSelected(): boolean {\r\n return !this.selectedTab || this.selectedTab === FeatureName.OverdueVisits\r\n }\r\n get upcomingTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.UpcomingVisits\r\n }\r\n\r\n constructor(\r\n private tabNotificationService: TabNotificationService,\r\n private titleService: Title, \r\n private personaSwitcherService: PersonaSwitcherService, \r\n ) {\r\n super();\r\n this.titleService.setTitle('CS Portal - Dashboard');\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n }\r\n });\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n this.overdueVisitsContainer.personaChanged(upn);\r\n this.upcomingVisitsContainer.personaChanged(upn);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n showFilter(evt: Event): void {\r\n if(!!this.overdueTabSelected)\r\n {\r\n this.overdueVisitsContainer.showFilter(evt);\r\n }\r\n else\r\n {\r\n this.upcomingVisitsContainer.showFilter(evt);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","import * as moment from 'moment';\r\nimport { csExpressSettings } from '../../../settings';\r\n\r\n// A utility service to centralise methods common to upcoming and overdue \r\n// Home Visit tasks.\r\nexport class HomeVisitsService {\r\n\r\n \r\n constructor(\r\n ) {\r\n\r\n }\r\n\r\n reduceVisitsToThisMembersVisits(visitData: Api.ChildHomeVisit[], thisMembersUpn: string)\r\n {\r\n // Reduce to visits where the owner name is the empty string (this occurs when this pers on is the Team Leader)\r\n return visitData.filter(o => !o.owner || o.owner.length < 1 || o.owner == thisMembersUpn)\r\n }\r\n\r\n haveStaff(visitData: Api.HomeVisitData): boolean {\r\n if(!visitData || !visitData.visitsLoaded || !visitData.visits) return false;\r\n \r\n var response = false;\r\n visitData.visits.forEach(visit => {\r\n if(!!visit.hasStaff)\r\n {\r\n response = true;\r\n return true;\r\n }\r\n });\r\n return response;\r\n }\r\n\r\n getDestinationPath(item: Api.ChildHomeVisit): string {\r\n if(csExpressSettings.enableDestinationPathReplacement !== true)\r\n {\r\n return item.destinationPath;\r\n }\r\n \r\n if(!this.hasDestinationPath(item)) return '';\r\n let path = item.destinationPath.toLowerCase();\r\n var index = path.indexOf('staging.prod.edc.internal');\r\n if(index >= 0)\r\n {\r\n return item.destinationPath.replace(/staging.prod.edc.internal/i, \"icms.prod.edc.internal\");\r\n }\r\n return item.destinationPath;\r\n }\r\n\r\n hasDestinationPath(item: Api.ChildHomeVisit): boolean {\r\n return item.destinationPath && item.destinationPath.trim().length > 0;\r\n }\r\n\r\n formatShortDate(date: string): string {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('DD/MM/YYYY')\r\n : 'n/a';\r\n }\r\n}","export * from './home-visits.component';\r\nexport * from './home-visit-detail/home-visit-detail.component';\r\n","import { Component, Input, EventEmitter, Output, AfterViewInit, Renderer2, ElementRef, HostListener, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { FilterSettings, MultiChoiceOption, MultiChoiceSearch } from '../../filter-settings';\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { IMyDateModel, IMyDate } from 'angular-mydatepicker';\r\nimport { DateInputComponent } from 'app/shared/date-input/date-input.component';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport * as moment from 'moment';\r\nimport { FilterDateRange, filterDateRangeDescription } from \"api/website_enum\";\r\nimport { ShowPriorityNotifyService } from 'services/notifications';\r\nimport { PriorityIconService } from 'services/priority-icon.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-overdue-filter',\r\n templateUrl: './overdue-filter.component.html',\r\n styleUrls: ['./overdue-filter.component.scss']\r\n})\r\nexport class OverdueFilterComponent implements AfterViewInit, OnInit, OnDestroy {\r\n @ViewChild('customDateRange') customDateRange: DateInputComponent;\r\n\r\n storagePrefix: string = 'overdue-visits';\r\n\r\n @Input() visible: boolean;\r\n @Output() filterClosed: EventEmitter = new EventEmitter();\r\n nativeElement: HTMLElement;\r\n instigatingButtonRect: ClientRect;\r\n formModel: FilterSettings;\r\n showBaseFilters: Boolean;\r\n\r\n disableUntil: IMyDate;\r\n private largeView: boolean;\r\n selectAllTooltip: string;\r\n allChildrenAreSelected: boolean;\r\n noChildName: boolean;\r\n clearChildNameTooltip: string;\r\n externalClicksCanCloseFilter: boolean = false;\r\n\r\n showPrioritySubscription: Subscription;\r\n displayPriorityColours: boolean = true;\r\n priorityColoursAreGloballyDisabled: boolean = false;\r\n\r\n constructor(\r\n private elementRef: ElementRef, \r\n private renderer: Renderer2, \r\n private localStorageService: LocalStorageService, \r\n private showPriorityNotifyService: ShowPriorityNotifyService, \r\n private priorityIconService: PriorityIconService,\r\n private personaSwitcherService: PersonaSwitcherService\r\n ) {\r\n this.disableUntil = { year: moment().year(), month: moment().month() + 1, day: moment().date() -1 };\r\n let personaUpn = this.personaSwitcherService.getPersonaUpn();\r\n personaUpn = !!personaUpn && personaUpn.length > 0 ? '_' + personaUpn : '';\r\n this.formModel = new FilterSettings(localStorageService, false, this.storagePrefix + personaUpn);\r\n this.nativeElement = this.elementRef.nativeElement;\r\n this.showBaseFilters = true;\r\n this.selectAllTooltip = '';\r\n this.allChildrenAreSelected = true;\r\n this.noChildName = true;\r\n this.clearChildNameTooltip = '';\r\n this.displayPriorityColours = this.priorityIconService.priorityIconFeatureIsEnabled();\r\n this.priorityColoursAreGloballyDisabled = this.priorityIconService.priorityIsGloballyDisabled();\r\n\r\n this.subscribeToPriorityNotifications();\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onPageClick(targetElement) {\r\n // Initially clicking the 'filter' button should not instantly re-close it.\r\n if(targetElement.id == 'filter' && !this.externalClicksCanCloseFilter) \r\n {\r\n // Subsequent clicks can close the filter.\r\n this.externalClicksCanCloseFilter = true;\r\n return;\r\n }\r\n\r\n // If the person has clicked the 'filter' button now but we are in small mode, do not close the filter\r\n if(!this.largeView)\r\n {\r\n return;\r\n }\r\n\r\n if(!this.externalClicksCanCloseFilter || !this.visible) return;\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.cancel();\r\n }\r\n }\r\n\r\n public get next4Weeks(): number {\r\n return FilterDateRange.Next4Weeks; \r\n }\r\n\r\n public get next4WeeksDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.Next4Weeks); \r\n }\r\n\r\n public get thisWeek(): number {\r\n return FilterDateRange.ThisWeek; \r\n }\r\n\r\n public get thisWeekDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.ThisWeek); \r\n }\r\n\r\n public get custom(): number {\r\n return FilterDateRange.Custom; \r\n }\r\n\r\n public get customDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.Custom); \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setFilterPositionUnderneathFilterButton();\r\n\r\n this.nativeElement.getElementsByTagName(\"input\")[0].focus();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.largeView = window.innerWidth >= 900;\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.showPrioritySubscription) {\r\n this.showPrioritySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.largeView = window.innerWidth >= 900;\r\n }\r\n\r\n open(instigatingButtonRect: ClientRect) {\r\n this.instigatingButtonRect = instigatingButtonRect;\r\n }\r\n\r\n toggleFilters() {\r\n this.showBaseFilters = !this.showBaseFilters;\r\n }\r\n\r\n dataLoaded() {\r\n this.synchroniseChildNameValues();\r\n this.synchroniseChildNameSelectionValues();\r\n this.visible = true;\r\n }\r\n\r\n updateDisplayPriorityColours(showColoursFilter: boolean)\r\n {\r\n this.displayPriorityColours = showColoursFilter;\r\n }\r\n \r\n clear(form: NgForm) {\r\n form.reset();\r\n this.formModel.defaultValues = true;\r\n this.formModel.initialiseValues(this.storagePrefix);\r\n this.hideFilter(true);\r\n }\r\n\r\n cancel() {\r\n this.formModel.defaultValues = false;\r\n this.hideFilter(false); \r\n }\r\n\r\n apply(form: NgForm) {\r\n this.formModel.defaultValues = false;\r\n if (!this.formIsValid(form) || \r\n (\r\n this.formModel.selectedDateRange.useCustomDateValue() && (!this.formModel.selectedDateRange.haveDateValue() || !this.customDateRange.valueValid)\r\n )\r\n ) \r\n {\r\n this.customDateRange.setValueValidFalse();\r\n return false;\r\n }\r\n\r\n // Persist current values to storage\r\n this.formModel.persistSessionFilterSettings(this.localStorageService);\r\n\r\n this.hideFilter(true);\r\n return true;\r\n }\r\n\r\n rangeTypeChanged() {\r\n this.customDateRange.clearDateInput((this.formModel.selectedDateRange.dateRangeType === FilterDateRange.Custom));\r\n }\r\n\r\n filterSettingsDateChanged(newDateRange: IMyDateModel)\r\n {\r\n this.formModel.selectedDateRange.customDateRange = newDateRange;\r\n }\r\n\r\n // This prevents a person from de-selecting the last option\r\n selectionChanged(filter: MultiChoiceSearch, option: MultiChoiceOption, event: Event) {\r\n if (filter.noneSelected()) {\r\n option.selected = true;\r\n (event.target).checked = true;\r\n }\r\n }\r\n\r\n private subscribeToPriorityNotifications() {\r\n if (!this.showPrioritySubscription) {\r\n this.showPrioritySubscription = this.showPriorityNotifyService.showPrioritiesChanged.subscribe(async (show) => {\r\n this.displayPriorityColours = show;\r\n });\r\n }\r\n }\r\n\r\n // #region Child Name Select List\r\n\r\n childNameSelectionChanged(options: string[], event: Event) {\r\n this.formModel.nameSelect.setSelections(options);\r\n this.synchroniseChildNameSelectionValues();\r\n }\r\n\r\n clearChildrenNamesFilter() {\r\n this.formModel.nameSelect.selectAll(this.localStorageService);\r\n this.synchroniseChildNameSelectionValues();\r\n }\r\n synchroniseChildNameSelectionValues() {\r\n if(this.formModel.nameSelect.checkboxOptions.length != this.formModel.nameSelect.selectedOptions.length)\r\n {\r\n this.selectAllTooltip = 'Remove Child Name Filter';\r\n this.allChildrenAreSelected = false;\r\n } else {\r\n this.selectAllTooltip = '';\r\n this.allChildrenAreSelected = true;\r\n }\r\n }\r\n \r\n // #endregion Child Name Select List\r\n\r\n // #region Child Name Select List\r\n\r\n childNameSearchChanged(value: string, event: Event)\r\n {\r\n this.formModel.nameSearch.childNameSearchValue = value;\r\n this.synchroniseChildNameValues();\r\n }\r\n\r\n clearChildNameFilter() {\r\n this.formModel.nameSearch.clear(this.localStorageService);\r\n this.synchroniseChildNameValues();\r\n }\r\n\r\n synchroniseChildNameValues() {\r\n if(!!this.formModel.nameSearch && !!this.formModel.nameSearch.childNameSearchValue && this.formModel.nameSearch.childNameSearchValue.length > 0)\r\n {\r\n this.selectAllTooltip = 'Remove Child Name Filter';\r\n this.noChildName = false;\r\n } else {\r\n this.selectAllTooltip = '';\r\n this.noChildName = true;\r\n }\r\n }\r\n\r\n // #endregion Child Name Select List\r\n\r\n formIsValid(form: NgForm) {\r\n return form.valid;\r\n }\r\n\r\n hideFilter(useNewFilters: boolean) {\r\n this.visible = false;\r\n\r\n if(!!this.filterClosed.observers && this.filterClosed.observers.length > 0)\r\n {\r\n this.filterClosed.emit(useNewFilters);\r\n }\r\n }\r\n\r\n setFilterPositionUnderneathFilterButton() {\r\n let filterHost = this.nativeElement;\r\n\r\n let x = this.instigatingButtonRect.left; // - 22.5\r\n\r\n const agent = window.navigator.userAgent.toLowerCase();\r\n var isIE = (agent.indexOf('trident') > -1);\r\n\r\n if (document.documentElement.clientWidth >= 900) {\r\n x = this.instigatingButtonRect.left + this.instigatingButtonRect.width - filterHost.offsetWidth;\r\n if(!isIE)\r\n {\r\n this.renderer.setStyle(filterHost, 'left', `${x}px`);\r\n }\r\n else\r\n {\r\n x = (this.instigatingButtonRect.width / 3) + 2;\r\n this.renderer.setStyle(filterHost, 'right', `${x}px`);\r\n }\r\n }\r\n \r\n // -----------------------------------------------------------\r\n // Set y position of filter. Page width > 900\r\n // -----------------------------------------------------------\r\n let y = 0;\r\n if(document.documentElement.clientWidth > 900 && !isIE)\r\n {\r\n y = this.instigatingButtonRect.top + this.instigatingButtonRect.height + window.pageYOffset + 15;\r\n }\r\n else if(document.documentElement.clientWidth > 900 && isIE)\r\n {\r\n y = (this.instigatingButtonRect.height * 2) + 10;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n // Set y position of filter. Page width <= 900\r\n // -----------------------------------------------------------\r\n if(document.documentElement.clientWidth <= 900)\r\n {\r\n if(window.pageYOffset < 290) {\r\n y = 197;\r\n }\r\n else\r\n {\r\n y = 197 + window.pageYOffset - 290;\r\n }\r\n }\r\n this.renderer.setStyle(filterHost, 'top', `${y}px`);\r\n\r\n // console.log('this.instigatingButtonRect.top: ' + this.instigatingButtonRect.top + '. this.instigatingButtonRect.height: ' + this.instigatingButtonRect.height + '. window.pageYOffset: ' + window.pageYOffset + '. Result.top: ' + y);\r\n // console.log('this.instigatingButtonRect.left: ' + this.instigatingButtonRect.left + '. this.instigatingButtonRect.width: ' + this.instigatingButtonRect.width + '. filterHost.offsetWidth: ' + filterHost.offsetWidth + '. Result.left: ' + x);\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: Event): void {\r\n this.cancel();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Select Children\r\n
\r\n
\r\n \r\n Select All\r\n
\r\n
\r\n
\r\n
\r\n Priority Level\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

You have disabled this feature

\r\n
\r\n
\r\n
\r\n Visit Frequency\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Child's Name\r\n
\r\n
\r\n
\r\n \r\n
\r\n Clear Filter\r\n
\r\n
\r\n
\r\n
\r\n Intervention type\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n Visit Frequency\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n \r\n
\r\n Priority Level\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

You have disabled this feature

\r\n
\r\n
\r\n \r\n
\r\n Select Children\r\n
\r\n
\r\n \r\n Select All\r\n
\r\n
\r\n \r\n
\r\n Child's Name\r\n
\r\n
\r\n
\r\n \r\n
\r\n Clear Filter\r\n
\r\n
\r\n \r\n
\r\n Intervention type\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n Visit Frequency\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit, OnDestroy, HostListener, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ComponentFactory } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { UserInfoService } from '../../../../services/user-info.service';\r\nimport { homeVisitsSettings } from '../../../../settings';\r\nimport { TaskSubsystemService } from '../../../../services/api/task-subsystem.service';\r\nimport { FilterSettings, MultiChoiceSearch } from '../filter-settings';\r\nimport { interval as observableInterval, Subscription } from 'rxjs';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService, FeatureLoggerService, RecordChangeDetectionService } from 'services';\r\nimport { FocusCheck } from '../../../shared/FocusCheck';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { HomeVisitOverdueCountNotifyService, ShowPriorityNotifyService, PromiseNotifyService } from '../../../../services/notifications';\r\nimport { FilterDateRange } from \"api/website_enum\";\r\nimport { HomeVisitsService } from \"../home-visits.service\";\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { OverdueFilterComponent } from './overdue-filter/overdue-filter.component';\r\nimport { HomeVisitFilterService } from '../../../../services/home-visit-filter.service';\r\nimport { PriorityIconService } from 'services/priority-icon.service';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-overdue-visits',\r\n templateUrl: './overdue-visits.component.html',\r\n styleUrls: ['./overdue-visits.component.scss']\r\n})\r\nexport class OverdueVisitsComponent extends FocusCheck implements OnInit, OnDestroy {\r\n storagePrefix: string = 'overdue-visits';\r\n\r\n filterComponent: ComponentRef;\r\n\r\n overdueVisitData: Api.HomeVisitData;\r\n pagedVisitsToShow: Api.ChildHomeVisit[];\r\n\r\n // This is either all data, or the visits that have been filtered to be shown\r\n visitsToShow: Api.ChildHomeVisit[] = [];\r\n\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n officersUpn: string = '';\r\n\r\n tracker: WorkTracker;\r\n intervalSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n showPrioritySubscription: Subscription;\r\n filterSettings: FilterSettings;\r\n filterSettingsBackupWhileMasqueruading: FilterSettings;\r\n previousUpn: string;\r\n tabNotificationSubscription: Subscription;\r\n\r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n refreshIntervalInMilliseconds: number;\r\n\r\n displayPriorityColours: boolean = true;\r\n\r\n // Pagination settings\r\n currentPage: number = 0;\r\n pageSize: number = 10; // This is communicated from the pagination component\r\n overdueVisitCount: number = 0;\r\n homeVisitsStyle: string = 'home-visits';\r\n\r\n constructor(\r\n private userInfoService: UserInfoService, \r\n private titleService: Title,\r\n private taskSubsystem: TaskSubsystemService,\r\n private idleDetectionService: IdleDetectionService,\r\n private featureLogger: FeatureLoggerService,\r\n private homeVisitOverdueCountNotifyService: HomeVisitOverdueCountNotifyService, \r\n private homeVisitsService: HomeVisitsService,\r\n private showPriorityNotifyService: ShowPriorityNotifyService, \r\n private priorityIconService: PriorityIconService, \r\n private container: ViewContainerRef, \r\n private localStorageService: LocalStorageService,\r\n private componentResolver: ComponentFactoryResolver, \r\n private homeVisitFilterService: HomeVisitFilterService, \r\n private promiseNotifyService: PromiseNotifyService\r\n ) {\r\n super();\r\n this.refreshIntervalInMilliseconds = homeVisitsSettings.refreshIntervalInSeconds * 1000;\r\n this.officersUpn = userInfoService.upn();\r\n this.overdueVisitData = {\r\n visitsHasError: false,\r\n visitsLoaded: false,\r\n visits: [],\r\n isUpcoming: false\r\n };\r\n this.tracker = new WorkTracker(true);\r\n this.filterSettings = new FilterSettings(this.localStorageService, false, this.storagePrefix);\r\n\r\n this.titleService.setTitle('CS Portal - Dashboard');\r\n this.pagedVisitsToShow = [];\r\n\r\n this.subscribeToPriorityNotifications();\r\n this.displayPriorityColours = this.priorityIconService.priorityIconFeatureIsEnabled();\r\n\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['dueDtm', 'currentLocationType', 'frequency', 'ownerName'], \r\n ['id'], 'overdue-visits'\r\n );\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n\r\n let overdueVisitsPromise = this.loadData();\r\n\r\n await this.tracker.track(\r\n overdueVisitsPromise.then(() => {\r\n this.updatePagedVisitsToShow();\r\n\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n overdueVisitsPromise = this.loadData();\r\n\r\n // Inform the hero component to allow it to display 'loading' imagery\r\n await this.tracker.track(overdueVisitsPromise);\r\n this.updatePagedVisitsToShow();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n\r\n // Initialise the 'previousUpn' to this members actual upn. This is used \r\n // to manage filter settings when masquerading and particularly when \r\n // swapping between more than one other persona before returning to this \r\n // member's profile.\r\n this.previousUpn = this.officersUpn;\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n if (this.showPrioritySubscription) {\r\n this.showPrioritySubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n \r\n this.destroyFilterComponent();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n onPageChangedEvent(pageNumber: number)\r\n {\r\n this.currentPage = pageNumber;\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n onPageSizeChangedEvent(pageSize: number)\r\n {\r\n this.pageSize = pageSize;\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n updatePagedVisitsToShow()\r\n {\r\n var firstElToShow = this.pageSize * this.currentPage;\r\n var lastElToShow = firstElToShow + this.pageSize;\r\n\r\n // Update the values that are displayed. All data is already pre-loaded. Just paginate in-memory\r\n setTimeout(() => {\r\n if(!this.visitsToShow || this.visitsToShow.length < 1) \r\n {\r\n this.pagedVisitsToShow = []; \r\n }\r\n else\r\n {\r\n this.pagedVisitsToShow = this.visitsToShow.slice(firstElToShow, lastElToShow);\r\n }\r\n });\r\n }\r\n\r\n showUpdateGraphic(visit: Api.ChildHomeVisit): boolean {\r\n var response = this.recordChangeDetectionService.showUpdateGraphic(visit);\r\n if(!response || response == undefined) return false;\r\n return response;\r\n }\r\n\r\n trackBy(index: number, item: Api.ChildHomeVisit) {\r\n return item.id;\r\n }\r\n\r\n async loadData() {\r\n var promise = this.loadTheData();\r\n this.promiseNotifyService.TrackThisPromise({ \r\n visitType: this.storagePrefix,\r\n thePromise: promise\r\n });\r\n return promise;\r\n }\r\n\r\n async loadTheData() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n return await Promise.all([\r\n this.getOverdueVisitsFromServer()\r\n ]);\r\n }\r\n\r\n private getOverdueVisitsFromServer(): Promise {\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n this.overdueVisitData.visitsLoaded = false;\r\n\r\n // Due to the issue of filters and needing to display filtered counts in the summary tiles, we need to retrieve all data\r\n // The alternative would be server-side filtering and that would result in terrible performance\r\n // return this.taskSubsystem.getOverdueChildHomeVisits('' + this.currentPage, '10').then(result => {\r\n return this.taskSubsystem.getOverdueChildHomeVisits('0', '10000').then(result => {\r\n this.overdueVisitData.visitsHasError = result.hasError;\r\n if (result.hasError) {\r\n this.overdueVisitData.visits = [];\r\n this.overdueVisitCount = 0;\r\n this.notifySummaryOfCountData(0, true, FilterDateRange.Next4Weeks);\r\n } else {\r\n this.overdueVisitData.visits = result.value;\r\n\r\n this.applyOverdueHomeVisitsFilters();\r\n }\r\n this.overdueVisitData.visitsLoaded = true;\r\n this.recordChangeDetectionService.applyNewDataSet(this.overdueVisitData.visits);\r\n });\r\n } catch (error) {\r\n this.overdueVisitData.visitsHasError = true;\r\n this.overdueVisitData.visitsLoaded = true;\r\n this.overdueVisitData.visits = [];\r\n this.overdueVisitCount = 0;\r\n this.notifySummaryOfCountData(0, true, FilterDateRange.Next4Weeks);\r\n }\r\n }\r\n\r\n private notifySummaryOfCountData(recordCount: number, hasError: boolean, dateRangeType: FilterDateRange)\r\n {\r\n this.homeVisitOverdueCountNotifyService.ChangeHomeVisitCounts({\r\n recordCount: recordCount,\r\n hasError: hasError, \r\n dateRangeType: dateRangeType\r\n });\r\n }\r\n\r\n public async personaChanged(upn: string) \r\n {\r\n if(this.filterComponent && this.filterComponent.instance)\r\n {\r\n this.filterComponent.instance.hideFilter(false);\r\n }\r\n\r\n // We are commencing impersonation\r\n if(!!upn && upn.length > 0)\r\n {\r\n // When the T/L or Manager masquerades as one member then immediately another, \r\n // this check will not pass. This is good as it ensures we retain the T/Ls settings in backup.\r\n if(this.previousUpn == this.officersUpn)\r\n {\r\n // Backup this member's filter settings\r\n this.filterSettingsBackupWhileMasqueruading = this.filterSettings;\r\n }\r\n this.previousUpn = upn;\r\n\r\n // Create a new filter settings for use as this impersonated staff member\r\n let personaUpn = !!upn && upn.length > 0 ? '_' + upn : '';\r\n this.filterSettings = new FilterSettings(this.localStorageService, true, this.storagePrefix + personaUpn);\r\n }\r\n else\r\n {\r\n // We are ceasing impersonation\r\n // Restore this member's filter settings\r\n this.filterSettings = this.filterSettingsBackupWhileMasqueruading;\r\n this.previousUpn = this.officersUpn;\r\n }\r\n\r\n let overdueVisitsPromise = this.loadData();\r\n var vm = this;\r\n await this.tracker.track(\r\n overdueVisitsPromise.then(() => {\r\n if(!!vm.filterComponent && !!vm.filterComponent.instance && !!vm.filterComponent.instance.formModel)\r\n {\r\n // Before 'closing the filter' we should set the filter to the previous settings so they are immediately applied.\r\n vm.filterComponent.instance.formModel = vm.filterSettings;\r\n }\r\n\r\n vm.handleFilterClosed(true);\r\n })\r\n );\r\n }\r\n\r\n private subscribeToPriorityNotifications() {\r\n if (!this.showPrioritySubscription) {\r\n this.showPrioritySubscription = this.showPriorityNotifyService.showPrioritiesChanged.subscribe(async (show) => {\r\n this.displayPriorityColours = show;\r\n });\r\n }\r\n }\r\n\r\n priorityTitle(homeVisit: Api.ChildHomeVisit) : string \r\n {\r\n if(homeVisit.isOverdueWithHighPriority || homeVisit.isOverdueWithModeratePriority)\r\n {\r\n var currentTime = moment();\r\n var lastVisit = !!homeVisit.lastVisitDtm ? moment(homeVisit.lastVisitDtm, 'YYYY-MM-DD') : moment(homeVisit.homeVisitStateAnchorDtm, 'YYYY-MM-DD');\r\n var ageInDays = currentTime.diff(lastVisit, 'days');\r\n if(!!homeVisit.lastVisitDtm)\r\n {\r\n return `${ageInDays} days since last prescribed home visit`;\r\n }\r\n else\r\n {\r\n return `${ageInDays} days since the OI event was created (no Prescribed Home Visit case note recorded)`;\r\n }\r\n }\r\n return 'On track';\r\n }\r\n\r\n weAreMasquerading() : boolean {\r\n return !!this.previousUpn && this.previousUpn != this.officersUpn;\r\n }\r\n\r\n haveStaff(): boolean {\r\n if(!!this.weAreMasquerading())\r\n {\r\n // We are masquerading. Even if masquerading as a team leader, return false\r\n return false;\r\n }\r\n\r\n return this.homeVisitsService.haveStaff(this.overdueVisitData);\r\n }\r\n\r\n isEven(item: Api.ChildHomeVisit): boolean {\r\n if (!this.visitsToShow) return false;\r\n\r\n let index = this.visitsToShow.indexOf(item, 0);\r\n\r\n return index % 2 === 0;\r\n }\r\n\r\n logCaseNoteFeature()\r\n {\r\n this.featureLogger.logFeatureUsage(FeatureName.CaseNote);\r\n }\r\n\r\n formatShortDate(date: string): string {\r\n return this.homeVisitsService.formatShortDate(date);\r\n }\r\n\r\n getDestinationPath(item: Api.ChildHomeVisit): string {\r\n return this.homeVisitsService.getDestinationPath(item);\r\n }\r\n\r\n hasDestinationPath(item: Api.ChildHomeVisit): boolean {\r\n return this.homeVisitsService.hasDestinationPath(item);\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return !this.overdueVisitData.visitsLoaded || (!this.userIsIdle && this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n // #startregion - Filter\r\n filterAlreadyShown: boolean = false;\r\n showFilter(evt: Event): void {\r\n if(!!this.filterAlreadyShown) return;\r\n let filterButtonClientRect = (evt.currentTarget).getBoundingClientRect();\r\n\r\n this.createFilterComponent();\r\n this.filterComponent.instance.filterClosed.subscribe(this.handleFilterClosed.bind(this));\r\n this.filterComponent.instance.open(filterButtonClientRect);\r\n this.seedFilterValues(this.filterComponent.instance.formModel);\r\n this.filterComponent.instance.dataLoaded();\r\n this.filterComponent.instance.updateDisplayPriorityColours(this.displayPriorityColours);\r\n this.filterAlreadyShown = true;\r\n }\r\n\r\n // This is called after the filter is closed\r\n hasChanged(previousSettings: FilterSettings, newSettings: FilterSettings): boolean {\r\n return previousSettings.hasChanged(newSettings);\r\n }\r\n\r\n async handleFilterClosed(useNewFilters: boolean) {\r\n this.filterAlreadyShown = false;\r\n var previousSettings = this.filterSettings;\r\n\r\n // Update local settings by re-reading from storage\r\n var newSettings = !!useNewFilters && this.filterComponent && this.filterComponent.instance ? this.filterComponent.instance.formModel : previousSettings;\r\n\r\n // Before updating settings with these possibly new values by calling 'updateFilter'\r\n // determine whether the values have changed and whether we require new data from the API server\r\n let hasChanged = this.hasChanged(previousSettings, newSettings);\r\n let requireNewData = !!hasChanged && !!previousSettings.requireNewServerData(newSettings, null, null);\r\n\r\n // Update our knowledge of the settings; required by the ui\r\n this.filterSettings = newSettings;\r\n\r\n this.destroyFilterComponent();\r\n\r\n if(!!useNewFilters)\r\n {\r\n this.applyOverdueHomeVisitsFilters();\r\n\r\n // Limit hits to the server when we know the filter was an in-memory one only\r\n if(requireNewData)\r\n {\r\n let upcomingVisitsPromise = this.loadData();\r\n await this.tracker.track(upcomingVisitsPromise);\r\n }\r\n } else {\r\n // We need to restore the local storage to the previous values before ending\r\n previousSettings.persistSessionFilterSettings(this.localStorageService);\r\n }\r\n\r\n // Update UI\r\n window.scrollTo(0, 0);\r\n let element = document.getElementById('filter');\r\n if(!!element) element.focus();\r\n }\r\n\r\n // Update the collection from the previous server retrieval based on the name search filter\r\n // This will first reduce the upcomingHomeVisits collection and set on upcomingHomeVisitsFiltered\r\n // It will then further reduce this filtered collection by applying the set of defined filters.\r\n applyOverdueHomeVisitsFilters()\r\n {\r\n // If we retrieve data, for example after tabbing back to the Dashboard, the FilterComponent \r\n // will not exist. We use the local filterSettings. But, these may not have the selection \r\n // items initialised. So, even though prior selections are saved in local storage, we require \r\n // these collections to be initialised for 'filtering' to be applied correctly. Re-seed if required.\r\n if(!this.filterSettings.nameSelect.checkboxOptions || \r\n this.filterSettings.nameSelect.checkboxOptions.length < 1)\r\n {\r\n this.seedFilterValues(this.filterSettings);\r\n }\r\n\r\n // Get the latest filter settings\r\n this.visitsToShow = this.homeVisitFilterService.filterVisitsToShow(this.filterSettings, this.overdueVisitData.visits);\r\n\r\n // If we are masquerading apply a final filter to just show visits assigned to the selected member\r\n if(!!this.weAreMasquerading())\r\n {\r\n // Reduce to visits where the owner name is the empty string (this occurs when this person is the Team Leader)\r\n this.visitsToShow = this.homeVisitsService.reduceVisitsToThisMembersVisits(this.visitsToShow, this.previousUpn);\r\n }\r\n\r\n this.overdueVisitCount = (!!this.visitsToShow ? this.visitsToShow.length : 0);\r\n\r\n this.notifySummaryOfCountData(this.overdueVisitCount, false, this.filterSettings.selectedDateRange.dateRangeType);\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n formatDateForFilterRange(date: Date): string {\r\n return this.homeVisitFilterService.formatDateForFilterRange(date);\r\n }\r\n\r\n getFilterDescription(options: MultiChoiceSearch, prefix: string): string {\r\n return this.homeVisitFilterService.getFilterDescription(options, prefix);\r\n }\r\n\r\n getChildNameFilterDescription(prefix: string) : string {\r\n return this.homeVisitFilterService.getChildNameFilterDescription(this.filterSettings, prefix);\r\n }\r\n\r\n createFilterComponent() {\r\n this.container.clear();\r\n const filterComponentFactory: ComponentFactory = this.componentResolver.resolveComponentFactory(OverdueFilterComponent);\r\n this.filterComponent = this.container.createComponent(filterComponentFactory);\r\n }\r\n\r\n showFilterIcon() : boolean {\r\n return !this.filterSettings.priorityLevels.allSelected() || \r\n !this.filterSettings.interventionSelect.allSelected() || \r\n !this.filterSettings.visitFrequencySelect.allSelected() || \r\n !this.filterSettings.nameSelect.allSelected() || \r\n !this.filterSettings.nameSearch.isEmpty();\r\n }\r\n\r\n seedFilterValues(settings: FilterSettings)\r\n {\r\n // Initialise the collection of child names. This is only changed on data retrieval\r\n settings.nameSelect.setOptions(this.overdueVisitData.visits, 'subjectChildName', this.localStorageService);\r\n\r\n // Initialise the collection of intervention types. This is only changed on data retrieval\r\n settings.interventionSelect.setOptions(this.overdueVisitData.visits, 'currentInterventionType', this.localStorageService);\r\n\r\n // Initialise the collection of home visit types. This is only changed on data retrieval\r\n settings.visitFrequencySelect.setOptions(this.overdueVisitData.visits, 'frequency', this.localStorageService);\r\n }\r\n\r\n destroyFilterComponent() {\r\n if (this.container) {\r\n this.container.clear();\r\n }\r\n\r\n if (this.filterComponent) {\r\n this.filterComponent.instance.filterClosed.unsubscribe();\r\n this.filterComponent.destroy();\r\n }\r\n }\r\n\r\n // #endregion - Filter\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ getFilterDescription(this.filterSettings.priorityLevels, 'Priority Levels: ') }} \r\n {{ getFilterDescription(this.filterSettings.interventionSelect, 'Interventions: ') }} \r\n {{ getFilterDescription(this.filterSettings.visitFrequencySelect, 'Frequency: ') }} \r\n {{ getFilterDescription(this.filterSettings.nameSelect, 'Children: ') }} \r\n {{ getChildNameFilterDescription('Child: ') }} \r\n
\r\n Ordered by next visit due date\r\n
\r\n
\r\n
\r\n
Name
\r\n
 
\r\n
Overdue Date
\r\n
Current Location Type
\r\n
Visit Frequency *
\r\n
Allocated To
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
Name
\r\n
\r\n \r\n
\r\n {{ homeVisit.subjectChildName }}\r\n {{ homeVisit.subjectChildName }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Overdue Date
\r\n {{ formatShortDate(homeVisit.dueDtm) }}\r\n
\r\n
\r\n
Current Location Type
\r\n
{{ homeVisit.currentLocationType }}
\r\n
\r\n
\r\n
Visit Frequency
\r\n
{{ homeVisit.frequency }} *
\r\n
\r\n
\r\n
Allocated To
\r\n {{ homeVisit.ownerName && homeVisit.ownerName.length > 0 ? homeVisit.ownerName : 'Me' }}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Component, Input, EventEmitter, Output, AfterViewInit, Renderer2, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { FilterSettings, MultiChoiceOption, MultiChoiceSearch } from '../../filter-settings';\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { IMyDateModel, IMyDate } from 'angular-mydatepicker';\r\nimport { DateInputComponent } from '../../../../shared/date-input/date-input.component';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport * as moment from 'moment';\r\nimport { FilterDateRange, filterDateRangeDescription } from \"api/website_enum\";\r\n\r\n@Component({\r\n selector: 'app-upcoming-filter',\r\n templateUrl: './upcoming-filter.component.html',\r\n styleUrls: ['./upcoming-filter.component.scss']\r\n})\r\nexport class UpcomingFilterComponent implements AfterViewInit, OnInit {\r\n @ViewChild('customDateRange') customDateRange: DateInputComponent;\r\n\r\n storagePrefix: string = 'upcoming-visits';\r\n\r\n @Input() visible: boolean;\r\n @Output() filterClosed: EventEmitter = new EventEmitter();\r\n nativeElement: HTMLElement;\r\n instigatingButtonRect: ClientRect;\r\n formModel: FilterSettings;\r\n showBaseFilters: Boolean;\r\n useDateRange: boolean = true;\r\n\r\n disableUntil: IMyDate;\r\n private largeView: boolean;\r\n selectAllTooltip: string;\r\n allChildrenAreSelected: boolean;\r\n noChildName: boolean;\r\n clearChildNameTooltip: string;\r\n externalClicksCanCloseFilter: boolean = false;\r\n\r\n constructor(\r\n private elementRef: ElementRef, \r\n private renderer: Renderer2, \r\n private localStorageService: LocalStorageService,\r\n private personaSwitcherService: PersonaSwitcherService\r\n ) {\r\n this.disableUntil = { year: moment().year(), month: moment().month() + 1, day: moment().date() -1 };\r\n let personaUpn = this.personaSwitcherService.getPersonaUpn();\r\n personaUpn = !!personaUpn && personaUpn.length > 0 ? '_' + personaUpn : '';\r\n this.formModel = new FilterSettings(localStorageService, false, this.storagePrefix + personaUpn);\r\n this.nativeElement = this.elementRef.nativeElement;\r\n this.showBaseFilters = true;\r\n this.selectAllTooltip = '';\r\n this.allChildrenAreSelected = true;\r\n this.noChildName = true;\r\n this.clearChildNameTooltip = '';\r\n this.useDateRange = true;\r\n }\r\n\r\n disableCustomDateRange() : boolean\r\n {\r\n return this.formModel.selectedDateRange.dateRangeType != FilterDateRange.Custom;\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onPageClick(targetElement) {\r\n // Ignore clicks of the date-input buttons\r\n if(\r\n (targetElement.id && targetElement.id.startsWith('df_')) || \r\n (\r\n (!targetElement.id || targetElement.id.length < 1) && \r\n targetElement.parentElement && targetElement.parentElement.id && targetElement.parentElement.id.startsWith('df_')\r\n )\r\n )\r\n {\r\n return;\r\n }\r\n\r\n // Initially clicking the 'filter' button should not instantly re-close it.\r\n if(targetElement.id == 'filter' && !this.externalClicksCanCloseFilter) \r\n {\r\n // Subsequent clicks can close the filter.\r\n this.externalClicksCanCloseFilter = true;\r\n return;\r\n }\r\n\r\n // If the person has clicked the 'filter' button now but we are in small mode, do not close the filter\r\n if(!this.largeView)\r\n {\r\n return;\r\n }\r\n\r\n if(!this.externalClicksCanCloseFilter || !this.visible) return;\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.cancel();\r\n }\r\n }\r\n\r\n public get next4Weeks(): number {\r\n return FilterDateRange.Next4Weeks; \r\n }\r\n\r\n public get next4WeeksDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.Next4Weeks); \r\n }\r\n\r\n public get thisWeek(): number {\r\n return FilterDateRange.ThisWeek; \r\n }\r\n\r\n public get thisWeekDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.ThisWeek); \r\n }\r\n\r\n public get custom(): number {\r\n return FilterDateRange.Custom; \r\n }\r\n\r\n public get customDescription(): string {\r\n return filterDateRangeDescription(FilterDateRange.Custom); \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setFilterPositionUnderneathFilterButton();\r\n\r\n this.nativeElement.getElementsByTagName(\"input\")[0].focus();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.largeView = window.innerWidth >= 900;\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.largeView = window.innerWidth >= 900;\r\n }\r\n\r\n open(instigatingButtonRect: ClientRect) {\r\n this.instigatingButtonRect = instigatingButtonRect;\r\n }\r\n\r\n toggleFilters() {\r\n this.showBaseFilters = !this.showBaseFilters;\r\n }\r\n\r\n dataLoaded() {\r\n this.synchroniseChildNameValues();\r\n this.synchroniseChildNameSelectionValues();\r\n this.visible = true;\r\n }\r\n \r\n clear(form: NgForm) {\r\n form.reset();\r\n this.formModel.defaultValues = true;\r\n this.formModel.initialiseValues(this.storagePrefix);\r\n this.hideFilter(true);\r\n }\r\n\r\n cancel() {\r\n this.formModel.defaultValues = false;\r\n this.hideFilter(false);\r\n }\r\n\r\n apply(form: NgForm) {\r\n this.formModel.defaultValues = false;\r\n if (!this.formIsValid(form) || \r\n (\r\n this.formModel.selectedDateRange.useCustomDateValue() && (!this.formModel.selectedDateRange.haveDateValue() || !this.customDateRange.valueValid)\r\n )\r\n ) \r\n {\r\n this.customDateRange.setValueValidFalse();\r\n return false;\r\n }\r\n\r\n // Persist current values to storage\r\n this.formModel.persistSessionFilterSettings(this.localStorageService);\r\n\r\n this.hideFilter(true);\r\n return true;\r\n }\r\n\r\n rangeTypeChanged() {\r\n this.customDateRange.clearDateInput((this.formModel.selectedDateRange.dateRangeType === FilterDateRange.Custom));\r\n }\r\n\r\n filterSettingsDateChanged(newDateRange: IMyDateModel)\r\n {\r\n this.formModel.selectedDateRange.customDateRange = newDateRange;\r\n }\r\n\r\n // This prevents a person from de-selecting the last option\r\n selectionChanged(filter: MultiChoiceSearch, option: MultiChoiceOption, event: Event) {\r\n if (filter.noneSelected()) {\r\n option.selected = true;\r\n (event.target).checked = true;\r\n }\r\n }\r\n\r\n // #region Child Name Select List\r\n\r\n childNameSelectionChanged(options: string[], event: Event) {\r\n this.formModel.nameSelect.setSelections(options);\r\n this.synchroniseChildNameSelectionValues();\r\n }\r\n\r\n clearChildrenNamesFilter() {\r\n this.formModel.nameSelect.selectAll(this.localStorageService);\r\n this.synchroniseChildNameSelectionValues();\r\n }\r\n synchroniseChildNameSelectionValues() {\r\n if(this.formModel.nameSelect.checkboxOptions.length != this.formModel.nameSelect.selectedOptions.length)\r\n {\r\n this.selectAllTooltip = 'Remove Child Name Filter';\r\n this.allChildrenAreSelected = false;\r\n } else {\r\n this.selectAllTooltip = '';\r\n this.allChildrenAreSelected = true;\r\n }\r\n }\r\n \r\n // #endregion Child Name Select List\r\n\r\n // #region Child Name Select List\r\n\r\n childNameSearchChanged(value: string, event: Event)\r\n {\r\n this.formModel.nameSearch.childNameSearchValue = value;\r\n this.synchroniseChildNameValues();\r\n }\r\n\r\n clearChildNameFilter() {\r\n this.formModel.nameSearch.clear(this.localStorageService);\r\n this.synchroniseChildNameValues();\r\n }\r\n\r\n synchroniseChildNameValues() {\r\n if(!!this.formModel.nameSearch && !!this.formModel.nameSearch.childNameSearchValue && this.formModel.nameSearch.childNameSearchValue.length > 0)\r\n {\r\n this.selectAllTooltip = 'Remove Child Name Filter';\r\n this.noChildName = false;\r\n } else {\r\n this.selectAllTooltip = '';\r\n this.noChildName = true;\r\n }\r\n }\r\n\r\n // #endregion Child Name Select List\r\n\r\n formIsValid(form: NgForm) {\r\n return form.valid;\r\n }\r\n\r\n hideFilter(useNewFilters: boolean) {\r\n this.visible = false;\r\n if(!!this.filterClosed.observers && this.filterClosed.observers.length > 0)\r\n {\r\n this.filterClosed.emit(useNewFilters);\r\n }\r\n }\r\n\r\n setFilterPositionUnderneathFilterButton() {\r\n let filterHost = this.nativeElement;\r\n\r\n let x = this.instigatingButtonRect.left; // - 22.5\r\n\r\n const agent = window.navigator.userAgent.toLowerCase();\r\n var isIE = (agent.indexOf('trident') > -1);\r\n\r\n if (document.documentElement.clientWidth >= 900) {\r\n x = this.instigatingButtonRect.left + this.instigatingButtonRect.width - filterHost.offsetWidth;\r\n if(!isIE)\r\n {\r\n this.renderer.setStyle(filterHost, 'left', `${x}px`);\r\n }\r\n else\r\n {\r\n x = (this.instigatingButtonRect.width / 3) + 2;\r\n this.renderer.setStyle(filterHost, 'right', `${x}px`);\r\n }\r\n }\r\n \r\n // -----------------------------------------------------------\r\n // Set y position of filter. Page width > 900\r\n // -----------------------------------------------------------\r\n let y = 0;\r\n if(document.documentElement.clientWidth > 900 && !isIE)\r\n {\r\n y = this.instigatingButtonRect.top + this.instigatingButtonRect.height + window.pageYOffset + 15;\r\n }\r\n else if(document.documentElement.clientWidth > 900 && isIE)\r\n {\r\n y = (this.instigatingButtonRect.height * 2) + 10;\r\n }\r\n\r\n // -----------------------------------------------------------\r\n // Set y position of filter. Page width <= 900\r\n // -----------------------------------------------------------\r\n if(document.documentElement.clientWidth <= 900)\r\n {\r\n if(window.pageYOffset < 290) {\r\n y = 197;\r\n }\r\n else\r\n {\r\n y = 197 + window.pageYOffset - 290;\r\n }\r\n }\r\n this.renderer.setStyle(filterHost, 'top', `${y}px`);\r\n //console.log('this.instigatingButtonRect.top: ' + this.instigatingButtonRect.top + '. this.instigatingButtonRect.height: ' + this.instigatingButtonRect.height + '. window.pageYOffset: ' + window.pageYOffset + '. Result.top: ' + y);\r\n //console.log('this.instigatingButtonRect.left: ' + this.instigatingButtonRect.left + '. this.instigatingButtonRect.width: ' + this.instigatingButtonRect.width + '. filterHost.offsetWidth: ' + filterHost.offsetWidth + '. Result.left: ' + x);\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: Event): void {\r\n this.cancel();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Date Range\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Select Children\r\n
\r\n
\r\n \r\n Select All\r\n
\r\n
\r\n
\r\n
\r\n Child's Name\r\n
\r\n
\r\n
\r\n \r\n
\r\n Clear Filter\r\n
\r\n
\r\n
\r\n
\r\n Intervention type\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Visit Frequency\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n Date Range\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n Select Children\r\n
\r\n
\r\n \r\n Select All\r\n
\r\n
\r\n \r\n
\r\n Child's Name\r\n
\r\n
\r\n
\r\n \r\n
\r\n Clear Filter\r\n
\r\n
\r\n \r\n
\r\n Intervention type\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n Visit Frequency\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit, OnDestroy, Input, HostListener, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ComponentFactory } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { UserInfoService } from '../../../../services/user-info.service';\r\nimport { homeVisitsSettings } from '../../../../settings';\r\nimport { TaskSubsystemService } from '../../../../services/api/task-subsystem.service';\r\nimport { FilterSettings, MultiChoiceSearch } from '../filter-settings';\r\nimport { interval as observableInterval, Subscription } from 'rxjs';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService, FeatureLoggerService, RecordChangeDetectionService } from 'services';\r\nimport { FocusCheck } from '../../../shared/FocusCheck';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { HomeVisitUpcomingCountNotifyService, PromiseNotifyService } from '../../../../services/notifications';\r\nimport { FilterDateRange } from \"api/website_enum\";\r\nimport { HomeVisitsService } from \"../home-visits.service\";\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { UpcomingFilterComponent } from './upcoming-filter/upcoming-filter.component';\r\nimport * as moment from 'moment';\r\nimport { HomeVisitFilterService } from '../../../../services/home-visit-filter.service';\r\n\r\n@Component({\r\n selector: 'app-upcoming-visits',\r\n templateUrl: './upcoming-visits.component.html',\r\n styleUrls: ['./upcoming-visits.component.scss']\r\n})\r\nexport class UpcomingVisitsComponent extends FocusCheck implements OnInit, OnDestroy {\r\n storagePrefix: string = 'upcoming-visits';\r\n\r\n filterComponent: ComponentRef;\r\n searchStart: Date;\r\n searchEnd: Date;\r\n \r\n upcomingVisitData: Api.HomeVisitData;\r\n pagedVisitsToShow: Api.ChildHomeVisit[];\r\n\r\n // This is either all data, or the visits that have been filtered to be shown\r\n visitsToShow: Api.ChildHomeVisit[] = [];\r\n\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n tracker: WorkTracker;\r\n intervalSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n \r\n filterSettings: FilterSettings;\r\n filterSettingsBackupWhileMasqueruading: FilterSettings;\r\n previousUpn: string;\r\n tabNotificationSubscription: Subscription;\r\n\r\n // A technique to track which items are selected to be expanded\r\n selectedVisits: Api.ChildHomeVisit[] = [];\r\n officersUpn: string = '';\r\n \r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n refreshIntervalInMilliseconds: number;\r\n\r\n // Pagination settings\r\n currentPage: number = 0;\r\n pageSize: number = 10; // This is communicated from the pagination component\r\n upcomingVisitCount: number = 0;\r\n homeVisitsStyle: string = 'home-visits';\r\n\r\n constructor(\r\n private userInfoService: UserInfoService, \r\n private titleService: Title,\r\n private taskSubsystem: TaskSubsystemService,\r\n private idleDetectionService: IdleDetectionService,\r\n private featureLogger: FeatureLoggerService,\r\n private homeVisitUpcomingCountNotifyService: HomeVisitUpcomingCountNotifyService, \r\n private homeVisitsService: HomeVisitsService, \r\n private container: ViewContainerRef, \r\n private localStorageService: LocalStorageService,\r\n private componentResolver: ComponentFactoryResolver, \r\n private homeVisitFilterService: HomeVisitFilterService, \r\n private promiseNotifyService: PromiseNotifyService\r\n ) {\r\n super();\r\n this.refreshIntervalInMilliseconds = homeVisitsSettings.refreshIntervalInSeconds * 1000;\r\n this.officersUpn = userInfoService.upn();\r\n this.upcomingVisitData = {\r\n visitsHasError: false,\r\n visitsLoaded: false,\r\n visits: [],\r\n isUpcoming: true\r\n };\r\n this.tracker = new WorkTracker(true);\r\n this.filterSettings = new FilterSettings(this.localStorageService, false, this.storagePrefix);\r\n\r\n this.titleService.setTitle('CS Portal - Dashboard');\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['lastVisitDtm', 'currentLocationType', 'frequency', 'ownerName'], \r\n ['id'], 'upcoming-visits'\r\n );\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n\r\n let upcomingVisitsPromise = this.loadData();\r\n\r\n await this.tracker.track(\r\n upcomingVisitsPromise.then(() => {\r\n this.updatePagedVisitsToShow();\r\n\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n upcomingVisitsPromise = this.loadData();\r\n\r\n // Inform the hero component to allow it to display 'loading' imagery\r\n await this.tracker.track(upcomingVisitsPromise);\r\n this.updatePagedVisitsToShow();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n\r\n // Initialise the 'previousUpn' to this members actual upn. This is used \r\n // to manage filter settings when masquerading and particularly when \r\n // swapping between more than one other persona before returning to this \r\n // member's profile.\r\n this.previousUpn = this.officersUpn;\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n \r\n this.destroyFilterComponent();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n onPageChangedEvent(pageNumber: number)\r\n {\r\n this.currentPage = pageNumber;\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n onPageSizeChangedEvent(pageSize: number)\r\n {\r\n this.pageSize = pageSize;\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n updatePagedVisitsToShow()\r\n {\r\n var firstElToShow = this.pageSize * this.currentPage;\r\n var lastElToShow = firstElToShow + this.pageSize;\r\n\r\n // Update the values that are displayed. All data is already pre-loaded. Just paginate in-memory\r\n setTimeout(() => {\r\n if(!this.visitsToShow || this.visitsToShow.length < 1) \r\n {\r\n this.pagedVisitsToShow = []; \r\n }\r\n else\r\n {\r\n this.pagedVisitsToShow = this.visitsToShow.slice(firstElToShow, lastElToShow);\r\n }\r\n });\r\n }\r\n\r\n trackBy(index: number, item: Api.ChildHomeVisit) {\r\n return item.id;\r\n }\r\n\r\n async loadData() {\r\n var promise = this.loadTheData();\r\n this.promiseNotifyService.TrackThisPromise({ \r\n visitType: this.storagePrefix,\r\n thePromise: promise\r\n });\r\n return promise;\r\n }\r\n\r\n async loadTheData() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n return await Promise.all([\r\n this.getUpcomingVisitsFromServer()\r\n ]);\r\n }\r\n\r\n private getUpcomingVisitsFromServer(): Promise {\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n this.upcomingVisitData.visitsLoaded = false;\r\n\r\n this.searchStart = this.getEffectiveStartDate();\r\n this.searchEnd = this.getEffectiveEndDate();\r\n\r\n return this.taskSubsystem.getUpcomingChildHomeVisits(this.searchStart, this.searchEnd).then(result => {\r\n this.upcomingVisitData.visitsHasError = result.hasError;\r\n if (result.hasError) {\r\n this.upcomingVisitData.visits = [];\r\n this.upcomingVisitCount = 0;\r\n this.notifySummaryOfCountData(true, FilterDateRange.Next4Weeks);\r\n } else {\r\n this.upcomingVisitData.visits = result.value;\r\n\r\n this.applyUpcomingHomeVisitsFilters();\r\n }\r\n this.upcomingVisitData.visitsLoaded = true;\r\n this.recordChangeDetectionService.applyNewDataSet(this.upcomingVisitData.visits);\r\n });\r\n } catch (error) {\r\n this.upcomingVisitData.visitsHasError = true;\r\n this.upcomingVisitData.visitsLoaded = true;\r\n this.upcomingVisitData.visits = [];\r\n this.upcomingVisitCount = 0;\r\n this.notifySummaryOfCountData(true, FilterDateRange.Next4Weeks);\r\n }\r\n }\r\n\r\n private notifySummaryOfCountData(hasError: boolean, dateRangeType: FilterDateRange)\r\n {\r\n // The raw visits can include multiple instances per child.\r\n // The HV Tile wants to know the count of unique children.\r\n // Count unique entries by subjectChildId field.\r\n const children = {};\r\n\r\n // Cycle through all entries. Create an object with a property with each subject child id as the property name.\r\n if(!!this.visitsToShow)\r\n {\r\n this.visitsToShow.forEach(el => {\r\n children[el.subjectChildId] = null;\r\n });\r\n }\r\n \r\n // The count of children will be the count of properties on this object\r\n const uniqueChildren = Object.keys(children).length;\r\n\r\n this.homeVisitUpcomingCountNotifyService.ChangeHomeVisitCounts({\r\n recordCount: uniqueChildren,\r\n hasError: hasError, \r\n dateRangeType: dateRangeType\r\n });\r\n }\r\n\r\n public async personaChanged(upn: string) \r\n {\r\n this.selectedVisits = [];\r\n if(this.filterComponent && this.filterComponent.instance)\r\n {\r\n this.filterComponent.instance.hideFilter(false);\r\n }\r\n\r\n // We are commencing impersonation\r\n if(!!upn && upn.length > 0)\r\n {\r\n // When the T/L or Manager masquerades as one member then immediately another, \r\n // this check will not pass. This is good as it ensures we retain the T/Ls settings in backup.\r\n if(this.previousUpn == this.officersUpn)\r\n {\r\n // Backup this member's filter settings\r\n this.filterSettingsBackupWhileMasqueruading = this.filterSettings;\r\n }\r\n this.previousUpn = upn;\r\n\r\n // Create a new filter settings for use as this impersonated staff member\r\n let personaUpn = !!upn && upn.length > 0 ? '_' + upn : '';\r\n this.filterSettings = new FilterSettings(this.localStorageService, true, this.storagePrefix + personaUpn);\r\n }\r\n else\r\n {\r\n // We are ceasing impersonation\r\n // Restore this member's filter settings\r\n this.filterSettings = this.filterSettingsBackupWhileMasqueruading;\r\n this.previousUpn = this.officersUpn;\r\n }\r\n\r\n let upcomingVisitsPromise = this.loadData();\r\n var vm = this;\r\n await this.tracker.track(\r\n upcomingVisitsPromise.then(() => {\r\n if(!!vm.filterComponent && !!vm.filterComponent.instance && !!vm.filterComponent.instance.formModel)\r\n {\r\n // Before 'closing the filter' we should set the filter to the previous settings so they are immediately applied.\r\n vm.filterComponent.instance.formModel = vm.filterSettings;\r\n }\r\n\r\n vm.handleFilterClosed(true);\r\n })\r\n );\r\n }\r\n\r\n weAreMasquerading() : boolean {\r\n return !!this.previousUpn && this.previousUpn != this.officersUpn;\r\n }\r\n \r\n haveStaff(): boolean {\r\n if(!!this.weAreMasquerading())\r\n {\r\n // We are masquerading. Even if masquerading as a team leader, return false\r\n return false;\r\n }\r\n return this.homeVisitsService.haveStaff(this.upcomingVisitData);\r\n }\r\n\r\n isEven(item: Api.ChildHomeVisit): boolean {\r\n if (!this.visitsToShow) return false;\r\n\r\n let index = this.visitsToShow.indexOf(item, 0);\r\n\r\n return index % 2 === 0;\r\n }\r\n\r\n logCaseNoteFeature()\r\n {\r\n this.featureLogger.logFeatureUsage(FeatureName.CaseNote);\r\n }\r\n\r\n formatShortDate(date: string): string {\r\n return this.homeVisitsService.formatShortDate(date);\r\n }\r\n\r\n getDestinationPath(item: Api.ChildHomeVisit): string {\r\n return this.homeVisitsService.getDestinationPath(item);\r\n }\r\n\r\n hasDestinationPath(item: Api.ChildHomeVisit): boolean {\r\n return this.homeVisitsService.hasDestinationPath(item);\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return !this.upcomingVisitData.visitsLoaded || (!this.userIsIdle && this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n // #startregion - Filter\r\n filterAlreadyShown: boolean = false;\r\n showFilter(evt: Event): void {\r\n if(!!this.filterAlreadyShown) return;\r\n let filterButtonClientRect = (evt.currentTarget).getBoundingClientRect();\r\n\r\n this.createFilterComponent();\r\n this.filterComponent.instance.filterClosed.subscribe(this.handleFilterClosed.bind(this));\r\n this.filterComponent.instance.open(filterButtonClientRect);\r\n this.seedFilterValues(this.filterComponent.instance.formModel);\r\n this.filterComponent.instance.dataLoaded();\r\n this.filterAlreadyShown = true;\r\n }\r\n\r\n // This is called after the filter is closed\r\n hasChanged(previousSettings: FilterSettings, newSettings: FilterSettings): boolean {\r\n return previousSettings.hasChanged(newSettings);\r\n }\r\n\r\n async handleFilterClosed(useNewFilters: boolean) {\r\n this.filterAlreadyShown = false;\r\n var previousSettings = this.filterSettings;\r\n\r\n // Update local settings by re-reading from storage\r\n var newSettings = !!useNewFilters && this.filterComponent && this.filterComponent.instance ? this.filterComponent.instance.formModel : previousSettings;\r\n\r\n // Before updating settings with these possibly new values by calling 'updateFilter'\r\n // determine whether the values have changed and whether we require new data from the API server\r\n let hasChanged = this.hasChanged(previousSettings, newSettings);\r\n let requireNewData = !!hasChanged && !!previousSettings.requireNewServerData(newSettings, this.searchStart, this.searchEnd);\r\n\r\n // Update our knowledge of the settings; required by the ui\r\n this.filterSettings = newSettings;\r\n\r\n this.destroyFilterComponent();\r\n\r\n if(!!useNewFilters)\r\n {\r\n this.applyUpcomingHomeVisitsFilters();\r\n\r\n // Limit hits to the server when we know the filter was an in-memory one only\r\n if(requireNewData)\r\n {\r\n let upcomingVisitsPromise = this.loadData();\r\n await this.tracker.track(upcomingVisitsPromise);\r\n }\r\n } else {\r\n // We need to restore the local storage to the previous values before ending\r\n previousSettings.persistSessionFilterSettings(this.localStorageService);\r\n }\r\n\r\n // Update UI\r\n window.scrollTo(0, 0);\r\n let element = document.getElementById('filter');\r\n if(!!element) element.focus();\r\n }\r\n\r\n // Update the collection from the previous server retrieval based on the name search filter\r\n // This will first reduce the upcomingHomeVisits collection and set on upcomingHomeVisitsFiltered\r\n // It will then further reduce this filtered collection by applying the set of defined filters.\r\n applyUpcomingHomeVisitsFilters()\r\n {\r\n // If we retrieve data, for example after tabbing back to the Dashboard, the FilterComponent \r\n // will not exist. We use the local filterSettings. But, these may not have the selection \r\n // items initialised. So, even though prior selections are saved in local storage, we require \r\n // these collections to be initialised for 'filtering' to be applied correctly. Re-seed if required.\r\n if(!this.filterSettings.nameSelect.checkboxOptions || \r\n this.filterSettings.nameSelect.checkboxOptions.length < 1)\r\n {\r\n this.seedFilterValues(this.filterSettings);\r\n }\r\n\r\n // Get the latest filter settings\r\n this.visitsToShow = this.homeVisitFilterService.filterVisitsToShow(this.filterSettings, this.upcomingVisitData.visits);\r\n this.visitsToShow = this.homeVisitFilterService.filterVisitsToShowByDateRange(this.filterSettings, this.visitsToShow);\r\n\r\n // If we are masquerading apply a final filter to just show visits assigned to the selected member\r\n if(!!this.weAreMasquerading())\r\n {\r\n // Reduce to visits where the owner name is the empty string (this occurs when this person is the Team Leader)\r\n this.visitsToShow = this.homeVisitsService.reduceVisitsToThisMembersVisits(this.visitsToShow, this.previousUpn);\r\n }\r\n\r\n this.upcomingVisitCount = (!!this.visitsToShow ? this.visitsToShow.length : 0);\r\n\r\n this.notifySummaryOfCountData(false, this.filterSettings.selectedDateRange.dateRangeType);\r\n this.updatePagedVisitsToShow();\r\n }\r\n\r\n formatDateForFilterRange(date: Date): string {\r\n return this.homeVisitFilterService.formatDateForFilterRange(date);\r\n }\r\n\r\n getFilterDescription(options: MultiChoiceSearch, prefix: string): string {\r\n return this.homeVisitFilterService.getFilterDescription(options, prefix); // upcoming-visits\r\n }\r\n\r\n getChildNameFilterDescription(prefix: string) : string {\r\n return this.homeVisitFilterService.getChildNameFilterDescription(this.filterSettings, prefix);\r\n }\r\n\r\n getEffectiveStartDate(): Date {\r\n let now = moment().utc().toDate();\r\n let effectiveStartDate = this.filterSettings.effectiveStartDate();\r\n return (effectiveStartDate.getTime() < now.getTime()) ? now : effectiveStartDate;\r\n }\r\n\r\n getEffectiveEndDate(): Date {\r\n return this.filterSettings.effectiveEndDate();\r\n }\r\n\r\n createFilterComponent() {\r\n this.container.clear();\r\n const filterComponentFactory: ComponentFactory = this.componentResolver.resolveComponentFactory(UpcomingFilterComponent);\r\n this.filterComponent = this.container.createComponent(filterComponentFactory);\r\n }\r\n\r\n showFilterIcon() : boolean {\r\n return this.filterSettings.selectedDateRange.dateRangeType != FilterDateRange.Next4Weeks || \r\n !this.filterSettings.interventionSelect.allSelected() || \r\n !this.filterSettings.visitFrequencySelect.allSelected() || \r\n !this.filterSettings.nameSelect.allSelected() || \r\n !this.filterSettings.nameSearch.isEmpty();\r\n }\r\n\r\n seedFilterValues(settings: FilterSettings)\r\n {\r\n // Initialise the collection of child names. This is only changed on data retrieval\r\n settings.nameSelect.setOptions(this.upcomingVisitData.visits, 'subjectChildName', this.localStorageService);\r\n\r\n // Initialise the collection of intervention types. This is only changed on data retrieval\r\n settings.interventionSelect.setOptions(this.upcomingVisitData.visits, 'currentInterventionType', this.localStorageService);\r\n\r\n // Initialise the collection of home visit types. This is only changed on data retrieval\r\n settings.visitFrequencySelect.setOptions(this.upcomingVisitData.visits, 'frequency', this.localStorageService);\r\n }\r\n\r\n destroyFilterComponent() {\r\n if (this.container) {\r\n this.container.clear();\r\n }\r\n\r\n if (this.filterComponent) {\r\n this.filterComponent.instance.filterClosed.unsubscribe();\r\n this.filterComponent.destroy();\r\n }\r\n }\r\n\r\n // #endregion - Filter\r\n\r\n // #startregion Selected Visits\r\n\r\n toggleSelectVisit(visit: Api.ChildHomeVisit): void {\r\n if (this.isVisitSelected(visit)) {\r\n let foundVisit = this.selectedVisits.filter(o => o.id === visit.id)[0];\r\n if (foundVisit) {\r\n const index = this.selectedVisits.indexOf(foundVisit, 0);\r\n if (index > -1) {\r\n this.selectedVisits.splice(index, 1);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n this.featureLogger.logFeatureUsage(FeatureName.UpcomingVisitsShowMore);\r\n this.selectedVisits.push(visit);\r\n }\r\n\r\n isVisitSelected(visit: Api.ChildHomeVisit): boolean {\r\n if (!visit || !this.selectedVisits) return false;\r\n\r\n return this.selectedVisits.filter(o => o.id === visit.id).length > 0;\r\n }\r\n\r\n showUpdateGraphic(visit: Api.ChildHomeVisit): boolean {\r\n return this.recordChangeDetectionService.showUpdateGraphic(visit);\r\n }\r\n\r\n // #endregion Selected Visits\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {{ formatDateForFilterRange(filterSettings.effectiveStartDate()) }} to\r\n {{ formatDateForFilterRange(filterSettings.effectiveEndDate()) }}\r\n {{ getFilterDescription(this.filterSettings.interventionSelect, 'Interventions: ') }} \r\n {{ getFilterDescription(this.filterSettings.visitFrequencySelect, 'Frequency: ') }} \r\n {{ getFilterDescription(this.filterSettings.nameSelect, 'Children: ') }} \r\n {{ getChildNameFilterDescription('Child: ') }} \r\n
\r\n Ordered by next visit due date\r\n
\r\n
\r\n
\r\n
Name
\r\n
Last Visit Date
\r\n
Current Location Type
\r\n
Visit Frequency *
\r\n
Allocated To
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Name
\r\n
\r\n \r\n
\r\n {{ homeVisit.subjectChildName }}\r\n {{ homeVisit.subjectChildName }}\r\n
\r\n
\r\n
\r\n
\r\n
Last Visit Date
\r\n {{\r\n homeVisit.lastVisitDtm ? formatShortDate(homeVisit.lastVisitDtm) : 'n/a'\r\n }}\r\n
\r\n
\r\n
Current Location Type
\r\n {{ homeVisit.currentLocationType }}\r\n
\r\n
\r\n
Visit Frequency
\r\n {{ homeVisit.frequency }} *\r\n
\r\n
\r\n
Allocated To
\r\n {{ homeVisit.ownerName && homeVisit.ownerName.length > 0 ? homeVisit.ownerName : 'Me' }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n","export * from './dashboard.component';","\r\nimport {interval as observableInterval, Observable , Subscription } from 'rxjs';\r\nimport { Component, OnInit, OnDestroy, HostListener, EventEmitter, Output } from '@angular/core';\r\nimport { ActivityFeedService } from 'services/api/activity-feed.service';\r\nimport * as moment from 'moment';\r\nimport { activityFeedSettings } from '../../../settings';\r\nimport { SanitizeHtmlPipe } from '../../../pipes/sanitize-html.pipe';\r\nimport { IResponse } from '../../../services/api/response-interface';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService } from 'services';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\n\r\n@Component({\r\n selector: 'app-activity-feed',\r\n templateUrl: './activity-feed.component.html',\r\n styleUrls: ['./activity-feed.component.scss']\r\n})\r\nexport class ActivityFeedComponent extends FocusCheck implements OnInit, OnDestroy {\r\n @Output() activityFeedExpanded: EventEmitter = new EventEmitter();\r\n\r\n tracker: WorkTracker;\r\n activityFeedItems: ActivityFeedItem[];\r\n intervalSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n personaChangedSubscription: Subscription;\r\n refreshIntervalInMilliseconds: number;\r\n hasError: boolean;\r\n dataLoaded: boolean;\r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n activityFeedIsExpanded: boolean = false;\r\n\r\n constructor(\r\n private activityFeedService: ActivityFeedService,\r\n private htmlSanitizer: SanitizeHtmlPipe,\r\n private idleDetectionService: IdleDetectionService,\r\n private personaSwitcherService: PersonaSwitcherService\r\n ) {\r\n super();\r\n this.tracker = new WorkTracker(true);\r\n this.refreshIntervalInMilliseconds = activityFeedSettings.refreshIntervalInSeconds * 1000;\r\n this.subscribeToPersonaChangedNotifications();\r\n }\r\n\r\n async ngOnInit() {\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n\r\n await this.tracker.track(\r\n this.getActivityFeedItems().then(() => {\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n await this.getActivityFeedItems();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n public toggleActivityFeed() : void \r\n {\r\n this.activityFeedIsExpanded = !this.activityFeedIsExpanded;\r\n this.activityFeedExpanded.emit(this.activityFeedIsExpanded);\r\n }\r\n\r\n private getActivityFeedItems(): Promise {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n return this.activityFeedService.get().then(result => {\r\n if (!result || result.hasError === true) {\r\n this.hasError = true;\r\n } else {\r\n try {\r\n this.handleActivityFeedItemFromServer(result);\r\n this.hasError = false;\r\n this.dataLoaded = true;\r\n } catch (ex) {\r\n this.hasError = true;\r\n }\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n }\r\n }\r\n\r\n private handleActivityFeedItemFromServer(result: IResponse) {\r\n let latestFromServer = result.value\r\n .map(o => ({\r\n ...o,\r\n isNew: this.isNewItem(o),\r\n appName: this.parseAppName(o)\r\n }))\r\n .map(o => {\r\n return this.sanitizeText(o);\r\n })\r\n .map(o => {\r\n return this.addMoodStyleIfRequired(o);\r\n });\r\n if (!this.hasAnyActivityFeedItems() || latestFromServer.length != this.activityFeedItems.length) {\r\n this.activityFeedItems = latestFromServer;\r\n }\r\n }\r\n\r\n private hasAnyActivityFeedItems(): boolean {\r\n return this.activityFeedItems && this.activityFeedItems.length > 0;\r\n }\r\n\r\n /**\r\n * Sanitizes the text property of the activity feed item.\r\n */\r\n private sanitizeText(item: ActivityFeedItem): ActivityFeedItem {\r\n item.text = this.htmlSanitizer.transform(item.text).toString();\r\n\r\n return item;\r\n }\r\n\r\n /**\r\n * If the activity feed item is a mood update then append mood emoji\r\n * after the mood text and underline the mood text.\r\n */\r\n private addMoodStyleIfRequired(item: ActivityFeedItem): ActivityFeedItem {\r\n if (item.text.indexOf('mood') > 0) {\r\n let moodRegEx = new RegExp(/:other:[^\\:]+:|:[a-zA-Z-]+:/g);\r\n let result = moodRegEx.exec(item.text);\r\n\r\n if (result && result.length === 1) {\r\n let matchedText = result[0];\r\n let parts = matchedText.split(':').filter(o => o && o.trim().length > 0);\r\n let moodText: string;\r\n let cssClassName: string;\r\n\r\n if (parts.length === 2) {\r\n // i.e. it's a 'custom' mood like :other:i've had enough:\r\n cssClassName = parts[0];\r\n moodText = parts[1];\r\n } else {\r\n // i.e. it's a pre-defined mood like :happy:\r\n cssClassName = parts[0];\r\n moodText = parts[0];\r\n }\r\n\r\n item.text = item.text.replace(`${matchedText}.`, `${moodText}`);\r\n }\r\n }\r\n\r\n return item;\r\n }\r\n\r\n private isNewItem(item: Api.ActivityFeedItem): boolean {\r\n return this.hasAnyActivityFeedItems() && this.activityFeedItems.filter(i => i.id === item.id).length === 0;\r\n }\r\n\r\n /**\r\n * For accessibility reasons we need the app name for build the link text.\r\n */\r\n private parseAppName(item: Api.ActivityFeedItem): string {\r\n const genericSourceAppName: string = 'source app';\r\n\r\n if (!item || !item.subject) {\r\n return genericSourceAppName;\r\n }\r\n else if (item.subject.toLocaleLowerCase().indexOf('kicbox') >= 0) {\r\n return 'kicbox';\r\n }\r\n else {\r\n return genericSourceAppName;\r\n }\r\n }\r\n\r\n formatDate(date: string) {\r\n // Thu, 14th Feb 2019, 8:46 am\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('ddd Do MMM YYYY, h:mm a')\r\n : '';\r\n }\r\n\r\n private subscribeToPersonaChangedNotifications() {\r\n if (!this.personaChangedSubscription) {\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n await this.tracker.track(this.getActivityFeedItems());\r\n });\r\n }\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return !this.dataLoaded || (!this.userIsIdle && this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n\r\ninterface ActivityFeedItem extends Api.ActivityFeedItem {\r\n isNew: boolean;\r\n appName: string;\r\n}\r\n","","import * as moment from 'moment';\r\nimport * as TestData from './court-order-test-data';\r\n\r\nexport class CourtOrderDetails {\r\n officerHasStaff: boolean;\r\n\r\n countOfOrdersMovedFromSubsequentToNextThreeMonths: number;\r\n\r\n courtOrdersInNextThreeMonthsToDisplay: Api.CourtOrder[];\r\n courtOrdersInNextThreeMonths: Api.CourtOrder[];\r\n countOfCourtOrdersInNextThreeMonths: number;\r\n countOfUniqueChildrenInNextThreeMonths: number;\r\n courtOrdersInNextThreeMonthsLoaded: boolean;\r\n courtOrdersInNextThreeMonthsHasError: boolean = false;\r\n \r\n courtOrdersInSubsequentThreeMonthsToDisplay: Api.CourtOrder[];\r\n courtOrdersInSubsequentThreeMonths: Api.CourtOrder[];\r\n countOfCourtOrdersInSubsequentThreeMonths: number;\r\n countOfUniqueChildrenInSubsequentThreeMonths: number;\r\n countOfUniqueChildrenMovedFromSubsequentToNextThreeMonths: number;\r\n courtOrdersInSubsequentThreeLoaded: boolean;\r\n courtOrdersInSubsequentThreeHasError: boolean = false;\r\n\r\n responseDataNextThreeMonths: Api.SelectedCourtOrderData;\r\n responseDataSubsequentThreeMonths: Api.SelectedCourtOrderData;\r\n\r\n useTestData: boolean;\r\n testData: TestData.CourtOrderTestData;\r\n\r\n orderedCourtOrders = [\r\n { 'order': 'tao', index: 0 },\r\n { 'order': 'tao - extend', index: 1 },\r\n { 'order': 'tco', index: 2 },\r\n { 'order': 'tco - extend', index: 3 },\r\n { 'order': 'cao', index: 4 },\r\n { 'order': 'cao - extend', index: 5 },\r\n { 'order': 'cao - interim order(s)', index: 6 },\r\n { 'order': 'cao - extend and vary', index: 7 },\r\n { 'order': 'cpo', index: 8 },\r\n { 'order': 'cpo - interim order(s)', index: 9 },\r\n { 'order': 'cpo - interim and procedural order(s)', index: 10 },\r\n { 'order': 'cpo - section 99', index: 11 },\r\n { 'order': 'cpo - section 99 and procedural order(s)', index: 12 },\r\n { 'order': 'cpo - section 99 and interim order(s)', index: 13 },\r\n { 'order': 'cpo - section 99, interim and procedural order(s)', index: 14 }, \r\n { 'order': 'cpo - stc', index: 15 },\r\n { 'order': 'cpo - stc - other', index: 16 },\r\n { 'order': 'cpo - stg', index: 17 },\r\n { 'order': 'cpo - ltg', index: 18 },\r\n { 'order': 'cpo - ltg - other', index: 19 },\r\n { 'order': 'cpo - pso', index: 20 },\r\n { 'order': 'cpo - do - other', index: 21 },\r\n { 'order': 'cpo - do - contact', index: 22 }\r\n ];\r\n \r\n constructor(\r\n ) {\r\n // Set this to true when in dev to use test data. That is, data shown rather than unit testing.\r\n // Refer to court-order-test-data.ts. Update the scenario in the 'initialiseTestData' method for a given scenario.\r\n this.useTestData = false;\r\n if(this.useTestData)\r\n {\r\n this.testData = new TestData.CourtOrderTestData();\r\n }\r\n }\r\n\r\n generateDisplayInformation(expiryInThreeMonthsTabSelected: boolean) : Api.SelectedCourtOrderData\r\n {\r\n if(this.useTestData === true)\r\n {\r\n this.testData.initialiseTestData();\r\n this.courtOrdersInNextThreeMonths = (!!this.testData.testNextThreeMonthsData && this.testData.testNextThreeMonthsData.length > 0 ? this.testData.testNextThreeMonthsData.slice() : []);\r\n this.courtOrdersInSubsequentThreeMonths = (!!this.testData.testSubsequentThreeMonthsData && this.testData.testSubsequentThreeMonthsData.length > 0 ? this.testData.testSubsequentThreeMonthsData.slice() : []);\r\n this.filterOrdersToDisplay(null);\r\n }\r\n\r\n // We generate both every time in order to guarantee the counts for the tab display\r\n this.responseDataNextThreeMonths = this.generateGroupedOrders(this.courtOrdersInNextThreeMonthsToDisplay, this.courtOrdersInNextThreeMonthsHasError, this.courtOrdersInNextThreeMonthsLoaded);\r\n this.responseDataSubsequentThreeMonths = this.generateGroupedOrders(this.courtOrdersInSubsequentThreeMonthsToDisplay, this.courtOrdersInSubsequentThreeHasError, this.courtOrdersInSubsequentThreeLoaded);\r\n\r\n this.countOfUniqueChildrenInNextThreeMonths = (this.responseDataNextThreeMonths && this.responseDataNextThreeMonths.groupedOrders ? this.responseDataNextThreeMonths.groupedOrders.length : 0);\r\n this.countOfUniqueChildrenInSubsequentThreeMonths = (this.responseDataSubsequentThreeMonths && this.responseDataSubsequentThreeMonths.groupedOrders ? this.responseDataSubsequentThreeMonths.groupedOrders.length : 0);\r\n\r\n let groupedOrders = expiryInThreeMonthsTabSelected ? this.responseDataNextThreeMonths : this.responseDataSubsequentThreeMonths;\r\n\r\n //var t0 = performance.now();\r\n \r\n this.sortInnerChildCourtOrders(groupedOrders);\r\n this.sortOuterChildCourtOrdersByExpiry(groupedOrders);\r\n \r\n //var t1 = performance.now();\r\n //console.log(\"Call to sort took \" + (t1 - t0) + \" milliseconds.\");\r\n \r\n // Include derived counts in response\r\n groupedOrders.countOfOrdersMovedFromSubsequentToNextThreeMonths = this.countOfOrdersMovedFromSubsequentToNextThreeMonths;\r\n groupedOrders.countOfUniqueChildrenInNextThreeMonths = this.countOfUniqueChildrenInNextThreeMonths;\r\n groupedOrders.countOfUniqueChildrenInSubsequentThreeMonths = this.countOfUniqueChildrenInSubsequentThreeMonths;\r\n groupedOrders.countOfCourtOrdersInNextThreeMonths = this.countOfCourtOrdersInNextThreeMonths;\r\n groupedOrders.countOfCourtOrdersInSubsequentThreeMonths = this.countOfCourtOrdersInSubsequentThreeMonths;\r\n\r\n /*console.log(\r\n 'countOfOrdersMovedFromSubsequentToNextThreeMonths[' + this.countOfOrdersMovedFromSubsequentToNextThreeMonths + ']. ' + \r\n 'countOfCourtOrdersInNextThreeMonths[' + this.countOfCourtOrdersInNextThreeMonths + ']. ' + \r\n 'countOfUniqueChildrenInNextThreeMonths[' + this.countOfUniqueChildrenInNextThreeMonths + ']. ' + \r\n 'countOfCourtOrdersInSubsequentThreeMonths[' + this.countOfCourtOrdersInSubsequentThreeMonths + ']. ' + \r\n 'countOfUniqueChildrenInSubsequentThreeMonths[' + this.countOfUniqueChildrenInSubsequentThreeMonths + ']. ');*/\r\n\r\n return groupedOrders;\r\n }\r\n \r\n // Generate new structure to allow simple display of multiple court orders related to a single child\r\n generateGroupedOrders(orderCollection: Api.CourtOrder[], ordersHasError: boolean, ordersLoaded: boolean) : Api.SelectedCourtOrderData\r\n {\r\n // See the response object\r\n let responseData = {\r\n ordersHasError: ordersHasError,\r\n ordersLoaded: ordersLoaded,\r\n groupedOrders: [], // An object with a collection of 'orders'\r\n officerHasStaff: this.officerHasStaff, \r\n countOfOrdersMovedFromSubsequentToNextThreeMonths: 0,\r\n countOfUniqueChildrenInNextThreeMonths: 0,\r\n countOfUniqueChildrenInSubsequentThreeMonths: 0,\r\n countOfCourtOrdersInNextThreeMonths: 0,\r\n countOfCourtOrdersInSubsequentThreeMonths: 0\r\n };\r\n if(orderCollection == null || orderCollection.length < 1) return responseData;\r\n\r\n let ordersByChildId = this.getOrderedOptions(orderCollection, 'subjectChildId');\r\n let lastId = ordersByChildId[0].subjectChildId;\r\n let index = 0;\r\n responseData.groupedOrders[0] = {\r\n toggleIndexChange: 0,\r\n nextOrderExpiryDtm: '',\r\n orders: []\r\n }\r\n\r\n ordersByChildId.forEach(o => {\r\n if(o.subjectChildId !== lastId)\r\n {\r\n // Seed a new GroupedOrder object\r\n responseData.groupedOrders[++index] = {\r\n toggleIndexChange: 0,\r\n nextOrderExpiryDtm: '',\r\n orders: []\r\n }\r\n }\r\n\r\n // Add the current order at this index\r\n responseData.groupedOrders[index].orders.push(o);\r\n\r\n // Update lastId\r\n lastId = o.subjectChildId;\r\n });\r\n\r\n return responseData;\r\n }\r\n\r\n getOrderedOptions(orderCollection: Api.CourtOrder[], sortField: string): Api.CourtOrder[] {\r\n return orderCollection.sort((x: Api.CourtOrder, y: Api.CourtOrder) => {\r\n return x[sortField].localeCompare(y[sortField]);\r\n });\r\n }\r\n\r\n dataRetrievalError(nextThreeMonths: boolean): void\r\n {\r\n if(nextThreeMonths)\r\n {\r\n this.courtOrdersInNextThreeMonthsHasError = true;\r\n }\r\n else\r\n {\r\n this.courtOrdersInSubsequentThreeHasError = true;\r\n }\r\n }\r\n\r\n storeData(nextThreeMonths: boolean, orders: Api.CourtOrder[]): void\r\n {\r\n if(nextThreeMonths)\r\n {\r\n this.courtOrdersInNextThreeMonths = orders;\r\n //console.log('Settings \"courtOrdersInNextThreeMonths\" to newly received payload at: ' + moment());\r\n //console.log(JSON.stringify(orders));\r\n this.courtOrdersInNextThreeMonthsHasError = false;\r\n this.courtOrdersInNextThreeMonthsLoaded = true;\r\n }\r\n else\r\n {\r\n this.courtOrdersInSubsequentThreeMonths = orders;\r\n //console.log('Settings \"courtOrdersInSubsequentThreeMonths\" to newly received payload at: ' + moment());\r\n //console.log(JSON.stringify(orders));\r\n this.courtOrdersInSubsequentThreeHasError = false;\r\n this.courtOrdersInSubsequentThreeLoaded = true;\r\n }\r\n\r\n this.SetOfficerHasStaff();\r\n }\r\n\r\n // Any order for a child in the subsequent three months who also has a court order in the first \r\n // three months should have the order moved from the subsequent three months to the first three \r\n // months. That is, if a child has more than one court order and one or more are in each \r\n // period collection then move them so that they are all in the first three months, regardless \r\n // of expiry date\r\n moveOrdersForDuplicateChildren()\r\n {\r\n //console.log('moveOrdersForDuplicateChildren at: ' + moment());\r\n if(!this.courtOrdersInNextThreeMonthsToDisplay || !this.courtOrdersInSubsequentThreeMonthsToDisplay) return;\r\n\r\n let temporaryCollection = [];\r\n this.courtOrdersInNextThreeMonthsToDisplay.forEach(o => {\r\n for(var i = 0; i < this.courtOrdersInSubsequentThreeMonthsToDisplay.length; i++) {\r\n if (this.courtOrdersInSubsequentThreeMonthsToDisplay[i].subjectChildId === o.subjectChildId) {\r\n // This court order needs to be moved to the first three collection\r\n temporaryCollection.push(this.courtOrdersInSubsequentThreeMonthsToDisplay[i]);\r\n\r\n this.courtOrdersInSubsequentThreeMonthsToDisplay.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n });\r\n\r\n // Add the temporary collection to the first three month collection\r\n this.courtOrdersInNextThreeMonthsToDisplay = this.courtOrdersInNextThreeMonthsToDisplay.concat(temporaryCollection);\r\n\r\n // Track the count of moved orders\r\n this.countOfOrdersMovedFromSubsequentToNextThreeMonths = temporaryCollection.length;\r\n\r\n // Get the count of unique children moved\r\n let distinctNames = [];\r\n temporaryCollection.forEach(o => {\r\n if(!distinctNames.find(n => n == o.subjectChildId)) {\r\n distinctNames.push(o.subjectChildId);\r\n }\r\n });\r\n this.countOfUniqueChildrenMovedFromSubsequentToNextThreeMonths = distinctNames.length;\r\n }\r\n\r\n // Court orders may move from their natural date-ordered tab in order to combine with a given subject user.\r\n // Update counts to ensure we formulate well-phrased sentences for the display.\r\n SetOrderCounts()\r\n {\r\n this.countOfCourtOrdersInNextThreeMonths = (this.courtOrdersInNextThreeMonthsToDisplay ? this.courtOrdersInNextThreeMonthsToDisplay.length : 0);\r\n this.countOfCourtOrdersInSubsequentThreeMonths = (this.courtOrdersInSubsequentThreeMonthsToDisplay ? this.courtOrdersInSubsequentThreeMonthsToDisplay.length : 0);\r\n }\r\n\r\n // Sort the collection of Api.CourtOrder objects in a given GroupedCourtOrders\r\n // The sort will be based on property orderExpiryDtm of each Api.CourtOrder for a given GroupedCourtOrders\r\n sortInnerChildCourtOrders(orderData: Api.SelectedCourtOrderData)\r\n {\r\n // Sort first by order expiry dtm and secondarily based on order types\r\n var sortedOrderDictionary = this.orderedCourtOrders;\r\n orderData.groupedOrders.forEach(o => {\r\n o.orders.sort(function (orderA, orderB) {\r\n // First, compare by dtm\r\n let result = orderA.orderExpiryDtm.localeCompare(orderB.orderExpiryDtm);\r\n \r\n if(result == 0)\r\n {\r\n // The due dtms are equal. Defer to secondary sort on order type\r\n let orderASortMatch = sortedOrderDictionary.find(x => x.order === orderA.orderTypeDisplay.toLowerCase());\r\n let orderBSortMatch = sortedOrderDictionary.find(x => x.order === orderB.orderTypeDisplay.toLowerCase());\r\n //console.log('orderASortMatch: ' + (orderASortMatch != null ? JSON.stringify(orderASortMatch) : '') + \r\n // '. orderBSortMatch: ' + (orderBSortMatch != null ? JSON.stringify(orderBSortMatch) : ''));\r\n if(orderASortMatch == null)\r\n {\r\n return 1;\r\n }\r\n if(orderBSortMatch == null)\r\n {\r\n return -1;\r\n }\r\n\r\n let orderAPriority = orderASortMatch.index;\r\n let orderBPriority = orderBSortMatch.index;\r\n // console.log('order A[' + orderA.orderTypeDisplay + ']:index[' + orderAPriority + '], order B[' + orderB.orderTypeDisplay + ']:index[' + orderBPriority + ']');\r\n return (orderAPriority < orderBPriority) ? -1 : \r\n (orderAPriority > orderBPriority) ? 1 : 0;\r\n }\r\n else\r\n {\r\n return result;\r\n }\r\n });\r\n });\r\n\r\n // Now, ensure the minimum (first) order expiry value is set on each outer GroupedCourtOrders object\r\n orderData.groupedOrders.forEach(o => {\r\n if(o.orders && o.orders.length > 0)\r\n {\r\n o.nextOrderExpiryDtm = o.orders[0].orderExpiryDtm;\r\n }\r\n });\r\n }\r\n\r\n // Sort the collection of GroupedCourtOrders by their earliest expiry dtm\r\n // The sort will be based on property nextOrderExpiryDtm of each GroupedCourtOrders\r\n sortOuterChildCourtOrdersByExpiry(orderData: Api.SelectedCourtOrderData)\r\n {\r\n orderData.groupedOrders.sort((x: Api.GroupedCourtOrders, y: Api.GroupedCourtOrders) => {\r\n return x.nextOrderExpiryDtm.localeCompare(y.nextOrderExpiryDtm);\r\n });\r\n }\r\n\r\n // Use the complete domain of court orders retrieved to determine if this person has staff\r\n SetOfficerHasStaff()\r\n {\r\n if(this.courtOrdersInNextThreeMonthsLoaded !== true || this.courtOrdersInSubsequentThreeLoaded !== true)\r\n {\r\n return;\r\n }\r\n\r\n this.officerHasStaff = false;\r\n this.SetOfficerHasStaffByList(this.courtOrdersInNextThreeMonths);\r\n if(!this.officerHasStaff)\r\n {\r\n this.SetOfficerHasStaffByList(this.courtOrdersInSubsequentThreeMonths);\r\n }\r\n }\r\n \r\n SetOfficerHasStaffByList(listToCheck)\r\n {\r\n if(!listToCheck || listToCheck == null) return;\r\n listToCheck.forEach(r => {\r\n if (r.hasStaff)\r\n {\r\n this.officerHasStaff = true;\r\n }\r\n });\r\n }\r\n\r\n filterOrdersToDisplay(personaSwitcherSelectedUpn: string): void\r\n {\r\n //console.log('filterOrdersToDisplay at: ' + moment());\r\n //console.log('filterOrdersToDisplay. courtOrdersInNextThreeMonths: ' + JSON.stringify(this.courtOrdersInNextThreeMonths));\r\n\r\n // At this point we have lost the 3-6 month data for the person being persona viewed?\r\n //console.log('filterOrdersToDisplay. courtOrdersInSubsequentThreeMonths: ' + JSON.stringify(this.courtOrdersInSubsequentThreeMonths));\r\n\r\n // Test for when persona switcher context is ended\r\n if(personaSwitcherSelectedUpn == null)\r\n {\r\n // Display everything\r\n this.courtOrdersInNextThreeMonthsToDisplay = (!!this.courtOrdersInNextThreeMonths && this.courtOrdersInNextThreeMonths.length > 0 ? this.courtOrdersInNextThreeMonths.slice() : []);\r\n this.courtOrdersInSubsequentThreeMonthsToDisplay = (!!this.courtOrdersInSubsequentThreeMonths && this.courtOrdersInSubsequentThreeMonths.length > 0 ? this.courtOrdersInSubsequentThreeMonths.slice() : []);\r\n }\r\n else // We have a persona upn to utilise. Filter the full collections to the subset with equal upns\r\n {\r\n this.courtOrdersInNextThreeMonthsToDisplay = [];\r\n this.courtOrdersInSubsequentThreeMonthsToDisplay = [];\r\n \r\n // Commence filtering by selected persona\r\n if(!this.courtOrdersInNextThreeMonths) {\r\n this.courtOrdersInNextThreeMonths = [];\r\n }\r\n this.courtOrdersInNextThreeMonths.forEach(r => {\r\n if(\r\n (r.officerUPN && r.officerUPN.length > 0 && r.officerUPN == personaSwitcherSelectedUpn) || \r\n (r.officerAlternateUPN && r.officerAlternateUPN.length > 0 && r.officerAlternateUPN == personaSwitcherSelectedUpn)\r\n )\r\n {\r\n this.courtOrdersInNextThreeMonthsToDisplay.push(r);\r\n }\r\n });\r\n this.courtOrdersInSubsequentThreeMonths.forEach(r => {\r\n if(\r\n (r.officerUPN && r.officerUPN.length > 0 && r.officerUPN == personaSwitcherSelectedUpn) || \r\n (r.officerAlternateUPN && r.officerAlternateUPN.length > 0 && r.officerAlternateUPN == personaSwitcherSelectedUpn)\r\n )\r\n {\r\n this.courtOrdersInSubsequentThreeMonthsToDisplay.push(r);\r\n //console.log('Adding [' + JSON.stringify(r) + '] to this persons subsequent list');\r\n }\r\n else\r\n {\r\n //console.log('Not adding [' + JSON.stringify(r) + '] to this persons subsequent list');\r\n }\r\n });\r\n\r\n //console.log('personaSwitcherSelectedUpn: ' + personaSwitcherSelectedUpn);\r\n //console.log('filterOrdersToDisplay. Persona enabled. courtOrdersInNextThreeMonthsToDisplay: ' + JSON.stringify(this.courtOrdersInNextThreeMonthsToDisplay));\r\n //console.log('filterOrdersToDisplay. Persona enabled. courtOrdersInSubsequentThreeMonthsToDisplay: ' + JSON.stringify(this.courtOrdersInSubsequentThreeMonthsToDisplay));\r\n }\r\n this.moveOrdersForDuplicateChildren();\r\n this.SetOrderCounts();\r\n }\r\n\r\n dataIsNotLoaded(): boolean{\r\n return !this.courtOrdersInNextThreeMonthsLoaded || !this.courtOrdersInSubsequentThreeLoaded;\r\n }\r\n\r\n getCourtOrdersDueSoonSentence(): string {\r\n return this.generateSentence(this.countOfUniqueChildrenInNextThreeMonths, this.countOfCourtOrdersInNextThreeMonths, 3);\r\n }\r\n \r\n getCourtOrdersDueInSixMonthsSentence(): string {\r\n let countOfChildren = undefined;\r\n if(this.countOfUniqueChildrenInSubsequentThreeMonths !== null || this.countOfUniqueChildrenMovedFromSubsequentToNextThreeMonths !== null)\r\n {\r\n countOfChildren = (this.countOfUniqueChildrenInSubsequentThreeMonths ? this.countOfUniqueChildrenInSubsequentThreeMonths : 0) + \r\n (this.countOfUniqueChildrenMovedFromSubsequentToNextThreeMonths ? this.countOfUniqueChildrenMovedFromSubsequentToNextThreeMonths : 0);\r\n }\r\n \r\n let response = this.generateSentence(countOfChildren, \r\n this.countOfCourtOrdersInSubsequentThreeMonths + this.countOfOrdersMovedFromSubsequentToNextThreeMonths, 6);\r\n\r\n if(this.countOfOrdersMovedFromSubsequentToNextThreeMonths > 0)\r\n {\r\n response += ' See the 3 month tab for ';\r\n if(this.countOfCourtOrdersInSubsequentThreeMonths === 0)\r\n {\r\n response += ' details.';\r\n }\r\n else\r\n {\r\n response += ' some details.';\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n // Generate sentences such as:\r\n // Example 1: No children or young people have an order expiring in the next 3 months.\r\n // Example 2: 2 children have orders due to expire in the next 6 months\r\n generateSentence(countOfUniqueChildren: number, countOfCourtOrders: number, monthCount: number) : string \r\n {\r\n if (countOfCourtOrders === 0) {\r\n return 'No children or young people have an order expiring in the next ' + monthCount + ' months.';\r\n }\r\n\r\n let response = '' + (countOfUniqueChildren === null || countOfUniqueChildren === undefined ? '?' : countOfUniqueChildren) + ' '; // '1 '\r\n\r\n // Determine prefix\r\n if(countOfUniqueChildren === 1)\r\n {\r\n response += 'child has '; // '1 child has '\r\n }\r\n else\r\n {\r\n response += 'children have '; // '2 children have '\r\n }\r\n\r\n if(countOfCourtOrders === 1)\r\n {\r\n response += 'an order '; // '2 children have an order '\r\n }\r\n else // > 1 \r\n {\r\n //response += countOfCourtOrders + ' orders '; // '2 children have orders '\r\n response += 'orders '; // '2 children have orders '\r\n }\r\n\r\n response += 'due to expire in the next ' + monthCount + ' months.';\r\n\r\n return response;\r\n }\r\n}","import {interval as observableInterval, Subscription, Observable } from 'rxjs';\r\nimport { Component, OnInit, OnDestroy, Input, HostListener, EventEmitter, Output } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { TaskSubsystemService } from '../../../services/api/task-subsystem.service';\r\nimport { courtOrdersSettings } from '../../../settings';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService } from 'services';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { UserInfoService } from '../../../services/user-info.service';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { CourtOrderDetails } from './court-order-details';\r\n\r\nimport { TabNotificationService } from '../../../services/notifications/tab-notification.service';\r\nimport { CourtOrderNotifyService } from '../../../services/notifications/court-order-notify.service';\r\nimport { CourtOrderPromiseNotifyService } from '../../../services/notifications/court-order-promise-notify.service';\r\n\r\n@Component({\r\n selector: 'app-court-order-summary',\r\n templateUrl: './court-order-summary.component.html',\r\n styleUrls: ['./court-order-summary.component.scss']\r\n})\r\nexport class CourtOrderSummaryComponent extends FocusCheck implements OnInit, OnDestroy {\r\n @Output() haveCourtOrdersToDisplay: EventEmitter = new EventEmitter();\r\n\r\n orderDetails: CourtOrderDetails;\r\n \r\n // By default on page load the selectedTab is not a court order tab\r\n selectedTab: FeatureName;\r\n nextThreeMonths: FeatureName = FeatureName.CourtOrders3Months;\r\n nextSixMonths: FeatureName = FeatureName.CourtOrders6Months;\r\n refreshIntervalInMilliseconds: number;\r\n officersUpn: string = '';\r\n personaSwitcherSelectedUpn: string = null;\r\n tracker: WorkTracker;\r\n intervalSubscription: Subscription;\r\n tabNotificationSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n personaChangedSubscription: Subscription;\r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n\r\n constructor(\r\n private taskSubsystem: TaskSubsystemService,\r\n private tabNotificationService: TabNotificationService,\r\n private courtOrderNotifyService: CourtOrderNotifyService,\r\n private idleDetectionService: IdleDetectionService,\r\n private userInfoService: UserInfoService,\r\n private personaSwitcherService: PersonaSwitcherService, \r\n private courtOrderPromiseNotifyService: CourtOrderPromiseNotifyService\r\n ) {\r\n super();\r\n this.orderDetails = new CourtOrderDetails();\r\n this.officersUpn = userInfoService.upn();\r\n this.refreshIntervalInMilliseconds = courtOrdersSettings.refreshIntervalInSeconds * 1000;\r\n this.tracker = new WorkTracker(true);\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n this.updateDisplayData();\r\n }\r\n });\r\n this.subscribeToPersonaChangedNotifications();\r\n }\r\n\r\n\r\n async ngOnInit() {\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n\r\n let courtOrdersPromise = this.loadData();\r\n this.courtOrderPromiseNotifyService.ChangeCourtOrderPromise(courtOrdersPromise);\r\n\r\n await this.tracker.track(\r\n courtOrdersPromise.then(() => {\r\n //this.orderDetails.SetOfficerHasStaff();\r\n this.orderDetails.filterOrdersToDisplay(this.personaSwitcherSelectedUpn);\r\n this.updateDisplayData();\r\n\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n courtOrdersPromise = this.loadData();\r\n this.courtOrderPromiseNotifyService.ChangeCourtOrderPromise(courtOrdersPromise);\r\n await courtOrdersPromise;\r\n //this.orderDetails.SetOfficerHasStaff();\r\n this.orderDetails.filterOrdersToDisplay(this.personaSwitcherSelectedUpn);\r\n this.updateDisplayData();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n get expiryInThreeMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders3Months\r\n }\r\n get expiryInSixMonthsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.CourtOrders6Months\r\n }\r\n\r\n get courtOrdersInNextThreeMonthsHasError(): boolean {\r\n return this.orderDetails.courtOrdersInNextThreeMonthsHasError\r\n }\r\n get courtOrdersInSubsequentThreeHasError(): boolean {\r\n return this.orderDetails.courtOrdersInSubsequentThreeHasError\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n async loadData() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n return await Promise.all([\r\n this.getCourtOrders(true),\r\n this.getCourtOrders(false)\r\n ]);\r\n }\r\n\r\n selectInfoPanel(panel: FeatureName) {\r\n this.tabNotificationService.ChangeSelectedTab(panel);\r\n }\r\n\r\n // This constructs an object structure which is what is emitted to and used by dashboard/court-order pages\r\n updateDisplayData()\r\n {\r\n let data = this.orderDetails.generateDisplayInformation(this.expiryInThreeMonthsTabSelected);\r\n\r\n // Set the orders to display. This is the result of possible persona switcher filtering, and also based on the currently selected tab\r\n this.courtOrderNotifyService.ChangeCourtOrderData(data);\r\n\r\n // Also, inform more generally whether we have any court order data at all\r\n var haveSomeData = !!this.orderDetails && \r\n (\r\n this.orderDetails.countOfCourtOrdersInNextThreeMonths > 0 || \r\n this.orderDetails.countOfCourtOrdersInSubsequentThreeMonths > 0\r\n );\r\n\r\n this.haveCourtOrdersToDisplay.emit(haveSomeData);\r\n }\r\n\r\n getCourtOrdersDueSoonSentence(): string {\r\n return this.orderDetails.getCourtOrdersDueSoonSentence();\r\n }\r\n\r\n getCourtOrdersDueInSixMonthsSentence(): string {\r\n return this.orderDetails.getCourtOrdersDueInSixMonthsSentence();\r\n }\r\n\r\n private getCourtOrders(immediate: boolean): Promise {\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n let finishOffset = (immediate ? 3 : 6);\r\n let fromDate = null;\r\n let fromDateMoment = moment()\r\n .local()\r\n .startOf('day');\r\n if(immediate)\r\n {\r\n // To ensure tasks don't drop off the moment they are due, include \r\n // court orders that expired up to 5 days ago.\r\n fromDate = fromDateMoment\r\n .subtract(5, 'day')\r\n .utc()\r\n .toDate();\r\n }\r\n else\r\n {\r\n fromDate = fromDateMoment\r\n .add(3, 'month')\r\n .add(1, 'day')\r\n .utc()\r\n .toDate();\r\n }\r\n\r\n let toDate = moment()\r\n .local()\r\n .endOf('day')\r\n .add(finishOffset, 'month')\r\n .utc()\r\n .toDate();\r\n\r\n return this.taskSubsystem.getCurrentCourts(fromDate, toDate).then(result => {\r\n if (result.hasError) {\r\n this.orderDetails.dataRetrievalError(immediate);\r\n\r\n } else {\r\n this.orderDetails.storeData(immediate, result.value);\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.error(error);\r\n this.orderDetails.dataRetrievalError(immediate);\r\n }\r\n }\r\n\r\n private subscribeToPersonaChangedNotifications() {\r\n if (!this.personaChangedSubscription) {\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n this.personaSwitcherSelectedUpn = upn; // When persona switcher is de-activated this will be called with a null upn\r\n this.orderDetails.filterOrdersToDisplay(this.personaSwitcherSelectedUpn);\r\n\r\n let courtOrdersPromise = this.loadData();\r\n this.courtOrderPromiseNotifyService.ChangeCourtOrderPromise(courtOrdersPromise);\r\n\r\n await this.tracker.track(courtOrdersPromise);\r\n this.orderDetails.filterOrdersToDisplay(this.personaSwitcherSelectedUpn);\r\n this.updateDisplayData();\r\n });\r\n }\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return this.orderDetails.dataIsNotLoaded() || (!this.userIsIdle && this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n","","export class CourtOrderTestData {\r\n testNextThreeMonthsData: Api.CourtOrder[];\r\n testSubsequentThreeMonthsData: Api.CourtOrder[];\r\n\r\n constructor(\r\n ) {\r\n this.testNextThreeMonthsData = [];\r\n this.testSubsequentThreeMonthsData = [];\r\n }\r\n\r\n // These scenarios reflect the permutations from spreadsheet CourtOrderWording.xslx attached \r\n // to user story 13716\r\n // https://dev.azure.com/projectebook/Portal%20Phase%201/_workitems/edit/13716/\r\n initialiseTestData()\r\n {\r\n //this.initialiseTest_0_0_0_0_0_0_0();\r\n //this.initialiseTest_1_0_1_0_0_1_0();\r\n //this.initialiseTest_1_0_2_0_0_2_0();\r\n this.initialiseTest_1_1_1_1_1_2_0();\r\n //this.initialiseTest_1_1_1_2_2_3_0();\r\n //this.initialiseTest_2_0_2_0_0_2_0();\r\n //this.initialiseTest_2_1_2_1_1_3_0();\r\n //this.initialiseTest_2_2_2_2_2_4_0();\r\n //this.initialiseTest_0_1_0_1_0_0_1();\r\n //this.initialiseTest_0_1_0_2_0_0_2();\r\n //this.initialiseTest_1_1_1_2_1_2_1();\r\n //this.initialiseTest_1_2_1_2_1_2_1();\r\n //this.initialiseTest_0_2_0_3_0_0_3();\r\n }\r\n\r\n // Count of children 0-3 months: 0\r\n // Count of children 3-6 months: 0\r\n // Actual orders in 0-3 months: 0\r\n // Actual orders in 3-6 months: 0\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 0\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_0_0_0_0_0_0_0() \r\n {\r\n this.testNextThreeMonthsData = [];\r\n this.testSubsequentThreeMonthsData = [];\r\n }\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 0\r\n // Actual orders in 0-3 months: 1\r\n // Actual orders in 3-6 months: 0\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 1\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_1_0_1_0_0_1_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"lruddick@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"JohnSmith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = [];\r\n }\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 0\r\n // Actual orders in 0-3 months: 2\r\n // Actual orders in 3-6 months: 0\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 2\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_1_0_2_0_0_2_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\" },{\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2019-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-09T00:00:00+10:00\" }] ');\r\n this.testSubsequentThreeMonthsData = [];\r\n }\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 1\r\n // Actual orders in 3-6 months: 1\r\n // Moved from 3-6 to 0-3 months: 1\r\n // Displayed in 0-3 months: 2\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_1_1_1_1_1_2_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - Interim Order(s)\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2020-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-09T00:00:00+10:00\"}]');\r\n }\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 1\r\n // Actual orders in 3-6 months: 2\r\n // Moved from 3-6 to 0-3 months: 2\r\n // Displayed in 0-3 months: 3\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_1_1_1_2_2_3_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2020-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-09T00:00:00+10:00\"},{\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"12\",\"orderTypeDisplay\": \"CPO - DO\",\"orderStartDtm\": \"2020-03-03T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-08T00:00:00+10:00\"}]');\r\n }\r\n\r\n // Count of children 0-3 months: 2\r\n // Count of children 3-6 months: 0\r\n // Actual orders in 0-3 months: 2\r\n // Actual orders in 3-6 months: 0\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 2\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_2_0_2_0_0_2_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2019-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-09T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = [];\r\n }\r\n\r\n // Count of children 0-3 months: 2\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 2\r\n // Actual orders in 3-6 months: 1\r\n // Moved from 3-6 to 0-3 months: 1\r\n // Displayed in 0-3 months: 3\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_2_1_2_1_1_3_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2019-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-09T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"12\",\"orderTypeDisplay\": \"CPO - DO\",\"orderStartDtm\": \"2020-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-09T00:00:00+10:00\"}]');\r\n }\r\n\r\n // Count of children 0-3 months: 2\r\n // Count of children 3-6 months: 2\r\n // Actual orders in 0-3 months: 2\r\n // Actual orders in 3-6 months: 2\r\n // Moved from 3-6 to 0-3 months: 2\r\n // Displayed in 0-3 months: 4\r\n // Displayed in 3-6 months: 0\r\n initialiseTest_2_2_2_2_2_4_0() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - DO - Other\",\"orderStartDtm\": \"2019-03-04T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-09T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG - Other\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}]');\r\n }\r\n\r\n\r\n\r\n\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n // TESTING THE 3-6 MONTH TEXT\r\n /////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n // Count of children 0-3 months: 0\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 0\r\n // Actual orders in 3-6 months: 1\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 0\r\n // Displayed in 3-6 months: 1\r\n initialiseTest_0_1_0_1_0_0_1() \r\n {\r\n this.testNextThreeMonthsData = [];\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}]');\r\n }\r\n\r\n // initialiseTest_1_1_1_1_1_2_0 (as per 0-3 month tests)\r\n \r\n // Count of children 0-3 months: 0\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 0\r\n // Actual orders in 3-6 months: 2\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 0\r\n // Displayed in 3-6 months: 2\r\n initialiseTest_0_1_0_2_0_0_2() \r\n {\r\n this.testNextThreeMonthsData = [];\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG - Other\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}]');\r\n }\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 1\r\n // Actual orders in 0-3 months: 1\r\n // Actual orders in 3-6 months: 2\r\n // Moved from 3-6 to 0-3 months: 1\r\n // Displayed in 0-3 months: 2\r\n // Displayed in 3-6 months: 1\r\n initialiseTest_1_1_1_2_1_2_1() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"lruddick@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"JohnSmith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG - Other\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}]');\r\n }\r\n\r\n // initialiseTest_1_1_1_2_2_3_0 (as per 0-3 month tests)\r\n\r\n // Count of children 0-3 months: 1\r\n // Count of children 3-6 months: 2\r\n // Actual orders in 0-3 months: 1\r\n // Actual orders in 3-6 months: 2\r\n // Moved from 3-6 to 0-3 months: 1\r\n // Displayed in 0-3 months: 2\r\n // Displayed in 3-6 months: 1\r\n initialiseTest_1_2_1_2_1_2_1() \r\n {\r\n this.testNextThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"lruddick@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"JohnSmith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"15\",\"orderTypeDisplay\": \"CPO - PSO\",\"orderStartDtm\": \"2019-03-05T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-03-10T00:00:00+10:00\"}]');\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG - Other\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}]');\r\n }\r\n\r\n // initialiseTest_2_2_2_2_2_4_0 (as per 0-3 month tests)\r\n\r\n // Count of children 0-3 months: 0\r\n // Count of children 3-6 months: 2\r\n // Actual orders in 0-3 months: 0\r\n // Actual orders in 3-6 months: 3\r\n // Moved from 3-6 to 0-3 months: 0\r\n // Displayed in 0-3 months: 0\r\n // Displayed in 3-6 months: 3\r\n initialiseTest_0_2_0_3_0_0_3() \r\n {\r\n this.testNextThreeMonthsData = [];\r\n this.testSubsequentThreeMonthsData = JSON.parse('[{\"hasStaff\": true,\"officerUPN\": \"someone@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"13\",\"orderTypeDisplay\": \"CPO - LTG\",\"orderStartDtm\": \"2020-03-11T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-11T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9303200N\",\"subjectChildName\": \"John Smith\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"12\",\"orderTypeDisplay\": \"CPO - STC\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}, {\"hasStaff\": true,\"officerUPN\": \"anotherperson@communities.qld.gov.au\",\"officerAlternateUPN\": \"\",\"officerName\": \"\",\"subjectChildId\": \"9301700N\",\"subjectChildName\": \"Joanne Clairville\",\"currentLocationType\": \"Care Arrangement\",\"orderCourt\": \"Ayr CC\",\"orderType\": \"14\",\"orderTypeDisplay\": \"CPO - STG\",\"orderStartDtm\": \"2020-03-15T00:00:00+10:00\",\"orderExpiryDtm\": \"2020-06-15T00:00:00+10:00\"}]');\r\n }\r\n}\r\n\r\n","import { Subscription } from 'rxjs';\r\nimport { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\r\nimport { HeroSection } from \"api/website_enum\";\r\nimport { TilePagination } from './tile-pagination';\r\nimport { paginationTestSettings } from '../../settings';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { TabNotificationService, PromiseNotifyService, CourtOrderPromiseNotifyService } from '../../services/notifications';\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Component({\r\n selector: 'app-hero',\r\n templateUrl: './hero.component.html',\r\n styleUrls: ['./hero.component.scss']\r\n})\r\nexport class HeroComponent implements OnDestroy {\r\n // Renamed for clarity as previously had same name as duplicate functionality in HomeVisitsSummary\r\n @Output() showMainDashboard: EventEmitter = new EventEmitter();\r\n \r\n staffCheckedOut: number;\r\n staffOverdueForCheckIn: number;\r\n activityFeedIsExpanded: boolean = false;\r\n\r\n // These two flags are used to instruct either the court order summary tile or the home visit summary tile\r\n // to trigger the tab notification service. We can't do it from here, otherwise an infinite recursion occurs.\r\n forceShowHomeVisits: boolean = false;\r\n forceShowCourtOrders: boolean = false;\r\n haveOrders: boolean = false;\r\n haveHomeVisits: boolean = false;\r\n overdueVisitsFinishedLoading: boolean = false;\r\n upcomingVisitsFinishedLoading: boolean = false;\r\n homeVisitsHasLoadedOnce: boolean = false;\r\n\r\n // Tile pagination\r\n tilePagination: TilePagination;\r\n\r\n homeVisitsTracker: WorkTracker;\r\n courtOrderTracker: WorkTracker;\r\n courtOrderNotifySubscription: Subscription;\r\n homeVisitsPromise: Promise;\r\n courtOrdersPromise: Promise;\r\n enableHomeVisitsLoading: boolean;\r\n enableCourtOrderLoading: boolean;\r\n\r\n selectedTab: FeatureName;\r\n tabNotificationSubscription: Subscription;\r\n homeVisitsPromiseSubscription: Subscription;\r\n\r\n constructor(private courtOrderPromiseNotifyService: CourtOrderPromiseNotifyService, \r\n private tabNotificationService: TabNotificationService, \r\n private promiseNotifyService: PromiseNotifyService)\r\n {\r\n this.tilePagination = new TilePagination();\r\n\r\n this.enableHomeVisitsLoading = true;\r\n this.enableCourtOrderLoading = true;\r\n this.homeVisitsTracker = new WorkTracker(true);\r\n this.courtOrderTracker = new WorkTracker(true);\r\n\r\n this.courtOrderNotifySubscription = this.courtOrderPromiseNotifyService.courtOrdersPromiseChanged.subscribe((courtOrdersPromise) => {\r\n if (this.courtOrdersPromise != courtOrdersPromise) {\r\n this.courtOrdersPromise = courtOrdersPromise;\r\n this.LoadCourtOrders();\r\n }\r\n });\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n }\r\n });\r\n this.subscribeToPromiseNotifications();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.homeVisitsPromiseSubscription) {\r\n this.homeVisitsPromiseSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n // This method controls the display of a ghost loading panel tile.\r\n // This meets the requirement to not show a tile unless we have data, \r\n // however we should still provide visual queues to the person that we are loading data.\r\n // The ghost-tile will display when any one or more tile is loading data.\r\n // Once all tiles have completed loading the ghost tile will be removed.\r\n // Additionally, if a tile is already visible (as it may have previously had data) \r\n // then even if now loading new data, we will not show the ghost-tile.\r\n upcomingVisitsPromise: Api.HomeVisitPromise;\r\n overdueVisitsPromise: Api.HomeVisitPromise;\r\n private subscribeToPromiseNotifications()\r\n {\r\n if(!this.homeVisitsPromiseSubscription)\r\n {\r\n this.homeVisitsPromiseSubscription = this.promiseNotifyService.promiseTrackerChanged.subscribe(async (thePromise) => {\r\n if(thePromise.visitType == 'upcoming-visits')\r\n {\r\n // Do nothing if we are already showing the home visits tile\r\n if(!!this.showTile(this.homeVisits))\r\n {\r\n this.enableHomeVisitsLoading = false;\r\n }\r\n else if (this.upcomingVisitsPromise != thePromise) { // Do nothing if we have no promise\r\n this.upcomingVisitsPromise = thePromise;\r\n \r\n // Start showing the ghost tile\r\n this.enableHomeVisitsLoading = true;\r\n await this.homeVisitsTracker.track(this.upcomingVisitsPromise.thePromise).then(results => {\r\n this.enableHomeVisitsLoading = false;\r\n this.upcomingVisitsFinishedLoading = true;\r\n\r\n // We are now showing the home visits tile. Stop showing the ghost loading tile\r\n if(!this.overdueVisitsFinishedLoading)\r\n {\r\n this.homeVisitsTracker.cancel();\r\n }\r\n });\r\n }\r\n }\r\n else if(thePromise.visitType == 'overdue-visits')\r\n {\r\n // Do nothing if we are already showing the home visits tile\r\n if(!!this.showTile(this.homeVisits))\r\n {\r\n this.enableHomeVisitsLoading = false;\r\n }\r\n else if (this.overdueVisitsPromise != thePromise) { // Do nothing if we have no promise\r\n this.overdueVisitsPromise = thePromise;\r\n\r\n // Start showing the ghost tile\r\n this.enableHomeVisitsLoading = true;\r\n await this.homeVisitsTracker.track(this.overdueVisitsPromise.thePromise).then(results => {\r\n this.enableHomeVisitsLoading = false;\r\n this.overdueVisitsFinishedLoading = true;\r\n\r\n // We are now showing the home visits tile. Stop showing the ghost loading tile\r\n if(!this.upcomingVisitsFinishedLoading)\r\n {\r\n this.homeVisitsTracker.cancel();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n public async LoadCourtOrders()\r\n {\r\n // Do nothing if we have no promise or we are already showing the court orders tile\r\n if(!this.courtOrdersPromise || !!this.showTile(this.courtOrders)) return;\r\n\r\n // Start showing the ghost tile\r\n this.enableCourtOrderLoading = true;\r\n await this.courtOrderTracker.track(\r\n this.courtOrdersPromise.then(() => {\r\n this.enableCourtOrderLoading = false;\r\n })\r\n );\r\n }\r\n\r\n // When new tiles are created, ensure a new entry is added to 'HeroSection' \r\n // Add a new getter here, which is used by the UI (be sure to add to the component on the html page)\r\n // when calling 'showTile' to determine whether it should be shown or not based on present/absent data.\r\n public get homeVisits(): HeroSection {\r\n return HeroSection.HomeVisits; \r\n }\r\n\r\n public get courtOrders(): HeroSection {\r\n return HeroSection.CourtOrders; \r\n }\r\n\r\n public get courtOrders_2(): HeroSection {\r\n return HeroSection.CourtOrders_2; \r\n }\r\n\r\n public get courtOrders_3(): HeroSection {\r\n return HeroSection.CourtOrders_3;\r\n }\r\n\r\n public get courtOrders_4(): HeroSection {\r\n return HeroSection.CourtOrders_4;\r\n }\r\n\r\n public get staffWhereabouts(): HeroSection {\r\n return HeroSection.StaffWhereabouts; \r\n }\r\n\r\n public showTestTiles(): boolean {\r\n return !!paginationTestSettings.enableTestPaginationTiles;\r\n }\r\n\r\n public updateHaveCourtOrders(haveOrders: boolean) : void \r\n {\r\n this.haveOrders = haveOrders;\r\n if(!!haveOrders && haveOrders === true)\r\n {\r\n this.tilePagination.ensureTile(HeroSection.CourtOrders, 2);\r\n if(!!paginationTestSettings.enableTestPaginationTiles)\r\n {\r\n this.tilePagination.ensureTile(HeroSection.CourtOrders_2, 3);\r\n this.tilePagination.ensureTile(HeroSection.CourtOrders_3, 4);\r\n this.tilePagination.ensureTile(HeroSection.CourtOrders_4, 5);\r\n }\r\n } \r\n else \r\n {\r\n this.tilePagination.removeTile(HeroSection.CourtOrders);\r\n if(!!paginationTestSettings.enableTestPaginationTiles)\r\n {\r\n this.tilePagination.removeTile(HeroSection.CourtOrders_2);\r\n this.tilePagination.removeTile(HeroSection.CourtOrders_3);\r\n this.tilePagination.removeTile(HeroSection.CourtOrders_4);\r\n }\r\n }\r\n\r\n this.updateSelectedFeature();\r\n\r\n this.showMainDashboard.emit((this.tilePagination.countOfHeroSections() > 0));\r\n }\r\n\r\n public updateHaveHomeVisits(haveVisits: boolean) : void\r\n {\r\n this.haveHomeVisits = haveVisits;\r\n if(!!haveVisits && haveVisits === true)\r\n {\r\n this.tilePagination.ensureTile(HeroSection.HomeVisits, 1);\r\n } \r\n else \r\n {\r\n this.tilePagination.removeTile(HeroSection.HomeVisits);\r\n }\r\n\r\n this.updateSelectedFeature();\r\n\r\n this.showMainDashboard.emit((this.tilePagination.countOfHeroSections() > 0));\r\n }\r\n\r\n private updateSelectedFeature()\r\n {\r\n // Special handling when home visits have not loaded once yet and we do have some\r\n if(!this.homeVisitsHasLoadedOnce && !!this.haveHomeVisits)\r\n {\r\n this.homeVisitsHasLoadedOnce = true;\r\n this.forceShowCourtOrders = false;\r\n if(!this.forceShowHomeVisits)\r\n {\r\n this.forceShowHomeVisits = true;\r\n this.tabNotificationService.ChangeSelectedTab(FeatureName.OverdueVisits);\r\n }\r\n }\r\n else if(!!this.haveHomeVisits && !!this.haveOrders) {\r\n this.forceShowHomeVisits = false;\r\n this.forceShowCourtOrders = false;\r\n }\r\n // This is not the first load. \r\n // We do have some data.\r\n // We may have started/stopped persona switcher a number of times as well\r\n else if(!this.haveHomeVisits && !!this.haveOrders)\r\n {\r\n this.forceShowHomeVisits = false;\r\n if(!this.forceShowCourtOrders)\r\n {\r\n this.forceShowCourtOrders = true;\r\n this.tabNotificationService.ChangeSelectedTab(FeatureName.CourtOrders3Months);\r\n }\r\n }\r\n else if(!!this.haveHomeVisits && !this.haveOrders)\r\n {\r\n this.forceShowCourtOrders = false;\r\n if(!this.forceShowHomeVisits)\r\n {\r\n this.forceShowHomeVisits = true;\r\n this.tabNotificationService.ChangeSelectedTab(FeatureName.OverdueVisits);\r\n }\r\n }\r\n }\r\n\r\n public updateActivityFeedExpanded(isExpanded: boolean)\r\n {\r\n this.activityFeedIsExpanded = isExpanded;\r\n }\r\n\r\n public showTile(section: HeroSection) : boolean \r\n {\r\n return this.tilePagination.showTile(section);\r\n }\r\n\r\n // Logic to reflect:\r\n // When there are less than 4 sections with data, return false. Do not show pagination buttons.\r\n // When there are 4 or more sections, all with data. Show.\r\n public showButtons() : boolean\r\n {\r\n return this.tilePagination.showButtons();\r\n }\r\n\r\n // Return true when currentPageIndex is > 0. Meaning: they have paged to the right and have at least one page to return to\r\n public leftButtonIsEnabled() : boolean \r\n {\r\n return this.tilePagination.leftButtonIsEnabled();\r\n }\r\n\r\n // Return true when showRight is true and currentPageIndex + 3 (max count of pages) < count of available groups of data.\r\n public rightButtonIsEnabled() : boolean \r\n {\r\n return this.tilePagination.rightButtonIsEnabled();\r\n }\r\n\r\n public pageLeft()\r\n {\r\n return this.tilePagination.pageLeft();\r\n }\r\n\r\n public pageRight()\r\n {\r\n return this.tilePagination.pageRight();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
","\r\nimport { interval as observableInterval, Subscription } from 'rxjs';\r\nimport { Component, OnInit, OnDestroy, HostListener, EventEmitter, Input, Output } from '@angular/core';\r\nimport { homeVisitsSettings } from '../../../settings';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { IdleDetectionService } from 'services';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { FeatureName, filterDateRangeSummaryDescription } from \"api/website_enum\";\r\nimport { HomeVisitUpcomingCountNotifyService, HomeVisitOverdueCountNotifyService, TabNotificationService, PromiseNotifyService } from '../../../services/notifications';\r\n\r\n@Component({\r\n selector: 'app-home-visits-summary',\r\n templateUrl: './home-visits-summary.component.html',\r\n styleUrls: ['./home-visits-summary.component.scss']\r\n})\r\nexport class HomeVisitsSummaryComponent extends FocusCheck implements OnInit, OnDestroy {\r\n // 'haveHomeVisitsToDisplay' is used in 'hero' to determine whether to display the Home Visits Summary tile\r\n @Output() haveHomeVisitsToDisplay: EventEmitter = new EventEmitter();\r\n \r\n upcomingCountsHasError: boolean;\r\n overdueCountsHasError: boolean;\r\n overdueHomeVisitCount: number;\r\n childHomeVisitCount: number;\r\n dateRangeType: number;\r\n\r\n selectedTab: FeatureName;\r\n overdueVisits: FeatureName = FeatureName.OverdueVisits;\r\n upcomingVisits: FeatureName = FeatureName.UpcomingVisits;\r\n refreshIntervalInMilliseconds: number;\r\n userIsIdle: boolean = false;\r\n isDestroyed: boolean = false;\r\n\r\n overdueTracker: WorkTracker;\r\n upcomingTracker: WorkTracker;\r\n tabNotificationSubscription: Subscription;\r\n idleDetectionSubscription: Subscription;\r\n homeVisitUpcomingCountSubscription: Subscription;\r\n homeVisitOverdueCountSubscription: Subscription;\r\n promiseSubscription: Subscription;\r\n\r\n constructor(\r\n private tabNotificationService: TabNotificationService,\r\n private idleDetectionService: IdleDetectionService,\r\n private homeVisitUpcomingCountNotifyService: HomeVisitUpcomingCountNotifyService, \r\n private homeVisitOverdueCountNotifyService: HomeVisitOverdueCountNotifyService, \r\n private promiseNotifyService: PromiseNotifyService\r\n ) {\r\n super();\r\n this.refreshIntervalInMilliseconds = homeVisitsSettings.refreshIntervalInSeconds * 1000;\r\n this.overdueTracker = new WorkTracker(true);\r\n this.upcomingTracker = new WorkTracker(true);\r\n this.upcomingCountsHasError = false;\r\n this.overdueCountsHasError = false;\r\n\r\n this.subscribeToTabNotifications();\r\n this.subscribeToUpcomingHomeVisitCountChangeNotifications();\r\n this.subscribeToOverdueHomeVisitCountChangeNotifications();\r\n this.subscribeToPromiseNotifications();\r\n }\r\n\r\n async ngOnInit() {\r\n this.idleDetectionService.reset();\r\n this.idleDetectionSubscription = this.idleDetectionService.isIdleChanged.subscribe(isIdle => this.userIsIdle = isIdle);\r\n }\r\n\r\n get overdueVisitsTabSelected(): boolean {\r\n return !this.selectedTab || this.selectedTab === FeatureName.OverdueVisits\r\n }\r\n get upcomingVisitsTabSelected(): boolean {\r\n return this.selectedTab && this.selectedTab === FeatureName.UpcomingVisits\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n if (this.idleDetectionSubscription) {\r\n this.idleDetectionSubscription.unsubscribe();\r\n }\r\n if (this.homeVisitUpcomingCountSubscription) {\r\n this.homeVisitUpcomingCountSubscription.unsubscribe();\r\n }\r\n if (this.homeVisitOverdueCountSubscription) {\r\n this.homeVisitOverdueCountSubscription.unsubscribe();\r\n }\r\n if (this.promiseSubscription) {\r\n this.promiseSubscription.unsubscribe();\r\n }\r\n\r\n this.idleDetectionService.ngOnDestroy();\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n selectInfoPanel(panel: FeatureName) {\r\n this.tabNotificationService.ChangeSelectedTab(panel);\r\n }\r\n\r\n getUpcomingHomeVisitSummarySentence(): string {\r\n var suffix = filterDateRangeSummaryDescription(this.dateRangeType);\r\n if (this.childHomeVisitCount === 0) {\r\n return `No children or young people are due for a visit ${suffix}.`;\r\n }\r\n else if (this.childHomeVisitCount === 1) {\r\n return `1 child or young person is due for a visit ${suffix}.`;\r\n }\r\n else if (this.childHomeVisitCount > 1) {\r\n return `${this.childHomeVisitCount} children or young people are due for a visit ${suffix}.`;\r\n }\r\n else if (!this.childHomeVisitCount) {\r\n return `? children or young people are due for a visit ${suffix}.`;\r\n }\r\n }\r\n\r\n getOverdueVisitSummarySentence(): string {\r\n if (this.overdueHomeVisitCount === 0) {\r\n return 'No children or young people have a visit overdue.';\r\n }\r\n else if (this.overdueHomeVisitCount === 1) {\r\n return '1 child or young person has a visit overdue.';\r\n }\r\n else if (this.overdueHomeVisitCount > 1) {\r\n return `${this.overdueHomeVisitCount} children or young people have a visit overdue.`;\r\n }\r\n else if (!this.overdueHomeVisitCount) {\r\n return '? children or young people have a visit overdue.';\r\n }\r\n }\r\n\r\n private subscribeToUpcomingHomeVisitCountChangeNotifications() {\r\n if (!this.homeVisitUpcomingCountSubscription) {\r\n this.homeVisitUpcomingCountSubscription = this.homeVisitUpcomingCountNotifyService.upcomingVisitCountDataChanged.subscribe(async (countData) => {\r\n this.childHomeVisitCount = countData.recordCount;\r\n this.upcomingCountsHasError = countData.hasError;\r\n this.dateRangeType = countData.dateRangeType;\r\n // This allows the 'hero' component to show that we do/not have a home visit tile to show\r\n this.haveHomeVisitsToDisplay.emit(this.overdueHomeVisitCount > 0 || this.childHomeVisitCount > 0);\r\n });\r\n }\r\n }\r\n\r\n private subscribeToOverdueHomeVisitCountChangeNotifications() {\r\n if (!this.homeVisitOverdueCountSubscription) {\r\n this.homeVisitOverdueCountSubscription = this.homeVisitOverdueCountNotifyService.overdueVisitCountDataChanged.subscribe(async (countData) => {\r\n this.overdueHomeVisitCount = countData.recordCount;\r\n this.overdueCountsHasError = countData.hasError;\r\n // This allows the 'hero' component to show that we do/not have a home visit tile to show\r\n this.haveHomeVisitsToDisplay.emit(this.overdueHomeVisitCount > 0 || this.childHomeVisitCount > 0);\r\n });\r\n }\r\n }\r\n\r\n upcomingVisitsPromise: Api.HomeVisitPromise;\r\n overdueVisitsPromise: Api.HomeVisitPromise;\r\n private subscribeToPromiseNotifications()\r\n {\r\n if(!this.promiseSubscription)\r\n {\r\n this.promiseSubscription = this.promiseNotifyService.promiseTrackerChanged.subscribe(async (thePromise) => {\r\n if(thePromise.visitType == 'upcoming-visits')\r\n {\r\n if (this.upcomingVisitsPromise != thePromise) {\r\n this.upcomingVisitsPromise = thePromise;\r\n await this.upcomingTracker.track(this.upcomingVisitsPromise.thePromise);\r\n }\r\n }\r\n else if(thePromise.visitType == 'overdue-visits')\r\n {\r\n if (this.overdueVisitsPromise != thePromise) {\r\n this.overdueVisitsPromise = thePromise;\r\n await this.overdueTracker.track(this.overdueVisitsPromise.thePromise);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private subscribeToTabNotifications() {\r\n if(!this.tabNotificationSubscription)\r\n {\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n if (this.selectedTab != tab) {\r\n this.selectedTab = tab;\r\n }\r\n });\r\n }\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}","\r\n \r\n","export * from './hero.component';\r\nexport * from './activity-feed/activity-feed.component';\r\nexport * from './home-visits-summary/home-visits-summary.component';\r\nexport * from './court-order-summary/court-order-summary.component';\r\nexport * from './staff-whereabouts-summary/staff-whereabouts-summary.component';","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-staff-whereabouts-summary',\r\n templateUrl: './staff-whereabouts-summary.component.html',\r\n styleUrls: ['./staff-whereabouts-summary.component.scss']\r\n})\r\nexport class StaffWhereaboutsSummaryComponent {\r\n @Input() staffCheckedOut: number;\r\n @Input() staffOverdueForCheckIn: number;\r\n\r\n getCheckedOutSentence(): string {\r\n if (this.staffCheckedOut === 0) {\r\n return 'There are no staff members currently checked out.';\r\n }\r\n else if (this.staffCheckedOut === 1) {\r\n return 'There is 1 staff member currently checked out.';\r\n }\r\n else if (this.staffCheckedOut > 1) {\r\n return `There are ${this.staffCheckedOut} staff members currently checked out.`;\r\n }\r\n else if (!this.staffCheckedOut) {\r\n return 'There are ? staff members currently checked out.';\r\n }\r\n }\r\n\r\n getOverdueForCheckinSentence(): string {\r\n if (this.staffCheckedOut === 0) {\r\n return 'There are no staff members currently overdue for check-in.';\r\n }\r\n else if (this.staffCheckedOut === 1) {\r\n return 'There is 1 staff member currently overdue for check-in.';\r\n }\r\n else if (this.staffCheckedOut > 1) {\r\n return `There are ${this.staffCheckedOut} staff members currently overdue for check-in.`;\r\n }\r\n else if (!this.staffCheckedOut) {\r\n return 'There are ? staff members currently overdue for check-in.';\r\n }\r\n }\r\n}\r\n","","import { HeroSection } from \"api/website_enum\";\r\n\r\n/*\r\n Note, we cannot use a simple count of tiles, current index and tiles per page to implement this pagination.\r\n This pagination will dynamically show or hide a tile based on whether it has data to present or not.\r\n Due to this, we use a tile type; see 'HeroSection'. The UI calls 'showTile' with its enumeration value.\r\n Only if this is present in 'allTiles' will we return true.\r\n The population of allTiles is driven by calls to: ensureTile and removeTile and is based \r\n on the results of calls to a backend for data.\r\n*/\r\nexport class TilePagination {\r\n allTiles: HeroSection[];\r\n\r\n // Initial first page\r\n currentPageIndex: 0;\r\n\r\n // The count of tiles to display at any one time\r\n visibleTileCount: 4;\r\n\r\n constructor() {\r\n this.initialiseValues();\r\n this.currentPageIndex = 0;\r\n this.visibleTileCount = 4;\r\n }\r\n \r\n initialiseValues()\r\n {\r\n this.allTiles = [];\r\n }\r\n \r\n ensureTile(section: HeroSection, index: number) : void\r\n {\r\n var indexOffsetFromZero = index - 1;\r\n var indexOfSection = this.allTiles.indexOf(section);\r\n if(indexOfSection >= 0)\r\n {\r\n if(indexOfSection == index) return; // Nothing to do\r\n\r\n this.allTiles.splice(indexOfSection, 1); // Remove at current place\r\n this.allTiles.splice(indexOffsetFromZero, 0, section); // Add to desired place\r\n }\r\n else\r\n {\r\n // Not currently present. Add\r\n if(this.allTiles.length > indexOffsetFromZero)\r\n {\r\n this.allTiles.splice(indexOffsetFromZero, 0, section);\r\n }\r\n else\r\n {\r\n this.allTiles.push(section);\r\n }\r\n }\r\n }\r\n\r\n removeTile(section: HeroSection)\r\n {\r\n var indexOfSection = this.allTiles.indexOf(section);\r\n if(indexOfSection >= 0)\r\n {\r\n this.allTiles.splice(indexOfSection, 1);\r\n }\r\n }\r\n\r\n public showTile(section: HeroSection) : boolean \r\n {\r\n var countOfGroupsOfData = this.countOfHeroSections();\r\n var indexOfSection = this.allTiles.indexOf(section);\r\n if(indexOfSection < 0) {\r\n //if(section == 'Home Visits')\r\n // console.log('pagination.showTile. Returning false for section: ' + JSON.stringify(section));\r\n return false;\r\n }\r\n \r\n // Determine the last visible index\r\n var lastVisibleIndex = this.currentPageIndex + this.visibleTileCount - 1;\r\n if(lastVisibleIndex >= countOfGroupsOfData) lastVisibleIndex -=1;\r\n\r\n var response = indexOfSection >= this.currentPageIndex && indexOfSection <= lastVisibleIndex;\r\n //if(section == 'Home Visits')\r\n // console.log('showTile: ' + section + '. response: ' + response + '. indexOfSection: ' + indexOfSection + '. this.currentPageIndex: ' + this.currentPageIndex + '. lastVisibleIndex: ' + lastVisibleIndex);\r\n return response;\r\n }\r\n\r\n public countOfHeroSections() : number \r\n {\r\n return (!!this.allTiles ? this.allTiles.length : 0);\r\n }\r\n\r\n // Logic to reflect:\r\n // When there are less than 4 sections with data, return false. Do not show pagination buttons.\r\n // When there are 4 or more sections, all with data. Show.\r\n public showButtons() : boolean\r\n {\r\n return this.countOfHeroSections() > this.visibleTileCount;\r\n }\r\n\r\n // Return true when currentPageIndex is > 0. Meaning: they have paged to the right and have at least one page to return to\r\n public leftButtonIsEnabled() : boolean \r\n {\r\n return this.currentPageIndex > 0;\r\n }\r\n\r\n // Return true when showRight is true and currentPageIndex + 3 (max count of pages) < count of available groups of data.\r\n public rightButtonIsEnabled() : boolean \r\n {\r\n // A sliding window returning true up until the window is displaying all remaining items\r\n var countOfGroupsOfData = this.countOfHeroSections();\r\n return countOfGroupsOfData > this.visibleTileCount && (this.currentPageIndex < (countOfGroupsOfData - this.visibleTileCount));\r\n }\r\n\r\n public pageLeft()\r\n {\r\n if(!this.leftButtonIsEnabled()) return;\r\n\r\n this.currentPageIndex -= 1;\r\n }\r\n\r\n public pageRight()\r\n {\r\n if(!this.rightButtonIsEnabled()) return;\r\n\r\n this.currentPageIndex += 1;\r\n }\r\n}\r\n","\r\nimport {throwError as observableThrowError, Observable } from 'rxjs';\r\n\r\nimport {catchError} from 'rxjs/operators';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { HttpRequest } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\nimport { MsalService } from \"services\";\r\n\r\n@Injectable()\r\nexport class FailedAuthorizationInterceptor implements HttpInterceptor {\r\n\r\n constructor(private router: Router, private adalService: MsalService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n return next.handle(request).pipe(catchError((err: any) => {\r\n if (err instanceof HttpErrorResponse) {\r\n if (err.status === 401 || err.status === 403 || err.message.indexOf(\"AADSTS50105\") >= 0) {\r\n this.adalService.clearCache();\r\n this.router.navigate(['unauthorised']);\r\n };\r\n }\r\n\r\n return observableThrowError(err);\r\n }));\r\n }\r\n}\r\n","\r\nimport {from as observableFrom, Observable } from 'rxjs';\r\n\r\nimport {mergeMap} from 'rxjs/operators';\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpEvent, HttpHandler, HttpInterceptor } from \"@angular/common/http\";\r\nimport { HttpRequest } from \"@angular/common/http\";\r\nimport { MsalService } from \"services\";\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(private adalService: MsalService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n return this.getToken().pipe(mergeMap((token: string) => {\r\n\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `bearer ${token}`,\r\n ApplicationName: 'CSPortal'\r\n }\r\n });\r\n\r\n return next.handle(request);\r\n }));\r\n }\r\n\r\n private getToken(): Observable {\r\n return observableFrom(this.adalService.getAccessToken());\r\n }\r\n}\r\n","import { Component, ElementRef, Input, OnInit, OnDestroy } from '@angular/core';\r\n\r\nimport { ModalService } from '../../services';\r\n\r\n@Component({\r\n selector: 'jw-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.scss']\r\n})\r\nexport class ModalComponent implements OnInit {\r\n @Input() id: string;\r\n private element: any;\r\n\r\n constructor(private modalService: ModalService, private el: ElementRef) {\r\n this.element = el.nativeElement;\r\n }\r\n\r\n ngOnInit(): void {\r\n let modal = this;\r\n\r\n // ensure id attribute exists\r\n if (!this.id) {\r\n console.error('modal must have an id');\r\n return;\r\n }\r\n\r\n // move element to bottom of page (just before ) so it can be displayed above everything else\r\n document.body.appendChild(this.element);\r\n\r\n // close modal on background click\r\n this.element.addEventListener('click', function (e: any) {\r\n if (e.target.className === 'jw-modal') {\r\n modal.close();\r\n }\r\n });\r\n\r\n // add self (this modal instance) to the modal service so it's accessible from controllers\r\n this.modalService.add(this);\r\n }\r\n\r\n // remove self from modal service when directive is destroyed\r\n ngOnDestroy(): void {\r\n this.modalService.remove(this.id);\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n\r\n // open modal\r\n open(): void {\r\n this.element.style.display = 'block';\r\n document.body.classList.add('jw-modal-open');\r\n }\r\n\r\n // close modal\r\n close(): void {\r\n this.element.style.display = 'none';\r\n document.body.classList.remove('jw-modal-open');\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
","import { Component, Input, OnInit } from '@angular/core';\r\nimport { from, Observable } from 'rxjs';\r\nimport { UserInfoService } from '../../../services/user-info.service';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n @Input() time: string;\r\n @Input() date: string;\r\n public isAuthenticated$: Observable\r\n \r\n\r\n constructor(private userInfoService: UserInfoService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isAuthenticated$ = from(this.userInfoService.isAuthenticated());\r\n }\r\n\r\n userFullname(): string {\r\n return this.userInfoService.fullName();\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Internal Use Only. Not for redistribution.

\r\n

For assistance, please email CSPortal@csyw.qld.gov.au

\r\n
\r\n
\r\n
\r\n
\r\n
Generated By:
\r\n
{{ userFullname() }}
\r\n
\r\n
\r\n
Generated On:
\r\n
{{ time }} {{ date }}
\r\n
\r\n
\r\n
\r\n
\r\n
","import {from, interval as observableInterval, Observable , Subscription } from 'rxjs';\r\nimport { Component, Input, OnInit, OnDestroy, HostListener, ViewChild, ElementRef, Renderer2 } from '@angular/core';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { UserInfoService } from '../../../services/user-info.service';\r\nimport { FocusCheck } from '../../shared/FocusCheck';\r\nimport { OfficeLockdownStatusService } from '../../../services/api/office-lockdown-status.service';\r\nimport { ServiceCentreLockdownService } from '../../../services/api/service-centre-lockdown.service';\r\nimport { FeatureLoggerService } from 'services';\r\nimport { officeLockdownStatusSettings } from '../../../settings';\r\nimport * as moment from 'moment';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { ModalService } from '../../../services/modal.service';\r\nimport { OfficeLockdownNotifyService } from '../../../services/notifications/office-lockdown-notify.service';\r\nimport * as Bowser from \"bowser\";\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent extends FocusCheck implements OnInit, OnDestroy {\r\n @Input() time: string;\r\n @Input() date: string;\r\n\r\n @ViewChild('lockdownArea') lockdownAreaContainer:ElementRef;\r\n\r\n tracker: WorkTracker;\r\n showLockdownChangingBanner: boolean = false;\r\n showOfficeIsLockedDown: boolean;\r\n showOfficeIsNoLongerLockedDown: boolean;\r\n isDestroyed: boolean = false;\r\n serviceCentreDetails: Api.ServiceCentreViewModel;\r\n isTLOrManager: boolean;\r\n dataLoaded: boolean;\r\n officeName: string;\r\n lockedDownByName: string;\r\n lockedDownByUpn: string;\r\n lockedDownAt: string;\r\n _renderer: Renderer2;\r\n mobileView: boolean;\r\n informationalMessage: string;\r\n enableAlertButton: boolean;\r\n IsIE11: boolean;\r\n \r\n private intervalSubscription: Subscription;\r\n public isAuthenticated$: Observable\r\n\r\n constructor(private userInfoService: UserInfoService, private officeLockdownService: OfficeLockdownStatusService, \r\n private serviceCentreLockdownService: ServiceCentreLockdownService, private renderer: Renderer2, private featureLogger: FeatureLoggerService, \r\n private modalService: ModalService, \r\n private officeLockdownNotifyService: OfficeLockdownNotifyService) {\r\n super();\r\n this.showOfficeIsLockedDown = false;\r\n this.showOfficeIsNoLongerLockedDown = false;\r\n this.showLockdownChangingBanner = false;\r\n this.dataLoaded = false;\r\n this.tracker = new WorkTracker(true);\r\n this.officeName = '';\r\n this.lockedDownByName = '';\r\n this.lockedDownByUpn = '';\r\n this.lockedDownAt = '';\r\n this._renderer = renderer;\r\n this.mobileView = document.documentElement.clientWidth <= 900;\r\n this.enableAlertButton = true;\r\n\r\n this.informationalMessage = '';\r\n\r\n const bowser = Bowser.getParser(window.navigator.userAgent);\r\n\r\n this.IsIE11 = bowser.satisfies({\r\n \"internet explorer\": \"<=11\"\r\n });\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n await this.tracker.track(\r\n this.getOfficeLockdownStatus().then(async () => {\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n const refreshInterval = officeLockdownStatusSettings.refreshIntervalInSeconds * 1000;\r\n this.intervalSubscription = observableInterval(refreshInterval).subscribe(async () => {\r\n await this.getOfficeLockdownStatus();\r\n });\r\n }\r\n })\r\n );\r\n this.isAuthenticated$ = from(this.userInfoService.isAuthenticated());\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription) {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n\r\n this.isDestroyed = true;\r\n }\r\n\r\n userFullname(): string {\r\n return this.userInfoService.fullName();\r\n }\r\n \r\n lockedDownTextFullScreen(): string {\r\n if(!!this.showOfficeIsLockedDown)\r\n {\r\n return this.officeName + ' is in lock down due to a security issue. Set by ' + this.lockedDownByName + ' at ' + this.lockedDownAt + '.';\r\n }\r\n else if (!!this.showOfficeIsNoLongerLockedDown)\r\n {\r\n return this.officeName + ' is no longer locked down due to a security issue.';\r\n }\r\n else\r\n {\r\n return '';\r\n }\r\n }\r\n\r\n lockedDownTextMobile(sentence: number): string {\r\n if(!!this.showOfficeIsLockedDown)\r\n {\r\n return (sentence == 1 ? \r\n this.officeName + ' is in lock down due to a security issue.'\r\n :\r\n 'Set by ' + this.lockedDownByName + ' at ' + this.lockedDownAt + '.');\r\n }\r\n else if (!!this.showOfficeIsNoLongerLockedDown)\r\n {\r\n return this.officeName + ' is no longer locked down due to a security issue.';\r\n }\r\n else\r\n {\r\n return '';\r\n }\r\n }\r\n\r\n /*\r\n Skip to the element and ensure that focus is moved there.\r\n */\r\n scrollTo(elementId) {\r\n let element = document.getElementById(elementId);\r\n if(element != null)\r\n {\r\n element.scrollIntoView();\r\n element.setAttribute('tabindex','-1');\r\n element.focus();\r\n }\r\n }\r\n\r\n public updateTLManagerStatus(isTLOrMngr: boolean)\r\n {\r\n this.isTLOrManager = isTLOrMngr;\r\n }\r\n\r\n // If the office is not locked down, anyone can see the 'activate' toggle\r\n // If the office is locked down, only the officer who activated the \r\n // lockdown can see the 'Safe to return' option. Also, a T/L or Manager \r\n // can see the option.\r\n showLockdownToggle()\r\n {\r\n // If the office is not locked down, anyone can see the 'activate' toggle \r\n if(!this.showOfficeIsLockedDown) {\r\n return true;\r\n }\r\n\r\n // A T/L or Manager can see the option.\r\n if(this.isTLOrManager) \r\n {\r\n return true;\r\n }\r\n \r\n // The officer who activated the lockdown can see the 'Safe to return' option\r\n // this.serviceCentreDetails.lockedDownByName\r\n if(this.lockedDownByUpn == this.userInfoService.upn())\r\n {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n toggleLockdown(lockdownHasBeenToggled: boolean)\r\n {\r\n // We don't do anything with the result so no reason to await\r\n // Some time later (within 1 minute) the office lockdown get will fire and update the UI \r\n // if locked down or removed.\r\n return (this.showOfficeIsLockedDown === true) ?\r\n this.openModal('deactivate-lockdown-modal')\r\n :\r\n this.openModal('activate-lockdown-modal');\r\n }\r\n\r\n async lockdownOffice()\r\n {\r\n // Handle race condition: Officer asks to lock down as we receive a message saying it is locked down\r\n if(!!this.showOfficeIsLockedDown){\r\n this.presentAlreadyLockedDown();\r\n }\r\n else\r\n {\r\n this.showOfficeIsNoLongerLockedDown = false;\r\n this.showLockdownChangingBanner = false;\r\n if(this.enableAlertButton === false) return;\r\n this.enableAlertButton = false;\r\n this.featureLogger.logFeatureUsage(FeatureName.LockDown);\r\n await this.tracker.track(\r\n this.serviceCentreLockdownService.lockdownOffice().then(async () => {\r\n this.showOfficeIsNoLongerLockedDown = true;\r\n await this.getOfficeLockdownStatus();\r\n })\r\n .catch(err => {\r\n if (err.status === 409) {\r\n this.presentAlreadyLockedDown();\r\n }\r\n })\r\n ); \r\n }\r\n }\r\n\r\n presentAlreadyLockedDown()\r\n {\r\n this.informationalMessage = 'CSSC is already in lock down.';\r\n this.enableAlertButton = true;\r\n this.openModal('informational-lockdown-modal');\r\n }\r\n\r\n async setOfficeSafeToReturn() {\r\n // Handle race condition: Officer asks to lift lock down as we receive a message saying it is lifted\r\n if(!this.showOfficeIsLockedDown){\r\n this.presentAlreadyLifted();\r\n }\r\n else\r\n {\r\n this.showLockdownChangingBanner = true;\r\n if(this.enableAlertButton === false) return;\r\n this.enableAlertButton = false;\r\n this.featureLogger.logFeatureUsage(FeatureName.SafeToReturn);\r\n await this.tracker.track(\r\n this.serviceCentreLockdownService.safeToReturn().then(async () => {\r\n await this.getOfficeLockdownStatus();\r\n })\r\n .catch(err => {\r\n if (err.status === 409) {\r\n this.presentAlreadyLifted();\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n presentAlreadyLifted()\r\n {\r\n this.informationalMessage = 'CSSC is already safe to return.';\r\n this.enableAlertButton = true;\r\n this.openModal('informational-lockdown-modal');\r\n }\r\n\r\n private async getOfficeLockdownStatus(): Promise {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n let results = await this.officeLockdownService.get();\r\n if(!results.hasError) {\r\n this.serviceCentreDetails = results.value;\r\n this.dataLoaded = true;\r\n this.officeName = !!this.serviceCentreDetails ? this.serviceCentreDetails.name : '';\r\n this.lockedDownByName = !!this.serviceCentreDetails ? this.serviceCentreDetails.lockedDownByName : '';\r\n this.lockedDownByUpn = !!this.serviceCentreDetails ? this.serviceCentreDetails.lockedDownByUpn : '';\r\n this.lockedDownAt = !!this.serviceCentreDetails ? this.formatDate(this.serviceCentreDetails.lockedDownDtm) : '';\r\n\r\n // Inform listeners of the current service centre details\r\n this.officeLockdownNotifyService.ChangeServiceCentre(this.serviceCentreDetails);\r\n\r\n // Add the 'load' class to the displayed alert area\r\n if(!!this.serviceCentreDetails && this.serviceCentreDetails.isCurrentlyLockedDown === true) {\r\n // This will cause the 'setContainer' setter to be executed and the container made available on creation\r\n // This will in turn invoke 'showLockdown'\r\n // this.officeLockdownNotifyService.ChangeServiceCentre(this.serviceCentreDetails);\r\n this.showOfficeIsLockedDown = true;\r\n this.showLockdown();\r\n\r\n } else {\r\n this.removeLockdown();\r\n }\r\n\r\n } else {\r\n this.removeLockdown();\r\n }\r\n\r\n } catch (error) {\r\n this.removeLockdown();\r\n }\r\n finally {\r\n this.enableAlertButton = true;\r\n }\r\n }\r\n\r\n // HH:MM PM/AM, DD MMM YYYY\r\n formatDate(date: string): string {\r\n return !!date\r\n ? moment(date)\r\n .local()\r\n .format('h:mm A, D MMM YYYY')\r\n : 'n/a';\r\n }\r\n\r\n showLockdown() {\r\n this.showLockdownChangingBanner = true;\r\n this.showOfficeIsLockedDown = true;\r\n this.showOfficeIsNoLongerLockedDown = false;\r\n this.scrollTo('scrollableLockdownArea');\r\n }\r\n\r\n removeLockdown() {\r\n // Only show removing if already showing locked down\r\n this.showLockdownChangingBanner = (!!this.showOfficeIsLockedDown);\r\n this.showOfficeIsNoLongerLockedDown = (!!this.showOfficeIsLockedDown);\r\n this.showOfficeIsLockedDown = false;\r\n\r\n this.scrollTo('scrollableLockdownArea');\r\n \r\n this.officeName = !!this.serviceCentreDetails ? this.serviceCentreDetails.name : '';\r\n this.lockedDownByName = '';\r\n this.lockedDownByUpn = '';\r\n this.lockedDownAt = '';\r\n\r\n const lockdownArea = this.lockdownAreaContainer;\r\n this.enableAlertButton = true;\r\n \r\n setTimeout(() => {\r\n // Allow the above animation to run, with a scroll-to-top then 'n' second fade-out animation \r\n // before hard-removing the elements with this flag\r\n //this.renderer.addClass(lockdownArea.nativeElement, 'visually-hidden');\r\n this.showLockdownChangingBanner = false;\r\n this.showOfficeIsLockedDown = false;\r\n this.showOfficeIsNoLongerLockedDown = false;\r\n\r\n }, 8000);\r\n }\r\n \r\n private shouldRefreshData() {\r\n var shouldRefresh = (!this.isDestroyed && (!this.dataLoaded || (this.windowGotFocus && !document.hidden)));\r\n return shouldRefresh;\r\n }\r\n\r\n openModal(id: string) {\r\n this.modalService.open(id);\r\n }\r\n\r\n closeModal(id: string) {\r\n this.modalService.close(id);\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onWindowResize(event: Event): void {\r\n this.mobileView = document.documentElement.clientWidth <= 900;\r\n }\r\n}","
\r\n \r\n
\r\n
\r\n
\r\n

Unsupported Browser

\r\n

This browser is no longer supported for use with the CS Portal.

\r\n

Please use either Chrome or Edge. These are available from the Software Centre.

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {{lockedDownTextFullScreen()}}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{lockedDownTextMobile(1)}}\r\n {{lockedDownTextMobile(2)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Child Safety
\r\n
Portal
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ time }}\r\n {{ date }}\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n
\r\n

 Yes. It's safe to return

\r\n
\r\n\r\n
\r\n

Send an alert to advise {{officeName}} staff that the security issue is no longer current and staff are able to return to the CSSC.

\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n

 Activate lock down

\r\n
\r\n \r\n
\r\n

Send an alert to advise {{officeName}} staff there is a lock down at the CSSC due to a security issue.

\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n

 Lock down conflict for {{officeName}}

\r\n
\r\n \r\n
\r\n

{{informationalMessage}}

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, Input, EventEmitter, Output } from '@angular/core';\r\nimport { switchApplicationSettings, ApplicationUrls, kicboxMyProfileSettings, KicboxMyProfileSettings } from '../../../../settings';\r\nimport { Subscription } from 'rxjs';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { ShowPriorityNotifyService } from 'services/notifications/show-priority-notify.service';\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { PriorityIconService } from 'services/priority-icon.service';\r\nimport { paginationTestSettings } from 'settings';\r\n\r\n@Component({\r\n selector: 'app-main-menu',\r\n templateUrl: './main-menu.component.html',\r\n styleUrls: ['./main-menu.component.scss']\r\n})\r\nexport class MainMenuComponent {\r\n applicationUrls: ApplicationUrls;\r\n kicboxMyProfile: KicboxMyProfileSettings;\r\n @Input() fullName: string;\r\n @Input() officeIsLockedDown: boolean;\r\n @Input() showLockdownToggle: boolean;\r\n @Output() isTLOrManager: EventEmitter = new EventEmitter();\r\n @Output() lockdownHasBeenToggled: EventEmitter = new EventEmitter();\r\n personaChangedSubscription: Subscription;\r\n teams: Api.PersonaTeam[];\r\n selectedTeamLeaderId: string;\r\n selectedTeam: Api.ChildSafetyOfficerTeamMemberDto[];\r\n hasTeamError: boolean;\r\n hasTeamDataLoaded: boolean;\r\n currentPersona: Api.ChildSafetyOfficerTeamMemberDto;\r\n\r\n priorityIsGloballyDisabled: boolean = false;\r\n priorityIsEnabled: boolean = false;\r\n\r\n constructor(private personaSwitcherService: PersonaSwitcherService, \r\n private showPriorityNotifyService: ShowPriorityNotifyService, \r\n private localStorageService: LocalStorageService, \r\n private priorityIconService: PriorityIconService) {\r\n this.applicationUrls = switchApplicationSettings;\r\n this.kicboxMyProfile = kicboxMyProfileSettings;\r\n this.selectedTeamLeaderId = '';\r\n this.subscribeToPersonaChangedNotifications();\r\n }\r\n\r\n async ngOnInit() {\r\n await this.getTeamFromServer();\r\n\r\n this.priorityIsGloballyDisabled = this.priorityIconService.priorityIsGloballyDisabled();\r\n this.priorityIsEnabled = this.priorityIconService.priorityIconFeatureIsEnabled();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.personaChangedSubscription) {\r\n this.personaChangedSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n get getOfficeLockdownText(): string {\r\n return this.officeIsLockedDown ? \r\n 'Yes. It\\'s safe to return'\r\n :\r\n 'Activate lock down';\r\n }\r\n\r\n get getDisablePriorityText(): string {\r\n return this.priorityIsEnabled ? \r\n 'Disable Priority Icons'\r\n :\r\n 'Enable Priority Icons';\r\n }\r\n\r\n get isPersonaSwitchingEnabled(): boolean {\r\n return this.personaSwitcherService.isEnable();\r\n }\r\n\r\n public onSubMenuItemFocus(evt: FocusEvent) {\r\n (evt.target).parentElement.classList.add('submenu-item-hover');\r\n\r\n let ulParent = this.closestUlParent(evt.target);\r\n if (ulParent) {\r\n ulParent.classList.add('hover-root-menu');\r\n }\r\n }\r\n\r\n public onSubMenuItemBlur(evt: FocusEvent) {\r\n (evt.target).classList.remove('submenu-item-hover');\r\n\r\n let ulParent = this.closestUlParent(evt.target);\r\n if (ulParent) {\r\n ulParent.classList.remove('hover-root-menu');\r\n }\r\n }\r\n\r\n public onSubMenuItemClick(evt: MouseEvent) {\r\n if (evt instanceof MouseEvent) {\r\n (evt.target).classList.remove('submenu-item-hover');\r\n\r\n let ulParent = this.closestUlParent(evt.target);\r\n if (ulParent) {\r\n ulParent.classList.remove('hover-root-menu');\r\n }\r\n }\r\n }\r\n\r\n private closestUlParent(element: Element) {\r\n let p = element.parentElement;\r\n\r\n while (p && p.tagName && p.tagName.toLocaleUpperCase() !== 'UL') {\r\n p = p.parentElement;\r\n }\r\n\r\n return p;\r\n }\r\n\r\n private subscribeToPersonaChangedNotifications() {\r\n this.personaSwitcherService.enable();\r\n if (!this.personaChangedSubscription) {\r\n this.personaChangedSubscription = this.personaSwitcherService.currentPersonaUpnChanged.subscribe(async (upn) => {\r\n if (!upn || upn.trim().length === 0) {\r\n this.currentPersona = null;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getTeamFromServer(): Promise {\r\n try {\r\n return this.personaSwitcherService.getTeam().then(result => {\r\n this.hasTeamError = false;\r\n if (!result || result === null) {\r\n this.hasTeamError = true;\r\n } else {\r\n this.teams = result;\r\n\r\n let isTLOrMngr = (this.teams && this.teams != null);\r\n if(isTLOrMngr === null) isTLOrMngr = false;\r\n // console.log('this.teams: ' + JSON.stringify(this.teams) + '. Is a TL or Manager?: ' + isTLOrMngr);\r\n\r\n this.isTLOrManager.emit(isTLOrMngr); // && this.teams.length > 0);\r\n }\r\n this.hasTeamDataLoaded = true;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n this.hasTeamError = true;\r\n }\r\n }\r\n\r\n toggleLockdown()\r\n {\r\n this.lockdownHasBeenToggled.emit(true);\r\n }\r\n\r\n togglePriority()\r\n {\r\n this.priorityIsEnabled = this.priorityIconService.togglePriority();\r\n }\r\n\r\n setSelectedTeamLeader(teamLeader: Api.PersonaTeam)\r\n {\r\n if(!!teamLeader && !!teamLeader.team)\r\n {\r\n const newTeamLeaderId = (!!teamLeader.teamLeader && !!teamLeader.teamLeader.kicBoxCsoId ? teamLeader.teamLeader.kicBoxCsoId : 'unallocated');\r\n if(newTeamLeaderId == this.selectedTeamLeaderId)\r\n {\r\n // Deselect\r\n this.selectedTeamLeaderId = '';\r\n this.selectedTeam = null;\r\n }\r\n else\r\n {\r\n this.selectedTeamLeaderId = newTeamLeaderId\r\n this.selectedTeam = teamLeader.team;\r\n }\r\n\r\n // A manager should be able to invoke Persona Switcher on a Team Leader to view their allocated children\r\n if(newTeamLeaderId != 'unallocated')\r\n {\r\n this.setPersona(teamLeader.teamLeader);\r\n }\r\n }\r\n }\r\n\r\n removePersona() {\r\n this.personaSwitcherService.clearPersonaUpn();\r\n this.currentPersona = null;\r\n }\r\n\r\n setPersona(item: Api.ChildSafetyOfficerTeamMemberDto) {\r\n this.personaSwitcherService.setPersonaUpn(item.username);\r\n let foundTeamMember: Api.ChildSafetyOfficerTeamMemberDto;\r\n\r\n for (let t = 0; t < this.teams.length; t++) {\r\n if(!!this.teams[t].teamLeader && this.teams[t].teamLeader.username == item.username) {\r\n foundTeamMember = this.teams[t].teamLeader;\r\n break;\r\n }\r\n\r\n let teamMembers = this.teams[t].team;\r\n\r\n for (let m = 0; m < teamMembers.length; m++) {\r\n let teamMember = teamMembers[m];\r\n\r\n if (teamMember.username === item.username) {\r\n foundTeamMember = teamMember;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (foundTeamMember) {\r\n this.currentPersona = foundTeamMember;\r\n }\r\n else {\r\n this.personaSwitcherService.clearPersonaUpn();\r\n this.currentPersona = null;\r\n }\r\n }\r\n\r\n trackTeamBy(index: number, item: Api.PersonaTeam) {\r\n return item.teamLeader ? item.teamLeader.username : '';\r\n }\r\n\r\n trackTeamMemberBy(index: number, item: Api.ChildSafetyOfficerTeamMemberDto) {\r\n return item.username;\r\n }\r\n}\r\n","","export * from './footer/footer.component';\r\nexport * from './header/header.component';","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n templateUrl: './page-not-found.component.html',\r\n styleUrls: ['./page-not-found.component.scss']\r\n})\r\nexport class PageNotFoundComponent {\r\n\r\n constructor() { }\r\n\r\n}\r\n","
\r\n

\r\n Hmm, that page doesn't seem to exist. Try going back to the home page.\r\n

\r\n
\r\n","import { HostListener, Directive } from \"@angular/core\";\r\n\r\n@Directive()\r\nexport abstract class FocusCheck {\r\n protected windowGotFocus = true;\r\n\r\n constructor() { }\r\n\r\n @HostListener('window:focus', ['$event'])\r\n @HostListener('window:resize', ['$event'])\r\n @HostListener('window:keyup', ['$event'])\r\n @HostListener('window:wheel', ['$event'])\r\n @HostListener('window:scroll', ['$event'])\r\n onFocus(event: any): void {\r\n this.windowGotFocus = true;\r\n }\r\n\r\n @HostListener('window:blur', ['$event'])\r\n onBlur(event: any): void {\r\n this.windowGotFocus = false;\r\n }\r\n}","import { Component, EventEmitter, OnInit, Input, Output, ViewChild } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport {IAngularMyDpOptions, IMyDateModel, IMyMarkedDate, IMySingleDateModel, IMyInputFieldChanged, CalAnimation, IMyDate, AngularMyDatePickerDirective } from 'angular-mydatepicker';\r\n\r\n@Component({\r\n selector: 'app-date-input',\r\n templateUrl: './date-input.component.html',\r\n styleUrls: ['./date-input.component.scss']\r\n})\r\nexport class DateInputComponent implements OnInit {\r\n @ViewChild('dp') mydp: AngularMyDatePickerDirective;\r\n\r\n // This is passed in from the parent page\r\n @Input() dateRangeModel: IMyDateModel = null;\r\n @Input() disableComponent: boolean = true;\r\n @Input() getDateRange: boolean;\r\n @Input() smallFont: boolean;\r\n @Input() placeholderText: string;\r\n @Input() disableUntil: IMyDate;\r\n @Input() fullWidth: boolean;\r\n\r\n @Output() dateRangeChangedEvent: EventEmitter = new EventEmitter();\r\n\r\n @Output() validationsReRunEvent: EventEmitter = new EventEmitter();\r\n\r\n // The above dateRangeModel tends to be one update behind. That is, when checked, it shows the prior value, not the current value\r\n // mostRecentValue is guaranteed to be the value as entered in the input field on screen.\r\n mostRecentValue: IMyInputFieldChanged;\r\n\r\n showRequireDateError: boolean;\r\n showInvalidDateError: boolean;\r\n showPastDateError: boolean;\r\n\r\n valueValid: boolean;\r\n\r\n myDpOptions: IAngularMyDpOptions = {\r\n dateRange: false,\r\n todayTxt: 'Today',\r\n showFooterToday: true,\r\n dateFormat: 'dd mmm yyyy',\r\n firstDayOfWeek: 'mo',\r\n sunHighlight: true,\r\n markCurrentDay: true,\r\n selectorHeight: '220px',\r\n alignSelectorRight: false,\r\n calendarAnimation: {in: CalAnimation.Fade, out: CalAnimation.ScaleTop},\r\n openSelectorTopOfInput: false,\r\n monthSelector: true,\r\n yearSelector: true,\r\n showSelectorArrow: true,\r\n disableHeaderButtons: false,\r\n showWeekNumbers: false,\r\n markDates: [],\r\n satHighlight: true,\r\n highlightDates: [],\r\n markWeekends: {},\r\n monthLabels: {\r\n 1: 'Jan',\r\n 2: 'Feb',\r\n 3: 'Mar',\r\n 4: 'Apr',\r\n 5: 'May',\r\n 6: 'Jun',\r\n 7: 'Jul',\r\n 8: 'Aug',\r\n 9: 'Sep',\r\n 10: 'Oct',\r\n 11: 'Nov',\r\n 12: 'Dec'\r\n },\r\n disableWeekdays: [],\r\n inline: false,\r\n stylesData: {\r\n selector: 'angular-mydatepicker',\r\n styles: `\r\n .angular-mydatepicker .myDpIconLeftArrow,\r\n .angular-mydatepicker .myDpIconRightArrow,\r\n .angular-mydatepicker .myDpHeaderBtn {\r\n color: #3855c1;\r\n }\r\n .angular-mydatepicker .myDpHeaderBtn:focus,\r\n .angular-mydatepicker .myDpMonthLabel:focus,\r\n .angular-mydatepicker .myDpYearLabel:focus {\r\n color: #66afe9;\r\n }\r\n .angular-mydatepicker .myDpDaycell:focus,\r\n .angular-mydatepicker .myDpMonthcell:focus,\r\n .angular-mydatepicker .myDpYearcell:focus {\r\n box-shadow: inset 0 0 0 1px #66afe9;\r\n }\r\n .angular-mydatepicker .myDpSelector:focus {\r\n box-shadow: -1px 1px 6px 0px #ADD8E6;\r\n }\r\n .angular-mydatepicker .myDpSelectorArrow:focus:before {\r\n border-bottom-color: #ADD8E6;\r\n }\r\n .angular-mydatepicker .myDpCurrMonth,\r\n .angular-mydatepicker .myDpMonthcell,\r\n .angular-mydatepicker .myDpYearcell {\r\n color: #3855c1;\r\n font-weight: bold;\r\n }\r\n .angular-mydatepicker .myDpDaycellWeekNbr {\r\n color: #3855c1;\r\n }\r\n .angular-mydatepicker .myDpPrevMonth,\r\n .angular-mydatepicker .myDpNextMonth {\r\n color: #6495ED;\r\n }\r\n .angular-mydatepicker .myDpWeekDayTitle {\r\n background-color: transparent;\r\n color: #3855c1;\r\n font-weight: bold;\r\n }\r\n .angular-mydatepicker .myDpHeaderBtnEnabled:hover,\r\n .angular-mydatepicker .myDpMonthLabel:hover,\r\n .angular-mydatepicker .myDpYearLabel:hover,\r\n .angular-mydatepicker .myDpFooterBtn:hover {\r\n color: #add8e6;\r\n }\r\n .angular-mydatepicker .myDpMarkCurrDay, \r\n .angular-mydatepicker .myDpMarkCurrMonth, \r\n .angular-mydatepicker .myDpMarkCurrYear {\r\n border-bottom: 2px solid #3855c1;\r\n }\r\n .angular-mydatepicker .myDpDisabled {\r\n color: #999;\r\n }\r\n .angular-mydatepicker .myDpHighlight {\r\n color: #cd5c5c;\r\n }\r\n .angular-mydatepicker .myDpTableSingleDay:hover, \r\n .angular-mydatepicker .myDpTableSingleMonth:hover, \r\n .angular-mydatepicker .myDpTableSingleYear:hover {\r\n background-color: #add8e6;\r\n color: #3855c1;\r\n }\r\n .angular-mydatepicker .myDpRangeColor {\r\n background-color: #dbeaff;\r\n }\r\n .angular-mydatepicker .myDpSelectedDay,\r\n .angular-mydatepicker .myDpSelectedMonth,\r\n .angular-mydatepicker .myDpSelectedYear {\r\n background-color: #8EBFFF;\r\n }\r\n `\r\n }\r\n };\r\n\r\n constructor() { \r\n this.valueValid = true;\r\n }\r\n\r\n ngOnInit() {\r\n this.myDpOptions.dateRange = this.getDateRange;\r\n\r\n if(!!this.disableUntil)\r\n {\r\n this.myDpOptions.disableUntil = this.disableUntil;\r\n }\r\n \r\n this.showRequireDateError = false;\r\n this.showPastDateError = false;\r\n this.showInvalidDateError = false;\r\n\r\n this.resetFlags();\r\n this.onDateChanged(this.dateRangeModel);\r\n }\r\n\r\n resetFlags()\r\n {\r\n this.showRequireDateError = false;\r\n this.showPastDateError = false;\r\n this.showInvalidDateError = false;\r\n this.valueValid = true;\t\t\r\n }\r\n\r\n getMoment(value: IMySingleDateModel)\r\n {\r\n return moment({year: value.date.year, month: value.date.month - 1, day: value.date.day});\r\n }\r\n\r\n getMomentFromMyDate(value: IMyDate)\r\n {\r\n return moment({year: value.year, month: value.month - 1, day: value.day});\r\n }\r\n\r\n // When this is called it can be called with partial and invalid values as well as valid values.\r\n onDateChanged(transientValue: IMyDateModel) : void \r\n {\r\n this.onInputFieldChanged(this.createIMyInputFieldChanged(transientValue));\r\n\r\n this.dateRangeChangedEvent.emit(transientValue);\r\n }\r\n\r\n createIMyInputFieldChanged(dateModel: IMyDateModel) : IMyInputFieldChanged\r\n {\r\n var val = (!!dateModel && !!dateModel.isRange && !!dateModel.dateRange.formatted ? dateModel.dateRange.formatted : \r\n !!dateModel && !dateModel.isRange && !!dateModel.singleDate && !!dateModel.singleDate.formatted ? dateModel.singleDate.formatted : \r\n '');\r\n var isValid = (!!dateModel && !!dateModel.isRange && !!dateModel.dateRange.beginJsDate && !!dateModel.dateRange.endJsDate) ||\r\n (!!dateModel && !dateModel.isRange && !!dateModel.singleDate && !!dateModel.singleDate.jsDate);\r\n return {\r\n value: val,\r\n dateFormat: this.myDpOptions.dateFormat,\r\n valid: isValid\r\n }\r\n }\r\n\r\n clearDateInput(componentIsEnabled: boolean)\r\n {\r\n if(!!this.dateRangeModel)\r\n {\r\n this.dateRangeModel.singleDate = null;\r\n this.dateRangeModel.dateRange = null;\r\n }\r\n this.mydp.clearDate();\r\n this.disableComponent = !componentIsEnabled;\r\n this.onInputFieldChanged(this.createIMyInputFieldChanged(null));\r\n }\r\n\r\n haveDateValue() : boolean \r\n {\r\n return !!this.mostRecentValue && !!this.mostRecentValue.value && this.mostRecentValue.value.length > 0;\r\n }\r\n\r\n // The parent element can override this value until the next time it is checked.\r\n // This is useful when the parent wants to style as an error when there is no value.\r\n setValueValidFalse()\r\n {\r\n this.valueValid = false;\r\n }\r\n\r\n getRequireDateError()\r\n {\r\n return this.showRequireDateError;\r\n }\r\n\r\n getInvalidDateError()\r\n {\r\n return this.showInvalidDateError;\r\n }\r\n\r\n getPastDateError()\r\n {\r\n return this.showPastDateError;\r\n }\r\n\r\n getDateValueIsValid()\r\n {\r\n return this.valueValid;\r\n }\r\n\r\n // Returns true if the single date, or the begin date in a date range is today\r\n dateSelectedIsToday() : boolean\r\n {\r\n var valueAsMoment = this.getInputValueAsMoment(this.mostRecentValue.value);\r\n if(!valueAsMoment) return false;\r\n let currentTime = moment();\r\n return (valueAsMoment.year() == currentTime.year() && valueAsMoment.month() == currentTime.month() && valueAsMoment.date() == currentTime.date());\r\n }\r\n\r\n // This expects a single value of the format DD MMM YYYY\r\n getInputValueAsMoment(fieldValue) : moment.Moment\r\n {\r\n if(!fieldValue) return null;\r\n\r\n if(!this.dateStringIsValid(fieldValue)) return null;\r\n\r\n var theMoment = moment(fieldValue, \"DD MMM YYYY\");\r\n if(!!theMoment.isValid)\r\n {\r\n return theMoment;\r\n }\r\n return null;\r\n }\r\n\r\n getSelectedDateParts() : string[]\r\n {\r\n if(!this.mostRecentValue || !this.mostRecentValue.value || this.mostRecentValue.value.length < 1) return null;\r\n return (!!this.mostRecentValue && !!this.mostRecentValue.value ? this.mostRecentValue.value.split(' - ') : []);\r\n }\r\n\r\n getStartDate()\r\n {\r\n var dateParts = this.getSelectedDateParts();\r\n if(!dateParts || dateParts.length < 1) return null;\r\n return this.getInputValueAsMoment(dateParts[0]);\r\n }\r\n\r\n isValid() : Boolean\r\n {\r\n return !this.showRequireDateError && !this.showInvalidDateError && !this.showPastDateError && !!this.valueValid;\r\n }\r\n\r\n dateIsTooEarly(momentToTest: moment.Moment) : Boolean\r\n {\r\n if(!!this.disableUntil)\r\n {\r\n var startBoundary = this.getMomentFromMyDate(this.disableUntil);\r\n return (momentToTest.isSameOrBefore(startBoundary));\r\n }\r\n return false;\r\n }\r\n\r\n // Run validations\r\n // We use this event as the alternative 'onDateChanged' will contain null when the value is invalid for any reason.\r\n // This can include when the date is valid but outside the accepted date range.\r\n // The fieldData supplied here will include the raw value in the 'value' property. This then allows us to \r\n // detect various explicit types of errors and set specific error flags as appropriate.\r\n onInputFieldChanged(fieldData: IMyInputFieldChanged)\r\n {\r\n this.mostRecentValue = fieldData;\r\n \r\n // Reset all flags so that they represent a success state / no error\r\n this.resetFlags();\r\n\r\n // If this component is disabled, inform the parent the value has changed and simply return.\r\n if(!!this.disableComponent)\r\n {\r\n this.dateRangeChangedEvent.emit(this.dateRangeModel);\r\n return;\r\n }\r\n \r\n var dateIsAValidDate = true;\r\n // Ignore if there is no value at all\r\n if(!fieldData.value || fieldData.value.length < 1)\r\n {\r\n // We are not alerting on empty values, just values that cannot be parsed to dates or date ranges\r\n this.showRequireDateError = true;\r\n dateIsAValidDate = false;\r\n }\r\n else if(!fieldData.valid)\r\n {\r\n var dateParts = this.getSelectedDateParts();\r\n if(!dateParts) dateIsAValidDate = false;\r\n\r\n // Attempt to create a date from the given value\r\n if(!!this.getDateRange && !!dateParts)\r\n {\r\n if(dateParts.length != 2)\r\n {\r\n dateIsAValidDate = false;\r\n }\r\n else\r\n {\r\n var beginMoment = this.getInputValueAsMoment(dateParts[0]);\r\n var endMoment = this.getInputValueAsMoment(dateParts[1]);\r\n if(!beginMoment || !endMoment)\r\n {\r\n this.showInvalidDateError = true;\r\n dateIsAValidDate = false;\r\n }\r\n else\r\n {\r\n var startDate = beginMoment.format(\"DD MMM YYYY\");\r\n var endMomentStr = endMoment.format(\"DD MMM YYYY\");\r\n dateIsAValidDate = !!startDate && startDate != 'Invalid date' && !!endMomentStr && endMomentStr != 'Invalid date';\r\n\r\n if(this.dateIsTooEarly(beginMoment))\r\n {\r\n this.showPastDateError = true;\r\n dateIsAValidDate = false;\r\n }\r\n\r\n if(endMoment.isBefore(beginMoment))\r\n {\r\n this.showInvalidDateError = true;\r\n dateIsAValidDate = false;\r\n }\r\n }\r\n }\r\n }\r\n else if (!!dateParts)\r\n {\r\n if(!!fieldData && !!fieldData.value)\r\n {\r\n var startMoment = this.getInputValueAsMoment(dateParts[0]);\r\n if(!startMoment)\r\n {\r\n dateIsAValidDate = false;\r\n this.showInvalidDateError = true;\r\n }\r\n else\r\n {\r\n var theDate = startMoment.format(\"DD MMM YYYY\");\r\n dateIsAValidDate = !!theDate && theDate != 'Invalid date';\r\n\r\n if(this.dateIsTooEarly(startMoment))\r\n {\r\n this.showPastDateError = true;\r\n dateIsAValidDate = false;\r\n }\r\n }\r\n }\r\n else\r\n {\r\n dateIsAValidDate = false;\r\n }\r\n }\r\n }\r\n this.valueValid = dateIsAValidDate;\r\n this.sanitiseErrors();\r\n this.validationsReRunEvent.emit(true);\r\n //console.log('showRequireDateError: ' + this.showRequireDateError + '. this.showPastDateError: ' + this.showPastDateError + '. this.showInvalidDateError: ' + this.showInvalidDateError + '. this.valueValid: ' + this.valueValid);\r\n }\r\n\r\n // We only want to show one error message at a time\r\n sanitiseErrors()\r\n {\r\n // Show past should trump require as the date is probably a valid date, just outside the \r\n // allowed bounds (showRequireDateError can be set to true when the date is too far in the past)\r\n if(!!this.showRequireDateError && !!this.showPastDateError)\r\n {\r\n this.showRequireDateError = false;\r\n }\r\n\r\n if(!!this.showInvalidDateError && !!this.showPastDateError)\r\n {\r\n this.showInvalidDateError = false;\r\n }\r\n }\r\n\r\n dateStringIsValid(dateString: string) : Boolean \r\n {\r\n let re = /(\\d{2}\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s{1}\\d{4})$/;\r\n return (re.test(dateString));\r\n }\r\n}","
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n ","import { Component, OnInit, Renderer2, ViewChild, AfterViewInit, ElementRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport * as moment from 'moment';\r\nimport { IMyDateModel, IMySingleDateModel, IMyDate } from 'angular-mydatepicker';\r\nimport { NgxMaterialTimepickerComponent } from 'ngx-material-timepicker';\r\nimport { DateInputComponent } from './../../shared/date-input/date-input.component';\r\n\r\n@Component({\r\n selector: 'app-date-time-input',\r\n templateUrl: './date-time-input.component.html',\r\n styleUrls: ['./date-time-input.component.scss']\r\n})\r\nexport class DateTimeInputComponent implements OnInit, AfterViewInit {\r\n @ViewChild(DateInputComponent)\r\n private dateInputComponent: DateInputComponent;\r\n\r\n @ViewChild('tpinput') tpinput: ElementRef;\r\n @ViewChild('timepicker') timepickerContainer: NgxMaterialTimepickerComponent;\r\n\r\n form: UntypedFormGroup;\r\n model: IMyDateModel = null;\r\n disabled: boolean = true;\r\n disableUntil: IMyDate;\r\n\r\n getDateRange: boolean = false;\r\n\r\n showRequireDateError: boolean;\r\n showInvalidDateError: boolean;\r\n showPastDateError: boolean;\r\n\r\n showRequireTimeError: boolean;\r\n showInvalidTimeError: boolean;\r\n showPastTimeError: boolean;\r\n\r\n currentTimeValue: string;\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private renderer: Renderer2) { \r\n this.disableUntil = { year: moment().year(), month: moment().month() + 1, day: moment().date() -1 };\r\n }\r\n\r\n ngOnInit() {\r\n\r\n\r\n this.initialiseValues();\r\n }\r\n\r\n initialiseValues()\r\n {\r\n // Initialize to today with javascript date object\r\n let currentTime = this.getTimeAtNext15MinuteIncrement(moment());\r\n\r\n this.model = {isRange: false, singleDate: {date: { \r\n year: currentTime.year(), \r\n month: currentTime.month() + 1, \r\n day: currentTime.date() \r\n }}};\r\n \r\n this.showRequireTimeError = false;\r\n this.showPastTimeError = false;\r\n this.showInvalidTimeError = false;\r\n\r\n // Default time to be the next 15 minute increment. eg. If now is 10:01 then set to 10:15.\r\n this.currentTimeValue = currentTime.format('hh:mm A');\r\n\r\n if(!this.dateInputComponent) return;\r\n this.dateInputComponent.isValid();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if(this.timepickerContainer == null || !this.timepickerContainer || !!this.timepickerContainer.disabled) return;\r\n\r\n let currentTime = this.getTimeAtNext15MinuteIncrement(moment());\r\n this.timepickerContainer.defaultTime = currentTime.format('hh:mm A');\r\n // hack to make the selected time from above be shown in the input field associated with the component.\r\n document.getElementById(\"tp\").click();\r\n this.timepickerContainer.close();\r\n }\r\n\r\n // Expect a string of format: YYYY-MM-DDTHH:mm:ss+10:00\r\n // Example value: 2021-05-10T10:00:00+10:00\r\n seedValue(value: string)\r\n {\r\n // If we have no value, change nothing. Can occur on clicking link when not already checked out\r\n // Also, validate the value can be parsed. If not, simply return\r\n if(!value || value.length < 1 || !moment(value, \"YYYY-MM-DDThh:mm:ssZZ\").isValid()) return;\r\n\r\n // Parse the given value\r\n var givenTimeAsMoment = moment(value, \"YYYY-MM-DDThh:mm:ssZZ\");\r\n\r\n // Seed the time value, but after rounding to a 15 minute increment\r\n givenTimeAsMoment = this.getTimeAtNext15MinuteIncrement(givenTimeAsMoment, false);\r\n this.currentTimeValue = givenTimeAsMoment.format('hh:mm A');\r\n\r\n // Seed the date value\r\n this.model = {isRange: false, singleDate: {date: { \r\n year: givenTimeAsMoment.year(), \r\n month: givenTimeAsMoment.month() + 1, \r\n day: givenTimeAsMoment.date() \r\n }}};\r\n }\r\n\r\n dateChangedEvent(newDateRange: IMyDateModel)\r\n {\r\n this.model = newDateRange;\r\n if(!this.dateInputComponent) return;\r\n this.updateValidations();\r\n }\r\n\r\n validationsReRunEvent(validationsRun: boolean)\r\n {\r\n if(!validationsRun || !this.dateInputComponent) return;\r\n this.updateValidations();\r\n }\r\n\r\n updateValidations()\r\n {\r\n this.showRequireDateError = this.dateInputComponent.getRequireDateError();\r\n this.showInvalidDateError = this.dateInputComponent.getInvalidDateError();\r\n this.showPastDateError = this.dateInputComponent.getPastDateError();\r\n\r\n // If the date was not today and the time has already been set to a time earlier than 'now'\r\n // and then the date is modified to 'today', we need to trigger time validation so that the \r\n // 'this time is before now' error can be shown.\r\n this.validateTimeInput();\r\n }\r\n\r\n getDefaultTime() : string \r\n {\r\n let currentTime = this.getTimeAtNext15MinuteIncrement(moment());\r\n return currentTime.format('hh:mm A');\r\n }\r\n\r\n openTimePicker() : void \r\n {\r\n this.timepickerContainer.open();\r\n }\r\n\r\n // Example value: 03:15 pm\r\n timepickerValueSet(newValue : any) : void\r\n {\r\n this.currentTimeValue = newValue;\r\n }\r\n\r\n // Trigger validation based on most recent setting of value in currentTimeValue\r\n timepickerClosed() : void\r\n {\r\n this.validateTimeInput();\r\n }\r\n\r\n convertDateAndTimeToMoment()\r\n {\r\n var theDate = this.dateInputComponent.getStartDate();\r\n if(!theDate) return null;\r\n if(this.currentTimeValue.indexOf('Invalid') >= 0) return null;\r\n let fullDateTimeStr = theDate.format('DD MMM YYYY') + ' ' + this.currentTimeValue;\r\n return moment(fullDateTimeStr, \"DD MMM YYYY hh:mm a\");\r\n }\r\n\r\n getMoment(value: IMySingleDateModel)\r\n {\r\n return moment({year: value.date.year, month: value.date.month - 1, day: value.date.day});\r\n }\r\n\r\n // The time picker component will not stop a person from manually clearing the value and it will \r\n // not update the model. Copy the value from the input field to this.currentTimeValue.\r\n public timepickerblur(evt: FocusEvent) {\r\n var val = this.tpinput.nativeElement.value;\r\n this.currentTimeValue = val;\r\n this.validateTimeInput();\r\n }\r\n\r\n // Guarantee the time is after 'now' when the date is today. Any time is OK on future dates\r\n validateTimeInput() \r\n {\r\n this.showRequireTimeError = false;\r\n this.showInvalidTimeError = false;\r\n this.showPastTimeError = false;\r\n let response = null;\r\n\r\n if(!this.currentTimeValue || this.currentTimeValue == null || this.currentTimeValue.length < 1)\r\n {\r\n this.showRequireTimeError = true;\r\n response = false;\r\n }\r\n else\r\n {\r\n // Validate format. Caters to a person typing in random input\r\n let re = /(\\d{1,2}:(00|15|30|45)\\s{1}([AaPp][Mm]))$/;\r\n let thisIsAValidTime = (re.test(this.currentTimeValue));\r\n if(!thisIsAValidTime)\r\n {\r\n this.showInvalidTimeError = true;\r\n response = false;\r\n }\r\n\r\n // The date is today. We need to check time\r\n if(this.dateInputComponent.dateSelectedIsToday()) \r\n {\r\n // Validate the time is after 'now'\r\n let selection = this.convertDateAndTimeToMoment();\r\n if(!!selection) {\r\n let currentTime = this.getTimeAtNext15MinuteIncrement(moment());\r\n if(selection.isBefore(currentTime))\r\n {\r\n this.showPastTimeError = true;\r\n response = false;\r\n }\r\n }\r\n else\r\n {\r\n response = false;\r\n }\r\n }\r\n }\r\n\r\n // The time picker component can set the value 'Invalid DateTime'. Remove this as we have our own error styling and message.\r\n // If it is not set to invalid, do not clear as it's a better experience for the user to adjust their existing entry instead of having it cleared.\r\n var val = this.tpinput.nativeElement.value;\r\n if(val.indexOf('Invalid') >= 0)\r\n {\r\n this.tpinput.nativeElement.value = '';\r\n this.currentTimeValue = '';\r\n this.showInvalidTimeError = true;\r\n response = false;\r\n }\r\n\r\n this.sanitiseErrors();\r\n\r\n return response;\r\n }\r\n\r\n // We only want to show one error message at a time\r\n sanitiseErrors()\r\n {\r\n // Show past should trump require as the date is probably a valid date, just outside the \r\n // allowed bounds (showRequireDateError can be set to true when the date is too far in the past)\r\n if(!!this.showRequireTimeError && !!this.showPastTimeError)\r\n {\r\n this.showPastTimeError = false;\r\n }\r\n\r\n if(!!this.showInvalidTimeError && !!this.showPastTimeError)\r\n {\r\n this.showInvalidTimeError = false;\r\n }\r\n }\r\n\r\n getTimeAtNext15MinuteIncrement(currentTime, alwaysRollForward = true) \r\n {\r\n const remainder = 15 - (currentTime.minute() % 15);\r\n\r\n // Only change the value if we are asked to always roll forward, \r\n // or we are not already on a 15 minute period.\r\n if(!!alwaysRollForward || remainder != 15)\r\n {\r\n currentTime = currentTime.add(remainder, \"minutes\");\r\n }\r\n currentTime.seconds(0);\r\n currentTime.milliseconds(0);\r\n return currentTime;\r\n }\r\n\r\n isValid(): boolean \r\n {\r\n return this.dateInputComponent.isValid() && !this.showRequireTimeError && !this.showPastTimeError && !this.showInvalidTimeError;\r\n }\r\n\r\n getValue() : string {\r\n let responseMoment = this.convertDateAndTimeToMoment();\r\n\r\n if(responseMoment && responseMoment != null && responseMoment.isValid())\r\n {\r\n return responseMoment.format();\r\n }\r\n return \"\";\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Please select when you will be back.\r\n
\r\n
\r\n Please select a date on or after today.\r\n
\r\n
\r\n Please select a time after now.\r\n
\r\n
\r\n Please use the time picker to select a time or enter a value in this format: dd:dd AM|PM. The minute part must be a zero or quarter hour increment.\r\n
\r\n
\r\n Please use the calendar to select a date or enter a value in this format: dd MMM yyyy.\r\n
\r\n
\r\n
\r\n
\r\n","import { Directive, ElementRef, Renderer2, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport * as Stickyfill from 'stickyfilljs';\r\n\r\n@Directive({\r\n selector: '[sticky]'\r\n})\r\nexport class StickyDirective implements AfterViewInit, OnDestroy {\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2) {\r\n //\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'opacity', 1);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'z-index', 1000000);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'position', 'sticky');\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', 0);\r\n\r\n // https://github.com/wilddeer/stickyfill\r\n Stickyfill.add([this.elementRef.nativeElement]);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n Stickyfill.removeAll();\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-error-message',\r\n templateUrl: './error-message.component.html',\r\n styleUrls: ['./error-message.component.scss']\r\n})\r\nexport class ErrorMessageComponent {\r\n @Input() includeTroubleshooting: boolean = true;\r\n @Input() appSection: string = 'the page';\r\n}\r\n","
\r\n
\r\n

Sorry, something went wrong :(

\r\n

An error occurred retrieving the latest data for {{appSection}}.

\r\n \r\n

Troubleshooting steps:

\r\n
    \r\n
  1. Try refreshing the page.
  2. \r\n
  3. Check your internet connectivity.
  4. \r\n
  5. Contact CSPortal@csyw.qld.gov.au for further assistance.
  6. \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UserInfoService } from '../../../services/user-info.service';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-happy-day-motif',\r\n templateUrl: './happy-day-motif.component.html',\r\n styleUrls: ['./happy-day-motif.component.scss']\r\n})\r\nexport class HappyDayMotifComponent implements OnInit {\r\n\r\n firstName: string;\r\n\r\n constructor(private userInfoService: UserInfoService) { \r\n this.firstName = userInfoService.firstName();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n currentDay(): string {\r\n return moment().local().format('dddd');\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
Happy {{ currentDay() }},
\r\n
{{ firstName }}
\r\n
\r\n
","export * from './error-message/error-message.component';\r\nexport * from './no-results-message/no-results-message.component';","import { NgModule } from \"@angular/core\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { LoadingPaneComponent } from \"./loading-pane.component\";\r\n\r\nexport { LoadingPaneComponent } from \"./loading-pane.component\";\r\nexport { WorkTracker } from \"./work-tracker.service\";\r\n\r\n@NgModule({\r\n declarations: [\r\n LoadingPaneComponent\r\n ],\r\n exports: [\r\n LoadingPaneComponent\r\n ],\r\n imports: [\r\n BrowserModule\r\n ],\r\n providers: []\r\n})\r\nexport class LoadingPaneModule {\r\n}\r\n","import { Component, Input, DoCheck, HostBinding } from '@angular/core';\r\nimport { WorkTracker } from \"./work-tracker.service\";\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'loading-pane',\r\n templateUrl: 'loading-pane.component.html',\r\n styleUrls: ['loading-pane.component.scss']\r\n})\r\nexport class LoadingPaneComponent implements DoCheck {\r\n\r\n @HostBinding('class.loading') public loading: boolean;\r\n @HostBinding('attr.aria-busy') get ariaRole(): string {\r\n return (this.loading ? 'true' : null);\r\n }\r\n @HostBinding('attr.aria-live') get ariaLive(): string {\r\n return (this.loading ? 'polite' : null);\r\n }\r\n\r\n @Input()\r\n public tracker: WorkTracker;\r\n\r\n @Input()\r\n public tracker_2: WorkTracker;\r\n\r\n @Input()\r\n public enabled: boolean;\r\n\r\n ngDoCheck(): void {\r\n if(!!this.enabled)\r\n {\r\n if(!this.loading)\r\n {\r\n //console.log('Starting spinny at: ' + moment().format(\"dddd, MMMM Do YYYY, h:mm:ss a\"));\r\n this.loading = true;\r\n setTimeout(() => {\r\n //console.log('Stopping spinny at: ' + moment().format(\"dddd, MMMM Do YYYY, h:mm:ss a\"));\r\n this.loading = false;\r\n }, 5000);\r\n }\r\n }\r\n else\r\n {\r\n this.loading = !!(this.tracker && !this.tracker.complete) || !!(this.tracker_2 && !this.tracker_2.complete);\r\n }\r\n }\r\n}","\r\n","function deferred(delayInMs: number, action?: () => any): Promise {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve((action || noop)());\r\n }, delayInMs);\r\n });\r\n}\r\n\r\nexport class WorkTracker {\r\n private _activePromises: number = 0;\r\n private _isComplete: boolean;\r\n\r\n constructor(complete: boolean = true,\r\n public minDelayInMs: number = 0) {\r\n this._isComplete = complete;\r\n }\r\n\r\n cancel(): void {\r\n this._isComplete = true;\r\n }\r\n\r\n get complete(): boolean {\r\n return this._isComplete;\r\n }\r\n\r\n track(promise: Promise): Promise {\r\n return this.trackInternal(promise, this.minDelayInMs);\r\n }\r\n\r\n private trackInternal(promise: Promise, minDelay?: number): Promise {\r\n const complete = (x: any) => {\r\n this.updateIsComplete();\r\n return promise;\r\n };\r\n const completeAndBubbleReject = (e: any) => {\r\n this.updateIsComplete();\r\n return Promise.reject(e);\r\n };\r\n\r\n this._isComplete = false;\r\n this._activePromises++;\r\n if (minDelay === 0) {\r\n return promise.then(complete, completeAndBubbleReject);\r\n } else {\r\n return Promise.all([promise, deferred(minDelay)])\r\n .then(complete, completeAndBubbleReject);\r\n }\r\n }\r\n\r\n private updateIsComplete() {\r\n this._activePromises = Math.max(0, this._activePromises - 1);\r\n this._isComplete = this._activePromises === 0;\r\n }\r\n}\r\n\r\nconst noop = () => {\r\n};\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-no-results-message',\r\n templateUrl: './no-results-message.component.html',\r\n styleUrls: ['./no-results-message.component.scss']\r\n})\r\nexport class NoResultsMessageComponent implements OnInit {\r\n\r\n @Input() customHeader: string;\r\n @Input() includeFilterTroubleshooting: boolean = false;\r\n @Input() includeTroubleshooting: boolean = true;\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.customHeader || this.customHeader.trim().length === 0) {\r\n this.customHeader = 'Sorry, no results were found';\r\n }\r\n\r\n if (this.includeFilterTroubleshooting === null || this.includeFilterTroubleshooting === undefined) {\r\n this.includeFilterTroubleshooting = false;\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n

{{customHeader}}

\r\n \r\n

Doesn’t seem/look right?

\r\n
    \r\n
  1. Refresh the page.
  2. \r\n
  3. Adjust the filter.
  4. \r\n
  5. Check whether case management is correct.
  6. \r\n
  7. Contact CSPortal@csyw.qld.gov.au for further assistance.
  8. \r\n
\r\n
\r\n \r\n

Contact CSPortal@csyw.qld.gov.au for further assistance.

\r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy, EventEmitter, Input, Output } from '@angular/core';\r\nimport { TabNotificationService } from '../../../services/notifications';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss']\r\n})\r\nexport class PaginationComponent implements OnInit, OnDestroy {\r\n private _recordCount: number;\r\n @Input() set recordCount(value: number) {\r\n this._recordCount = value;\r\n this.updatePageCount();\r\n }\r\n get recordCount(): number {\r\n return this._recordCount;\r\n }\r\n @Input() style: string;\r\n @Output() pageChangedEvent: EventEmitter = new EventEmitter();\r\n @Output() pageSizeChangedEvent: EventEmitter = new EventEmitter();\r\n \r\n // Pagination settings\r\n currentPage: number = 0;\r\n pageSize: number = 10;\r\n pageCount: number = 0;\r\n paginatorNumbersShownCount: number = 5;\r\n\r\n selectedPageSize: string;\r\n pageSizeOptions: string[];\r\n showingFromRecord: number = 1;\r\n showingToRecord: number = this.pageSize;\r\n\r\n tabNotificationSubscription: Subscription;\r\n\r\n constructor(private tabNotificationService: TabNotificationService) { }\r\n\r\n ngOnInit(): void {\r\n this.pageSizeChangedEvent.emit(this.pageSize);\r\n this.pageSizeOptions = [];\r\n this.pageSizeOptions.push(\"10\");\r\n this.pageSizeOptions.push(\"20\");\r\n this.pageSizeOptions.push(\"30\");\r\n this.pageSizeOptions.push(\"40\");\r\n this.selectedPageSize = \"10\";\r\n\r\n this.tabNotificationSubscription = this.tabNotificationService.selectedTabChanged.subscribe((tab) => {\r\n this.selectPage(0);\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.tabNotificationSubscription) {\r\n this.tabNotificationSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n isHidden() : boolean {\r\n var response = this.recordCount <= 10;\r\n // console.log('isHidden: ' + response + '. recordCount: ' + this.recordCount);\r\n return response;\r\n }\r\n\r\n updatePageCount()\r\n {\r\n this.pageCount = Math.ceil(this._recordCount / this.pageSize);\r\n this.autoSelectPage();\r\n }\r\n\r\n onPageSizeChange(selection: string) {\r\n this.selectedPageSize = selection;\r\n this.pageSize = parseInt(selection);\r\n this.updatePageCount();\r\n this.pageSizeChangedEvent.emit(this.pageSize);\r\n this.autoSelectPage();\r\n }\r\n\r\n // This is called when the page count is updated or when the page size is changed\r\n // If the current page is lower than the derived count of available pages, we \r\n // remain on that page. Otherwise, we auto-reset to page 0 (1).\r\n autoSelectPage()\r\n {\r\n if(this.currentPage > this.pageCount - 1) this.selectPage(0);\r\n this.selectPage(this.currentPage);\r\n }\r\n \r\n async selectPage(page: number) {\r\n // console.log('selectPage: ' + page);\r\n this.currentPage = page;\r\n this.showingFromRecord = 1 + (this.currentPage * this.pageSize);\r\n var toRecord = (this.showingFromRecord + this.pageSize - 1);\r\n if(toRecord > this.recordCount)\r\n {\r\n toRecord = this.recordCount;\r\n }\r\n this.showingToRecord = toRecord;\r\n this.pageChangedEvent.emit(this.currentPage);\r\n\r\n // console.log('pagination. currentPage: ' + this.currentPage + '. pageSize: ' + this.pageSize + '. pageCount: ' + this.pageCount + '. recordCount: ' + this.recordCount);\r\n }\r\n\r\n firstPage() {\r\n this.selectPage(0);\r\n }\r\n\r\n prevPage() {\r\n this.selectPage(this.currentPage - 1);\r\n }\r\n\r\n prevPageGroup() {\r\n this.selectPage(Math.floor((this.currentPage - this.paginatorNumbersShownCount) / this.paginatorNumbersShownCount) * this.paginatorNumbersShownCount);\r\n }\r\n\r\n nextPageGroup() {\r\n this.selectPage(Math.floor((this.currentPage + this.paginatorNumbersShownCount) / this.paginatorNumbersShownCount) * this.paginatorNumbersShownCount);\r\n }\r\n\r\n nextPage() {\r\n this.selectPage(this.currentPage + 1);\r\n }\r\n\r\n lastPage() {\r\n this.selectPage(this.pageCount - 1);\r\n }\r\n\r\n pager(): any {\r\n let startPage = Math.floor(this.currentPage / this.paginatorNumbersShownCount) * this.paginatorNumbersShownCount;\r\n let endPage = startPage + this.paginatorNumbersShownCount - 1; //startPage + this.pageSize - 1; // The count of entries being shown is equal to the page size... Probably not what we want\r\n let showNext = endPage < (this.pageCount - 1);\r\n let showLast = this.currentPage > (this.paginatorNumbersShownCount - 1); // this.currentPage > this.pageSize - 1;\r\n\r\n let pages:number[] = [];\r\n\r\n for (let index = startPage; index < Math.min(startPage + this.paginatorNumbersShownCount, this.pageCount); index++) {\r\n pages.push(index);\r\n }\r\n\r\n let pagingData = {\r\n \"startPage\": startPage,\r\n \"endPage\": endPage,\r\n \"showNext\": showNext,\r\n \"showLast\": showLast,\r\n \"pages\": pages\r\n };\r\n\r\n return pagingData;\r\n }\r\n}\r\n","\r\n
\r\n Rows per page: \r\n \r\n
\r\n
\r\n
{{ showingFromRecord }} - {{ showingToRecord }} of {{ recordCount }}
\r\n\r\n \r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-site-configuration',\r\n templateUrl: './site-configuration.component.html',\r\n styleUrls: ['./site-configuration.component.scss']\r\n})\r\nexport class SiteConfigurationComponent {\r\n settings: string = JSON.stringify(window['appConfig'], null, 2);\r\n}\r\n","
\r\n

Site Configuration

\r\n \r\n
{{ settings }}
\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { ModalService } from '../../../services/modal.service';\r\nimport { DateTimeInputComponent } from './../../shared/date-time-input/date-time-input.component';\r\n\r\n@Component({\r\n selector: 'app-check-out',\r\n templateUrl: './check-out.component.html',\r\n styleUrls: ['./check-out.component.scss']\r\n})\r\nexport class CheckOutComponent implements OnInit {\r\n @ViewChild(DateTimeInputComponent)\r\n private dateTimeInputComponent: DateTimeInputComponent;\r\n\r\n @Output() checkOutClosed: EventEmitter = new EventEmitter();\r\n \r\n officeLocations: Location[];\r\n locationPrompt: string = 'Select where you will be';\r\n selectedLocation: string;\r\n optionalComment: string;\r\n\r\n showLocationError: boolean;\r\n showOptionalCommentError: boolean;\r\n\r\n editing: boolean;\r\n\r\n constructor(private modalService: ModalService) {\r\n this.editing = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.officeLocations = this.getLocations();\r\n this.selectedLocation = this.locationPrompt;\r\n\r\n this.showLocationError = false;\r\n this.showOptionalCommentError = false;\r\n this.optionalComment = '';\r\n }\r\n\r\n // Reset the default value\r\n onLocationClear()\r\n {\r\n this.selectedLocation = this.locationPrompt;\r\n }\r\n\r\n defaultLocationSelected()\r\n {\r\n return this.selectedLocation === this.locationPrompt;\r\n }\r\n\r\n onLocationChange(newValue) : void \r\n {\r\n this.showLocationError = false;\r\n\r\n if(!this.selectedLocation || this.selectedLocation.length < 1 || this.selectedLocation == this.locationPrompt)\r\n {\r\n this.showLocationError = true;\r\n }\r\n }\r\n\r\n onCommentChange(newValue) : void \r\n {\r\n this.showOptionalCommentError = false;\r\n\r\n if(this.optionalComment && this.optionalComment.length > 256)\r\n {\r\n this.showOptionalCommentError = true;\r\n }\r\n }\r\n\r\n offerCheckoutForm(staffMember: Api.StaffLocation, withEdit: boolean)\r\n {\r\n // Return if we have no StaffLocation object, or\r\n // We are not editing and we have a location (should be creating, but already have a value)\r\n if(staffMember == null || \r\n (!withEdit && staffMember.location !== null)) return;\r\n\r\n // If we are editing, seed values\r\n if(!!withEdit)\r\n {\r\n this.editing = true;\r\n this.selectedLocation = staffMember.location;\r\n this.optionalComment = staffMember.locationDetails;\r\n this.dateTimeInputComponent.seedValue(staffMember.expectedReturn);\r\n }\r\n else \r\n {\r\n this.editing = false;\r\n this.dateTimeInputComponent.initialiseValues();\r\n }\r\n \r\n // Present check out dialog\r\n this.openModal('check-out-modal');\r\n }\r\n\r\n async setCheckedOut()\r\n {\r\n // It is possible to hit 'Check Out' without invoking the validator for location. Run it now.\r\n this.onLocationChange(this.selectedLocation);\r\n\r\n // If valid, proceed\r\n if(this.dateTimeInputComponent && this.dateTimeInputComponent.isValid() && !this.showLocationError && !this.showOptionalCommentError)\r\n {\r\n // Retrieve the values from the child component\r\n let expectedReturnToUse = this.dateTimeInputComponent.getValue();\r\n\r\n let locationToUse = this.selectedLocation;\r\n let locationDetailsToUse = this.optionalComment;\r\n\r\n this.closeModal('check-out-modal');\r\n\r\n this.checkOutClosed.emit({\r\n expectedReturn: expectedReturnToUse,\r\n location: locationToUse,\r\n locationDetails: locationDetailsToUse\r\n });\r\n }\r\n }\r\n\r\n openModal(id: string) {\r\n this.modalService.open(id);\r\n }\r\n\r\n closeModal(id: string) {\r\n this.clearModal();\r\n this.modalService.close(id);\r\n }\r\n\r\n clearModal() {\r\n this.dateTimeInputComponent.initialiseValues();\r\n\r\n this.showLocationError = false;\r\n this.showOptionalCommentError = false;\r\n\r\n this.selectedLocation = this.locationPrompt;\r\n this.optionalComment = '';\r\n }\r\n \r\n getLocations() {\r\n return [\r\n {\r\n 'location': this.locationPrompt,\r\n 'disabled': true\r\n },\r\n {\r\n 'location': 'Supervise Family Contact',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Court',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Home visit',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'I&A',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Stakeholder Meeting',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Placement Meeting',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'FGM',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Training',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Lunch',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Leave',\r\n 'disabled': false\r\n },\r\n {\r\n 'location': 'Other',\r\n 'disabled': false\r\n }\r\n ];\r\n }\r\n}\r\n\r\nexport interface Location {\r\n location: string;\r\n disabled?: boolean;\r\n}","
\r\n \r\n \r\n
\r\n

Checking Out?

\r\n
\r\n\r\n
\r\n

Looks like you're leaving your Service Centre. Tell your team your whereabouts.

\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n Please select where you are going.\r\n
\r\n
\r\n\r\n
\r\n

When will you be back?

\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n Please limit your comment to no more than 256 characters.\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import {interval as observableInterval, Observable , Subscription } from 'rxjs';\r\nimport { Component, OnInit, OnDestroy, AfterViewInit, HostListener, ViewChild, EventEmitter } from '@angular/core';\r\nimport { StaffWhereaboutsService, StaffMemberService, RecordChangeDetectionService, FeatureLoggerService, PersonaSwitcherService } from 'services';\r\nimport * as moment from 'moment';\r\nimport { MsalService } from '../../services/msal.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { staffWhereaboutsSettings } from '../../settings';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\nimport { FocusCheck } from '../shared/FocusCheck';\r\nimport { FeatureName } from \"api/website_enum\";\r\nimport { CheckOutComponent } from './check-out/check-out.component';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ModalService } from '../../services/modal.service';\r\nimport { OfficeLockdownNotifyService } from '../../services/notifications/office-lockdown-notify.service';\r\n\r\n@Component({\r\n selector: 'app-staff-whereabouts',\r\n templateUrl: './staff-whereabouts.component.html',\r\n styleUrls: ['./staff-whereabouts.component.scss']\r\n})\r\nexport class StaffWhereaboutsComponent extends FocusCheck implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(CheckOutComponent, {static: false})\r\n private checkoutComponent: CheckOutComponent;\r\n\r\n tracker: WorkTracker;\r\n serviceCentreName: string;\r\n staffMembers: Api.StaffLocation[];\r\n\r\n pagedStaffMembers: Api.StaffLocation[];\r\n\r\n recordChangeDetectionService: RecordChangeDetectionService;\r\n\r\n selectedStaffMember: Api.StaffLocation;\r\n hasError: boolean;\r\n dataLoaded: boolean;\r\n staffCheckedOut: number;\r\n staffOverdueForCheckIn: number;\r\n isDestroyed: boolean = false;\r\n refreshIntervalInMilliseconds: number;\r\n\r\n selectedOfficerId: string;\r\n\r\n checkoutAttempted: boolean = false;\r\n checkoutSucceeded: boolean = false;\r\n\r\n checkinAttempted: boolean = false;\r\n checkinSucceeded: boolean = false;\r\n\r\n intervalSubscription: Subscription;\r\n //private checkoutSubscription: Subscription;\r\n officeLockdownNotifySubscription: Subscription;\r\n thisOfficersServiceCentre: Api.ServiceCentreViewModel;\r\n\r\n // Pagination settings\r\n currentPage: number = 0;\r\n pageSize: number = 10; // This is communicated from the pagination component\r\n staffWhereaboutsCount: number = 0;\r\n staffWhereaboutsStyle: string = 'staff-wherabouts';\r\n\r\n editing: boolean = false;\r\n\r\n constructor(\r\n private titleService: Title,\r\n private staffWhereaboutsService: StaffWhereaboutsService,\r\n private staffMemberService: StaffMemberService,\r\n private adalService: MsalService,\r\n private featureLogger: FeatureLoggerService,\r\n private personaSwitcherService: PersonaSwitcherService,\r\n private toastr: ToastrService,\r\n private modalService: ModalService,\r\n private officeLockdownNotifyService: OfficeLockdownNotifyService\r\n ) {\r\n super();\r\n this.refreshIntervalInMilliseconds = staffWhereaboutsSettings.refreshIntervalInSeconds * 1000;\r\n this.tracker = new WorkTracker(true);\r\n this.titleService.setTitle('CS Portal - Staff Whereabouts');\r\n this.selectedStaffMember = null;\r\n\r\n this.officeLockdownNotifySubscription = this.officeLockdownNotifyService.serviceCentreChanged.subscribe((serviceCentre) => {\r\n if (this.thisOfficersServiceCentre != serviceCentre) {\r\n this.thisOfficersServiceCentre = serviceCentre;\r\n }\r\n });\r\n\r\n this.recordChangeDetectionService = new RecordChangeDetectionService();\r\n this.recordChangeDetectionService.initialise(\r\n ['location', 'locationDetails', 'expectedReturn', 'lockDownAlertAckTime'],\r\n ['id'], 'staff-whereabouts'\r\n );\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.personaSwitcherService.disable();\r\n this.featureLogger.logFeatureUsage(FeatureName.StaffWhereabouts);\r\n\r\n this.checkoutComponent = new CheckOutComponent(this.modalService);\r\n //this.checkoutSubscription = this.checkoutComponent.checkOutClosed.subscribe(this.handleCheckout.bind(this));\r\n\r\n await this.tracker.track(\r\n this.getStaffWhereabouts().then(() => {\r\n this.updatePagedWheraboutsToShow();\r\n\r\n if (!this.intervalSubscription && !this.isDestroyed) {\r\n this.intervalSubscription = observableInterval(this.refreshIntervalInMilliseconds).subscribe(\r\n async () => {\r\n await this.getStaffWhereabouts();\r\n this.updatePagedWheraboutsToShow();\r\n }\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n async ngAfterViewInit(): Promise {\r\n this.thisOfficersServiceCentre = this.officeLockdownNotifyService.getServiceCentre();\r\n }\r\n\r\n ngOnDestroy() {\r\n // Make sure the periodic api call is stopped.\r\n if (this.intervalSubscription)\r\n {\r\n this.intervalSubscription.unsubscribe();\r\n }\r\n //if (this.checkoutSubscription)\r\n //{\r\n // this.checkoutSubscription.unsubscribe();\r\n //}\r\n if (this.officeLockdownNotifySubscription) {\r\n this.officeLockdownNotifySubscription.unsubscribe();\r\n }\r\n this.isDestroyed = true;\r\n }\r\n\r\n onPageChangedEvent(pageNumber: number)\r\n {\r\n this.currentPage = pageNumber;\r\n this.updatePagedWheraboutsToShow();\r\n }\r\n\r\n onPageSizeChangedEvent(pageSize: number)\r\n {\r\n this.pageSize = pageSize;\r\n this.updatePagedWheraboutsToShow();\r\n }\r\n\r\n updatePagedWheraboutsToShow()\r\n {\r\n var firstElToShow = this.pageSize * this.currentPage;\r\n var lastElToShow = firstElToShow + this.pageSize;\r\n\r\n setTimeout(() => {\r\n // Update the values that are displayed. All data is already pre-loaded. Just paginate in-memory\r\n if(!this.staffMembers || this.staffMembers.length < 1)\r\n {\r\n this.pagedStaffMembers = [];\r\n }\r\n else\r\n {\r\n this.pagedStaffMembers = this.staffMembers.slice(firstElToShow, lastElToShow);\r\n }\r\n });\r\n }\r\n\r\n showCheckInSuccess() {\r\n this.toastr.success('You\\'re checked back in, welcome back!', 'Check In', {progressBar: true, disableTimeOut: false, timeOut: 10000});\r\n }\r\n\r\n showCheckInFailure()\r\n {\r\n this.toastr.error('Something went wrong, please try again.', 'Check In', {progressBar: false, disableTimeOut: true});\r\n }\r\n\r\n showCheckOutSuccess() {\r\n if(this.editing === true)\r\n {\r\n this.toastr.success('Update done, see you soon!', 'Check Out', {progressBar: true, disableTimeOut: false, timeOut: 10000});\r\n }\r\n else\r\n {\r\n this.toastr.success('Check out done, see you soon!', 'Check Out', {progressBar: true, disableTimeOut: false, timeOut: 10000});\r\n }\r\n }\r\n\r\n showCheckOutFailure() {\r\n this.toastr.error('Something went wrong, please try again.', 'Check Out', {progressBar: false, disableTimeOut: true});\r\n }\r\n\r\n edit(staffMember: Api.StaffLocation) {\r\n if(staffMember.location === null) return;\r\n\r\n this.selectedOfficerId = staffMember.id;\r\n\r\n this.editing = true;\r\n this.checkoutComponent.offerCheckoutForm(staffMember, true);\r\n }\r\n\r\n private async getStaffWhereabouts(): Promise {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!this.shouldRefreshData()) {\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n let results = await this.staffMemberService.get(this.adalService.userInfo.localAccountId);\r\n if(!results.hasError)\r\n {\r\n let staffMember = results.value;\r\n this.serviceCentreName = staffMember.serviceCentreName;\r\n\r\n return this.staffWhereaboutsService.get(staffMember.serviceCentreId.toString()).then(result => {\r\n this.hasError = result.hasError;\r\n if(!!result && !!result.value && !this.hasError)\r\n {\r\n this.staffMembers = result.value.staffMembers;\r\n this.staffCheckedOut = result.value.staffMembers.filter(o => !this.isCheckedIn(o)).length;\r\n this.staffOverdueForCheckIn = result.value.staffMembers.filter(o => this.isDueForCheckin(o)).length;\r\n this.dataLoaded = true;\r\n }\r\n else\r\n {\r\n this.staffMembers = [];\r\n }\r\n this.staffWhereaboutsCount = this.staffMembers.length;\r\n this.recordChangeDetectionService.applyNewDataSet(this.staffMembers);\r\n this.updatePagedWheraboutsToShow();\r\n });\r\n }\r\n else\r\n {\r\n this.hasError = true;\r\n }\r\n\r\n } catch (error) {\r\n console.error(error);\r\n this.hasError = true;\r\n }\r\n }\r\n\r\n showUpdateGraphic(staffLocation: Api.StaffLocation): boolean {\r\n return this.recordChangeDetectionService.showUpdateGraphic(staffLocation);\r\n }\r\n\r\n hasAcknowledgedSiteLockdown(staffMember: Api.StaffLocation) {\r\n // Do not show if not currently locked down\r\n if(!this.thisOfficersServiceCentre || !this.thisOfficersServiceCentre.isCurrentlyLockedDown) {\r\n return false;\r\n }\r\n\r\n const hasAcknowledged = !!staffMember.lockDownAlertAckTime;\r\n\r\n // This staff member has not acknowledged a lock down\r\n if(!hasAcknowledged) {\r\n return false;\r\n }\r\n\r\n // Do not show lockdown acknowledged when 'now' is after the end of the day they acknowledged the message\r\n // That is, the last time they acknowledged was yesterday or even earlier\r\n var momentLockdownWasAcknowledged = moment(staffMember.lockDownAlertAckTime);\r\n var endOfSameDay = moment(staffMember.lockDownAlertAckTime).endOf('day');\r\n var now = moment();\r\n if (now.isAfter(endOfSameDay))\r\n {\r\n return false;\r\n }\r\n\r\n // Do not show if the time of the lock down is more recent than the time the person acknowledged a lock down\r\n // This ensures we do not show an 'acknowledgement' that was actually about an earlier lock down that\r\n // has since been cleared and now a newer lockdown is being shown. This must be acknowledged\r\n var lockDownDtm = moment(this.thisOfficersServiceCentre.lockedDownDtm);\r\n if (lockDownDtm.isAfter(momentLockdownWasAcknowledged))\r\n {\r\n return false;\r\n }\r\n\r\n return hasAcknowledged;\r\n }\r\n\r\n isDueForCheckin(staffMember: Api.StaffLocation) {\r\n if (!staffMember.location) {\r\n return;\r\n }\r\n const expectedReturn = moment(staffMember.expectedReturn).local();\r\n const halfAnHourAfterExpectedReturn = expectedReturn.add(30, 'minutes');\r\n const now = moment().local();\r\n const isDueForCheckin = now.isAfter(halfAnHourAfterExpectedReturn);\r\n return isDueForCheckin;\r\n }\r\n\r\n isCheckedIn(staffMember: Api.StaffLocation) {\r\n return !staffMember.location;\r\n }\r\n\r\n trackBy(index: number, item: Api.StaffLocation) {\r\n return `${item.firstName} ${item.familyName} ${item.phoneNumber}`;\r\n }\r\n\r\n formatDate(date: string, incrementToNext15MinuteBlock: boolean = false) {\r\n if(!date || date.length < 1) return '';\r\n\r\n var result = moment(date);\r\n if(!!incrementToNext15MinuteBlock)\r\n {\r\n // Guarantee the value is rounded to the next 15 minute interval. This is required at the moment\r\n // as CS Xpress also writes these records but currently can write any time, not rounded to 15 minute intervals.\r\n var givenTimeAsMoment = moment(date, \"YYYY-MM-DDThh:mm:ssZZ\");\r\n result = this.getTimeAtNext15MinuteIncrement(givenTimeAsMoment);\r\n }\r\n\r\n return !!result\r\n ? moment(result)\r\n .local()\r\n .format('h:mm A, D MMM YY')\r\n : '';\r\n }\r\n\r\n getTimeAtNext15MinuteIncrement(currentTime)\r\n {\r\n const remainder = 15 - (currentTime.minute() % 15);\r\n // Only change the value if we are not already on a 15 minute period.\r\n if(remainder != 15)\r\n {\r\n currentTime = currentTime.add(remainder, \"minutes\");\r\n }\r\n currentTime.seconds(0);\r\n currentTime.milliseconds(0);\r\n return currentTime;\r\n }\r\n\r\n isEven(item: Api.StaffLocation): boolean {\r\n if (!this.staffMembers) return false;\r\n return this.staffMembers.indexOf(item, 0) % 2 === 0;\r\n }\r\n\r\n private shouldRefreshData() {\r\n if (this.isDestroyed) return false;\r\n\r\n return !this.dataLoaded || (this.windowGotFocus && !document.hidden);\r\n }\r\n\r\n async toggleCheckedOutStatus(staffMember: Api.StaffLocation)\r\n {\r\n this.selectedOfficerId = staffMember.id;\r\n\r\n if(this.isCheckedIn(staffMember))\r\n {\r\n // When the officer checks out the method 'handleCheckout' will be invoked via our subscription\r\n this.editing = false;\r\n this.checkoutComponent.offerCheckoutForm(staffMember, false);\r\n }\r\n else\r\n {\r\n await this.tracker.track(\r\n this.checkIn().then(async () => {\r\n // Refresh our view\r\n await this.tracker.track(\r\n this.getStaffWhereabouts()\r\n );\r\n })\r\n );\r\n }\r\n }\r\n\r\n async checkOutClosed(checkoutValues: Api.CheckOutParameters)\r\n {\r\n await this.tracker.track(\r\n this.checkOut(checkoutValues).then(async () => {\r\n // Refresh our view\r\n await this.tracker.track(\r\n this.getStaffWhereabouts()\r\n );\r\n })\r\n );\r\n }\r\n\r\n private async checkOut(checkoutValues: Api.CheckOutParameters) {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n this.checkoutAttempted = true;\r\n return this.staffMemberService.checkOut(this.selectedOfficerId, checkoutValues.location, checkoutValues.locationDetails, checkoutValues.expectedReturn).then(result => {\r\n if (result.hasError) {\r\n this.showCheckOutFailure();\r\n } else {\r\n this.showCheckOutSuccess();\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.error('checkOut error: ' + error);\r\n this.showCheckOutFailure();\r\n }\r\n }\r\n\r\n private async checkIn() {\r\n if (this.isDestroyed) {\r\n this.ngOnDestroy();\r\n return Promise.resolve();\r\n }\r\n\r\n try {\r\n this.checkinAttempted = true;\r\n return this.staffMemberService.checkIn(this.selectedOfficerId).then(result => {\r\n if (result.hasError) {\r\n this.showCheckInFailure();\r\n } else {\r\n this.showCheckInSuccess();\r\n }\r\n });\r\n\r\n } catch (error) {\r\n console.error('checkIn error: ' + error);\r\n this.showCheckInFailure();\r\n }\r\n }\r\n\r\n @HostListener('window:beforeunload ', ['$event'])\r\n beforeUnload(event: any): void {\r\n this.ngOnDestroy();\r\n }\r\n}\r\n\r\n","\r\n
\r\n \r\n
\r\n
\r\n

Staff members for {{ serviceCentreName || 'your service centre' }}

\r\n
\r\n
\r\n
\r\n
Name
\r\n
Mobile Phone
\r\n
Check In / Out
\r\n
Location
\r\n
Details
\r\n
Expected Return
\r\n
Lockdown Alert Seen
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
Name
\r\n
{{ staffMember.firstName }} {{ staffMember.familyName }}
\r\n
\r\n
\r\n
Mobile Phone
\r\n
{{ staffMember.phoneNumber }} 
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Location
\r\n
0\" (click)=\"edit(staffMember)\" class=\"link\">{{ staffMember.location }} 
\r\n
Checked in 
\r\n
\r\n
\r\n
Details
\r\n
{{ staffMember.locationDetails }} 
\r\n
\r\n
\r\n
Expected Return
\r\n
{{ formatDate(staffMember.expectedReturn, true) }} 
\r\n
\r\n
\r\n
Lockdown Alert Seen
\r\n
 @ {{ formatDate(staffMember.lockDownAlertAckTime) }} 
\r\n
 
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-unauthorised',\r\n templateUrl: './unauthorised.component.html',\r\n styleUrls: ['./unauthorised.component.scss']\r\n})\r\nexport class UnauthorisedComponent {\r\n constructor() { }\r\n}\r\n","
\r\n

\r\n We were unable to authorise your account for use with the CS Portal.\r\n

\r\n

\r\n Please close all browser windows and try again. If the problem persists, please contact the Service Desk on 1300 74 74 35.\r\n

\r\n
","// The file contents for the current environment will overwrite these during build.\r\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\r\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\r\n// The list of which env maps to which file can be found in `.angular-cli.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport * as moment from \"moment/moment\";\r\n\r\n@Pipe({ name: 'formatAge' })\r\nexport class FormatAgePipe implements PipeTransform {\r\n public transform(age: Api.Age | null, format: \"dob\" | \"yearsOld\" | \"age\" | null): string {\r\n\r\n let formattedAge;\r\n let yearText = 'yrs';\r\n let mthText = 'mths';\r\n\r\n if (age) {\r\n yearText = age.yearsOld === 1 ? 'yr' : 'yrs';\r\n mthText = age.monthsOld === 1 ? 'mth' : 'mths';\r\n }\r\n\r\n switch (format) {\r\n case \"dob\":\r\n formattedAge = age ? formatDob(age.dateOfBirth) : \"Unknown\";\r\n break;\r\n case \"yearsOld\":\r\n formattedAge = (age && age.yearsOld > -1) ? `${age.yearsOld} ${yearText}` : \"Unknown\";\r\n break;\r\n case \"age\":\r\n default:\r\n formattedAge = age\r\n ? age.monthsOld === 0\r\n ? age.yearsOld === 0 ? 'Newborn' : `${age.yearsOld} ${yearText}`\r\n : `${age.yearsOld} ${yearText} ${age.monthsOld} ${mthText}`\r\n : \"Unknown\";\r\n }\r\n if (age && age.isEstimate) {\r\n formattedAge = `${formattedAge} (estimated)`;\r\n }\r\n return formattedAge;\r\n }\r\n}\r\n\r\nfunction formatDob(dob: string) {\r\n return dob\r\n ? moment(dob).format('D MMMM YYYY')\r\n : \"Unknown\"\r\n}\r\n","export * from './sanitize-html.pipe';\r\nexport * from './unsafe-html.pipe';\r\nexport * from './format-age.pipe';\r\nexport * from './no-data.pipe';","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'noData' })\r\nexport class NoDataPipe implements PipeTransform {\r\n public transform(\r\n data: string | number | Date,\r\n customMessage: string = null): string | number | Date {\r\n\r\n if (data == undefined || data == null || (typeof data === 'string' && ((data) || '').trim().length === 0)) {\r\n\r\n if (customMessage) {\r\n return customMessage;\r\n } else {\r\n return \"Unknown\"\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'sanitizeHtml', pure: false })\r\nexport class SanitizeHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(content: string): SafeHtml {\r\n return this.sanitizer.sanitize(SecurityContext.HTML, content);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'unsafeHtml', pure: false })\r\nexport class UnsafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(content: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(content);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { IResponse } from './response-interface';\r\nimport { of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class ActivityFeedService {\r\n private overrideUpn: string = null;\r\n\r\n constructor(private http: HttpClient,\r\n private personaSwitcherService: PersonaSwitcherService) { }\r\n\r\n async get() {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(csx.activityFeed({}), {\r\n headers: headers\r\n })\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\n\r\n@Injectable()\r\nexport class CaseSummaryService {\r\n private overrideUpn: string = null;\r\n\r\n constructor(private http: HttpClient,\r\n private personaSwitcherService: PersonaSwitcherService) {\r\n\r\n }\r\n\r\n async getCaseSummaries(page: number, pageSize: number) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.caseSummaries({\r\n page: page.toString(),\r\n pageSize: pageSize.toString()\r\n }), {\r\n headers: headers\r\n })\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n\r\n async getOngoingInterventionDetails(personId: string) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.ongoingInterventionDetails({\r\n personId: personId\r\n }), {\r\n headers: headers\r\n })\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { csx } from 'services/api/urls';\r\nimport * as Bowser from \"bowser\";\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Injectable()\r\nexport class FeatureLoggerService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n async logFeatureUsage(featureName: FeatureName) {\r\n const bowser = Bowser.getParser(window.navigator.userAgent);\r\n const browser = bowser.parseBrowser();\r\n const platform = bowser.parsePlatform();\r\n const os = bowser.parseOS();\r\n\r\n let featureLogParameters = {\r\n featureName: featureName,\r\n browser: {\r\n language: window.navigator.language,\r\n name: browser.name,\r\n version: browser.version,\r\n platform: platform.type,\r\n operatingSystem: `${os.name} ${os.versionName || ''}`.trim(),\r\n screen: {\r\n height: window.screen.height,\r\n width: window.screen.width,\r\n },\r\n url: window.location.href\r\n }\r\n };\r\n\r\n let base64Params = { \"base64Parameters\": btoa(JSON.stringify(featureLogParameters)) };\r\n\r\n let responsePromise: Promise;\r\n try {\r\n responsePromise = this.http.post(csx.featureLogger({}), base64Params)\r\n .toPromise();\r\n } catch (error) {\r\n console.error(\"Failed to send feature log parameters.\");\r\n }\r\n return responsePromise;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient, HttpResponse } from '@angular/common/http';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\nimport { IResponse } from './response-interface';\r\nimport { from } from 'rxjs';\r\nimport {catchError, map} from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class OfficeLockdownStatusService {\r\n private overrideUpn: string = null;\r\n\r\n constructor(private http: HttpClient,\r\n private personaSwitcherService: PersonaSwitcherService) { }\r\n\r\n async get() : Promise> {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(csx.officeStatus({ }), {\r\n headers: headers\r\n })\r\n .pipe(\r\n map(r => >(r)),\r\n map(r => >({ hasError: false, value: r })),\r\n catchError(x => \r\n from([{ hasError: true }])\r\n )\r\n )\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class PersonaSwitcherService {\r\n constructor(private http: HttpClient) {\r\n }\r\n\r\n private personaSwitchingIsEnabled: boolean = false;\r\n private currentPersonaUpn = new Subject();\r\n public currentPersonaUpnChanged = this.currentPersonaUpn.asObservable();\r\n\r\n private ChangeCurrentPersonaUpn(newMessage: string) {\r\n this.currentPersonaUpn.next(newMessage);\r\n }\r\n\r\n async getTeam() {\r\n return this.http\r\n .get(\r\n csx.personaSwitcher({})\r\n )\r\n .toPromise();\r\n }\r\n\r\n public disable(): void {\r\n this.personaSwitchingIsEnabled = false;\r\n this.clearPersonaUpn();\r\n }\r\n\r\n public enable(): void {\r\n this.personaSwitchingIsEnabled = true;\r\n }\r\n\r\n public isEnable(): boolean {\r\n return this.personaSwitchingIsEnabled === true;\r\n }\r\n\r\n public setPersonaUpn(upn: string): void {\r\n if (!this.personaSwitchingIsEnabled) return;\r\n\r\n localStorage.setItem('personaUpn', upn);\r\n this.ChangeCurrentPersonaUpn(upn);\r\n }\r\n\r\n public getPersonaUpn(): string {\r\n var response = localStorage.getItem('personaUpn');\r\n return !!response && response.length > 0 ? response : '';\r\n }\r\n\r\n public clearPersonaUpn(): void {\r\n localStorage.removeItem('personaUpn');\r\n this.ChangeCurrentPersonaUpn(null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class ServiceCentreLockdownService {\r\n private overrideUpn: string = null;\r\n\r\n constructor(private http: HttpClient) {\r\n\r\n }\r\n\r\n async lockdownOffice() {\r\n return this.http\r\n .post(csx.serviceCentreLockdown({ }), null)\r\n .toPromise();\r\n }\r\n\r\n async safeToReturn() {\r\n return this.http.post(csx.serviceCentreSafeToReturn({}), null)\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class StaffMemberService {\r\n constructor(private http: HttpClient) { }\r\n\r\n async get(id: string) {\r\n let result = await this.http\r\n .get(csx.staffMember({ id: id }))\r\n .asJsonResponse()\r\n .toPromise();\r\n\r\n return result;\r\n }\r\n\r\n async checkIn(id: string) {\r\n return await this.http\r\n .post(csx.checkIn({ id: id }), null)\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n\r\n async checkOut(id: string, location: string, locationDetails: string, expectedReturn: string) {\r\n return this.http\r\n .post(csx.checkOut({ id: id }), {\r\n location: location,\r\n locationDetails: locationDetails,\r\n expectedReturn: expectedReturn\r\n })\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class StaffWhereaboutsService {\r\n constructor(private http: HttpClient) { }\r\n\r\n async get(serviceCentreId: string) {\r\n return this.http\r\n .get(csx.staffWhereabouts({ serviceCentreId: serviceCentreId }))\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { csx } from 'services/api/urls';\r\nimport * as moment from 'moment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { PersonaSwitcherService } from 'services/api/persona-switcher.service';\r\n\r\n@Injectable()\r\nexport class TaskSubsystemService {\r\n private overrideUpn: string = null;\r\n\r\n constructor(private http: HttpClient,\r\n private personaSwitcherService: PersonaSwitcherService) { }\r\n\r\n async getUpcomingChildHomeVisits(fromDateTimeUtc: Date, toDateTimeUtc: Date) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.upcomingChildHomeVisits({\r\n fromDateTimeUtc: moment(fromDateTimeUtc)\r\n .utc()\r\n .format(),\r\n toDateTimeUtc: moment(toDateTimeUtc)\r\n .utc()\r\n .format(), \r\n page: '0', \r\n pageSize: '10000'\r\n }),\r\n {\r\n headers: headers\r\n }\r\n )\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n\r\n async getUpcomingChildHomeVisitDetail(personId: string) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.upcomingChildHomeVisitDetail({\r\n personId: personId\r\n }),\r\n {\r\n headers: headers\r\n }\r\n )\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n\r\n async getOverdueChildHomeVisits(pageNumber: string, pageSize: string) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.overdueChildHomeVisits({\r\n page: pageNumber, \r\n pageSize: pageSize\r\n }),\r\n {\r\n headers: headers\r\n }\r\n )\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n \r\n async getCurrentCourts(fromDateTimeUtc: Date, toDateTimeUtc: Date) {\r\n let headers = {};\r\n if (this.personaSwitcherService.getPersonaUpn() || this.overrideUpn) {\r\n headers = {\r\n 'upn': btoa(this.personaSwitcherService.getPersonaUpn() || this.overrideUpn)\r\n };\r\n }\r\n\r\n return this.http\r\n .get(\r\n csx.currentCourtOrders({\r\n fromDateTimeUtc: moment(fromDateTimeUtc)\r\n .utc()\r\n .format(),\r\n toDateTimeUtc: moment(toDateTimeUtc)\r\n .utc()\r\n .format()\r\n }),\r\n {\r\n headers: headers\r\n }\r\n )\r\n .asJsonResponse()\r\n .toPromise();\r\n }\r\n}\r\n","import * as uriTemplate from 'uri-templates';\r\nimport { apiBase } from 'settings';\r\n\r\nexport const templates = {\r\n csx: {\r\n officeStatus: uriTemplate(`${apiBase}/officelockdownstatus/checkifofficeislockeddown`),\r\n\r\n serviceCentreLockdown: uriTemplate(`${apiBase}/ServiceCentre/Lockdown`),\r\n serviceCentreSafeToReturn: uriTemplate(`${apiBase}/ServiceCentre/SafeToReturn`),\r\n\r\n staffMember: uriTemplate(`${apiBase}/staff/{id}`),\r\n checkIn: uriTemplate(`${apiBase}/checkinout/checkin/{id}`),\r\n checkOut: uriTemplate(`${apiBase}/checkinout/checkout/{id}`),\r\n staffWhereabouts: uriTemplate(`${apiBase}/staff/ServiceCentre/{serviceCentreId}`),\r\n activityFeed: uriTemplate(`${apiBase}/activityFeed`),\r\n\r\n visitCounts: uriTemplate(`${apiBase}/UpcomingChildHomeVisits/visitcounts?fromDateTimeUtc={fromDateTimeUtc}&toDateTimeUtc={toDateTimeUtc}&page={page}&pageSize={pageSize}`),\r\n upcomingChildHomeVisits: uriTemplate(`${apiBase}/UpcomingChildHomeVisits/visits?fromDateTimeUtc={fromDateTimeUtc}&toDateTimeUtc={toDateTimeUtc}&page={page}&pageSize={pageSize}`),\r\n upcomingChildHomeVisitDetail: uriTemplate(`${apiBase}/UpcomingChildHomeVisits/detail/{personId}`),\r\n overdueChildHomeVisits: uriTemplate(`${apiBase}/OverdueChildHomeVisits/visits?page={page}&pageSize={pageSize}`),\r\n\r\n caseSummaries: uriTemplate(`${apiBase}/CaseSummary/CaseSummaries?page={page}&pageSize={pageSize}`),\r\n ongoingInterventionDetails: uriTemplate(`${apiBase}/CaseSummary/OngoingIntervention/Detail?personId={personId}`),\r\n\r\n featureLogger: uriTemplate(`${apiBase}/FeatureLogger`),\r\n personaSwitcher: uriTemplate(`${apiBase}/personaSwitcher`),\r\n\r\n currentCourtOrders: uriTemplate(`${apiBase}/CourtOrder/orders?fromDateTimeUtc={fromDateTimeUtc}&toDateTimeUtc={toDateTimeUtc}`),\r\n }\r\n};\r\n\r\nexport const csx = {\r\n officeStatus: (params: { }) => templates.csx.officeStatus.fillFromObject(params), \r\n\r\n serviceCentreLockdown: (params: { }) => templates.csx.serviceCentreLockdown.fillFromObject(params), \r\n serviceCentreSafeToReturn: (params: { }) => templates.csx.serviceCentreSafeToReturn.fillFromObject(params), \r\n\r\n staffMember: (params: { id: string }) => templates.csx.staffMember.fillFromObject(params),\r\n checkIn: (params: { id: string }) => templates.csx.checkIn.fillFromObject(params),\r\n checkOut: (params: { id: string }) => templates.csx.checkOut.fillFromObject(params),\r\n staffWhereabouts: (params: { serviceCentreId: string }) => templates.csx.staffWhereabouts.fillFromObject(params),\r\n activityFeed: (params: {}) => templates.csx.activityFeed.fillFromObject(params),\r\n\r\n visitCounts: (params: { fromDateTimeUtc: string, toDateTimeUtc: string, page: string, pageSize: string }) => templates.csx.visitCounts.fillFromObject(params),\r\n upcomingChildHomeVisits: (params: { fromDateTimeUtc: string, toDateTimeUtc: string, page: string, pageSize: string }) => templates.csx.upcomingChildHomeVisits.fillFromObject(params),\r\n upcomingChildHomeVisitDetail: (params: { personId: string }) => templates.csx.upcomingChildHomeVisitDetail.fillFromObject(params),\r\n\r\n overdueChildHomeVisits: (params: { page: string, pageSize: string }) => templates.csx.overdueChildHomeVisits.fillFromObject(params),\r\n\r\n caseSummaries: (params: { page: string, pageSize: string }) => templates.csx.caseSummaries.fillFromObject(params),\r\n ongoingInterventionDetails: (params: { personId: string }) => templates.csx.ongoingInterventionDetails.fillFromObject(params),\r\n\r\n featureLogger: (params: {}) => templates.csx.featureLogger.fillFromObject(params),\r\n personaSwitcher: (params: {}) => templates.csx.personaSwitcher.fillFromObject(params),\r\n\r\n currentCourtOrders: (params: { fromDateTimeUtc: string, toDateTimeUtc: string }) => templates.csx.currentCourtOrders.fillFromObject(params),\r\n};\r\n","import { from, Observable } from 'rxjs';\r\nimport {catchError, map} from 'rxjs/operators';\r\nimport { HttpResponse } from '@angular/common/http';\r\nimport { IResponse } from './response-interface';\r\n\r\ndeclare module 'rxjs' {\r\n interface Observable {\r\n asJsonResponse(): Observable>;\r\n }\r\n}\r\n\r\nObservable.prototype.asJsonResponse = function (this: Observable) {\r\n return this.pipe(\r\n map(r => >(r)),\r\n map(r => >({ hasError: false, value: r })),\r\n catchError(x => \r\n from([{ hasError: true }])\r\n )\r\n );\r\n};\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { MsalService } from './msal.service';\r\n\r\n@Injectable()\r\nexport class AuthenticationGuard implements CanActivate {\r\n constructor(private adalService: MsalService) { }\r\n\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\r\n const authenticated = await this.adalService.isAuthenticated();\r\n if (authenticated) {\r\n return true;\r\n } else {\r\n this.adalService.login(state.url);\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable()\r\nexport class CourtOrderService {\r\n milestones: Api.CourtOrderType[];\r\n viewMoreHiddenOrderTypes: string[];\r\n\r\n constructor() {\r\n this.milestones = [\r\n {week: 24, milestoneName: 'File Review' },\r\n {week: 23, milestoneName: 'CAP completed' },\r\n {week: 22, milestoneName: 'Book 1st OCFOS appt' },\r\n {week: 13, milestoneName: 'Practice Panel' },\r\n {week: 12, milestoneName: 'Book 2nd OCFOS appt' },\r\n {week: 9, milestoneName: 'Draft to TL for QA' },\r\n {week: 7, milestoneName: 'Draft to OCFOS for QA' },\r\n {week: 5, milestoneName: 'Referral to DCPL' },\r\n {week: 0, milestoneName: 'Expiry of Order' }\r\n ];\r\n\r\n // Note, we only have the highest level of order type codes, such as '5' for TAO. There are more discerning values we don't have.\r\n // Many of the below are all code '15'. We do show View More for a lot of '15' types. For this reason we must resort to using\r\n // the textual value instead of the codes we have.\r\n this.viewMoreHiddenOrderTypes = [\r\n 'tao',\r\n 'tao - extend',\r\n 'tco',\r\n 'tco - extend',\r\n 'cao',\r\n 'cao - extend',\r\n 'cao - interim order(s)',\r\n 'cao - extend and vary',\r\n 'cpo - interim order(s)',\r\n 'cpo - interim and procedural order(s)',\r\n 'cpo - section 99',\r\n 'cpo - section 99 and procedural order(s)',\r\n 'cpo - section 99 and interim order(s)',\r\n 'cpo - section 99, interim and procedural order(s)'\r\n ];\r\n }\r\n\r\n // Return true when the given court order 'orderTypeDisplay' is NOT in the \r\n // collection of viewMoreHiddenOrderTypes. Return false when it is present.\r\n // That is, hide the View More button when the court order type is in this list.\r\n enableViewMore(courtOrder: Api.CourtOrder): boolean {\r\n return this.viewMoreHiddenOrderTypes.indexOf(courtOrder.orderTypeDisplay.toLowerCase()) < 0;\r\n }\r\n\r\n getOrderType(week: number): Api.CourtOrderType {\r\n for(let i = 0; i < this.milestones.length; i++)\r\n {\r\n if (this.milestones[i].week === week) {\r\n return this.milestones[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n generateMilestones(orderExpiryDtm?: string)\r\n {\r\n if(!orderExpiryDtm) {\r\n return [];\r\n }\r\n\r\n \r\n moment.updateLocale('en', {\r\n calendar : {\r\n lastDay : '[Yesterday]',\r\n sameDay : '[Today]',\r\n nextDay : '[Tomorrow]'\r\n }\r\n });\r\n\r\n let response = [];\r\n let milestoneWeek = 24;\r\n\r\n // Allow generation of task at week 0. This is the expiry date of the court order\r\n while(milestoneWeek >= 0)\r\n {\r\n let milestone = this.getOrderType(milestoneWeek);\r\n if(!milestone) {\r\n milestoneWeek -= 1;\r\n continue;\r\n }\r\n\r\n let dueDt = moment(orderExpiryDtm).add((-7 * milestoneWeek), 'day');\r\n let isInThePast = dueDt.isBefore(moment());\r\n let dueDtDescription = dueDt.local().format('DD/MM/YYYY');\r\n //let readableDistanceToFromDueDt = dueDt.fromNow();\r\n let readableDistanceToFromDueDt = this.dateToFromNowDaily(dueDt);\r\n response.push({\r\n milestoneWeek: milestoneWeek,\r\n taskNumber: Math.abs(25 - milestoneWeek),\r\n milestoneDueDt: dueDtDescription,\r\n timeToDueDtDescription: readableDistanceToFromDueDt,\r\n milestoneName: milestone.milestoneName, \r\n isInThePast: isInThePast\r\n });\r\n\r\n milestoneWeek -= 1;\r\n }\r\n\r\n return response;\r\n }\r\n\r\n getNextMilestone(courtOrder: Api.CourtOrder)\r\n {\r\n let milestones = this.generateMilestones(courtOrder.orderExpiryDtm);\r\n\r\n // If this court order has no view more option then the next milestone defaults to the last milestone\r\n if(!this.enableViewMore(courtOrder))\r\n {\r\n return milestones[milestones.length - 1].milestoneName;\r\n }\r\n\r\n // Find the first milestone that is not in the past, if any\r\n let response = '';\r\n for(let i = 0; i < milestones.length; i++)\r\n {\r\n response = milestones[i].milestoneName;\r\n if(!milestones[i].isInThePast)\r\n {\r\n break;\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n // Courtesty Ritwick: https://stackoverflow.com/questions/35441820/moment-js-tomorrow-today-and-yesterday/35442124\r\n // call this function, passing-in your date\r\n dateToFromNowDaily( myDate ) {\r\n \r\n // get from-now for this date\r\n var fromNow = moment( myDate ).fromNow();\r\n \r\n // ensure the date is displayed with today and yesterday\r\n return moment( myDate ).calendar( null, {\r\n // when the date is closer, specify custom values\r\n lastWeek: '[Last] dddd',\r\n lastDay: '[Yesterday]',\r\n sameDay: '[Today]',\r\n nextDay: '[Tomorrow]',\r\n nextWeek: 'dddd',\r\n // when the date is further away, use from-now functionality \r\n sameElse: function () {\r\n return \"[\" + fromNow + \"]\";\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { FilterSettings, MultiChoiceSearch } from '../app/dashboard/home-visits/filter-settings';\r\n\r\n@Injectable()\r\nexport class HomeVisitFilterService {\r\n\r\n constructor() {}\r\n\r\n // This is called after the filter is closed\r\n filterVisitsToShow(filterSettings: FilterSettings, visits: Api.ChildHomeVisit[]) : Api.ChildHomeVisit[] \r\n {\r\n var visitsToShow = filterSettings.nameSearch.getMatchingChildren(visits);\r\n visitsToShow = visitsToShow.filter(o => this.includeHomeVisitByChildName(filterSettings, o.subjectChildName));\r\n visitsToShow = visitsToShow.filter(o => this.includeInterventionType(filterSettings, o.currentInterventionType));\r\n visitsToShow = visitsToShow.filter(o => this.includeHomeVisitFrequency(filterSettings, o.frequency));\r\n visitsToShow = visitsToShow.filter(o => this.includePriority(filterSettings, filterSettings.getPriorityLabel(o.isOverdueWithHighPriority, o.isOverdueWithModeratePriority)));\r\n return visitsToShow;\r\n }\r\n\r\n // This is called after the filter is closed\r\n filterVisitsToShowByDateRange(filterSettings: FilterSettings, visits: Api.ChildHomeVisit[]) {\r\n return visits.filter(o => this.includeDate(filterSettings, o.dueDtm));\r\n }\r\n\r\n private includeDate(filterSettings: FilterSettings, dueDtm: string) {\r\n var taskDueDtm = moment(dueDtm)\r\n .local()\r\n .startOf('day');\r\n var searchStart = moment(filterSettings.effectiveStartDate());\r\n var searchEnd = moment(filterSettings.effectiveEndDate());\r\n return taskDueDtm.isSameOrAfter(searchStart) && taskDueDtm.isSameOrBefore(searchEnd);\r\n }\r\n\r\n private includeInterventionType(filterSettings: FilterSettings, interventionType: string) {\r\n return filterSettings.interventionSelect.allSelected() || filterSettings.interventionSelect.getOrderedOptions().filter(o => o.selected && o.displayName.toLocaleLowerCase() === interventionType.toLocaleLowerCase()).length > 0;\r\n }\r\n\r\n private includeHomeVisitByChildName(filterSettings: FilterSettings, childName: String)\r\n {\r\n // If the person has not defined a child name then do not filter results; this is why we return true when none are selected\r\n //return this.filterSettings.nameSelect.allSelected() || this.filterSettings.nameSelect.noneSelected() || this.filterSettings.nameSelect.selectedChildren.filter(o => o == childName).length > 0;\r\n return filterSettings.nameSelect.allSelected() || filterSettings.nameSelect.getOrderedOptions().filter(o => o.selected === true && o.displayName.toLocaleLowerCase() === childName.toLocaleLowerCase()).length > 0;\r\n }\r\n\r\n private includeHomeVisitFrequency(filterSettings: FilterSettings, visitFrequency: string)\r\n {\r\n return filterSettings.visitFrequencySelect.allSelected() || filterSettings.visitFrequencySelect.getOrderedOptions().filter(o => o.selected && o.displayName.toLocaleLowerCase() === visitFrequency.toLocaleLowerCase()).length > 0;\r\n }\r\n\r\n private includePriority(filterSettings: FilterSettings, priority: string) {\r\n return filterSettings.priorityLevels.allSelected() || filterSettings.priorityLevels.getOrderedOptions().filter(o => o.selected && o.displayName.toLocaleLowerCase() === priority.toLocaleLowerCase()).length > 0;\r\n }\r\n\r\n formatDateForFilterRange(date: Date): string {\r\n if (date.getFullYear() != new Date().getFullYear()) {\r\n return moment(date)\r\n .local()\r\n .format('ddd Do MMM YYYY');\r\n }\r\n else {\r\n return moment(date)\r\n .local()\r\n .format('ddd Do MMM');\r\n }\r\n }\r\n\r\n getFilterDescription(options: MultiChoiceSearch, prefix: string): string {\r\n let response = prefix;\r\n\r\n options.getOrderedOptions().forEach(r => {\r\n if (r.selected == true) {\r\n response += `'${r.displayName}', `;\r\n }\r\n });\r\n\r\n return response.replace(/,\\s*$/, '');\r\n }\r\n\r\n getChildNameFilterDescription(filterSettings: FilterSettings, prefix: string) : string {\r\n return prefix + filterSettings.nameSearch.childNameSearchValue;\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject , Subscription , fromEvent } from 'rxjs';\r\nimport { throttleTime } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class IdleDetectionService implements OnDestroy {\r\n private isIdle = new Subject();\r\n public isIdleChanged = this.isIdle.asObservable();\r\n private idleTimerHandle: any;\r\n private subscription: Subscription;\r\n\r\n public reset(): void {\r\n this.ngOnDestroy();\r\n\r\n this.subscription =\r\n fromEvent(window, 'mousemove')\r\n .pipe(\r\n throttleTime(1000)\r\n )\r\n .subscribe(e => {\r\n this.changeIsIdleChanged(false);\r\n this.resetTimer();\r\n });\r\n\r\n this.resetTimer();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n clearTimeout(this.idleTimerHandle);\r\n }\r\n\r\n private changeIsIdleChanged(idle: boolean) {\r\n this.isIdle.next(idle);\r\n }\r\n\r\n private resetTimer() {\r\n clearTimeout(this.idleTimerHandle);\r\n\r\n const timeoutInterval = 900000; // 15 minutes\r\n\r\n this.idleTimerHandle = setTimeout(() => {\r\n console.warn('User idle period detected ');\r\n this.changeIsIdleChanged(true);\r\n }, timeoutInterval);\r\n }\r\n}","export * from './msal.service';\r\nexport * from '../services/authentication-guard';\r\nexport * from '../services/user-info.service';\r\nexport * from '../services/api/activity-feed.service';\r\nexport * from '../services/api/case-summary.service';\r\nexport * from '../services/api/staff-member.service';\r\nexport * from '../services/api/staff-whereabouts.service';\r\nexport * from '../services/api/task-subsystem.service';\r\nexport * from '../services/idle-detection.service';\r\nexport * from '../services/api/feature-logger.service';\r\nexport * from '../services/api/persona-switcher.service';\r\nexport * from '../services/api/office-lockdown-status.service';\r\nexport * from '../services/api/service-centre-lockdown.service';\r\nexport * from '../services/court-order.service';\r\nexport * from '../services/home-visit-filter.service';\r\nexport * from '../services/modal.service';\r\nexport * from '../services/local-storage.service';\r\nexport * from '../services/priority-icon.service';\r\nexport * from '../services/record-change-detection.service';","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class LocalStorageService {\r\n localStorage: Storage;\r\n private allKeysKeyName: string = 'CSPortalAllKeysKeyName';\r\n\r\n changes$ = new Subject();\r\n\r\n constructor() {\r\n this.localStorage = window.localStorage;\r\n }\r\n\r\n get(key: string): any {\r\n if (this.isLocalStorageSupported) {\r\n return JSON.parse(this.localStorage.getItem(key));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n set(key: string, value: any): boolean {\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.setItem(key, JSON.stringify(value));\r\n this.changes$.next({\r\n type: 'set',\r\n key,\r\n value\r\n });\r\n this.trackKey(key);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n check(key: string) {\r\n var response = this.get(key);\r\n return response != null && response != undefined && response != 'undefined';\r\n }\r\n\r\n deleteAll(): boolean {\r\n var allKeyNames = this.get(this.allKeysKeyName);\r\n if(!allKeyNames)\r\n {\r\n // Nothing to delete\r\n return true;\r\n }\r\n else\r\n {\r\n // Remove all keys from storage\r\n allKeyNames.forEach((nextKey, index) => {\r\n this.remove(nextKey);\r\n });\r\n\r\n // Clear the collection of tracked key names\r\n this.set(this.allKeysKeyName, []);\r\n }\r\n }\r\n\r\n deleteAllWithPrefix(prefix): boolean {\r\n var allKeyNames = this.get(this.allKeysKeyName);\r\n if(!allKeyNames)\r\n {\r\n // Nothing to delete\r\n return true;\r\n }\r\n else\r\n {\r\n // Remove all keys from storage\r\n allKeyNames.forEach((nextKey, index) => {\r\n if(nextKey.startsWith(prefix))\r\n {\r\n this.remove(nextKey);\r\n }\r\n });\r\n\r\n // Clear the collection of tracked key names\r\n var allKeyNames = this.get(this.allKeysKeyName);\r\n for(var i = 0; i < allKeyNames.length; i++)\r\n {\r\n if(allKeyNames[i].startsWith(prefix))\r\n {\r\n allKeyNames.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Track each unique key that is stored.\r\n // Enable the concept to 'delete all' related to this application\r\n private trackKey(key: string)\r\n {\r\n var allKeyNames = this.get(this.allKeysKeyName);\r\n if(!allKeyNames)\r\n {\r\n // Create the new entry with this initial key value\r\n this.set(this.allKeysKeyName, [ key ]);\r\n }\r\n else\r\n {\r\n // Check we don't already know of this key\r\n var index = allKeyNames.indexOf(key);\r\n if(index < 0)\r\n {\r\n // Add the key to the collection and update the value in local storage\r\n allKeyNames.push(key);\r\n this.set(this.allKeysKeyName, allKeyNames);\r\n }\r\n }\r\n }\r\n\r\n remove(key: string): boolean {\r\n if (this.isLocalStorageSupported) {\r\n this.localStorage.removeItem(key);\r\n this.changes$.next({\r\n type: 'remove',\r\n key\r\n });\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get isLocalStorageSupported(): boolean {\r\n return !!this.localStorage\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\n@Injectable()\r\nexport class ModalService {\r\n private modals: any[] = [];\r\n\r\n add(modal: any) {\r\n // add modal to array of active modals\r\n this.modals.push(modal);\r\n }\r\n\r\n remove(id: string) {\r\n // remove modal from array of active modals\r\n this.modals = this.modals.filter(x => x.id !== id);\r\n }\r\n\r\n open(id: string) {\r\n // open modal specified by id\r\n let modal: any = this.modals.filter(x => x.id === id)[0];\r\n modal.open();\r\n }\r\n\r\n close(id: string) {\r\n // close modal specified by id\r\n let modal: any = this.modals.filter(x => x.id === id)[0];\r\n modal.close();\r\n }\r\n}","import * as settings from '../settings';\r\nimport {Injectable} from '@angular/core';\r\nimport {Router} from \"@angular/router\";\r\nimport {AuthenticationResult, Configuration, LogLevel, PublicClientApplication, SilentRequest} from \"@azure/msal-browser\";\r\n\r\nconst adalConfig: Configuration = {\r\n auth: {\r\n clientId: settings.appId,\r\n authority: `https://login.microsoftonline.com/${settings.tenantId}`,\r\n redirectUri: settings.base\r\n },\r\n cache: {\r\n cacheLocation: 'sessionStorage',\r\n storeAuthStateInCookie: false,\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level: LogLevel, message: string, containsPii: boolean): void => {\r\n if (containsPii) {\r\n return;\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message);\r\n return;\r\n case LogLevel.Info:\r\n console.info(message);\r\n return;\r\n case LogLevel.Verbose:\r\n console.debug(message);\r\n return;\r\n case LogLevel.Warning:\r\n console.warn(message);\r\n return;\r\n }\r\n },\r\n piiLoggingEnabled: false\r\n },\r\n windowHashTimeout: 60000,\r\n iframeHashTimeout: 6000,\r\n loadFrameTimeout: 0,\r\n asyncPopups: false\r\n }\r\n};\r\n\r\nconst loginRequest = {\r\n scopes: [`${settings.appId}/.default`]\r\n};\r\n\r\n\r\n@Injectable()\r\nexport class MsalService {\r\n private context: PublicClientApplication;\r\n private handleRedirectPromise: Promise;\r\n\r\n constructor() {\r\n this.context = new PublicClientApplication(adalConfig);\r\n this.handleRedirectPromise = this.context.handleRedirectPromise()\r\n this,this.handleCallback()\r\n }\r\n\r\n accessIsDenied(): boolean {\r\n let location = window.location.hash;\r\n return (location !== undefined && location.indexOf(\"access_denied\") >= 0);\r\n }\r\n\r\n login(returnRedirectPath: string) {\r\n localStorage.setItem('msal.angular.login.request', returnRedirectPath);\r\n this.context.loginRedirect();\r\n }\r\n\r\n logout() {\r\n this.clearCache();\r\n this.context.logoutPopup();\r\n }\r\n\r\n handleCallback() {\r\n this.handleRedirectPromise.then(authResult => {\r\n if (authResult === null) {\r\n // tell the app i.e. \"we're NOT auth'd\"\r\n console.log(`MsalService.handleCallback - notAuthenticated, need to login`);\r\n } else {\r\n this.context.setActiveAccount(this.context.getAllAccounts()[0])\r\n // tell the app i.e. \"we're auth'd\"\r\n console.log(`MsalService.handleCallback - authenticated`);\r\n }\r\n })\r\n }\r\n\r\n public get userInfo() {\r\n return this.context.getActiveAccount();\r\n }\r\n\r\n getAccessToken(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.context\r\n .acquireTokenSilent(loginRequest)\r\n .then((rs) => {\r\n if (rs && rs.accessToken) {\r\n resolve(rs.accessToken);\r\n } else {\r\n reject('failed to get token');\r\n }\r\n })\r\n .catch((err) => {\r\n reject(JSON.stringify(err));\r\n });\r\n });\r\n }\r\n\r\n public async isAuthenticated(): Promise {\r\n await this.handleRedirectPromise;\r\n return !!this.context.getActiveAccount();\r\n }\r\n\r\n public clearCache(): void {\r\n localStorage.clear();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CourtOrderNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private courtOrders = new Subject();\r\n public courtOrdersChanged = this.courtOrders.asObservable();\r\n\r\n ChangeCourtOrderData(data: Api.SelectedCourtOrderData) {\r\n this.courtOrders.next(data);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CourtOrderPromiseNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private courtOrderPromise = new Subject>();\r\n public courtOrdersPromiseChanged = this.courtOrderPromise.asObservable();\r\n\r\n ChangeCourtOrderPromise(promise: Promise) {\r\n this.courtOrderPromise.next(promise);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { FilterSettings } from '../../app/dashboard/home-visits/filter-settings';\r\n\r\n@Injectable()\r\nexport class FilterNotificationService {\r\n\r\n constructor() { }\r\n\r\n private selectedFilters = new Subject();\r\n public selectedFilterChanged = this.selectedFilters.asObservable();\r\n\r\n ChangeSelectedFilters(newMessage: FilterSettings) {\r\n this.selectedFilters.next(newMessage);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class HomeVisitOverdueCountNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private overdueVisitCountData = new Subject();\r\n public overdueVisitCountDataChanged = this.overdueVisitCountData.asObservable();\r\n\r\n ChangeHomeVisitCounts(countData: Api.OverdueHomeVisitCountData) {\r\n this.overdueVisitCountData.next(countData);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class HomeVisitUpcomingCountNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private upcomingVisitCountData = new Subject();\r\n public upcomingVisitCountDataChanged = this.upcomingVisitCountData.asObservable();\r\n\r\n ChangeHomeVisitCounts(countData: Api.UpcomingHomeVisitCountData) {\r\n this.upcomingVisitCountData.next(countData);\r\n }\r\n}\r\n","export * from './court-order-notify.service';\r\nexport * from './court-order-promise-notify.service';\r\nexport * from './filter-notification.service';\r\nexport * from './office-lockdown-notify.service';\r\nexport * from './tab-notification.service';\r\nexport * from './upcoming-visits-notification.service';\r\nexport * from './home-visit-upcoming-count-notify.service';\r\nexport * from './home-visit-overdue-count-notify.service';\r\nexport * from './show-priority-notify.service';\r\nexport * from './promise-notify.service';","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class OfficeLockdownNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private mostRecentOfficeDetails: Api.ServiceCentreViewModel;\r\n private serviceCentre = new Subject();\r\n public serviceCentreChanged = this.serviceCentre.asObservable();\r\n\r\n ChangeServiceCentre(newMessage: Api.ServiceCentreViewModel) {\r\n this.mostRecentOfficeDetails = newMessage;\r\n this.serviceCentre.next(newMessage);\r\n }\r\n\r\n public getServiceCentre() : Api.ServiceCentreViewModel\r\n {\r\n return this.mostRecentOfficeDetails;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class PromiseNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private promiseTracker = new Subject();\r\n public promiseTrackerChanged = this.promiseTracker.asObservable();\r\n\r\n TrackThisPromise(thePromiseToTrack: Api.HomeVisitPromise) {\r\n this.promiseTracker.next(thePromiseToTrack);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class ShowPriorityNotifyService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private showPriorities = new Subject();\r\n public showPrioritiesChanged = this.showPriorities.asObservable();\r\n\r\n ChangeShowPriorities(showPriority: boolean) {\r\n this.showPriorities.next(showPriority);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Injectable()\r\nexport class TabNotificationService {\r\n\r\n constructor(\r\n ) { }\r\n\r\n private selectedTab = new Subject();\r\n public selectedTabChanged = this.selectedTab.asObservable();\r\n\r\n ChangeSelectedTab(newMessage: FeatureName) {\r\n this.selectedTab.next(newMessage);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { WorkTracker } from 'app/shared/loading-pane';\r\n\r\nexport type UpcomingVisitsTask = 'LoadData' | 'FilterData';\r\n\r\n@Injectable()\r\nexport class UpcomingVisitsNotificationService {\r\n\r\n constructor() { }\r\n\r\n private upcomingTask = new Subject<{ 'message': UpcomingVisitsTask, 'tracker': WorkTracker }>();\r\n public upcomingTaskChanged = this.upcomingTask.asObservable();\r\n\r\n UpdateUpcomingTask(msg) {\r\n this.upcomingTask.next(msg);\r\n // console.log('UpcomingVisitsNotificationService.LoadUpcomingVisits: ' + newMessage);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { LocalStorageService } from 'services/local-storage.service';\r\nimport { paginationTestSettings } from 'settings';\r\nimport { ShowPriorityNotifyService } from 'services/notifications/show-priority-notify.service';\r\nimport { FeatureLoggerService } from 'services/api/feature-logger.service';\r\nimport { FeatureName } from \"api/website_enum\";\r\n\r\n@Injectable()\r\nexport class PriorityIconService {\r\n private priorityStorageName: string = 'PriorityIcon';\r\n private featureIsGloballyDisabled: boolean = false;\r\n private featureIsEnabled: boolean = true;\r\n\r\n constructor(private localStorageService: LocalStorageService, \r\n private showPriorityNotifyService: ShowPriorityNotifyService, \r\n private featureLoggerService: FeatureLoggerService) {\r\n if(!this.seedAndCheckIfFeatureIsGloballyDisabled())\r\n {\r\n // This feature is not globally disabled. Check individual officer settings.\r\n this.checkIfIndividualOfficerHasFeatureEnabled();\r\n }\r\n\r\n // this.featureIsEnabled has now been set.\r\n // Update local storage for consumption by other parts of the solution.\r\n this.localStorageService.set(this.priorityStorageName, this.featureIsEnabled);\r\n }\r\n\r\n // A publicly visible method to determine whether the feature is enabled or not.\r\n public priorityIconFeatureIsEnabled() : boolean \r\n {\r\n return this.featureIsEnabled;\r\n }\r\n\r\n // A publicly visible method to determine whether the feature is globally disabled or not.\r\n public priorityIsGloballyDisabled() : boolean \r\n {\r\n return this.featureIsGloballyDisabled;\r\n }\r\n\r\n // A publicly visible method to toggle the priority setting. \r\n // This will only have an effect if 'featureIsGloballyDisabled' is false\r\n // Return the resulting priority value. That is, true when enabled and false when disabled.\r\n public togglePriority() : boolean \r\n {\r\n // This feature is disabled. Make no change\r\n if(!!this.featureIsGloballyDisabled) return this.featureIsEnabled;\r\n\r\n // Toggle the setting\r\n this.featureIsEnabled = !this.featureIsEnabled;\r\n\r\n // Update storage for future access\r\n this.localStorageService.set(this.priorityStorageName, this.featureIsEnabled);\r\n\r\n // Notify subscribers of the change to the setting\r\n this.showPriorityNotifyService.ChangeShowPriorities(this.featureIsEnabled);\r\n\r\n // Send new value to reporting layer\r\n this.featureLoggerService.logFeatureUsage(this.featureIsEnabled ? \r\n FeatureName.PriorityIconsEnabled : \r\n FeatureName.PriorityIconsDisabled);\r\n\r\n // Inform caller of resulting current value\r\n return this.featureIsEnabled;\r\n }\r\n\r\n // This is taken from index.html and is the setting: Pagination.EnablePriorityIcons\r\n // Return true if the priority icon feature is globally disabled.\r\n // If not disabled, return false.\r\n private seedAndCheckIfFeatureIsGloballyDisabled() : boolean\r\n {\r\n this.featureIsGloballyDisabled = !paginationTestSettings.enablePriorityIcons;\r\n\r\n // Check if the priority icon feature is 'globally' disabled\r\n if(!!this.featureIsGloballyDisabled)\r\n {\r\n this.featureIsEnabled = false;\r\n }\r\n\r\n return this.featureIsGloballyDisabled;\r\n }\r\n\r\n // Read this value from local storage, if any. \r\n // This allows officers to enable/disable the feature themselves.\r\n private checkIfIndividualOfficerHasFeatureEnabled()\r\n {\r\n // Priority icons are not globally disabled.\r\n // Only update if we have a value stored in local storage. Default is 'true' / enabled.\r\n if(this.localStorageService.check(this.priorityStorageName))\r\n {\r\n // The officer has set a value in the past. Seed to this value.\r\n this.featureIsEnabled = this.localStorageService.get(this.priorityStorageName);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\n\r\n@Injectable()\r\nexport class RecordChangeDetectionService {\r\n lastDataChangeTimestamp: moment.Moment;\r\n propertiesToMonitorForChange: string[];\r\n propertiesToIdentifyAUniqueRecord: string[];\r\n lastDataSet: any[];\r\n currentDataSet: any[];\r\n parentComponentName: string;\r\n\r\n // The count of seconds for which a change is valid\r\n // After this, do not show a graphic. This is related to the value of 'lastDataChangeTimestamp'\r\n // This is updated to 'now' whenever new data is applied.\r\n showChangeGraphicForNSeconds: number = 5;\r\n\r\n constructor() {}\r\n\r\n public initialise(propertiesToMonitor: string[], idProperties: string[], parentComponent: string) : void \r\n {\r\n this.propertiesToMonitorForChange = propertiesToMonitor;\r\n this.propertiesToIdentifyAUniqueRecord = idProperties;\r\n this.parentComponentName = parentComponent;\r\n }\r\n\r\n public applyNewDataSet(dataSet: any[]) : void\r\n {\r\n this.lastDataSet = (this.currentDataSet ? this.currentDataSet.slice() : []);\r\n this.currentDataSet = dataSet.slice();\r\n this.lastDataChangeTimestamp = moment();\r\n }\r\n\r\n public showUpdateGraphic(record: any) : boolean\r\n {\r\n // Check if still within time.\r\n // We reduce acceptable window by 1 second to ensure a second window does not restart the spinner.\r\n // So, if showing for 5 seconds, return false if asked again 5 seconds later, do not return true.\r\n // To prevent double-spinner, return false when now is (n-1) second since last data change.\r\n var secondsDifference = moment().diff(this.lastDataChangeTimestamp, 'seconds');\r\n if(secondsDifference > (this.showChangeGraphicForNSeconds - 1)) {\r\n return false;\r\n }\r\n\r\n // Check we have all required values\r\n if(!this.lastDataSet || this.lastDataSet.length < 1 || !this.currentDataSet || this.currentDataSet.length < 1 || !this.propertiesToIdentifyAUniqueRecord || !this.propertiesToMonitorForChange) { \r\n return false;\r\n }\r\n\r\n // Find the given record in the lastDataSet\r\n var matchingLastRecord = null;\r\n this.lastDataSet.every(instance => {\r\n var matchingProperties = 0;\r\n for(var i = 0; i < this.propertiesToIdentifyAUniqueRecord.length; i++)\r\n {\r\n if(instance[this.propertiesToIdentifyAUniqueRecord[i]] == record[this.propertiesToIdentifyAUniqueRecord[i]])\r\n {\r\n matchingProperties++;\r\n }\r\n }\r\n if(matchingProperties == this.propertiesToIdentifyAUniqueRecord.length)\r\n {\r\n matchingLastRecord = instance;\r\n return false; // Exit the 'every' loop\r\n }\r\n });\r\n\r\n // If we did not previously have this record we have nothing to compare. Simply exit\r\n if(!matchingLastRecord || matchingLastRecord == null || matchingLastRecord == undefined) {\r\n return false;\r\n }\r\n \r\n // We have a record. Check if any of the properties we are monitoring have changed\r\n var haveAChange = false;\r\n for(var i = 0; i < this.propertiesToMonitorForChange.length; i++)\r\n {\r\n if(matchingLastRecord[this.propertiesToMonitorForChange[i]] != record[this.propertiesToMonitorForChange[i]])\r\n {\r\n // A significant change has been detected. Return true.\r\n haveAChange = true;\r\n break;\r\n }\r\n }\r\n return haveAChange;\r\n }\r\n}\r\n","import { MsalService } from './msal.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UserInfoService {\r\n constructor(private adalService: MsalService) {}\r\n\r\n isAuthenticated(): Promise {\r\n return this.adalService.isAuthenticated();\r\n }\r\n\r\n fullName(): string {\r\n if (!this.adalService.userInfo || !this.adalService.userInfo.name) return null;\r\n\r\n return this.adalService.userInfo.name;\r\n }\r\n\r\n firstName(): string {\r\n if (!this.adalService.userInfo || !this.adalService.userInfo.name) return null;\r\n const names=this.adalService.userInfo.name.split(\" \");\r\n return names.length>0?names[0]:null;\r\n }\r\n\r\n lastName(): string {\r\n if (!this.adalService.userInfo || !this.adalService.userInfo.name) return null;\r\n\r\n return this.adalService.userInfo.name\r\n }\r\n\r\n upn(): string {\r\n if (!this.adalService.userInfo || !this.adalService.userInfo.username) return null;\r\n\r\n return this.adalService.userInfo.username;\r\n }\r\n}\r\n","declare let require: any;\r\nlet settings = typeof window === 'undefined' ? {} : (window || {}).appConfig;\r\n\r\nexport let base = loadSetting('CSXpress.Url');\r\nexport let apiBase = loadSetting('CSXpress.ApiUrl');\r\n\r\nexport let appId = loadSetting('Authentication.AppId');\r\nexport let audience = loadSetting('Authentication.Audience');\r\nexport let authority = loadSetting('Authentication.Authority');\r\nexport let tenantId = loadSetting('Authentication.TenantId');\r\n\r\nlet kicboxUrl = loadSetting('SwitchApplicationUrl.Kicbox');\r\nlet carerConnectUrl = loadSetting('SwitchApplicationUrl.CarerConnect');\r\nlet ourChildUrl = loadSetting('SwitchApplicationUrl.OurChild');\r\nlet practiceManualUrl = loadSetting('SwitchApplicationUrl.PracticeManual');\r\nlet icmsUrl = loadSetting('SwitchApplicationUrl.ICMS');\r\nlet intranetUrl = loadSetting('SwitchApplicationUrl.Intranet');\r\n\r\nlet activityFeedRefreshIntervalInSeconds: number = loadSetting('ActivityFeed.RefreshIntervalInSeconds');\r\nlet homeVisitsRefreshIntervalInSeconds: number = loadSetting('HomeVisits.RefreshIntervalInSeconds');\r\nlet caseSummaryRefreshIntervalInSeconds: number = loadSetting('CaseSummary.RefreshIntervalInSeconds');\r\nlet staffWhereaboutsRefreshIntervalInSeconds: number = loadSetting('StaffWhereabouts.RefreshIntervalInSeconds');\r\nlet officeLockdownStatusRefreshIntervalInSeconds: number = loadSetting('OfficeLockdownStatus.RefreshIntervalInSeconds');\r\nlet kicboxMyProfileUrl: string = loadSetting('CSXpress.KicboxMyProfileUrl');\r\nlet enableDestinationPathFix: boolean = loadSetting('CSXpress.EnableDestinationPathFix');\r\nlet courtOrderRefreshIntervalInSeconds: number = loadSetting('CourtOrders.RefreshIntervalInSeconds');\r\n\r\nlet paginationShowTestTiles: boolean = loadSetting('Pagination.ShowTestTiles');\r\nlet enablePriorityIcons: boolean = loadSetting('Pagination.EnablePriorityIcons');\r\n\r\nexport let switchApplicationSettings = {\r\n kicboxUrl: kicboxUrl,\r\n carerConnectUrl: carerConnectUrl,\r\n ourChildUrl: ourChildUrl,\r\n practiceManualUrl: practiceManualUrl,\r\n icmsUrl: icmsUrl,\r\n intranetUrl: intranetUrl\r\n} as ApplicationUrls;\r\n\r\nexport let activityFeedSettings = {\r\n refreshIntervalInSeconds: activityFeedRefreshIntervalInSeconds\r\n} as ActivityFeedSettings;\r\n\r\nexport let homeVisitsSettings = {\r\n refreshIntervalInSeconds: homeVisitsRefreshIntervalInSeconds\r\n} as HomeVisitsSettings;\r\n\r\nexport let caseSummarySettings = {\r\n refreshIntervalInSeconds: caseSummaryRefreshIntervalInSeconds\r\n} as CaseSummarySettings;\r\n\r\nexport let staffWhereaboutsSettings = {\r\n refreshIntervalInSeconds: staffWhereaboutsRefreshIntervalInSeconds\r\n} as StaffWhereaboutsSettings;\r\n\r\nexport let officeLockdownStatusSettings = {\r\n refreshIntervalInSeconds: officeLockdownStatusRefreshIntervalInSeconds\r\n} as OfficeLockdownStatusSettings;\r\n\r\nexport let kicboxMyProfileSettings = {\r\n kicboxMyProfileUrl: kicboxMyProfileUrl\r\n} as KicboxMyProfileSettings;\r\n\r\nexport let csExpressSettings = {\r\n enableDestinationPathReplacement: enableDestinationPathFix\r\n} as CsExpressSettings;\r\n\r\nexport let courtOrdersSettings = {\r\n refreshIntervalInSeconds: courtOrderRefreshIntervalInSeconds\r\n} as CourtOrdersSettings;\r\n\r\nexport let paginationTestSettings = {\r\n enableTestPaginationTiles: paginationShowTestTiles,\r\n enablePriorityIcons: enablePriorityIcons\r\n} as PaginationTestSettings;\r\n\r\nfunction loadSetting(key: string) {\r\n if (settings[key] === undefined) {\r\n if (typeof window === 'undefined') {\r\n return 'testSetting';\r\n } else {\r\n throw new Error(`Setting ${key} does not exist`);\r\n }\r\n }\r\n\r\n return settings[key];\r\n}\r\n\r\nexport interface ApplicationUrls {\r\n kicboxUrl: string;\r\n carerConnectUrl: string;\r\n ourChildUrl: string;\r\n practiceManualUrl: string;\r\n icmsUrl: string;\r\n intranetUrl: string;\r\n}\r\n\r\nexport interface ActivityFeedSettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface HomeVisitsSettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface CaseSummarySettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface StaffWhereaboutsSettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface OfficeLockdownStatusSettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface KicboxMyProfileSettings {\r\n kicboxMyProfileUrl: string;\r\n}\r\n\r\nexport interface CsExpressSettings {\r\n enableDestinationPathReplacement: boolean;\r\n}\r\n\r\nexport interface CourtOrdersSettings {\r\n refreshIntervalInSeconds: number;\r\n}\r\n\r\nexport interface PaginationTestSettings {\r\n enableTestPaginationTiles: boolean;\r\n enablePriorityIcons: boolean;\r\n}\r\n","var map = {\n\t\"./af\": 51975,\n\t\"./af.js\": 51975,\n\t\"./ar\": 24145,\n\t\"./ar-dz\": 75982,\n\t\"./ar-dz.js\": 75982,\n\t\"./ar-kw\": 56242,\n\t\"./ar-kw.js\": 56242,\n\t\"./ar-ly\": 26864,\n\t\"./ar-ly.js\": 26864,\n\t\"./ar-ma\": 22239,\n\t\"./ar-ma.js\": 22239,\n\t\"./ar-sa\": 834,\n\t\"./ar-sa.js\": 834,\n\t\"./ar-tn\": 22387,\n\t\"./ar-tn.js\": 22387,\n\t\"./ar.js\": 24145,\n\t\"./az\": 32351,\n\t\"./az.js\": 32351,\n\t\"./be\": 35392,\n\t\"./be.js\": 35392,\n\t\"./bg\": 38946,\n\t\"./bg.js\": 38946,\n\t\"./bm\": 91284,\n\t\"./bm.js\": 91284,\n\t\"./bn\": 84885,\n\t\"./bn-bd\": 64936,\n\t\"./bn-bd.js\": 64936,\n\t\"./bn.js\": 84885,\n\t\"./bo\": 52342,\n\t\"./bo.js\": 52342,\n\t\"./br\": 21319,\n\t\"./br.js\": 21319,\n\t\"./bs\": 90605,\n\t\"./bs.js\": 90605,\n\t\"./ca\": 97135,\n\t\"./ca.js\": 97135,\n\t\"./cs\": 17783,\n\t\"./cs.js\": 17783,\n\t\"./cv\": 8060,\n\t\"./cv.js\": 8060,\n\t\"./cy\": 65052,\n\t\"./cy.js\": 65052,\n\t\"./da\": 6997,\n\t\"./da.js\": 6997,\n\t\"./de\": 74846,\n\t\"./de-at\": 15074,\n\t\"./de-at.js\": 15074,\n\t\"./de-ch\": 87973,\n\t\"./de-ch.js\": 87973,\n\t\"./de.js\": 74846,\n\t\"./dv\": 48879,\n\t\"./dv.js\": 48879,\n\t\"./el\": 88233,\n\t\"./el.js\": 88233,\n\t\"./en-au\": 32333,\n\t\"./en-au.js\": 32333,\n\t\"./en-ca\": 48371,\n\t\"./en-ca.js\": 48371,\n\t\"./en-gb\": 85980,\n\t\"./en-gb.js\": 85980,\n\t\"./en-ie\": 15263,\n\t\"./en-ie.js\": 15263,\n\t\"./en-il\": 96225,\n\t\"./en-il.js\": 96225,\n\t\"./en-in\": 89198,\n\t\"./en-in.js\": 89198,\n\t\"./en-nz\": 76014,\n\t\"./en-nz.js\": 76014,\n\t\"./en-sg\": 58604,\n\t\"./en-sg.js\": 58604,\n\t\"./eo\": 38351,\n\t\"./eo.js\": 38351,\n\t\"./es\": 47446,\n\t\"./es-do\": 15381,\n\t\"./es-do.js\": 15381,\n\t\"./es-mx\": 41268,\n\t\"./es-mx.js\": 41268,\n\t\"./es-us\": 93922,\n\t\"./es-us.js\": 93922,\n\t\"./es.js\": 47446,\n\t\"./et\": 93874,\n\t\"./et.js\": 93874,\n\t\"./eu\": 29501,\n\t\"./eu.js\": 29501,\n\t\"./fa\": 62986,\n\t\"./fa.js\": 62986,\n\t\"./fi\": 63517,\n\t\"./fi.js\": 63517,\n\t\"./fil\": 40471,\n\t\"./fil.js\": 40471,\n\t\"./fo\": 69848,\n\t\"./fo.js\": 69848,\n\t\"./fr\": 22104,\n\t\"./fr-ca\": 14079,\n\t\"./fr-ca.js\": 14079,\n\t\"./fr-ch\": 15960,\n\t\"./fr-ch.js\": 15960,\n\t\"./fr.js\": 22104,\n\t\"./fy\": 59942,\n\t\"./fy.js\": 59942,\n\t\"./ga\": 86259,\n\t\"./ga.js\": 86259,\n\t\"./gd\": 10196,\n\t\"./gd.js\": 10196,\n\t\"./gl\": 9667,\n\t\"./gl.js\": 9667,\n\t\"./gom-deva\": 58901,\n\t\"./gom-deva.js\": 58901,\n\t\"./gom-latn\": 8001,\n\t\"./gom-latn.js\": 8001,\n\t\"./gu\": 9430,\n\t\"./gu.js\": 9430,\n\t\"./he\": 98008,\n\t\"./he.js\": 98008,\n\t\"./hi\": 13449,\n\t\"./hi.js\": 13449,\n\t\"./hr\": 69271,\n\t\"./hr.js\": 69271,\n\t\"./hu\": 61036,\n\t\"./hu.js\": 61036,\n\t\"./hy-am\": 83043,\n\t\"./hy-am.js\": 83043,\n\t\"./id\": 27102,\n\t\"./id.js\": 27102,\n\t\"./is\": 87297,\n\t\"./is.js\": 87297,\n\t\"./it\": 11248,\n\t\"./it-ch\": 3529,\n\t\"./it-ch.js\": 3529,\n\t\"./it.js\": 11248,\n\t\"./ja\": 70645,\n\t\"./ja.js\": 70645,\n\t\"./jv\": 74317,\n\t\"./jv.js\": 74317,\n\t\"./ka\": 35359,\n\t\"./ka.js\": 35359,\n\t\"./kk\": 9027,\n\t\"./kk.js\": 9027,\n\t\"./km\": 14941,\n\t\"./km.js\": 14941,\n\t\"./kn\": 77478,\n\t\"./kn.js\": 77478,\n\t\"./ko\": 74356,\n\t\"./ko.js\": 74356,\n\t\"./ku\": 91077,\n\t\"./ku.js\": 91077,\n\t\"./ky\": 80145,\n\t\"./ky.js\": 80145,\n\t\"./lb\": 12339,\n\t\"./lb.js\": 12339,\n\t\"./lo\": 53814,\n\t\"./lo.js\": 53814,\n\t\"./lt\": 20281,\n\t\"./lt.js\": 20281,\n\t\"./lv\": 90177,\n\t\"./lv.js\": 90177,\n\t\"./me\": 99034,\n\t\"./me.js\": 99034,\n\t\"./mi\": 58772,\n\t\"./mi.js\": 58772,\n\t\"./mk\": 16112,\n\t\"./mk.js\": 16112,\n\t\"./ml\": 42854,\n\t\"./ml.js\": 42854,\n\t\"./mn\": 50538,\n\t\"./mn.js\": 50538,\n\t\"./mr\": 30450,\n\t\"./mr.js\": 30450,\n\t\"./ms\": 11508,\n\t\"./ms-my\": 86169,\n\t\"./ms-my.js\": 86169,\n\t\"./ms.js\": 11508,\n\t\"./mt\": 47009,\n\t\"./mt.js\": 47009,\n\t\"./my\": 55350,\n\t\"./my.js\": 55350,\n\t\"./nb\": 15909,\n\t\"./nb.js\": 15909,\n\t\"./ne\": 87502,\n\t\"./ne.js\": 87502,\n\t\"./nl\": 65321,\n\t\"./nl-be\": 94405,\n\t\"./nl-be.js\": 94405,\n\t\"./nl.js\": 65321,\n\t\"./nn\": 45704,\n\t\"./nn.js\": 45704,\n\t\"./oc-lnc\": 83788,\n\t\"./oc-lnc.js\": 83788,\n\t\"./pa-in\": 96290,\n\t\"./pa-in.js\": 96290,\n\t\"./pl\": 98265,\n\t\"./pl.js\": 98265,\n\t\"./pt\": 58802,\n\t\"./pt-br\": 53430,\n\t\"./pt-br.js\": 53430,\n\t\"./pt.js\": 58802,\n\t\"./ro\": 17732,\n\t\"./ro.js\": 17732,\n\t\"./ru\": 14548,\n\t\"./ru.js\": 14548,\n\t\"./sd\": 43268,\n\t\"./sd.js\": 43268,\n\t\"./se\": 31832,\n\t\"./se.js\": 31832,\n\t\"./si\": 51601,\n\t\"./si.js\": 51601,\n\t\"./sk\": 96759,\n\t\"./sk.js\": 96759,\n\t\"./sl\": 81930,\n\t\"./sl.js\": 81930,\n\t\"./sq\": 84476,\n\t\"./sq.js\": 84476,\n\t\"./sr\": 63648,\n\t\"./sr-cyrl\": 1249,\n\t\"./sr-cyrl.js\": 1249,\n\t\"./sr.js\": 63648,\n\t\"./ss\": 39724,\n\t\"./ss.js\": 39724,\n\t\"./sv\": 12280,\n\t\"./sv.js\": 12280,\n\t\"./sw\": 87639,\n\t\"./sw.js\": 87639,\n\t\"./ta\": 45843,\n\t\"./ta.js\": 45843,\n\t\"./te\": 89211,\n\t\"./te.js\": 89211,\n\t\"./tet\": 35822,\n\t\"./tet.js\": 35822,\n\t\"./tg\": 69191,\n\t\"./tg.js\": 69191,\n\t\"./th\": 74716,\n\t\"./th.js\": 74716,\n\t\"./tk\": 59684,\n\t\"./tk.js\": 59684,\n\t\"./tl-ph\": 84428,\n\t\"./tl-ph.js\": 84428,\n\t\"./tlh\": 85189,\n\t\"./tlh.js\": 85189,\n\t\"./tr\": 83807,\n\t\"./tr.js\": 83807,\n\t\"./tzl\": 6539,\n\t\"./tzl.js\": 6539,\n\t\"./tzm\": 36714,\n\t\"./tzm-latn\": 98827,\n\t\"./tzm-latn.js\": 98827,\n\t\"./tzm.js\": 36714,\n\t\"./ug-cn\": 97366,\n\t\"./ug-cn.js\": 97366,\n\t\"./uk\": 92757,\n\t\"./uk.js\": 92757,\n\t\"./ur\": 57362,\n\t\"./ur.js\": 57362,\n\t\"./uz\": 5534,\n\t\"./uz-latn\": 50321,\n\t\"./uz-latn.js\": 50321,\n\t\"./uz.js\": 5534,\n\t\"./vi\": 24049,\n\t\"./vi.js\": 24049,\n\t\"./x-pseudo\": 11027,\n\t\"./x-pseudo.js\": 11027,\n\t\"./yo\": 2668,\n\t\"./yo.js\": 2668,\n\t\"./zh-cn\": 41282,\n\t\"./zh-cn.js\": 41282,\n\t\"./zh-hk\": 13423,\n\t\"./zh-hk.js\": 13423,\n\t\"./zh-mo\": 6739,\n\t\"./zh-mo.js\": 6739,\n\t\"./zh-tw\": 81037,\n\t\"./zh-tw.js\": 81037\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["interval","observableInterval","Subscription","moment","WorkTracker","AppComponent","constructor","adalService","personaSwitcherService","tracker","clearPersonaUpn","ngOnInit","handleCallback","load","intervalSubscription","isDestroyed","refreshInterval","subscribe","ngOnDestroy","unsubscribe","Promise","resolve","updateDateDisplay","now","local","time","format","date","dateWithoutYear","i0","selectors","decls","vars","consts","template","ctx","from","AuthComponent","route","queryParams","p","redirectUri","isLoggedIn$","isAuthenticated","login","logout","userName","userInfo","username","SimpleChanges","RecordChangeDetectionService","CaseSummaryDetailComponent","caseSummaryService","recordChangeDetectionService","initialise","ngOnChanges","changes","isFirstChange","applyNewDataSet","currentValue","hasError","dataLoaded","track","getOngoingInterventionDetailFromServer","ongoingIntervention","subjectId","formatShortDate","addressLines","address","parts","split","partsLength","length","map","o","i","groupedAlerts","alerts","grouped","reduce","g","alert","push","Object","keys","count","description","generateCurrentDataSet","currentLocationType","frequency","amberAlerts","ongoingInterventionDetail","redAlerts","hasAmberAlert","hasRedAlert","latestKicboxMood","currentInstance","personId","getOngoingInterventionDetails","then","result","value","mood","setMoodSpan","kicboxStatus","error","console","showUpdateGraphic","currentData","item","status","trim","moodRegEx","RegExp","exec","matchedText","replace","filter","moodText","cssClassName","inputs","isExpanded","features","caseSummarySettings","FocusCheck","FeatureName","ctx_r2","CaseSummaryComponent","titleService","idleDetectionService","featureLogger","setTitle","refreshIntervalInMilliseconds","refreshIntervalInSeconds","subscribeToPersonaChangedNotifications","logFeatureUsage","OICaseSummary","reset","idleDetectionSubscription","isIdleChanged","isIdle","userIsIdle","loadData","personaChangedSubscription","onPageChangedEvent","pageNumber","currentPage","onPageSizeChangedEvent","pageSize","all","getCaseSummariesFromServer","trackOiBy","index","subjectName","clearSelectedVisits","selectedOngoingInterventions","shouldRefreshData","getCaseSummaries","ongoingInterventions","caseSummaryCount","ongoingInterventionCount","pageCount","ongoingInterventionsPages","intervention","enable","currentPersonaUpnChanged","upn","isEven","indexOf","selectOngoingIntervention","isOngoingInterventionSelected","foundItem","splice","OICaseSummaryShowMore","windowGotFocus","document","hidden","beforeUnload","event","hostBindings","mstone_r19","mstone_r20","mstone_r21","mstone_r22","_r4","_r8","CourtOrderDetailComponent","taskSubsystem","courtOrderService","milestones","generateMilestones","courtOrder","orderExpiryDtm","firstThreeMilestones","slice","nextThreeMilestones","lastThreeMilestones","nextMilestone","getNextMilestone","getUpcomingVisitDetailFromServer","subjectChildId","isTheNext","milestone","milestoneName","getUpcomingChildHomeVisitDetail","courtOrderDetail","shown","orderSelectionChanged","ctx_r13","ctx_r14","ctx_r5","ctx_r0","CourtOrderComponent","tabNotificationService","courtOrderNotifyService","userInfoService","officersUpn","orderCountExpiryInThreeMonths","orderCountExpiryInSixMonths","expiryInThreeMonthsTabSelected","selectedTab","CourtOrders3Months","expiryInSixMonthsTabSelected","CourtOrders6Months","errorMsgAppSectionText","errorMsgHeaderText","orderData","countOfOrdersMovedFromSubsequentToNextThreeMonths","countOfUniqueChildrenInNextThreeMonths","updatePagedOrdersToShow","tabNotificationSubscription","selectedTabChanged","tab","courtOrderNotifySubscription","courtOrdersChanged","orders","haveStaff","personaSwitcherSelectedUpn","officerHasStaff","currentPageExpiryInThreeMonths","currentPageExpiryInSixMonths","pageSizeExpiryInThreeMonths","pageSizeExpiryInSixMonths","pageSizeToUse","currentPageToUse","firstElToShow","lastElToShow","groupedOrders","ordersToShow","trackBy","enableViewMore","toggleSelectCourtOrder","order","matchedSelectedOrders","getMatchingSelectedCourtOrders","foundOrder","selectedOrders","CourtOrders3MonthsShowMore","CourtOrders6MonthsShowMore","clearSelectedOrders","isOrderSelected","matches","app","ordersMatch","orderA","orderB","orderType","orderTypeDisplay","DashboardComponent","OverdueVisits","UpcomingVisits","overdueTabSelected","upcomingTabSelected","selectTab","ChangeSelectedTab","showFilter","evt","homeVisitsContainer","updateCourtOrderDisplay","ordersToDisplay","courtOrdersToDisplay","updateDashboardVisibility","isVisible","viewQuery","ElementRef","_r7","_r10","_r13","_r16","HomeVisitDetailComponent","ngAfterViewChecked","renderArea","renderAreaHeight","nativeElement","offsetHeight","heightSet","rowOneHeight","headerRow","clientHeight","riskArea","undefined","theUlHeight","alertCount","getAlertCount","heightPerAlert","extra","heightToSet","maxDetailsHeight","divToResize","style","height","homeVisit","response","homeVisitDetail","visit","HomeVisitsComponent","overdueVisitsContainer","personaChanged","upcomingVisitsContainer","EventEmitter","Renderer2","FilterSettings","FilterDateRange","filterDateRangeDescription","ctx_r59","ctx_r3","OverdueFilterComponent","elementRef","renderer","localStorageService","showPriorityNotifyService","priorityIconService","disableUntil","year","month","day","personaUpn","getPersonaUpn","formModel","storagePrefix","showBaseFilters","selectAllTooltip","allChildrenAreSelected","noChildName","clearChildNameTooltip","displayPriorityColours","priorityIconFeatureIsEnabled","priorityColoursAreGloballyDisabled","priorityIsGloballyDisabled","subscribeToPriorityNotifications","onPageClick","targetElement","id","externalClicksCanCloseFilter","largeView","visible","clickedInside","contains","cancel","next4Weeks","Next4Weeks","next4WeeksDescription","thisWeek","ThisWeek","thisWeekDescription","custom","Custom","customDescription","ngAfterViewInit","setFilterPositionUnderneathFilterButton","getElementsByTagName","focus","window","innerWidth","showPrioritySubscription","onResize","open","instigatingButtonRect","toggleFilters","synchroniseChildNameValues","synchroniseChildNameSelectionValues","updateDisplayPriorityColours","showColoursFilter","clear","form","defaultValues","initialiseValues","hideFilter","apply","formIsValid","selectedDateRange","useCustomDateValue","haveDateValue","customDateRange","valueValid","setValueValidFalse","persistSessionFilterSettings","rangeTypeChanged","clearDateInput","dateRangeType","filterSettingsDateChanged","newDateRange","selectionChanged","option","noneSelected","selected","target","checked","showPrioritiesChanged","show","childNameSelectionChanged","options","nameSelect","setSelections","clearChildrenNamesFilter","selectAll","checkboxOptions","selectedOptions","childNameSearchChanged","nameSearch","childNameSearchValue","clearChildNameFilter","valid","useNewFilters","filterClosed","observers","emit","filterHost","x","left","agent","navigator","userAgent","toLowerCase","isIE","documentElement","clientWidth","width","offsetWidth","setStyle","y","top","pageYOffset","onWindowResize","ViewContainerRef","ComponentFactoryResolver","ComponentRef","ComponentFactory","homeVisitsSettings","OverdueVisitsComponent","homeVisitOverdueCountNotifyService","homeVisitsService","container","componentResolver","homeVisitFilterService","promiseNotifyService","overdueVisitData","visitsHasError","visitsLoaded","visits","isUpcoming","filterSettings","pagedVisitsToShow","overdueVisitsPromise","updatePagedVisitsToShow","previousUpn","destroyFilterComponent","setTimeout","visitsToShow","promise","loadTheData","TrackThisPromise","visitType","thePromise","getOverdueVisitsFromServer","getOverdueChildHomeVisits","overdueVisitCount","notifySummaryOfCountData","applyOverdueHomeVisitsFilters","recordCount","ChangeHomeVisitCounts","filterComponent","instance","filterSettingsBackupWhileMasqueruading","vm","handleFilterClosed","priorityTitle","isOverdueWithHighPriority","isOverdueWithModeratePriority","currentTime","lastVisit","lastVisitDtm","homeVisitStateAnchorDtm","ageInDays","diff","weAreMasquerading","logCaseNoteFeature","CaseNote","getDestinationPath","hasDestinationPath","filterAlreadyShown","filterButtonClientRect","currentTarget","getBoundingClientRect","createFilterComponent","bind","seedFilterValues","hasChanged","previousSettings","newSettings","requireNewData","requireNewServerData","upcomingVisitsPromise","scrollTo","element","getElementById","filterVisitsToShow","reduceVisitsToThisMembersVisits","formatDateForFilterRange","getFilterDescription","prefix","getChildNameFilterDescription","filterComponentFactory","resolveComponentFactory","createComponent","showFilterIcon","priorityLevels","allSelected","interventionSelect","visitFrequencySelect","isEmpty","settings","setOptions","destroy","UpcomingFilterComponent","ctx_r8","UpcomingVisitsComponent","homeVisitUpcomingCountNotifyService","upcomingVisitData","getUpcomingVisitsFromServer","searchStart","getEffectiveStartDate","searchEnd","getEffectiveEndDate","getUpcomingChildHomeVisits","upcomingVisitCount","applyUpcomingHomeVisitsFilters","children","forEach","el","uniqueChildren","selectedVisits","filterVisitsToShowByDateRange","utc","toDate","effectiveStartDate","getTime","effectiveEndDate","toggleSelectVisit","isVisitSelected","foundVisit","UpcomingVisitsShowMore","activityFeedSettings","ActivityFeedComponent","activityFeedService","htmlSanitizer","getActivityFeedItems","toggleActivityFeed","activityFeedIsExpanded","activityFeedExpanded","get","handleActivityFeedItemFromServer","ex","latestFromServer","isNew","isNewItem","appName","parseAppName","sanitizeText","addMoodStyleIfRequired","hasAnyActivityFeedItems","activityFeedItems","text","transform","toString","genericSourceAppName","subject","toLocaleLowerCase","formatDate","courtOrdersSettings","CourtOrderDetails","CourtOrderSummaryComponent","courtOrderPromiseNotifyService","orderDetails","updateDisplayData","courtOrdersPromise","ChangeCourtOrderPromise","filterOrdersToDisplay","courtOrdersInNextThreeMonthsHasError","courtOrdersInSubsequentThreeHasError","getCourtOrders","selectInfoPanel","panel","data","generateDisplayInformation","ChangeCourtOrderData","haveSomeData","countOfCourtOrdersInNextThreeMonths","countOfCourtOrdersInSubsequentThreeMonths","haveCourtOrdersToDisplay","getCourtOrdersDueSoonSentence","getCourtOrdersDueInSixMonthsSentence","immediate","finishOffset","fromDate","fromDateMoment","startOf","subtract","add","endOf","getCurrentCourts","dataRetrievalError","storeData","dataIsNotLoaded","HeroSection","TilePagination","paginationTestSettings","HeroComponent","tilePagination","enableHomeVisitsLoading","enableCourtOrderLoading","homeVisitsTracker","courtOrderTracker","courtOrdersPromiseChanged","LoadCourtOrders","subscribeToPromiseNotifications","homeVisitsPromiseSubscription","promiseTrackerChanged","showTile","homeVisits","results","upcomingVisitsFinishedLoading","overdueVisitsFinishedLoading","courtOrders","HomeVisits","CourtOrders","courtOrders_2","CourtOrders_2","courtOrders_3","CourtOrders_3","courtOrders_4","CourtOrders_4","staffWhereabouts","StaffWhereabouts","showTestTiles","enableTestPaginationTiles","updateHaveCourtOrders","haveOrders","ensureTile","removeTile","updateSelectedFeature","showMainDashboard","countOfHeroSections","updateHaveHomeVisits","haveVisits","haveHomeVisits","homeVisitsHasLoadedOnce","forceShowCourtOrders","forceShowHomeVisits","updateActivityFeedExpanded","section","showButtons","leftButtonIsEnabled","rightButtonIsEnabled","pageLeft","pageRight","outputs","filterDateRangeSummaryDescription","HomeVisitsSummaryComponent","overdueTracker","upcomingTracker","upcomingCountsHasError","overdueCountsHasError","subscribeToTabNotifications","subscribeToUpcomingHomeVisitCountChangeNotifications","subscribeToOverdueHomeVisitCountChangeNotifications","overdueVisitsTabSelected","upcomingVisitsTabSelected","homeVisitUpcomingCountSubscription","homeVisitOverdueCountSubscription","promiseSubscription","getUpcomingHomeVisitSummarySentence","suffix","childHomeVisitCount","getOverdueVisitSummarySentence","overdueHomeVisitCount","upcomingVisitCountDataChanged","countData","haveHomeVisitsToDisplay","overdueVisitCountDataChanged","FooterComponent","isAuthenticated$","userFullname","fullName","officeLockdownStatusSettings","Bowser","ctx_r4","HeaderComponent","officeLockdownService","serviceCentreLockdownService","modalService","officeLockdownNotifyService","showOfficeIsLockedDown","showOfficeIsNoLongerLockedDown","showLockdownChangingBanner","officeName","lockedDownByName","lockedDownByUpn","lockedDownAt","_renderer","mobileView","enableAlertButton","informationalMessage","bowser","getParser","IsIE11","satisfies","getOfficeLockdownStatus","lockedDownTextFullScreen","lockedDownTextMobile","sentence","elementId","scrollIntoView","setAttribute","updateTLManagerStatus","isTLOrMngr","isTLOrManager","showLockdownToggle","toggleLockdown","lockdownHasBeenToggled","openModal","lockdownOffice","presentAlreadyLockedDown","LockDown","catch","err","setOfficeSafeToReturn","presentAlreadyLifted","SafeToReturn","safeToReturn","serviceCentreDetails","name","lockedDownDtm","ChangeServiceCentre","isCurrentlyLockedDown","showLockdown","removeLockdown","lockdownArea","lockdownAreaContainer","shouldRefresh","closeModal","close","switchApplicationSettings","kicboxMyProfileSettings","ctx_r16","MainMenuComponent","applicationUrls","kicboxMyProfile","selectedTeamLeaderId","getTeamFromServer","priorityIsEnabled","getOfficeLockdownText","officeIsLockedDown","getDisablePriorityText","isPersonaSwitchingEnabled","isEnable","onSubMenuItemFocus","parentElement","classList","ulParent","closestUlParent","onSubMenuItemBlur","remove","onSubMenuItemClick","MouseEvent","tagName","toLocaleUpperCase","currentPersona","getTeam","hasTeamError","teams","hasTeamDataLoaded","togglePriority","setSelectedTeamLeader","teamLeader","team","newTeamLeaderId","kicBoxCsoId","selectedTeam","setPersona","removePersona","setPersonaUpn","foundTeamMember","t","teamMembers","m","teamMember","trackTeamBy","trackTeamMemberBy","PaginationComponent","_recordCount","updatePageCount","pageSizeChangedEvent","pageSizeOptions","selectedPageSize","selectPage","isHidden","Math","ceil","autoSelectPage","onPageSizeChange","selection","parseInt","page","showingFromRecord","toRecord","showingToRecord","pageChangedEvent","firstPage","prevPage","prevPageGroup","floor","paginatorNumbersShownCount","nextPageGroup","nextPage","lastPage","pager","startPage","endPage","showNext","showLast","pages","min","pagingData","DateTimeInputComponent","CheckOutComponent","editing","officeLocations","getLocations","selectedLocation","locationPrompt","showLocationError","showOptionalCommentError","optionalComment","onLocationClear","defaultLocationSelected","onLocationChange","newValue","onCommentChange","offerCheckoutForm","staffMember","withEdit","location","locationDetails","dateTimeInputComponent","seedValue","expectedReturn","setCheckedOut","isValid","expectedReturnToUse","getValue","locationToUse","locationDetailsToUse","checkOutClosed","clearModal","staffWhereaboutsSettings","StaffWhereaboutsComponent","staffWhereaboutsService","staffMemberService","toastr","selectedStaffMember","officeLockdownNotifySubscription","serviceCentreChanged","serviceCentre","thisOfficersServiceCentre","disable","checkoutComponent","getStaffWhereabouts","updatePagedWheraboutsToShow","getServiceCentre","staffMembers","pagedStaffMembers","showCheckInSuccess","success","progressBar","disableTimeOut","timeOut","showCheckInFailure","showCheckOutSuccess","showCheckOutFailure","edit","selectedOfficerId","localAccountId","serviceCentreName","serviceCentreId","staffCheckedOut","isCheckedIn","staffOverdueForCheckIn","isDueForCheckin","staffWhereaboutsCount","staffLocation","hasAcknowledgedSiteLockdown","hasAcknowledged","lockDownAlertAckTime","momentLockdownWasAcknowledged","endOfSameDay","isAfter","lockDownDtm","halfAnHourAfterExpectedReturn","firstName","familyName","phoneNumber","incrementToNext15MinuteBlock","givenTimeAsMoment","getTimeAtNext15MinuteIncrement","remainder","minute","seconds","milliseconds","toggleCheckedOutStatus","checkIn","checkoutValues","checkOut","checkoutAttempted","checkinAttempted","csx","ActivityFeedService","http","headers","overrideUpn","btoa","activityFeed","asJsonResponse","toPromise","factory","CaseSummaryService","caseSummaries","ongoingInterventionDetails","HttpClient","FeatureLoggerService","featureName","browser","parseBrowser","platform","parsePlatform","os","parseOS","featureLogParameters","language","version","type","operatingSystem","versionName","screen","url","href","base64Params","JSON","stringify","responsePromise","post","catchError","OfficeLockdownStatusService","officeStatus","pipe","r","Subject","PersonaSwitcherService","currentPersonaUpn","asObservable","ChangeCurrentPersonaUpn","newMessage","next","personaSwitcher","personaSwitchingIsEnabled","localStorage","setItem","getItem","removeItem","ServiceCentreLockdownService","serviceCentreLockdown","serviceCentreSafeToReturn","StaffMemberService","StaffWhereaboutsService","TaskSubsystemService","fromDateTimeUtc","toDateTimeUtc","upcomingChildHomeVisits","upcomingChildHomeVisitDetail","overdueChildHomeVisits","currentCourtOrders","ActivatedRouteSnapshot","RouterStateSnapshot","AuthenticationGuard","canActivate","state","authenticated","AuthenticationResult","Configuration","LogLevel","PublicClientApplication","adalConfig","auth","clientId","appId","authority","tenantId","base","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","message","containsPii","Error","Info","info","Verbose","debug","Warning","warn","piiLoggingEnabled","windowHashTimeout","iframeHashTimeout","loadFrameTimeout","asyncPopups","loginRequest","scopes","MsalService","context","handleRedirectPromise","accessIsDenied","hash","returnRedirectPath","loginRedirect","clearCache","logoutPopup","authResult","log","setActiveAccount","getAllAccounts","getActiveAccount","getAccessToken","reject","acquireTokenSilent","rs","accessToken"],"sourceRoot":"webpack:///","x_google_ignoreList":[132]}