{"version":3,"file":"main.49d4b1eb85a6dbc3.js","mappings":"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CA,KACA,iBAEA,kBACA,KACA,iBAEA,kBACA,KACA,iBAEA,mBACA,KACA,iBAEA,kBACA,KACA,iBAEA,kBACA,KACA,kBAEA,mBACA,KACA,kBAEA,kBACA,KACA,kBAEA,YACA,KACA,kBAEA,YACA,KACA,kBAEA,aACA,KACA,kBAEA,YACA,KACA,kBAEA,YACA,KACA,kBAEA,aACA,KACA,kBAEA,YACA,KACA,mBAGA,cACA,aACA,mCACA,8CACA,gCACA0F,IAIA,kBACA,0BACAtH,KAEA,CACAkR,0BACAA,QACAzE,4BClGA,OACA,YACA,eACA,WACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,cACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,cACA,iBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,cACA,iBACA,eACA,kBACA,cACA,iBACA,eACA,kBACA,eACA,kBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,kBACA,eACA,kBACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,qBACA,kBACA,qBACA,YACA,eACA,YACA,eACA,WACA,cACA,WACA,cACA,YACA,eACA,eACA,kBACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,gBACA,mBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,UACA,aACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,eACA,kBACA,cACA,YACA,eACA,eACA,kBACA,cACA,iBACA,YACA,eACA,YACA,eACA,kBACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,iBACA,oBACA,eACA,YACA,eACA,WACA,cACA,YACA,eACA,YACA,eACA,YACA,eACA,aACA,gBACA,YACA,eACA,YACA,eACA,YACA,eACA,eACA,kBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,YACA,kBACA,qBACA,eACA,cACA,iBACA,YACA,eACA,YACA,eACA,YACA,iBACA,oBACA,eACA,YACA,eACA,kBACA,qBACA,YACA,eACA,eACA,kBACA,eACA,kBACA,eACA,kBACA,eACA,mBAIA,cACA,WACA,WACA,CACA,cACA,cACA,8CACA,gCACAnF,EAEA,WACA,CACA6J,kBACA,qBACA,EACAA,YACA1E,YACA0E","names":["ApplicationService","constructor","http","appService","this","getUserInformation","accountId","labsiteCode","url","baseApiUrlForCore","get","getVolunteerInformation","volunteerId","reqbody","VolunteerId","post","volunteerUrl","addVolunteer","addexternalUser","updateExternalUser","put","canShowProfileTabs","LabsiteCode","queryUrl","_ApplicationService","_angular_core__WEBPACK_IMPORTED_MODULE_1__","factory","AppSettingsService","configService","serviceConfigUrl","key","apiString","settings","getConfig","VolunteerServiceUrl","fileManagementUrl","FileManagementServiceUrl","CoreServiceUrl","isPublicWebSiteSyncronizerEnabled","IsPublicWebSiteSyncronizerEnabled","recruitmentUrl","RecruitmentServiceUrl","surveyUrl","SurveyServiceUrl","QueryServiceUrl","visitUrl","VisitServiceUrl","publicFileUrl","PublicFileManagementServiceUrl","environmentName","msalConfig","version","recruitmentFileLocation","getSettingsForKey","Recruitment","homepageFileLocation","HomePage","appInsightsConfig","cache","getIosAppPath","getAndroidAppPath","getICPNumber","getICPPath","_AppSettingsService","CONFIGURATION_FILE","Date","getTime","ConfigService","httpHandler","platformId","platformLocation","HttpClient","isBrowser","isPlatformBrowser","config","getSettings","hostname","port","toPromise","then","window","localStorage","getItem","auth","authority","signinAuthority","signupAuthority","Array","isArray","split","reduce","account","current","_ConfigService","_angular_core__WEBPACK_IMPORTED_MODULE_2__","PLATFORM_ID","AnimationsService","routeAnimationType","static","type","updateRouteAnimationType","pageAnimations","elementsAnimations","_AnimationsService","ROUTE_ANIMATIONS_ELEMENTS","STEPS_ALL","query","style","opacity","position","optional","sequence","transform","animate","stagger","STEPS_PAGE","STEPS_ELEMENTS","routeAnimations","trigger","transition","isRouteAnimationsAll","isRouteAnimationsNone","isRouteAnimationsPage","isRouteAnimationsElements","HttpInterceptorService","intercept","request","next","method","SetCacheHeaders","withCredentials","clone","headers","set","handle","HttpHeaders","Pragma","Expires","_HttpInterceptorService","GlobalErrorHandler","ErrorHandler","injector","super","handleError","error","message","toLowerCase","includes","ApplicationInsightsService","logException","reloadWindow","location","reload","_GlobalErrorHandler","core","HttpErrorInterceptor","pipe","tap","err","HttpErrorResponse","_HttpErrorInterceptor","load_config","CoreModule","parentModule","Error","_CoreModule","SpinnerService","provide","APP_INITIALIZER","useFactory","deps","multi","useClass","HTTP_INTERCEPTORS","imports","CommonModule","HttpClientModule","FormsModule","GlobalRepositoryService","Subject","activeStudiesData","_activeStudiesData","value","setLabsiteDetails","labsiteDetails","getLabsiteName","name","IsVolunteerCodeModified","isVolunteerCodeModified","asObservable","IsProductUsageLogModified","isProductUsageLogModified","getVolunteerCode","volunteerCode","setVolunteerCode","getVolunteerId","setVolunteerId","IsVolunteerEmailIdModified","isVolunteerEmailIdModified","getVolunteerEmailId","volunteerEmailId","setVolunteerEmailId","getUserAccountId","userAccountId","setUserAccountId","getUserName","userName","setUserName","removeVolunteerCode","getLabsiteCode","setLabsiteCode","getLabsitePrefixCode","labsitePrefix","setLabsitePrefixCode","getIsDeleteVolunteerAllowed","isPublicWebsiteVolunteerDeletionAllowed","getPrintIdCardPublicWebsiteAllowed","printIdCardPublicWebsite","getIsVolunteerProfileSelfEditingAllowed","isVolunteerProfileSelfEditingAllowed","setCanShowVolunteerAppointments","canShowVolunteerAppointments","canShowVolunteerAppointmentsSubject","getCanShowVolunteerAppointments","setCanShowStudyProductUsage","canShowStudyProductUsage","canShowStudyProductUsageSubject","getCanShowStudyProductUsage","getLabsiteOnlineFormConfigurations","labsiteOnlineFormConfigurations","setLabsiteOnlineFormConfigurations","LabsiteOnlineFormConfigurations","removeLabsiteOnlineFormConfigurations","hasLabsiteOnlineFormConfigurations","length","getHeightWeightUnitEnum","heightWeightUnitEnum","setHeightWeightUnitEnum","getDisclaimersIntroductionText","disclaimersIntroductionText","setDisclaimersIntroductionText","getRegistrationVisitDescriptionText","registrationVisitDescriptionText","setRegistrationVisitDescriptionText","getLegalAdultAge","legalAdultAge","setLegalAdultAge","_GlobalRepositoryService","show","subject","getMessage","_SpinnerService","Disclaimer","DisclaimerComponent","translate","dialogRef","helperService","globalRepositoryService","ngOnInit","labsiteName","decodeURIComponent","CanConfirm","disclaimerData","termsOfUse","dataPrivacy","volunteerRules","Dismiss","close","Confirm","NavigateToLabsiteInformation","attribute","_DisclaimerComponent","selectors","i0","ctx","LabsiteInformationService","getLabsiteInformation","contentType","getLabsiteInformationFromBlob","infoType","urlParams","AppConstants","_LabsiteInformationService","VolunteerService","componentFactoryResolver","loader","OnVolunteerBasicInfoUpdated","isVolunteerBasicInfoUpdated","AddVolunteer","JSON","parse","LabSiteCode","DeleteVounteer","UpdateBasicVolunteerInfo","AddVolunteerSlider","isRegistration","Promise","mod","MaintenanceModule","lazyModule","componentFactory","resolveComponentFactory","components","lazy","addDynamicComponent","isRegistrationFlow","EditBasicInformationSlider","data","sliderWidth","VolunteerUpdateModule","GetEnum","enumType","LoadVolunteerProfileEnums","techniqueEnums","educationDegreeEnums","healthInsuranceEnums","forkJoin","ValidateIBANAndBIC","GetAdvertisementMedias","labsiteId","PrintVolunteerCard","printVolunteerCardRequestDto","options","params","HttpParams","responseType","_VolunteerService","_angular_core__WEBPACK_IMPORTED_MODULE_5__","appSettingsService","globalRepository","appInsights","ApplicationInsights","instrumentationKey","enableAutoRouteTracking","disableExceptionTracking","disableTelemetry","logging","loggingLevelTelemetry","endpointUrl","loadAppInsights","logPageView","trackPageView","uri","logEvent","properties","trackEvent","logMetric","average","trackMetric","exception","severityLevel","getDeviceId","getVolunteerEmail","trackException","logTrace","tracing","trackTrace","_ApplicationInsightsService","_angular_core__WEBPACK_IMPORTED_MODULE_3__","HelperService","translateService","mediaObserver","router","getMatDateConfig","matDateConfig","MatDatePickerConfig","TodayButtonLabel","instant","TodayButtonTooltip","DateButtonTooltip","ClearButtonTooltip","GetStepperProgress","stepCompleted","alreadyProgressedStep","selectedStep","progressEachStep","progressValue","MarkAllStepsCompleted","stepper","steps","forEach","step","completed","getDropDownArrayWithEmptyOptions","dropDown","push","id","displayText","getLabelValueArrayFromObject","i","label","getDropDownArrayTypesWithEmptyOptions","item","Object","keys","getDropdownArrayWithFormattedTime","format","getLabsiteTimeFormat","moment","timeFormatEnum","returnValue","property","prototype","hasOwnProperty","call","indexOf","getScreenSize","screenSize","GetMediaType","getAlias","MediaChange","mqAlias","mediaSubscription","distinctUntilChanged","x","y","subscribe","change","getScreenSizeValue","items","size","result","find","sortLabelValueArray","a","b","reA","reN","aA","replace","bA","aN","parseInt","bN","numericOnly","event","test","numericOnlyForHeight","numericOnlyForHeightNoChars","alphaNumericWithSpecialChars","positiveOnly","isNegativeNumeric","alphaNumericSpaceForIBAN","alphaNumericeForBIC","GetParticipationStatusColor","statusEnum","colorcode","GetPaymentStatusColor","serializeUrl","createUrlTree","_basePath","open","preventPreSpace","target","selectionStart","code","preventDefault","deviceId","uuid","setItem","getTextFromEnumType","list","text","getTranslatedValue","enumValue","_HelperService","_angular_core__WEBPACK_IMPORTED_MODULE_7__","SliderConfiguration","LoaderService","messageService","actionResult","sliderInfo","cancelForm","createSliderComponent","width","isReadOnly","sliderConfig","onComponentAdd","onFormClose","subjectClose","setRootViewContainerRef","viewContainerRef","rootViewContainer","instance","isSliderDataEdited","isDataEdited","doConfirmationForUnsavedChanges","loadSlider","closeForm","destroy","setIsDataEdited","isSliderEdited","IsDataEdited","openSlider","clear","create","insert","hostView","sliderFormData","Width","IsSilderReadOnly","_LoaderService","LoggingService","applicationInsightsService","_LoggingService","MessageService","toastr","dialog","loggingService","confirm","title","confirmLabel","cancelLabel","ConfirmPopupComponent","minHeight","maxHeight","confirmLable","autoFocus","disableClose","afterClosed","callBack","callBackParams","doConfirmation","warning","displayTime","tapToDismiss","success","alert","aiLogging","exceptionMessage","className","closeButton","toastClass","messageClass","timeOut","_MessageService","dismiss","confirmed","_ConfirmPopupComponent","_angular_core__WEBPACK_IMPORTED_MODULE_0__","MAT_DIALOG_DATA","Blob","ActiveStudies","LabSite","Metadata","LabsitesURLConfigFolder","LabsitesURLConfigFileName","Home","ActiveStudiesSummary","ActiveStudy","LabsiteByPublicSynchronizer","LabSiteTextFolder","LabSiteTextFileName","NewsPage","emptyGUID","Gender","Male","Female","Mixed","StudyParticipationStatus","All","Applied","ApplicationHold","WaitingForFeedback","OnGoing","Ongoing","PreStudyVisit","ApplicationAccepted","Included","Passed","Rejected","Withdrawn","Paid","DATE_FORMATS","dateInput","dbSaveFormat","display","dateDisplayInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","VISIT_DATE_FORMATS","TIME_FORMATS","timeInput","VisitStatus","Approved","Pending","VolunteerStatus","PendingRegistrationVisit","Active","Deleted","DataState","Created","Modified","UnChanged","MinimumDate","TimeFormatByLabsite","TwentyFourHourEnum","AmOrPmEnum","TwentyFourHourFormat","AmOrPmFormat","HomePageMediaTypes","Picture","Video","Pages","AboutUs","BeAVolunteer","StudyDetails","ContactUs","PrivacyPolicy","TermsOfUse","VolunteerRules","MyActivity","MyAccount","MyAppointments","MyProductUsage","Events","ApplyStudy","ExternalUser","VolunteerRegistration","AccountDeletion","AppointmentStates","Scheduled","VisitTypes","Registration","PreStudy","Study","LegalStatus","Minor","Adult","HeightWeightUnit","Enums","MKg","InchPounds","GlobalErrorComponent","EventEmitter","loadErrorDetailsByStatusCode","navigateBack","navigatedBack","emit","errorStatusCode","errorIcon","_GlobalErrorComponent","MaterialModule","_MaterialModule","MatTabsModule","MatChipsModule","MatInputModule","MatProgressSpinnerModule","MatSidenavModule","MatToolbarModule","MatListModule","MatMenuModule","MatIconModule","MatSelectModule","MatTooltipModule","MatSnackBarModule","MatButtonModule","MatCardModule","MatSlideToggleModule","MatDividerModule","MatDialogModule","MatSliderModule","MatProgressBarModule","MatStepperModule","MatAutocompleteModule","MatRadioModule","MatCheckboxModule","MatButtonToggleModule","MatExpansionModule","MatCarouselModule","FlexLayoutModule","MatDatepickerModule","SharedModule","_SharedModule","TranslateModule","RouterModule","ReactiveFormsModule","NgSelectModule","UserLoginService","msalGuardConfig","authService","volunteerService","spinner","appSettingService","policyType","getUserDetails","_this","getAllAccounts","localAccountId","userClaim","idTokenClaims","email","username","stringify","newUser","populateAddVolunteerSlider","loadLabsiteDetails","labSiteURLCode","_this2","LabsiteDetails","_this3","hasError","user","isInvalidUser","labSiteCode","setTimeout","onLogoutClick","onSignUpClick","signupFlowRequest","scopes","login","onLoginClick","signinFlowRequest","userFlowRequest","interactionType","InteractionType","authRequest","loginPopup","response","setActiveAccount","loginRedirect","logout","_UserLoginService","_angular_core__WEBPACK_IMPORTED_MODULE_8__","MSAL_GUARD_CONFIG","routes","path","redirectTo","pathMatch","loadChildren","__webpack_require__","m","HomeModule","ActiveStudiesModule","ProfileModule","canActivate","MsalGuard","StudyDetailComponentModule","LabsiteInformationComponentModule","NewsPageInformationComponentModule","component","AppRoutingModule","_AppRoutingModule","scrollPositionRestoration","preloadingStrategy","PreloadAllModules","initialNavigation","packageJson","environment","appName","envName","production","i18nPrefix","versions","app","angular","dependencies","material","bootstrap","rxjs","ngxtranslate","angularCli","devDependencies","typescript","eslint","SpinnerComponent","spinnerService","cdRef","status","SetSpinner","showSpinner","detectChanges","_SpinnerComponent","FooterInformation","FooterService","getFooterInformation","getFooterInformationFromBlob","_FooterService","FooterComponent","footerService","icpNumber","socialMediaLinks","footerInformation","isDataLoaded","getCurrentYear","getFullYear","DisplaySocialMediaLinks","tiktokUrl","facebookUrl","instagramUrl","youtubeUrl","weChatUrl","DisplayTiktokLink","DisplayFacebookLink","DisplayInstagramLink","DisplayYoutubeLink","DisplayWeChatLink","NavigateToUrl","NavigateToStore","platform","NavigateToICPDetails","_FooterComponent","ToolbarComponent","labsiteInformationService","sanitized","labsiteInformation","headerText","bypassSecurityTrustHtml","content","labsiteInfo","errorMessage","transformToCamelCase","substring","_ToolbarComponent","CookieComponent","_CookieComponent","LandingPageComponent","cdr","baseURL","_locationStrategy","_platformLocation","_location","origin","landingPageImagesData","sortData","isLandingPageLoaded","console","sort","labsitename","localeCompare","redirectToURL","valueEmitter","_LandingPageComponent","AppComponent","msalBroadcastService","loginService","metaService","applicationService","env","link","isFormOnHold","cacheLocation","browser","addTag","addTags","MetaTags","setTitle","Title","e","newTitle","setTranslation","isIframe","parent","opener","formChangesubscription","displayDrawer","formClosesubscription","events","filter","NavigationEnd","handleSliderConfirmation","inProgress$","InteractionStatus","takeUntil","_destroying$","removeItem","loginDisplay","setScreenWiseConfig","pathname","loadSpinner","showCookiePage","loadLabsiteByURLConfigs","href","labsiteURLValue","isLandingPageShow","validLabsite","isUpdated","onVolunteerCodeModified","onVolunteerEmailIdModified","handleMyAppointments","handleMyProductUsageLogs","userDetails","naviagteToProfile","navigate","getVolunteerDetails","volunteer","showAccountDetails","getLabsiteURLConfig","_baseHref","doLoadLabsiteByURLConfigs","requestUrlConfig","filteredData","s","labSiteURLParam","labsitePath","requestLabsiteData","labsiteData","prefixCode","CanShowNewsLink","isNewsPageUsed","LoadLabsiteTextForPublicWebsite","requestLabsiteText","filteredLabsiteText","encodeURIComponent","isNewsPageShowed","navigation","splice","canShowVolunteerAppointmentTab","canShowProductUsageTab","myAppointmentLinks","existingItem","profileNavigation","indexToRemove","findIndex","myProductUsageLinks","popupResponse","ngOnDestroy","undefined","complete","addLangs","browserLang","getBrowserLang","use","match","navigator","language","localeInitializer","catch","log","_this4","localeId","module","registerLocaleData","default","processPopupConfirmation","onBackdropClick","updateSliderDisplay","onEscape","onHoldForm","sidenav2","toString","formWidth","formHoldIconPositions","formHoldIconStyle","getLabsiteCodeByURLConfig","_AppComponent","ViewContainerRef","URLs","API","initializerFactory","promise","loggerCallback","logLevel","MSALInstanceFactory","PublicClientApplication","system","loggerOptions","LogLevel","piiLoggingEnabled","MSALInterceptorConfigFactory","protectedResourceMap","Map","apiScope","apiAccessScope","ConfigureProtectedResource","getUrlForKey","MSALGuardConfigFactory","loginFailedRoute","MsalConfigDynamicModule","ngModule","providers","MSAL_INSTANCE","MSAL_INTERCEPTOR_CONFIG","MsalService","MsalBroadcastService","MsalInterceptor","_MsalConfigDynamicModule","MsalModule","createTranslateLoader","httpClient","MultiTranslateHttpLoader","prefix","suffix","AppModule","_AppModule","GetLocalLang","GetLabSiteURL","subdomain","__NgCli_bootstrap_1","bootstrapModule","MsalRedirectComponent","LOCALE_ID","APP_BASE_HREF","BrowserModule","appId","BrowserAnimationsModule","MatNativeDateModule","ToastrModule","TranslateLoader","ssrObserveBreakpoints","enableProdMode","document","readyState","addEventListener","webpackAsyncContext","webpackContext"],"sourceRoot":"webpack:///","sources":["./projects/vr-public-website/src/app/app.service.ts","./projects/vr-public-website/src/app/core/config/app-settings.service.ts","./projects/vr-public-website/src/app/core/config/config.service.ts","./projects/vr-public-website/src/app/core/animations/animations.service.ts","./projects/vr-public-website/src/app/core/animations/route.animations.ts","./projects/vr-public-website/src/app/core/http-interceptors/http-interceptor.service.ts","./projects/vr-public-website/src/app/core/handlers/global-error-handler.ts","./projects/vr-public-website/src/app/core/http-interceptors/http-error.interceptor.ts","./projects/vr-public-website/src/app/core/core.module.ts","./projects/vr-public-website/src/app/core/repository/global-repository.service.ts","./projects/vr-public-website/src/app/core/spinner/spinner.service.ts","./projects/vr-public-website/src/app/features/disclaimer/disclaimer.model.ts","./projects/vr-public-website/src/app/features/disclaimer/disclaimer.component.ts","./projects/vr-public-website/src/app/features/disclaimer/disclaimer.component.html","./projects/vr-public-website/src/app/features/labsiteInformation/labsiteInformation.service.ts","./projects/vr-public-website/src/app/features/volunteer/volunteer.service.ts","./projects/vr-public-website/src/app/main/services/applicationInsights.service.ts","./projects/vr-public-website/src/app/main/services/helper.service.ts","./projects/vr-public-website/src/app/core/models/sliderConfiguration.model.ts","./projects/vr-public-website/src/app/main/services/loader.service.ts","./projects/vr-public-website/src/app/main/services/logging.service.ts","./projects/vr-public-website/src/app/main/services/message.service.ts","./projects/vr-public-website/src/app/shared/confirm-popup/confirm-popup.component.ts","./projects/vr-public-website/src/app/shared/confirm-popup/confirm-popup.component.html","./projects/vr-public-website/src/app/shared/constants/app-constants.ts","./projects/vr-public-website/src/app/shared/global-error/global-error.component.html","./projects/vr-public-website/src/app/shared/global-error/global-error.component.ts","./projects/vr-public-website/src/app/shared/matdatepicker/matdatepicker.model.ts","./projects/vr-public-website/src/app/shared/material.module.ts","./projects/vr-public-website/src/app/shared/shared.module.ts","./projects/vr-public-website/src/app/userLogin.service.ts","./projects/vr-public-website/src/app/app-routing.module.ts","./projects/vr-public-website/src/environments/environment.prod.ts","./projects/vr-public-website/src/app/core/spinner/spinner.component.html","./projects/vr-public-website/src/app/core/spinner/spinner.component.ts","./projects/vr-public-website/src/app/main/layout/footer/footer.model.ts","./projects/vr-public-website/src/app/main/layout/footer/footer.service.ts","./projects/vr-public-website/src/app/main/layout/footer/footer.component.html","./projects/vr-public-website/src/app/main/layout/footer/footer.component.ts","./projects/vr-public-website/src/app/main/layout/toolbar/toolbar.component.html","./projects/vr-public-website/src/app/main/layout/toolbar/toolbar.component.ts","./projects/vr-public-website/src/app/features/cookie/cookie.component.html","./projects/vr-public-website/src/app/features/cookie/cookie.component.ts","./projects/vr-public-website/src/app/features/landing-page/landing-page.component.html","./projects/vr-public-website/src/app/features/landing-page/landing-page.component.ts","./projects/vr-public-website/src/app/app.component.html","./projects/vr-public-website/src/app/app.component.ts","./projects/vr-public-website/src/app/msal-config-dynamic.module.ts","./projects/vr-public-website/src/app/app.module.ts","./projects/vr-public-website/src/main.ts","./node_modules/@angular/common/locales/ lazy ^\\.\\/.*\\.mjs$ include: (en%7Cfr%7Cde%7Ces%7Cit%7Cpl%7Cro%7Czh)\\.mjs chunkName: i18n-locales namespace object","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AppSettingsService } from './core/core.module';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationService {\r\n\r\n constructor(private http: HttpClient, private appService: AppSettingsService) { }\r\n\r\n\r\n\r\n public getUserInformation(accountId: string, labsiteCode: string) {\r\n const url = `${this.appService.baseApiUrlForCore}externalUsers/` + accountId + '/' + labsiteCode;\r\n return this.http.get(url);\r\n }\r\n\r\n public getVolunteerInformation(volunteerId: string) { \r\n const reqbody = { VolunteerId: volunteerId };\r\n return this.http.post(this.appService.volunteerUrl + 'information', reqbody);\r\n }\r\n\r\n public addVolunteer(reqbody: any) {\r\n return this.http.post(this.appService.volunteerUrl + 'externalUsers', reqbody);\r\n }\r\n\r\n public addexternalUser(reqbody: any) {\r\n return this.http.post(this.appService.baseApiUrlForCore + 'externalUsers', reqbody);\r\n }\r\n\r\n public updateExternalUser(reqbody: any) {\r\n return this.http.put(this.appService.baseApiUrlForCore + 'externalUsers', reqbody);\r\n }\r\n\r\n public canShowProfileTabs(volunteerId: string, labsiteCode: string): Observable {\r\n const reqbody = {\r\n VolunteerId: volunteerId,\r\n LabsiteCode: labsiteCode\r\n };\r\n return this.http.post(this.appService.queryUrl + 'visits/canShowProfileTabs', reqbody);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ConfigService } from './config.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n/** Service to access App Settings based on configuration */\r\nexport class AppSettingsService {\r\n\r\n constructor(private configService: ConfigService) {\r\n }\r\n\r\n private apiString = '/api/';\r\n /* #region Provate Methods */\r\n\r\n private serviceConfigUrl(key: string): string {\r\n return key + this.apiString;\r\n }\r\n\r\n/* #endregion */\r\n\r\n\r\n\r\n /* #region Public Methods */\r\n /** Property to get base api url from config */\r\n public get volunteerUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.VolunteerServiceUrl);\r\n }\r\n\r\n public get fileManagementUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.FileManagementServiceUrl);\r\n }\r\n\r\n public get baseApiUrlForCore(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.CoreServiceUrl);\r\n }\r\n\r\n public get isPublicWebSiteSyncronizerEnabled(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return settings.IsPublicWebSiteSyncronizerEnabled;\r\n }\r\n\r\n public get recruitmentUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.RecruitmentServiceUrl);\r\n }\r\n\r\n public get surveyUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.SurveyServiceUrl);\r\n }\r\n\r\n public get queryUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.QueryServiceUrl); }\r\n\r\n public get visitUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.VisitServiceUrl); }\r\n\r\n public get publicFileUrl(): string {\r\n const settings: any = this.configService.getConfig('ConfigSettings');\r\n return this.serviceConfigUrl(settings.PublicFileManagementServiceUrl);\r\n }\r\n\r\n /** Property to get environment name from config */\r\n public get environmentName(): string {\r\n return this.configService.getConfig('environmentName');\r\n }\r\n\r\n public get msalConfig(): any {\r\n return this.configService.getConfig('auth');\r\n }\r\n\r\n\r\n\r\n /** Property to get version from config */\r\n public get version(): string {\r\n return this.configService.getConfig('version');\r\n }\r\n\r\n public get recruitmentFileLocation(): string {\r\n return this.configService.getSettingsForKey('FileManagementPublicFile').Recruitment;\r\n }\r\n\r\n public get homepageFileLocation(): string {\r\n return this.configService.getSettingsForKey('FileManagementPublicFile').HomePage;\r\n }\r\n\r\n public get appInsightsConfig(): any {\r\n return this.configService.getConfig('appInsights');\r\n } \r\n\r\n public get cache(): any {\r\n return this.configService.getConfig('cache');\r\n }\r\n\r\n public get getIosAppPath(): string {\r\n return this.configService.getSettingsForKey('iosAppPath');\r\n }\r\n\r\n public get getAndroidAppPath(): string {\r\n return this.configService.getSettingsForKey('androidAppPath');\r\n }\r\n \r\n public get getICPNumber(): string {\r\n return this.configService.getSettingsForKey('ICPNumber');\r\n }\r\n\r\n public get getICPPath(): string {\r\n return this.configService.getSettingsForKey('ICPPath');\r\n }\r\n}\r\n","import { isPlatformBrowser, PlatformLocation } from '@angular/common';\r\nimport { HttpBackend, HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\nconst CONFIGURATION_FILE = 'config.json?v=' + new Date().getTime();\r\n\r\n// const CONFIGURATION_FILE = 'currentConfigs.js';\r\n\r\n@Injectable({ providedIn: 'root' })\r\n\r\n/** Service to get Configuartion Details */\r\nexport class ConfigService {\r\n\r\n /* #region Fields */\r\n private config: any;\r\n http: HttpClient;\r\n isBrowser: any;\r\n /* #endregion */\r\n\r\n constructor(httpHandler: HttpBackend, @Inject(PLATFORM_ID) platformId: string, public platformLocation: PlatformLocation) {\r\n this.http = new HttpClient(httpHandler);\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n }\r\n\r\n /* #region Public Methods */\r\n /** Method to get data from config based on the key */\r\n public getConfig(key: string): T {\r\n return this.config[key];\r\n }\r\n\r\n /** Method to load configuration - used on app initializer */\r\n public getSettings(): Promise {\r\n const promise = this.http.get(!this.isBrowser ? \"http://\" +this.platformLocation.hostname + \":\" + this.platformLocation.port + \"/\" + CONFIGURATION_FILE : CONFIGURATION_FILE).toPromise().then((settings: any) => {\r\n\r\n // const promise = this.http.get(!this.isBrowser ? \"https://localhost:8080/\" + CONFIGURATION_FILE : CONFIGURATION_FILE).toPromise().then((settings: any) => {\r\n this.config = settings;\r\n if (this.isBrowser) {\r\n const isSigninFlow = window.localStorage.getItem('isSigninFlow');\r\n if (isSigninFlow == 'true') {\r\n this.config.auth.authority = this.config.auth.signinAuthority;\r\n } else {\r\n this.config.auth.authority = this.config.auth.signupAuthority;\r\n }\r\n }\r\n return this.config;\r\n },()=>{\r\n });\r\n return promise;\r\n }\r\n\r\n public getSettingsForKey(key?: string | Array) {\r\n if (!key || (Array.isArray(key) && !key[0])) {\r\n return this.config;\r\n }\r\n\r\n if (!Array.isArray(key)) {\r\n key = key.split('.');\r\n }\r\n\r\n const result = key.reduce((account: any, current: string) => account && account[current], this.config);\r\n\r\n return result;\r\n }\r\n /* #endregion */\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnimationsService {\r\n private static routeAnimationType: RouteAnimationType = 'NONE';\r\n\r\n constructor() {\r\n AnimationsService.routeAnimationType = 'NONE';\r\n }\r\n\r\n static isRouteAnimationsType(type: RouteAnimationType) {\r\n return AnimationsService.routeAnimationType === type;\r\n }\r\n\r\n updateRouteAnimationType(\r\n pageAnimations: boolean,\r\n elementsAnimations: boolean\r\n ) {\r\n AnimationsService.routeAnimationType =\r\n pageAnimations && elementsAnimations\r\n ? 'ALL'\r\n : pageAnimations\r\n ? 'PAGE'\r\n : elementsAnimations\r\n ? 'ELEMENTS'\r\n : 'NONE';\r\n }\r\n}\r\n\r\nexport type RouteAnimationType = 'ALL' | 'PAGE' | 'ELEMENTS' | 'NONE';\r\n","import {\r\n animate,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n stagger,\r\n sequence\r\n} from '@angular/animations';\r\nimport { AnimationsService } from './animations.service';\r\n\r\nexport const ROUTE_ANIMATIONS_ELEMENTS = 'route-animations-elements';\r\n\r\nconst STEPS_ALL: any[] = [\r\n query(':enter > *', style({ opacity: 0, position: 'fixed' }), {\r\n optional: true\r\n }),\r\n query(':enter .' + ROUTE_ANIMATIONS_ELEMENTS, style({ opacity: 0 }), {\r\n optional: true\r\n }),\r\n sequence([\r\n query(\r\n ':leave > *',\r\n [\r\n style({ transform: 'translateY(0%)', opacity: 1 }),\r\n animate(\r\n '0.2s ease-in-out',\r\n style({ transform: 'translateY(-3%)', opacity: 0 })\r\n ),\r\n style({ position: 'fixed' })\r\n ],\r\n { optional: true }\r\n ),\r\n query(\r\n ':enter > *',\r\n [\r\n style({\r\n transform: 'translateY(-3%)',\r\n opacity: 0,\r\n position: 'static'\r\n }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ],\r\n { optional: true }\r\n )\r\n ]),\r\n query(\r\n ':enter .' + ROUTE_ANIMATIONS_ELEMENTS,\r\n stagger(75, [\r\n style({ transform: 'translateY(10%)', opacity: 0 }),\r\n animate(\r\n '0.5s ease-in-out',\r\n style({ transform: 'translateY(0%)', opacity: 1 })\r\n )\r\n ]),\r\n { optional: true }\r\n )\r\n];\r\nconst STEPS_NONE: any[] = [];\r\nconst STEPS_PAGE = [STEPS_ALL[0], STEPS_ALL[2]];\r\nconst STEPS_ELEMENTS = [STEPS_ALL[1], STEPS_ALL[3]];\r\n\r\nexport const routeAnimations = trigger('routeAnimations', [\r\n transition(isRouteAnimationsAll, STEPS_ALL),\r\n transition(isRouteAnimationsNone, STEPS_NONE),\r\n transition(isRouteAnimationsPage, STEPS_PAGE),\r\n transition(isRouteAnimationsElements, STEPS_ELEMENTS)\r\n]);\r\n\r\nexport function isRouteAnimationsAll() {\r\n return AnimationsService.isRouteAnimationsType('ALL');\r\n}\r\n\r\nexport function isRouteAnimationsNone() {\r\n return AnimationsService.isRouteAnimationsType('NONE');\r\n}\r\n\r\nexport function isRouteAnimationsPage() {\r\n return AnimationsService.isRouteAnimationsType('PAGE');\r\n}\r\n\r\nexport function isRouteAnimationsElements() {\r\n return AnimationsService.isRouteAnimationsType('ELEMENTS');\r\n}\r\n","import { HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\n\r\n/** Service to Intercept Http request or response */\r\nexport class HttpInterceptorService implements HttpInterceptor {\r\n\r\n intercept(request: HttpRequest, next: HttpHandler) {\r\n if (request.method === 'GET') {\r\n request = this.SetCacheHeaders(request);\r\n }\r\n if (!request.withCredentials) {\r\n const labsiteCode = localStorage.getItem('labSiteCode')\r\n if (labsiteCode) {\r\n request = request.clone({\r\n headers: request.headers\r\n .set('LabSiteCode', labsiteCode)\r\n });\r\n }\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n SetCacheHeaders(request: HttpRequest) {\r\n request = request.clone({\r\n headers: new HttpHeaders({\r\n 'Cache-Control': 'no-cache, no-store, must-revalidate',\r\n 'Pragma': 'no-cache',\r\n 'Expires': '0'\r\n })\r\n });\r\n return request;\r\n }\r\n}\r\n","import { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\nimport { ApplicationInsightsService } from \"../../main/services/applicationInsights.service\";\r\n\r\n@Injectable()\r\n\r\nexport class GlobalErrorHandler extends ErrorHandler {\r\n\r\n constructor(private injector: Injector) {\r\n super();\r\n }\r\n\r\n handleError(error: Error) {\r\n const chunkFailedMessage = \"chunkloaderror: loading chunk\";\r\n if (error.message.toLowerCase().includes(chunkFailedMessage)) {\r\n this.injector.get(ApplicationInsightsService).logException(error);\r\n this.reloadWindow();\r\n }\r\n this.injector.get(ApplicationInsightsService).logException(error);\r\n super.handleError(error);\r\n }\r\n\r\n public reloadWindow() {\r\n window.location.reload();\r\n }\r\n\r\n}","import { Injectable, Injector, ErrorHandler } from '@angular/core';\r\nimport {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n/** Passes HttpErrorResponse to application-wide error handler */\r\n@Injectable()\r\nexport class HttpErrorInterceptor implements HttpInterceptor {\r\n constructor(private injector: Injector) { \r\n }\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n return next.handle(request).pipe(\r\n tap({\r\n error: (err: any) => {\r\n if (err instanceof HttpErrorResponse) { \r\n const appErrorHandler = this.injector.get(ErrorHandler); \r\n appErrorHandler.handleError(err);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, Optional, SkipSelf, APP_INITIALIZER, ErrorHandler } from '@angular/core';\r\nimport {\r\n HttpClientModule, HTTP_INTERCEPTORS\r\n} from '@angular/common/http'\r\nimport { FormsModule } from '@angular/forms';\r\nimport {\r\n ROUTE_ANIMATIONS_ELEMENTS,\r\n routeAnimations\r\n} from './animations/route.animations';\r\nimport { AnimationsService } from './animations/animations.service';\r\nimport { AppSettingsService } from './config/app-settings.service';\r\nimport { ConfigService } from './config/config.service';\r\nimport { SpinnerService } from './spinner/spinner.service';\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\nimport { HttpInterceptorService } from './http-interceptors/http-interceptor.service';\r\nimport { GlobalErrorHandler } from './handlers/global-error-handler';\r\nimport { HttpErrorInterceptor } from './http-interceptors/http-error.interceptor';\r\n\r\nexport {\r\n routeAnimations,\r\n ROUTE_ANIMATIONS_ELEMENTS,\r\n AnimationsService,\r\n AppSettingsService,\r\n ConfigService,\r\n SpinnerComponent\r\n};\r\n\r\nexport function load_config(configService: ConfigService) {\r\n return () => configService.getSettings();\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n // angular\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule\r\n ],\r\n declarations: [\r\n SpinnerComponent\r\n ],\r\n providers: [SpinnerService,\r\n { provide: APP_INITIALIZER, useFactory: load_config, deps: [ConfigService], multi: true },\r\n { provide: ErrorHandler, useClass: GlobalErrorHandler},\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true }\r\n ],\r\n exports: [\r\n // angular\r\n FormsModule,\r\n SpinnerComponent\r\n ]\r\n})\r\nexport class CoreModule {\r\n constructor(\r\n @Optional()\r\n @SkipSelf()\r\n parentModule: CoreModule\r\n ) {\r\n if (parentModule) {\r\n throw new Error('CoreModule is already loaded. Import only in AppModule');\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { ActiveStudies } from '../../features/active-studies/active-studies/active-studies.model';\r\nimport { LabsiteOnlineFormConfigurations } from '../../features/volunteer/models/labsiteOnlineFormConfigurations.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n/** Service for Global Repository */\r\nexport class GlobalRepositoryService {\r\n isVolunteerCodeModified = new Subject();\r\n isVolunteerEmailIdModified = new Subject();\r\n canShowVolunteerAppointmentsSubject = new Subject();\r\n canShowStudyProductUsageSubject = new Subject();\r\n isProductUsageLogModified = new Subject();\r\n volunteerCode: string = '';\r\n volunteerId: string = '';\r\n volunteerEmailId: string = '';\r\n userAccountId: string = '';\r\n userName: string = '';\r\n labsiteCode: string = '';\r\n labsitePrefix: string = '';\r\n canShowVolunteerAppointments: boolean = false;\r\n canShowStudyProductUsage: boolean = false;\r\n labsiteDetails: any;\r\n labsiteOnlineFormConfigurations!: LabsiteOnlineFormConfigurations[];\r\n heightWeightUnitEnum!: number;\r\n disclaimersIntroductionText: string = '';\r\n registrationVisitDescriptionText : string = '';\r\n legalAdultAge:number|undefined;\r\n private _activeStudiesData!: ActiveStudies[];\r\n\r\n public get activeStudiesData(): ActiveStudies[] {\r\n return this._activeStudiesData;\r\n }\r\n public set activeStudiesData(value: ActiveStudies[]) {\r\n this._activeStudiesData = value;\r\n }\r\n\r\n /** This property is being used to set logged in user labsite details */\r\n public setLabsiteDetails(labsiteDetails: any) {\r\n this.labsiteDetails = labsiteDetails;\r\n }\r\n\r\n public getLabsiteName() {\r\n return this.labsiteDetails ? this.labsiteDetails.name : '';\r\n }\r\n\r\n public IsVolunteerCodeModified(): Observable {\r\n return this.isVolunteerCodeModified.asObservable();\r\n }\r\n\r\n public IsProductUsageLogModified(): Observable {\r\n return this.isProductUsageLogModified.asObservable();\r\n }\r\n\r\n /** This property is being used to get logged in user volunteer code */\r\n public getVolunteerCode(): string {\r\n return this.volunteerCode;\r\n }\r\n\r\n /** This property is being used to set logged in user volunteer code */\r\n public setVolunteerCode(volunteerCode: string) {\r\n this.volunteerCode = volunteerCode;\r\n }\r\n\r\n /** This property is being used to get logged in user volunteer Id */\r\n public getVolunteerId(): string {\r\n return this.volunteerId;\r\n }\r\n\r\n /** This property is being used to set logged in user volunteer Id */\r\n public setVolunteerId(volunteerId: string) {\r\n this.volunteerId = volunteerId;\r\n }\r\n\r\n public IsVolunteerEmailIdModified(): Observable {\r\n return this.isVolunteerEmailIdModified.asObservable();\r\n }\r\n\r\n /** This property is being used to get logged in user email id */\r\n public getVolunteerEmailId(): string {\r\n return this.volunteerEmailId;\r\n }\r\n\r\n /** This property is being used to set logged in user email id */\r\n public setVolunteerEmailId(volunteerEmailId: string) {\r\n this.volunteerEmailId = volunteerEmailId;\r\n }\r\n\r\n /** This property is being used to get logged in user acccount id */\r\n public getUserAccountId(): string {\r\n return this.userAccountId;\r\n }\r\n\r\n /** This property is being used to set logged in user acccount id */\r\n public setUserAccountId(userAccountId: string) {\r\n this.userAccountId = userAccountId;\r\n }\r\n\r\n public getUserName(): string {\r\n return this.userName;\r\n }\r\n\r\n public setUserName(userName: string) {\r\n this.userName = userName;\r\n }\r\n\r\n /** This property is being used to removed logged in user volunteer code */\r\n public removeVolunteerCode() {\r\n this.volunteerCode = '';\r\n }\r\n\r\n /** This property is being used to get labsite Code for logged in user */\r\n public getLabsiteCode(): string {\r\n return this.labsiteCode;\r\n }\r\n\r\n /** This property is being used to set labsite Code for logged in user */\r\n public setLabsiteCode(labsiteCode: string) {\r\n this.labsiteCode = labsiteCode;\r\n }\r\n\r\n /** This property is being used to get labsite Prefix Code for logged in user */\r\n public getLabsitePrefixCode(): string {\r\n return this.labsitePrefix;\r\n }\r\n\r\n /** This property is being used to set labsite Prefix Code for logged in user */\r\n public setLabsitePrefixCode(labsitePrefix: string) {\r\n this.labsitePrefix = labsitePrefix;\r\n }\r\n\r\n public getIsDeleteVolunteerAllowed() {\r\n return this.labsiteDetails ? this.labsiteDetails.isPublicWebsiteVolunteerDeletionAllowed : false;\r\n }\r\n\r\n public getPrintIdCardPublicWebsiteAllowed() {\r\n return this.labsiteDetails ? this.labsiteDetails.printIdCardPublicWebsite : false;\r\n }\r\n\r\n public getIsVolunteerProfileSelfEditingAllowed() {\r\n return this.labsiteDetails ? this.labsiteDetails.isVolunteerProfileSelfEditingAllowed : false;\r\n }\r\n\r\n /** This property is being used to set Can Show Volunteer Appointments for logged in user */\r\n public setCanShowVolunteerAppointments(canShowVolunteerAppointments: boolean) {\r\n this.canShowVolunteerAppointmentsSubject.next(canShowVolunteerAppointments);\r\n this.canShowVolunteerAppointments = canShowVolunteerAppointments;\r\n }\r\n\r\n /** This property is being used to get Can Show Volunteer Appointments for logged in user */\r\n public getCanShowVolunteerAppointments(): boolean {\r\n return this.canShowVolunteerAppointments;\r\n }\r\n\r\n\r\n /** This property is being used to set Can Show StudyProductUsage for logged in user */\r\n public setCanShowStudyProductUsage(canShowStudyProductUsage: boolean) {\r\n this.canShowStudyProductUsageSubject.next(canShowStudyProductUsage);\r\n this.canShowStudyProductUsage = canShowStudyProductUsage;\r\n }\r\n\r\n /** This property is being used to get Can Show StudyProductUsage for logged in user */\r\n public getCanShowStudyProductUsage(): boolean {\r\n return this.canShowStudyProductUsage;\r\n }\r\n\r\n /** This property is being used to get lab site Online Form Configurations for labsite level */\r\n public getLabsiteOnlineFormConfigurations(): LabsiteOnlineFormConfigurations[] {\r\n return this.labsiteOnlineFormConfigurations;\r\n }\r\n\r\n /** his property is being used to set lab site has any Online Form Configurations configured */\r\n public setLabsiteOnlineFormConfigurations(LabsiteOnlineFormConfigurations: LabsiteOnlineFormConfigurations[]) {\r\n this.labsiteOnlineFormConfigurations = LabsiteOnlineFormConfigurations;\r\n }\r\n\r\n /** his property is being used to set lab site has any Online Form Configurations configured */\r\n public removeLabsiteOnlineFormConfigurations() {\r\n this.labsiteOnlineFormConfigurations = [];\r\n }\r\n\r\n /** This property is being used to check lab site has any Online Form Configurations configured */\r\n public hasLabsiteOnlineFormConfigurations(): boolean {\r\n return this.labsiteOnlineFormConfigurations?.length > 0;\r\n }\r\n\r\n /** This property is being used to get Height Weight Unit */\r\n public getHeightWeightUnitEnum(): number {\r\n return this.heightWeightUnitEnum;\r\n }\r\n\r\n /** his property is being used to set lab site Height Weight Unit */\r\n public setHeightWeightUnitEnum(heightWeightUnitEnum: number) {\r\n this.heightWeightUnitEnum = heightWeightUnitEnum;\r\n }\r\n\r\n /** This property is being used to get Disclaimers Introduction Text */\r\n public getDisclaimersIntroductionText(): string {\r\n return this.disclaimersIntroductionText;\r\n }\r\n\r\n /** This property is being used to set Disclaimers Introduction Text */\r\n public setDisclaimersIntroductionText(disclaimersIntroductionText: string) {\r\n this.disclaimersIntroductionText = disclaimersIntroductionText;\r\n }\r\n\r\n /** This property is being used to get Registration Visit Description Text */\r\n public getRegistrationVisitDescriptionText(): string {\r\n return this.registrationVisitDescriptionText;\r\n }\r\n\r\n /** This property is being used to set Registration Visit Description Text */\r\n public setRegistrationVisitDescriptionText(registrationVisitDescriptionText: string) {\r\n this.registrationVisitDescriptionText = registrationVisitDescriptionText;\r\n }\r\n\r\n /** This property is being used to get Legal Adult Age */\r\n public getLegalAdultAge(): number|undefined{\r\n return this.legalAdultAge;\r\n }\r\n\r\n /** This property is being used to set Legal Adult Age */\r\n public setLegalAdultAge(legalAdultAge: number|undefined) {\r\n this.legalAdultAge = legalAdultAge;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\n/** Service to handle Spinner or page/data loading in application */\r\nexport class SpinnerService {\r\n\r\n /* #region Fields */\r\n private subject: Subject = new Subject();\r\n /* #endregion */\r\n\r\n /* #region Public Methods */\r\n /** Method to control/toggle spinner display */\r\n public show(show: boolean): void {\r\n this.subject.next(show);\r\n }\r\n\r\n /** Method to subscribe to spinner service to display spinner by status */\r\n public getMessage(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n /* #endregion */\r\n}\r\n","export class Disclaimer {\r\n termsOfUse!: boolean;\r\n dataPrivacy!: boolean;\r\n volunteerRules!: boolean;\r\n }","import { Component, OnInit } from '@angular/core';\r\nimport { MatLegacyDialogRef as MatDialogRef } from '@angular/material/legacy-dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { GlobalRepositoryService } from '../../core/repository/global-repository.service';\r\nimport { HelperService } from '../../main/services/helper.service';\r\nimport { Disclaimer } from './disclaimer.model';\r\n\r\n@Component({\r\n selector: 'anms-disclaimer',\r\n templateUrl: './disclaimer.component.html',\r\n styleUrls: ['./disclaimer.component.scss']\r\n})\r\nexport class DisclaimerComponent implements OnInit{\r\n labsiteName: string = '';\r\n disclaimersIntroductionText: any = '';\r\n disclaimerData : Disclaimer = new Disclaimer(); \r\n constructor(\r\n public translate: TranslateService,\r\n public dialogRef: MatDialogRef,\r\n public helperService: HelperService,\r\n public globalRepositoryService: GlobalRepositoryService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.labsiteName = this.globalRepositoryService.getLabsiteName();\r\n this.disclaimersIntroductionText = decodeURIComponent(this.globalRepositoryService.getDisclaimersIntroductionText()); \r\n }\r\n\r\n CanConfirm(){\r\n return this.disclaimerData.termsOfUse && this.disclaimerData.dataPrivacy && this.disclaimerData.volunteerRules;\r\n }\r\n\r\n /* #region Events and Methods */\r\n /** This method is to close the pop up*/\r\n public Dismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n /** This method is to close the pop up and to pass confirmation action */\r\n public Confirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n NavigateToLabsiteInformation(attribute: string)\r\n {\r\n this.helperService.NavigateToLabsiteInformation(attribute);\r\n }\r\n}\r\n","
\r\n
\r\n {{ 'Disclaimer.DisclaimerHeader' | translate}}\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 {{ 'Disclaimer.HeaderText' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'Disclaimer.TermsOfUseText' | translate}}\r\n {{'Disclaimer.SeeDetailsText' |\r\n translate }}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'Disclaimer.DataPrivacyText' | translate}}\r\n \r\n {{'Disclaimer.SeeDetailsText' |\r\n translate }}
\r\n {{ 'Disclaimer.DataPrivacyAuthorizeText' | translate}}{{labsiteName}}\r\n {{ 'Disclaimer.DataPrivacyAdditionalText' | translate}}\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ 'Disclaimer.VolunteerRulesText' | translate}}\r\n \r\n {{'Disclaimer.SeeDetailsText' |\r\n translate }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { AppSettingsService } from '../../core/core.module';\r\nimport { AppConstants } from '../../shared/constants/app-constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LabsiteInformationService { \r\n\r\n constructor(public http: HttpClient, public appService: AppSettingsService) { }\r\n\r\n public getLabsiteInformation(labsiteCode: string, contentType: string): Observable {\r\n // labsiteCode = 'EUITRO';\r\n return this.http.get(this.appService.baseApiUrlForCore + 'labsites/GetInformationByAttribute/' + labsiteCode+ '/'+ contentType);\r\n }\r\n\r\n public getLabsiteInformationFromBlob(labsiteCode: string, infoType:string): Observable { \r\n let urlParams: string = labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + AppConstants.Blob.LabSite+ '/' + infoType;\r\n if(this.appService.isPublicWebSiteSyncronizerEnabled){\r\n urlParams = labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + AppConstants.Blob.LabsiteByPublicSynchronizer+'/' + infoType;\r\n }\r\n return this.http.get(this.appService.publicFileUrl + 'Files/downloadSpecific/' + urlParams ); \r\n }\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { ComponentFactoryResolver, Injectable } from '@angular/core';\r\nimport { Observable, Subject, forkJoin } from 'rxjs';\r\nimport { AppSettingsService } from '../../core/config/app-settings.service';\r\nimport { LoaderService } from '../../main/services/loader.service';\r\nimport { PrintVolunteerCardRequestDto } from './models/PrintVolunteerCard.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VolunteerService {\r\n volunteerAttributesTab = 0;\r\n isVolunteerBasicInfoUpdated = new Subject();\r\n\r\n constructor(public http: HttpClient, private appService: AppSettingsService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n public loader: LoaderService) {\r\n }\r\n\r\n public OnVolunteerBasicInfoUpdated(): Observable {\r\n return this.isVolunteerBasicInfoUpdated.asObservable();\r\n }\r\n\r\n public AddVolunteer(reqbody: any) {\r\n const headers = new HttpHeaders().set('content-type', 'application/json').set('LabSiteCode', JSON.parse(reqbody).LabSiteCode);\r\n return this.http.post(this.appService.volunteerUrl + 'volunteers', reqbody, { 'headers': headers });\r\n }\r\n public DeleteVounteer(volunteerId: string) {\r\n const reqbody = {\r\n VolunteerId: volunteerId,\r\n };\r\n return this.http.put(this.appService.volunteerUrl + 'volunteers/DeleteVolunteer', reqbody);\r\n }\r\n\r\n UpdateBasicVolunteerInfo(reqbody: string) {\r\n const headers = new HttpHeaders().set('content-type', 'application/json');\r\n return this.http.put(this.appService.volunteerUrl + 'volunteers/UpdateBasicInfo', reqbody, { 'headers': headers });\r\n }\r\n\r\n public AddVolunteerSlider(isRegistration: boolean): void {\r\n import('./maintenance/maintenance.module')\r\n .then(mod => mod.MaintenanceModule)\r\n .then(lazyModule => {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(lazyModule.components['lazy']);\r\n this.loader.addDynamicComponent(componentFactory, '100%', { isRegistrationFlow: isRegistration });\r\n });\r\n }\r\n\r\n public EditBasicInformationSlider(data: any, sliderWidth: string): void {\r\n import('./volunteerUpdate/volunteerUpdate.module')\r\n .then(mod => mod.VolunteerUpdateModule)\r\n .then(lazyModule => {\r\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(lazyModule.components['lazy']);\r\n this.loader.addDynamicComponent(componentFactory, sliderWidth, data);\r\n });\r\n }\r\n\r\n public GetEnum(enumType: string) {\r\n const url = `${this.appService.volunteerUrl}enums/GetEnumData/` + enumType;\r\n return this.http.get(url);\r\n }\r\n\r\n public LoadVolunteerProfileEnums() {\r\n const techniqueEnums = this.GetEnum('TechniqueEnums')\r\n const educationDegreeEnums = this.GetEnum('EducationDegreeEnums');\r\n const healthInsuranceEnums = this.GetEnum('HealthInsuranceEnums');\r\n\r\n return forkJoin([techniqueEnums, educationDegreeEnums, healthInsuranceEnums\r\n ]);\r\n }\r\n\r\n public ValidateIBANAndBIC(reqbody: any) {\r\n return this.http.post(this.appService.volunteerUrl + 'volunteerFinance/ValidateIBANAndBIC', reqbody);\r\n }\r\n\r\n public GetAdvertisementMedias(labsiteId: any) {\r\n const url = `${this.appService.baseApiUrlForCore}advertisementMedias/advertisementMediasForLabsite/` + labsiteId;\r\n return this.http.get(url);\r\n }\r\n\r\n public PrintVolunteerCard(printVolunteerCardRequestDto: PrintVolunteerCardRequestDto): Observable {\r\n const params = new HttpParams()\r\n .set('volunteerId', printVolunteerCardRequestDto.VolunteerId)\r\n .set('labsiteCode', printVolunteerCardRequestDto.LabsiteCode);\r\n\r\n const options = {\r\n params,\r\n responseType: 'blob' as 'json'\r\n };\r\n return this.http.get(this.appService.volunteerUrl + 'volunteers/PrintVolunteerIdCard/', options)\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web';\r\nimport { AppSettingsService } from '../../core/core.module';\r\nimport { GlobalRepositoryService } from '../../core/repository/global-repository.service';\r\nimport { HelperService } from './helper.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ApplicationInsightsService {\r\n \r\n appInsights: ApplicationInsights;\r\n appInsightsConfig: any;\r\n constructor(public appSettingsService: AppSettingsService, public globalRepository: GlobalRepositoryService,\r\n public helperService: HelperService) {\r\n\r\n this.appInsightsConfig = this.appSettingsService.appInsightsConfig;\r\n this.appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: this.appInsightsConfig.instrumentationKey,\r\n enableAutoRouteTracking: false, // option to log all route changes \r\n disableExceptionTracking: true,\r\n disableTelemetry: !this.appInsightsConfig.logging,\r\n loggingLevelTelemetry: 0,\r\n endpointUrl: this.appInsightsConfig.endpointUrl\r\n }\r\n });\r\n this.appInsights.loadAppInsights();\r\n }\r\n\r\n logPageView(name?: string, url?: string) { // option to call manually \r\n this.appInsights.trackPageView({ name: name, uri: url });\r\n }\r\n\r\n logEvent(name: string, properties?: { [key: string]: any }) {\r\n this.appInsights.trackEvent({ name: name }, properties);\r\n }\r\n\r\n logMetric(name: string, average: number, properties?: { [key: string]: any }) { \r\n this.appInsights.trackMetric({ name: name, average: average }, properties); \r\n }\r\n\r\n logException(exception: Error, severityLevel?: number) {\r\n exception.name = 'Error: PublicWebsite';\r\n exception.message = 'DeviceID: ' + this.getDeviceId() + ' Labsite: ' + this.getLabsiteCode() + ' VolunteerCode: ' + \r\n this.getVolunteerCode() + ' EmailID: ' + \r\n this.getVolunteerEmail() + ' Exception: ' + exception.message; \r\n this.appInsights.trackException({ error: exception, exception: exception, severityLevel: severityLevel, });\r\n }\r\n\r\n logTrace(message: string, properties?: { [key: string]: any }) {\r\n if (this.appInsightsConfig.tracing) {\r\n message = 'DeviceID: ' + this.getDeviceId() + ' Labsite: ' + this.getLabsiteCode() + ' VolunteerCode: ' + \r\n this.getVolunteerCode() + ' EmailID: ' + \r\n this.getVolunteerEmail() + ' Trace: ' + message;\r\n this.appInsights.trackTrace({ message: message }, properties);\r\n }\r\n }\r\n\r\n getLabsiteCode() {\r\n return this.globalRepository.labsiteCode === '' ? 'NA' : this.globalRepository.labsiteCode;\r\n }\r\n\r\n getVolunteerCode() {\r\n return this.globalRepository.volunteerCode === '' ? 'NA' : this.globalRepository.volunteerCode;\r\n }\r\n\r\n getVolunteerEmail() {\r\n return this.globalRepository.volunteerEmailId === '' ? 'NA' : this.globalRepository.volunteerEmailId;\r\n }\r\n\r\n getDeviceId() {\r\n return this.helperService.getDeviceId();\r\n }\r\n}\r\n","import { Inject, Injectable, PLATFORM_ID } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { MatDatePickerConfig } from \"../../shared/matdatepicker/matdatepicker.model\";\r\nimport { MediaChange, MediaObserver } from '@angular/flex-layout';\r\nimport { Observable, Subject, Subscription } from \"rxjs\";\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { ScreenSizeValue } from \"../models/screenSizeValue\";\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport moment from 'moment';\r\nimport { Router } from \"@angular/router\";\r\nimport { GlobalRepositoryService } from \"../../core/repository/global-repository.service\";\r\nimport { AppConstants } from \"../../shared/constants/app-constants\";\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport * as uuid from 'uuid';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HelperService {\r\n\r\n mediaSubscription!: Subscription;\r\n screenSize = new Subject();\r\n isBrowser: boolean;\r\n\r\n\r\n constructor(public translateService: TranslateService,\r\n public mediaObserver: MediaObserver, public router: Router,\r\n public globalRepository: GlobalRepositoryService,\r\n @Inject(PLATFORM_ID) private platformId: string\r\n\r\n ) {\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n }\r\n\r\n public getMatDateConfig() {\r\n const matDateConfig = new MatDatePickerConfig();\r\n matDateConfig.TodayButtonLabel = this.translateService.instant('TodayButtonLabel');\r\n matDateConfig.TodayButtonTooltip = this.translateService.instant('TodayButtonTooltip');\r\n matDateConfig.DateButtonTooltip = this.translateService.instant('DateButtonTooltip');\r\n matDateConfig.ClearButtonTooltip = this.translateService.instant('ClearButtonTooltip');\r\n return matDateConfig;\r\n }\r\n\r\n public GetStepperProgress(stepCompleted: boolean, alreadyProgressedStep: number,\r\n selectedStep: number, progressEachStep: number, progressValue: number) {\r\n if (!stepCompleted) {\r\n progressValue = progressValue + progressEachStep;\r\n alreadyProgressedStep = selectedStep + 1;\r\n return { progressValue, alreadyProgressedStep };\r\n }\r\n return { progressValue, alreadyProgressedStep };\r\n }\r\n\r\n public MarkAllStepsCompleted(stepper: MatStepper) {\r\n const progressValue = 100;\r\n stepper?.steps?.forEach(step => step.completed = true);\r\n const alreadyProgressedStep = stepper?.steps?.length ?? 1;\r\n return { progressValue, alreadyProgressedStep };\r\n }\r\n\r\n public getDropDownArrayWithEmptyOptions(data: any) {\r\n const dropDown: any = [];\r\n dropDown.push({ id: '', displayText: '' });\r\n const ds = this.getLabelValueArrayFromObject(data);\r\n ds.forEach(function (value, i) {\r\n dropDown.push({ id: i, displayText: value.label });\r\n });\r\n return dropDown;\r\n }\r\n\r\n public getDropDownArrayTypesWithEmptyOptions(data: any) {\r\n const dropDown = [];\r\n dropDown.push({ id: '', displayText: '' });\r\n data.forEach(function (item: any) {\r\n dropDown.push({ id: item[Object.keys(item)[0]], displayText: item.value ? item.value : item.name });\r\n });\r\n return dropDown;\r\n }\r\n\r\n public getDropdownArrayWithFormattedTime(data: any) {\r\n const dropDown: any = [];\r\n const format = this.getLabsiteTimeFormat();\r\n dropDown.push({ id: '', displayText: '' });\r\n const ds = this.getLabelValueArrayFromObject(data);\r\n ds.forEach(function (value, i) {\r\n dropDown.push({ id: i, displayText: moment(value.label, 'HH:mm').format(format) });\r\n });\r\n return dropDown;\r\n }\r\n\r\n public getLabsiteTimeFormat(): string {\r\n let format: string = 'hh:mm A';\r\n if (this.globalRepository.labsiteDetails) {\r\n switch (this.globalRepository.labsiteDetails.timeFormatEnum) {\r\n case AppConstants.TimeFormatByLabsite.TwentyFourHourEnum:\r\n format = AppConstants.TimeFormatByLabsite.TwentyFourHourFormat;\r\n break;\r\n case AppConstants.TimeFormatByLabsite.AmOrPmEnum:\r\n format = AppConstants.TimeFormatByLabsite.AmOrPmFormat;\r\n break;\r\n }\r\n }\r\n\r\n return format;\r\n }\r\n\r\n public getLabelValueArrayFromObject(data: any) {\r\n const returnValue = [];\r\n if (data !== undefined && data !== null) {\r\n for (const property in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, property) && property.indexOf('$') === -1) {\r\n returnValue.push({\r\n label: data[property],\r\n value: property\r\n });\r\n }\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n public getScreenSize(): Observable {\r\n return this.screenSize.asObservable();\r\n }\r\n\r\n public GetMediaType() {\r\n const getAlias = (MediaChange: MediaChange[]) => {\r\n return MediaChange[0].mqAlias;\r\n };\r\n\r\n this.mediaSubscription = this.mediaObserver\r\n .asObservable()\r\n .pipe(\r\n distinctUntilChanged(\r\n (x: MediaChange[], y: MediaChange[]) => getAlias(x) === getAlias(y)\r\n )\r\n )\r\n .subscribe((change) => {\r\n if (change.length > 0) {\r\n this.screenSize.next(change[0].mqAlias);\r\n }\r\n });\r\n }\r\n\r\n public getScreenSizeValue(items: ScreenSizeValue[], size: string) {\r\n let result = '';\r\n if (items?.length > 0) {\r\n const item = items.find((x: ScreenSizeValue) => x.screenSize === size);\r\n if (item) {\r\n result = item.value;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n public sortLabelValueArray(a: any, b: any) {\r\n const reA = /[^a-zA-Z]/g;\r\n const reN = /[^0-9]/g;\r\n const aA = a.displayText.toLowerCase().replace(reA, '');\r\n const bA = b.displayText.toLowerCase().replace(reA, '');\r\n if (aA === bA) {\r\n const aN = parseInt(a.label.replace(reN, ''), 10);\r\n const bN = parseInt(b.label.replace(reN, ''), 10);\r\n return aN === bN ? 0 : aN > bN ? 1 : -1;\r\n } else {\r\n return aA > bA ? 1 : -1;\r\n }\r\n }\r\n\r\n numericOnly(event: any) {\r\n const patt = /^([0-9.])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n numericOnlyForHeight(event: any) {\r\n const patt = /^([0-9,.])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n numericOnlyForHeightNoChars(event: any) {\r\n const patt = /^([0-9])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n alphaNumericWithSpecialChars(event: any) {\r\n const patt = /^([0-9a-zA-Z-_ ;/])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n positiveOnly(event: any) {\r\n const patt = /^([0-9])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n isNegativeNumeric(event: any) {\r\n const patt = /^[0-9-]$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n alphaNumericSpaceForIBAN(event: any) {\r\n const patt = /^([0-9A-Z ])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n alphaNumericeForBIC(event: any) {\r\n const patt = /^([0-9A-Z])$/;\r\n const result = patt.test(event.key);\r\n return result;\r\n }\r\n\r\n public GetParticipationStatusColor(statusEnum: string): string {\r\n let colorcode;\r\n switch (statusEnum) {\r\n case '0':\r\n case 'Applied': {\r\n colorcode = 'grey';\r\n break;\r\n }\r\n case '1':\r\n case 'Application Hold': {\r\n colorcode = 'orange';\r\n break;\r\n }\r\n case '2':\r\n case 'Waiting for Feedback': {\r\n colorcode = 'orange';\r\n break;\r\n }\r\n case '3':\r\n case 'Application Accepted': {\r\n colorcode = 'blue';\r\n break;\r\n }\r\n case '4':\r\n case 'Application Rejected': {\r\n colorcode = 'red';\r\n break;\r\n }\r\n case '5':\r\n case 'Included': {\r\n colorcode = 'green';\r\n break;\r\n }\r\n case '6':\r\n case 'Withdrawn': {\r\n colorcode = 'red';\r\n break;\r\n }\r\n case '7':\r\n case 'Pre-Study Visit': {\r\n colorcode = 'blue';\r\n break;\r\n }\r\n default: {\r\n colorcode = '';\r\n break;\r\n }\r\n }\r\n return colorcode;\r\n }\r\n\r\n public GetPaymentStatusColor(statusEnum: string): string {\r\n let colorcode;\r\n switch (statusEnum) {\r\n case '0':\r\n case 'Pending': {\r\n colorcode = 'grey';\r\n break;\r\n }\r\n case '1':\r\n case 'Payment Due':\r\n case 'Payment Due (Export)': {\r\n colorcode = 'blue';\r\n break;\r\n }\r\n case '2':\r\n case 'Paid': {\r\n colorcode = 'green';\r\n break;\r\n }\r\n case '3':\r\n case 'Payment Failed': {\r\n colorcode = 'orange';\r\n break;\r\n }\r\n case '4':\r\n case 'Cancelled': {\r\n colorcode = 'red';\r\n break;\r\n }\r\n default: {\r\n colorcode = '';\r\n break;\r\n }\r\n }\r\n return colorcode;\r\n }\r\n\r\n NavigateToLabsiteInformation(attribute: string) {\r\n const url = this.router.serializeUrl(\r\n // @ts-ignore\r\n this.router.createUrlTree([this.router.location._basePath.split('/')[1] + '/labsiteInformation/' + attribute])\r\n );\r\n\r\n if (this.isBrowser) {\r\n window.open(url, '_blank');\r\n }\r\n\r\n\r\n }\r\n\r\n preventPreSpace(event: any) {\r\n if (event.target.selectionStart === 0 && event.code === 'Space') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n getDeviceId() {\r\n let deviceId = localStorage.getItem('deviceId')\r\n if (!deviceId) {\r\n deviceId = uuid.v4();\r\n localStorage.setItem('deviceId', deviceId)\r\n }\r\n return deviceId\r\n }\r\n\r\n getTextFromEnumType(id: any, list: any): string {\r\n let text = '';\r\n if (id) {\r\n text = list.find((item: any) => item.id === id)?.displayText;\r\n }\r\n return text;\r\n }\r\n\r\n public getTranslatedValue(enumType: string, enumValue: string) {\r\n return this.translateService.instant(enumType + '.' + enumValue);\r\n }\r\n}\r\n","/** Model for SliderConfiguration*/\r\nexport class SliderConfiguration {\r\n public Width: any;\r\n public IsSilderReadOnly: boolean = false;\r\n}\r\n","import { ComponentFactory, Injectable, ViewContainerRef } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MessageService } from './message.service';\r\nimport { DrawerConfiguration } from '../../core/models/drawerConfiguration.model';\r\nimport { SliderConfiguration } from '../../core/models/sliderConfiguration.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderService {\r\n\r\n /* #region Fields */\r\n private componentFactory: any = null;\r\n private rootViewContainer!: ViewContainerRef;\r\n private subject = new Subject();\r\n private subjectClose = new Subject();\r\n private sliderConfig: SliderConfiguration = new SliderConfiguration();\r\n private isDataEdited = false;\r\n /* #endregion */\r\n\r\n constructor(private messageService: MessageService) { }\r\n\r\n /* #region Public Methods */\r\n /** Method to subscrible to loader when component is added in side nav*/\r\n public onComponentAdd(): Observable {\r\n return this.subject.asObservable();\r\n }\r\n\r\n /** Method to subscribe to closing of component or form */\r\n public onFormClose(): Observable {\r\n return this.subjectClose.asObservable();\r\n\r\n }\r\n\r\n /** Method to log an entry in console */\r\n public setRootViewContainerRef(viewContainerRef: ViewContainerRef): void {\r\n this.rootViewContainer = viewContainerRef;\r\n }\r\n\r\n /**This method is to check if the slider is already open and if so, shows pop-up */\r\n public addDynamicComponent(factory: ComponentFactory, width: any, data: any, isReadOnly: boolean = false): void {\r\n if (this.componentFactory === null) {\r\n this.createSliderComponent(factory, width, data, isReadOnly);\r\n } else {\r\n if (this.componentFactory.instance.isSliderDataEdited || this.isDataEdited) {\r\n this.messageService.doConfirmationForUnsavedChanges(this.loadSlider,\r\n {\r\n sliderConfig: this.sliderConfig,\r\n factory: factory, width: width,\r\n data: data, isReadOnly: isReadOnly\r\n });\r\n } else {\r\n this.createSliderComponent(factory, width, data, isReadOnly);\r\n }\r\n }\r\n }\r\n\r\n /** Mathod to handle the confirmation popup response for the already open slider */\r\n loadSlider = (actionResult: boolean, sliderInfo: any): void => {\r\n if (!actionResult) {\r\n this.subject.next(sliderInfo.sliderConfig);\r\n } else {\r\n this.cancelForm();\r\n this.createSliderComponent(sliderInfo.factory, sliderInfo.width,\r\n sliderInfo.data, sliderInfo.isReadOnly);\r\n }\r\n }\r\n\r\n /** Method to Save form */\r\n public closeForm(): void {\r\n this.subjectClose.next(true);\r\n this.componentFactory.instance.isSliderDataEdited = false;\r\n this.componentFactory.destroy();\r\n this.setIsDataEdited(false);\r\n }\r\n\r\n /** Method to cancel the form */\r\n public cancelForm(): void {\r\n this.subjectClose.next(false);\r\n this.componentFactory.instance.isSliderDataEdited = false;\r\n this.componentFactory.destroy();\r\n this.setIsDataEdited(false);\r\n }\r\n\r\n /**This method is to check if the slider data is edited */\r\n public isSliderEdited(): boolean {\r\n if (this.componentFactory !== null) {\r\n return this.componentFactory.instance.isSliderDataEdited;\r\n }\r\n return false;\r\n }\r\n\r\n public setIsDataEdited(value: boolean) {\r\n this.isDataEdited = value;\r\n }\r\n\r\n public IsDataEdited(): boolean {\r\n return this.isDataEdited;\r\n }\r\n\r\n /**This method is used to open the on hold slider when there is an action on confirmation pop-up */\r\n public openSlider(): void {\r\n this.subject.next(this.sliderConfig);\r\n }\r\n\r\n /* #endregion */\r\n\r\n /* #region Private Methods */\r\n /**This method is to create new view on slider component */\r\n private createSliderComponent(factory: ComponentFactory, width: any, data: any, isReadOnly: boolean): void {\r\n this.rootViewContainer.clear();\r\n this.componentFactory = factory.create(this.rootViewContainer.injector);\r\n this.rootViewContainer.insert(this.componentFactory.hostView);\r\n (this.componentFactory.instance).sliderFormData = data;\r\n this.sliderConfig = { Width: width, IsSilderReadOnly: isReadOnly };\r\n this.componentFactory.instance.isSliderDataEdited = false;\r\n this.setIsDataEdited(false);\r\n this.subject.next(this.sliderConfig);\r\n }\r\n /* #endregion */\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApplicationInsightsService } from './applicationInsights.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class LoggingService {\r\n constructor(public applicationInsightsService: ApplicationInsightsService) {\r\n\r\n }\r\n\r\n logPageView(name?: string, url?: string) { \r\n this.applicationInsightsService.logPageView(name, url);\r\n }\r\n\r\n logEvent(name: string, properties?: { [key: string]: any }) {\r\n this.applicationInsightsService.logEvent(name, properties);\r\n }\r\n\r\n logMetric(name: string, average: number, properties?: { [key: string]: any }) { \r\n this.applicationInsightsService.logMetric(name, average, properties); \r\n }\r\n\r\n logException(exception: Error, severityLevel?: number) { \r\n this.applicationInsightsService.logException(exception, severityLevel);\r\n }\r\n\r\n logTrace(message: string, properties?: { [key: string]: any }) {\r\n this.applicationInsightsService.logTrace(message, properties);\r\n }\r\n}","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog';\r\nimport { Observable } from 'rxjs/internal/Observable';\r\nimport { ConfirmPopupComponent } from '../../shared/confirm-popup/confirm-popup.component';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LoggingService } from './logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n public displayTime = 10000;\r\n isBrowser: boolean;\r\n\r\n constructor(private toastr: ToastrService,\r\n private translateService: TranslateService,\r\n private dialog: MatDialog, @Inject(PLATFORM_ID) platformId: string,\r\n private loggingService: LoggingService) {\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n\r\n }\r\n\r\n /* #region Public Methods */\r\n /** This method is being used to show Confirmation Pop up */\r\n public confirm(message: string, title: string,\r\n confirmLabel: string = 'Common.Button.Yes', cancelLabel: string = 'Common.Button.No'): Observable {\r\n const dialogRef = this.dialog.open(ConfirmPopupComponent, {\r\n width: '535px',\r\n minHeight: '220px',\r\n maxHeight: '320px',\r\n data: {\r\n message: message, title: title,\r\n confirmLable: confirmLabel, cancelLabel: cancelLabel\r\n },\r\n autoFocus: false,\r\n disableClose: true\r\n });\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n\r\n /** This method is used to show the confirmation popup for unsaved changes */\r\n public doConfirmationForUnsavedChanges(callBack: Function, callBackParams: any = null) {\r\n if (!this.isBrowser) return;\r\n this.doConfirmation(callBack, callBackParams, this.translateService.instant('UnSavedChanges'),\r\n this.translateService.instant('Continue'), this.translateService.instant('Yes'),\r\n this.translateService.instant('No'));\r\n }\r\n\r\n /** This method is used to show confirmation popup */\r\n public doConfirmation(callBack: Function, callBackParams: any = null, message: string = '',\r\n title: string = '', confirmLabel: string = '', cancelLabel: string = '') {\r\n if (!this.isBrowser) return;\r\n this.confirm(message, title, confirmLabel, cancelLabel).subscribe((actionResult: boolean) => {\r\n if (callBackParams) {\r\n callBack(actionResult, callBackParams);\r\n } else {\r\n callBack(actionResult);\r\n }\r\n });\r\n }\r\n\r\n /** This method is being used to display a Warning toast messsage */\r\n public warning(message: string, displayTime = this.displayTime, tapToDismiss = true, title: string = ''): void {\r\n if (!this.isBrowser) return;\r\n this.toastr.show(message, title, this.getConfig('ngx-toastr border-w custom-toast-warning', displayTime, tapToDismiss));\r\n }\r\n\r\n /** This method is being used to display a Success toast messsage */\r\n public success(message: string, displayTime = this.displayTime, tapToDismiss = true, title: string = ''): void {\r\n if (!this.isBrowser) return;\r\n this.toastr.show(message, title, this.getConfig('ngx-toastr border-s custom-toast-success', displayTime, tapToDismiss));\r\n }\r\n\r\n /** This method is being used to display a Alert toast messsage with AI Logging*/\r\n public alert(message: string, aiLogging = false, displayTime = this.displayTime, tapToDismiss = true, title: string = '', exceptionMessage?: string): void {\r\n if (!this.isBrowser) return;\r\n if (aiLogging)\r\n this.loggingService.logException(Error(message + exceptionMessage));\r\n this.toastr.show(message, title, this.getConfig('ngx-toastr border-a custom-toast-error', displayTime, tapToDismiss));\r\n }\r\n\r\n /** This method is being used to clear toast messsage */\r\n public clear(): void {\r\n this.toastr.clear();\r\n }\r\n /* #endregion */\r\n\r\n /* #region Private Methods */\r\n /** Method to customize / set toast Config */\r\n private getConfig(className: string, displayTime: number, tapToDismiss: boolean): any {\r\n return {\r\n closeButton: true,\r\n toastClass: className,\r\n messageClass: 'custom-message',\r\n timeOut: displayTime,\r\n tapToDismiss: tapToDismiss\r\n };\r\n }\r\n /* #endregion */\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatLegacyDialogRef as MatDialogRef, MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'anms-confirm-popup',\r\n templateUrl: './confirm-popup.component.html',\r\n styleUrls: ['./confirm-popup.component.scss']\r\n})\r\nexport class ConfirmPopupComponent {\r\n\r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any, public translate: TranslateService) { }\r\n\r\n /* #region Events and Methods */\r\n /** This method is to close the pop up*/\r\n public dismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n /** This method is to close the pop up and to pass confirmation action */\r\n public confirmed(): void {\r\n this.dialogRef.close(true);\r\n }\r\n /* #endregion */\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
{{ data.title | translate}}
\r\n\r\n
{{ data.message | translate}}
\r\n
\r\n \r\n \r\n
\r\n
\r\n","export const AppConstants = {\r\n Blob: {\r\n ActiveStudies: 'activestudies',\r\n LabSite: 'labsite',\r\n Metadata: 'metadata',\r\n LabsitesURLConfigFolder: 'LabsitesURLConfig',\r\n LabsitesURLConfigFileName: 'labsitesURLConfig',\r\n Home: 'Home',\r\n ActiveStudiesSummary:'activestudiesSummary',\r\n ActiveStudy:'studyDetail',\r\n LabsiteByPublicSynchronizer: 'labsiteByPublicSynchronizer',\r\n LabSiteTextFolder: 'LabSiteTextForPublicWebsite',\r\n LabSiteTextFileName: 'LabSiteTextForPublicWebsite.json',\r\n NewsPage: 'NewsPage'\r\n },\r\n emptyGUID: '00000000-0000-0000-0000-000000000000',\r\n Gender: {\r\n Male: 'Male',\r\n Female: 'Female',\r\n Mixed: 'Mixed'\r\n },\r\n StudyParticipationStatus: {\r\n All: 'All',\r\n Applied: {\r\n Applied: 'Applied',\r\n ApplicationHold: 'Application Hold',\r\n WaitingForFeedback: 'Waiting for Feedback'\r\n },\r\n OnGoing: {\r\n Ongoing: 'Ongoing',\r\n PreStudyVisit: 'Pre-Study Visit',\r\n ApplicationAccepted: 'Application Accepted',\r\n Included: 'Included'\r\n },\r\n Passed: {\r\n Passed: 'Passed',\r\n Included: 'Included',\r\n Rejected: 'Application Rejected',\r\n Withdrawn: 'Withdrawn'\r\n }\r\n },\r\n Paid: 'Paid',\r\n DATE_FORMATS: {\r\n parse: {\r\n dateInput: 'DD/MM/YYYY',\r\n dbSaveFormat: 'YYYY-MM-DD'\r\n },\r\n display: {\r\n dateDisplayInput: 'DD-MMM-YYYY',\r\n dateInput: 'DD - MMM - YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'MM/DD/YYYY',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n }\r\n },\r\n VISIT_DATE_FORMATS: {\r\n parse: {\r\n dateInput: 'DD/MM/YYYY',\r\n dbSaveFormat: 'YYYY-MM-DD'\r\n },\r\n display: {\r\n dateDisplayInput: 'DD-MMM-YYYY',\r\n dateInput: 'dddd, DD - MMM - YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'MM/DD/YYYY',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n }\r\n },\r\n TIME_FORMATS: {\r\n parse: {\r\n timeInput: 'hh:mm A'\r\n },\r\n },\r\n VisitStatus: {\r\n Approved: 'Approved',\r\n Rejected: 'Rejected',\r\n Pending: 'Pending'\r\n },\r\n VolunteerStatus: {\r\n PendingRegistrationVisit: \"Pending Registration Visit\",\r\n Active: \"Active\",\r\n Deleted: \"Deleted\"\r\n },\r\n DataState: {\r\n Created: 'Created',\r\n Modified: 'Modified',\r\n UnChanged: 'UnChanged',\r\n Deleted: 'Deleted'\r\n },\r\n MinimumDate: '01-01-0001',\r\n TimeFormatByLabsite: {\r\n TwentyFourHourEnum: 0,\r\n AmOrPmEnum: 1,\r\n TwentyFourHourFormat: 'HH:mm',\r\n AmOrPmFormat: 'hh:mm a'\r\n },\r\n HomePageMediaTypes: {\r\n Picture: '0',\r\n Video: '1'\r\n },\r\n Pages: {\r\n Home: 'HomePage',\r\n AboutUs: 'AboutUs',\r\n BeAVolunteer: 'BeAVolunteer',\r\n ActiveStudies: 'ActiveStudies',\r\n StudyDetails: 'StudyDetails',\r\n ContactUs: 'ContactUs',\r\n PrivacyPolicy: 'PrivacyPolicy',\r\n TermsOfUse: 'TermsOfUse',\r\n VolunteerRules: 'VolunteerRules',\r\n MyActivity: 'MyActivity',\r\n MyAccount: 'MyAccount',\r\n MyAppointments: 'MyAppointments',\r\n MyProductUsage: 'MyProductUsage'\r\n },\r\n Events: {\r\n ApplyStudy: 'ApplyStudy',\r\n ExternalUser: 'ExternalUserCreated',\r\n VolunteerRegistration: 'VolunteerRegistrationCompleted',\r\n AccountDeletion: 'AccountDeletion'\r\n },\r\n AppointmentStates: {\r\n All: 'All',\r\n Scheduled: 'Scheduled',\r\n Passed: 'Passed'\r\n },\r\n VisitTypes: {\r\n Registration: \"Registration\",\r\n PreStudy: \"Pre-Study\",\r\n Study: \"Study\"\r\n },\r\n LegalStatus: {\r\n Minor: \"Minor\",\r\n Adult: \"Adult\"\r\n },\r\n HeightWeightUnit: {\r\n Enums: {\r\n MKg: 0,\r\n InchPounds: 1\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

{{'ErrorPage.ErrorPagePageNotFoundHeader' | translate}}

\r\n

{{ errorStatusCode }}

\r\n

{{'ErrorPage.ErrorPagePageNotFoundText' | translate}}\r\n

\r\n
\r\n\r\n {{'ErrorPage.GoBackText' | translate}}\r\n
\r\n
\r\n
\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anms-global-error',\r\n templateUrl: './global-error.component.html',\r\n styleUrls: ['./global-error.component.scss']\r\n})\r\nexport class GlobalErrorComponent implements OnInit {\r\n\r\n /* #region Fields */\r\n @Input() public errorStatusCode : string = '404';\r\n @Input() public isNavigateBackRequired = true;\r\n @Output() public navigatedBack: EventEmitter = new EventEmitter();\r\n public errorTitle !: string;\r\n public errorMessage !: string;\r\n public errorIcon !: string;\r\n /* #endregion */\r\n\r\n constructor() { }\r\n\r\n /* #region Events and Methods */\r\n public ngOnInit(): void {\r\n this.loadErrorDetailsByStatusCode();\r\n }\r\n\r\n /** This method is used to navigate the user to previouse page */\r\n public navigateBack(): void {\r\n this.navigatedBack.emit();\r\n }\r\n /* #endregion */\r\n\r\n /* #region Private Methods */\r\n /** This method is being used to load error details by error status code */\r\n private loadErrorDetailsByStatusCode(): void {\r\n switch (this.errorStatusCode) {\r\n \r\n case '401':\r\n this.errorIcon = 'icon-Unauthorized';\r\n break;\r\n case '403':\r\n this.errorIcon = 'icon-Forbidden';\r\n break;\r\n case '404':\r\n this.errorIcon = 'icon-caution';\r\n break;\r\n default:\r\n this.errorStatusCode = '500';\r\n this.errorIcon = 'icon-Internal-Server-Error';\r\n break;\r\n }\r\n }\r\n /* #endregion */\r\n\r\n}\r\n","export class MatDatePickerConfig {\r\n startDate!: Date;\r\n startView!: string;\r\n maximumDate!: Date | null;\r\n minimumDate!: Date | null;\r\n placeholder!: string;\r\n dateFilter!: Function;\r\n TodayButtonLabel!: string;\r\n TodayButtonTooltip!: string;\r\n DateButtonTooltip!: string;\r\n ClearButtonTooltip!: string;\r\n DatePlaceholder!: string;\r\n dateFilterError!: string;\r\n dateClass!: Function;\r\n removeTodaysIcon : boolean = false;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatLegacyListModule as MatListModule } from '@angular/material/legacy-list';\r\nimport { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu';\r\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';\r\nimport { MatLegacyCardModule as MatCardModule } from '@angular/material/legacy-card';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatLegacySelectModule as MatSelectModule } from '@angular/material/legacy-select';\r\nimport { MatLegacyTooltipModule as MatTooltipModule } from '@angular/material/legacy-tooltip';\r\nimport { MatLegacySnackBarModule as MatSnackBarModule } from '@angular/material/legacy-snack-bar';\r\nimport { MatLegacySlideToggleModule as MatSlideToggleModule } from '@angular/material/legacy-slide-toggle';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatLegacyTabsModule as MatTabsModule } from '@angular/material/legacy-tabs';\r\nimport { MatLegacyChipsModule as MatChipsModule } from '@angular/material/legacy-chips';\r\nimport { MatLegacyInputModule as MatInputModule } from '@angular/material/legacy-input';\r\nimport { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner';\r\nimport { MatLegacyDialogModule as MatDialogModule } from '@angular/material/legacy-dialog';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatLegacySliderModule as MatSliderModule } from '@angular/material/legacy-slider';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatLegacyAutocompleteModule as MatAutocompleteModule } from '@angular/material/legacy-autocomplete';\r\nimport { MatLegacyRadioModule as MatRadioModule } from '@angular/material/legacy-radio';\r\nimport { MatLegacyProgressBarModule as MatProgressBarModule } from '@angular/material/legacy-progress-bar';\r\nimport { MatLegacyCheckboxModule as MatCheckboxModule } from '@angular/material/legacy-checkbox';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCarouselModule } from 'ng-mat-carousel';\r\n\r\n@NgModule({\r\n imports: [\r\n // material\r\n MatTabsModule,\r\n MatChipsModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n MatSnackBarModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatSlideToggleModule,\r\n MatDividerModule,\r\n MatDialogModule,\r\n MatSliderModule,\r\n MatProgressBarModule,\r\n MatStepperModule,\r\n MatAutocompleteModule,\r\n MatRadioModule,\r\n MatCheckboxModule,\r\n MatButtonToggleModule,\r\n MatExpansionModule,\r\n MatCarouselModule,\r\n //Angular Flex\r\n FlexLayoutModule\r\n ],\r\n declarations: [],\r\n exports: [\r\n // material\r\n MatTabsModule,\r\n MatChipsModule,\r\n MatDatepickerModule,\r\n MatInputModule,\r\n MatProgressSpinnerModule,\r\n MatSidenavModule,\r\n MatToolbarModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n MatSnackBarModule,\r\n MatButtonModule,\r\n MatCardModule,\r\n MatSlideToggleModule,\r\n MatSliderModule,\r\n MatDividerModule,\r\n MatDialogModule,\r\n MatProgressBarModule,\r\n MatStepperModule,\r\n MatAutocompleteModule,\r\n MatRadioModule,\r\n MatCheckboxModule,\r\n MatButtonToggleModule,\r\n MatExpansionModule,\r\n MatCarouselModule,\r\n //Angular Flex\r\n FlexLayoutModule,\r\n ]\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ColumnListComponent } from './column-list/column-list.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MaterialModule } from './material.module';\r\nimport { CardColumnHeaderComponent } from './cardColumnHeader/cardColumnHeader.component';\r\nimport { ConfirmPopupComponent } from './confirm-popup/confirm-popup.component';\r\nimport { MatDatePickerComponent } from './matdatepicker/matdatepicker.component';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { RichTextEditorViewerModalComponent } from './rich-text-editor-viewer-modal/rich-text-editor-viewer-modal.component';\r\nimport { DetailRowComponent } from './detailRow/detailRow.component';\r\nimport { StatusIndicatorComponent } from './statusIndicator/statusIndicator.component';\r\nimport { DetailRowWithIndicatorComponent } from './detailRowWithIndicator/detailRowWithIndicator.component';\r\nimport { GlobalErrorComponent } from './global-error/global-error.component';\r\nimport { TranslateOptionsPipe } from '../shared/translate-options/translate-options.pipe';\r\nimport { SplitPipe } from '../shared/split/split.pipe';\r\nimport { SignaturePadComponent } from './signature-pad/signature-pad.component';\r\nimport { DebounceClickDirective } from './debounce/debounce.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TranslateModule,\r\n RouterModule,\r\n MaterialModule,\r\n ReactiveFormsModule,\r\n NgSelectModule\r\n ],\r\n declarations: [ColumnListComponent, CardColumnHeaderComponent, ConfirmPopupComponent, MatDatePickerComponent,\r\n RichTextEditorViewerModalComponent, DetailRowComponent, DetailRowWithIndicatorComponent, StatusIndicatorComponent,DebounceClickDirective,\r\n GlobalErrorComponent, TranslateOptionsPipe, SplitPipe, SignaturePadComponent],\r\n exports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n TranslateModule,\r\n RouterModule,\r\n MaterialModule,\r\n ColumnListComponent,\r\n CardColumnHeaderComponent,\r\n RichTextEditorViewerModalComponent,\r\n ConfirmPopupComponent,\r\n MatDatePickerComponent,\r\n NgSelectModule,\r\n DetailRowComponent,\r\n DetailRowWithIndicatorComponent,\r\n StatusIndicatorComponent,\r\n GlobalErrorComponent,\r\n TranslateOptionsPipe,\r\n SplitPipe,\r\n SignaturePadComponent,\r\n DebounceClickDirective\r\n ]\r\n})\r\nexport class SharedModule {\r\n}\r\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { AppSettingsService } from './core/core.module';\r\nimport { AuthenticationResult, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser';\r\nimport { MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from '@azure/msal-angular';\r\nimport { ApplicationService } from './app.service';\r\nimport { GlobalRepositoryService } from './core/repository/global-repository.service';\r\nimport { Router } from '@angular/router';\r\nimport { VolunteerService } from './features/volunteer/volunteer.service';\r\nimport { SpinnerService } from './core/spinner/spinner.service';\r\nimport { MessageService } from './main/services/message.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LoggingService } from './main/services/logging.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserLoginService {\r\n\r\n isBrowser: boolean;\r\n policyType: string;\r\n\r\n constructor(@Inject(PLATFORM_ID) platformId: string, private http: HttpClient, public appService: ApplicationService, @Inject(MSAL_GUARD_CONFIG) public msalGuardConfig: MsalGuardConfiguration,\r\n public authService: MsalService, public globalRepositoryService: GlobalRepositoryService, public appSettingsService: AppSettingsService,\r\n public router: Router, public volunteerService: VolunteerService, public spinner: SpinnerService, public messageService: MessageService,\r\n public translateService: TranslateService, private appSettingService: AppSettingsService, public loggingService: LoggingService\r\n ) {\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n this.policyType = this.appSettingService.msalConfig.policyType;\r\n }\r\n\r\n\r\n\r\n public async getUserDetails() {\r\n\r\n this.spinner.show(true);\r\n\r\n const isUserLoggedIn = this.authService.instance.getAllAccounts().length > 0;\r\n\r\n if (isUserLoggedIn) {\r\n const accountId = (this.authService.instance.getAllAccounts())[0]?.localAccountId;\r\n const userClaim = (this.authService.instance.getAllAccounts())[0];\r\n const idTokenClaims = userClaim.idTokenClaims;\r\n this.globalRepositoryService.setUserAccountId(userClaim.localAccountId);\r\n\r\n if (this.policyType === \"Custom\") {\r\n this.globalRepositoryService.setVolunteerEmailId((idTokenClaims as any)?.email);\r\n } else {\r\n this.globalRepositoryService.setVolunteerEmailId(userClaim.username);\r\n }\r\n\r\n this.loggingService.logTrace('PolicyType: ' + this.policyType + ' UserClaim: ' + JSON.stringify(userClaim)\r\n + ' IdTokenClaims: ' + JSON.stringify(idTokenClaims));\r\n\r\n if (!!idTokenClaims && (idTokenClaims as any)?.newUser) {\r\n this.populateAddVolunteerSlider();\r\n } else {\r\n this.globalRepositoryService.setUserAccountId(accountId);\r\n // @ts-ignore\r\n this.loadLabsiteDetails(this.router.location._basePath.split('/')[1]);\r\n }\r\n this.spinner.show(false);\r\n }\r\n\r\n if (this.isBrowser && window.localStorage.getItem('isSignoutFlow') == 'true') {\r\n window.localStorage.setItem('isSignoutFlow', 'false');\r\n const labSiteURLCode = window.localStorage.getItem('labSiteURLCode');\r\n location.replace('/' + labSiteURLCode + '/home');\r\n }\r\n }\r\n\r\n async populateAddVolunteerSlider() {\r\n if (this.isBrowser && !this.globalRepositoryService.getLabsiteCode()) {\r\n const LabsiteCode = window.localStorage.getItem('labSiteCode');\r\n const LabsiteDetails: any = window.localStorage.getItem('labSiteDetails');\r\n if (LabsiteCode) {\r\n this.globalRepositoryService.setLabsiteCode(LabsiteCode);\r\n this.globalRepositoryService.setLabsiteDetails(JSON.parse(LabsiteDetails));\r\n } else {\r\n // get labsite data if labsitecode not present in localstorage\r\n // @ts-ignore\r\n const labSiteURLCode = this.router.location._basePath.split('/');\r\n const url = `${this.appSettingService.baseApiUrlForCore}labsites/GetLabSiteByURLConfigs/` + labSiteURLCode[1];\r\n const result: any = await this.http.get(url).toPromise();\r\n this.globalRepositoryService.setLabsiteDetails(result);\r\n this.globalRepositoryService.setLabsiteOnlineFormConfigurations(result.labsiteOnlineFormConfigurations);\r\n this.globalRepositoryService.setHeightWeightUnitEnum(result.heightWeightUnitEnum);\r\n this.globalRepositoryService.setLabsiteCode(result?.code);\r\n this.globalRepositoryService.setLegalAdultAge(result.legalAdultAge);\r\n }\r\n }\r\n this.spinner.show(false);\r\n this.volunteerService.AddVolunteerSlider(true);\r\n }\r\n\r\n async loadLabsiteDetails(labSiteURLCode: string) {\r\n if (labSiteURLCode) {\r\n const url = `${this.appSettingsService.baseApiUrlForCore}labsites/GetLabSiteByURLConfigs/` + labSiteURLCode;\r\n try {\r\n this.spinner.show(true);\r\n const result: any = await this.http.get(url).toPromise();\r\n if (result && !result.hasError) {\r\n this.globalRepositoryService.setLabsiteDetails(result);\r\n this.globalRepositoryService.setLabsiteCode(result.code);\r\n this.globalRepositoryService.setLabsiteOnlineFormConfigurations(result.labsiteOnlineFormConfigurations);\r\n this.globalRepositoryService.setHeightWeightUnitEnum(result.heightWeightUnitEnum);\r\n this.globalRepositoryService.setLegalAdultAge(result.legalAdultAge);\r\n await this.getUserInformation(this.globalRepositoryService.getUserAccountId());\r\n this.spinner.show(false);\r\n }\r\n } catch (exception: any) {\r\n this.spinner.show(false);\r\n this.messageService.alert(this.translateService.instant('ErrorWhileLoadingLabSiteDetails'), true, 10000, true, '', exception.message);\r\n }\r\n }\r\n }\r\n\r\n\r\n getUserInformation(accountId: string): any {\r\n this.spinner.show(true);\r\n this.appService.getUserInformation(accountId, this.globalRepositoryService.getLabsiteCode()).subscribe(\r\n (user: any) => {\r\n this.spinner.show(false);\r\n if (user.hasError && user.isInvalidUser) {\r\n this.messageService.alert(this.translateService.instant('MyAccount.InvalidUserRegistered') + ' ' + user.labSiteCode + ' ' +\r\n this.translateService.instant('MyAccount.InvalidAutherization') + ' ' + this.globalRepositoryService.getLabsiteCode() + ' ' +\r\n this.translateService.instant('MyAccount.InvalidUserContactAdmin'));\r\n this.spinner.show(false);\r\n setTimeout(() => {\r\n this.onLogoutClick();\r\n }, 4000);\r\n\r\n } else if (user?.volunteerCode) {\r\n const volunteerCode: string = user?.volunteerCode;\r\n const volunteerId: string = user?.volunteerId;\r\n this.globalRepositoryService.setVolunteerCode(volunteerCode);\r\n this.globalRepositoryService.setVolunteerId(volunteerId);\r\n this.globalRepositoryService.isVolunteerCodeModified.next(true);\r\n } else {\r\n this.volunteerService.AddVolunteerSlider(false);\r\n }\r\n }, () => {\r\n this.messageService.alert(this.translateService.instant('MyAccount.ErrorWhileFetchingUserInformation'), true);\r\n this.spinner.show(false);\r\n });\r\n }\r\n\r\n\r\n onSignUpClick() {\r\n\r\n const signupFlowRequest = {\r\n scopes: [\"openid\"],\r\n authority: this.appSettingsService.msalConfig.signupAuthority\r\n };\r\n this.loggingService.logTrace('Request: User SignUp - ' + JSON.stringify(signupFlowRequest));\r\n this.login(signupFlowRequest);\r\n\r\n }\r\n\r\n\r\n\r\n onLoginClick() {\r\n const signinFlowRequest = {\r\n scopes: [\"openid\"],\r\n authority: this.appSettingsService.msalConfig.signinAuthority\r\n };\r\n this.loggingService.logTrace('Request: User SignIn - ' + JSON.stringify(signinFlowRequest));\r\n this.login(signinFlowRequest);\r\n if (this.isBrowser) {\r\n localStorage.setItem('isSigninFlow', 'true');\r\n }\r\n }\r\n\r\n\r\n public login(userFlowRequest: RedirectRequest | PopupRequest | undefined) {\r\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\r\n if (this.msalGuardConfig.authRequest) {\r\n this.authService.loginPopup({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n });\r\n } else {\r\n this.authService.loginPopup(userFlowRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.authService.instance.setActiveAccount(response.account);\r\n });\r\n }\r\n } else {\r\n if (this.msalGuardConfig.authRequest) {\r\n this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as RedirectRequest);\r\n } else {\r\n this.authService.loginRedirect(userFlowRequest);\r\n }\r\n }\r\n }\r\n\r\n onLogoutClick() {\r\n this.loggingService.logTrace('Request: User Logout');\r\n this.authService.logout();\r\n this.globalRepositoryService.removeVolunteerCode();\r\n this.globalRepositoryService.removeLabsiteOnlineFormConfigurations();\r\n if (this.isBrowser) {\r\n localStorage.setItem('isSignoutFlow', 'true');\r\n localStorage.setItem('isSigninFlow', 'false');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule, PreloadAllModules } from '@angular/router';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\nimport { GlobalErrorComponent } from './shared/global-error/global-error.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: '/home',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'home',\r\n loadChildren: () =>\r\n import('./features/home/home.module').then((m) => m.HomeModule)\r\n },\r\n {\r\n path: 'activeStudies',\r\n loadChildren: () =>\r\n import('./features/active-studies/active-studies.module').then(\r\n (m) => m.ActiveStudiesModule\r\n )\r\n },\r\n {\r\n path: 'profile',\r\n loadChildren: () =>\r\n import('./features/profile/profile.module').then((m) => m.ProfileModule),\r\n canActivate: [MsalGuard]\r\n },\r\n {\r\n path: 'studyDetail',\r\n loadChildren: () =>\r\n import('./features/study-detail/study-detail.module').then(\r\n (m) => m.StudyDetailComponentModule\r\n )\r\n },\r\n {\r\n path: 'labsiteInformation/:contentType',\r\n loadChildren: () =>\r\n import('./features/labsiteInformation/labsiteInformation.module').then(\r\n (m) => m.LabsiteInformationComponentModule\r\n )\r\n },\r\n {\r\n path: 'newsPageInformation',\r\n loadChildren: () =>\r\n import('./features/newsPageInformation/newsPageInformation.module').then(\r\n (m) => m.NewsPageInformationComponentModule\r\n )\r\n },\r\n {\r\n path: '**',\r\n component: GlobalErrorComponent\r\n },\r\n // {\r\n // path: \"**\",\r\n // redirectTo: \"\"\r\n // }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, {\r\n scrollPositionRestoration: 'enabled',\r\n preloadingStrategy: PreloadAllModules,\r\n initialNavigation: 'enabledBlocking' //Modifed from enabled to enabledBlocking as this is not allowed field in angular\r\n})\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule {}\r\n","import * as configs from '../../../../package.json';\r\nconst packageJson = configs;\r\nexport const environment = {\r\n appName: 'Eurofins',\r\n envName: 'PROD',\r\n production: true,\r\n test: false,\r\n i18nPrefix: '/vr-public-website',\r\n versions: {\r\n app: packageJson.version,\r\n angular: packageJson.dependencies['@angular/core'],\r\n material: packageJson.dependencies['@angular/material'],\r\n bootstrap: packageJson.dependencies.bootstrap,\r\n rxjs: packageJson.dependencies.rxjs,\r\n ngxtranslate: packageJson.dependencies['@ngx-translate/core'],\r\n angularCli: packageJson.devDependencies['@angular/cli'],\r\n typescript: packageJson.devDependencies['typescript'],\r\n eslint: packageJson.devDependencies['eslint']\r\n }\r\n};\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\r\nimport { SpinnerService } from './spinner.service';\r\n\r\n@Component({\r\n selector: 'anms-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SpinnerComponent implements OnInit {\r\n\r\n showSpinner = false;\r\n\r\n constructor(public spinnerService: SpinnerService, private cdRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit() {\r\n this.spinnerService.getMessage().subscribe((status: boolean) => {\r\n this.SetSpinner(status);\r\n });\r\n }\r\n\r\n SetSpinner(status: boolean) {\r\n this.showSpinner = status;\r\n this.cdRef.detectChanges();\r\n }\r\n}","export class FooterInformation { \r\n socialMediaLinks!: SocialMediaLinks;\r\n }\r\n\r\n export class SocialMediaLinks {\r\n labsiteSocialMediaLinkId!: string;\r\n labSiteId!: string;\r\n tiktokUrl!: string;\r\n facebookUrl!: string;\r\n instagramUrl!: string;\r\n youtubeUrl!: string;\r\n weChatUrl!: string;\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { AppSettingsService } from '../../../core/core.module';\r\nimport { AppConstants } from '../../../shared/constants/app-constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FooterService { \r\n\r\n constructor(public http: HttpClient, public appService: AppSettingsService) { }\r\n\r\n public getFooterInformation(labsiteCode: string): Observable { \r\n return this.http.get(this.appService.baseApiUrlForCore + 'labsites/GetLabsiteSocialMediaLinks/' + labsiteCode);\r\n }\r\n\r\n public getFooterInformationFromBlob(labsiteCode: string, infoType:string): Observable { \r\n let urlParams: string = labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + AppConstants.Blob.LabSite+ '/' + infoType\r\n if(this.appService.isPublicWebSiteSyncronizerEnabled){\r\n urlParams = labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + AppConstants.Blob.LabsiteByPublicSynchronizer+'/' + infoType;\r\n }\r\n return this.http.get(this.appService.publicFileUrl + 'Files/downloadSpecific/' + urlParams); \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 {{'Footer.PrivacyPolicyText' | translate}} |\r\n \r\n \r\n \r\n \r\n {{'Footer.TermsOfUse' | translate}}|\r\n \r\n \r\n \r\n \r\n {{'Footer.Contact' | translate}}\r\n \r\n \r\n \r\n \r\n | {{icpNumber}}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {{'Footer.CopyRightText' | translate}} {{getCurrentYear()}}\r\n
\r\n  \r\n
","import { Component, Inject, PLATFORM_ID } from '@angular/core';\r\nimport { HelperService } from '../../services/helper.service';\r\nimport { GlobalRepositoryService } from '../../../core/repository/global-repository.service';\r\nimport { SpinnerService } from '../../../core/spinner/spinner.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { FooterInformation, SocialMediaLinks } from './footer.model';\r\nimport { FooterService } from './footer.service';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { AppSettingsService } from '../../../core/config/app-settings.service';\r\n\r\n@Component({\r\n selector: 'anms-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss']\r\n})\r\nexport class FooterComponent {\r\n\r\n contentType: string = 'Footer';\r\n footerInformation: FooterInformation = new FooterInformation();\r\n isDataLoaded = false;\r\n isBrowser: boolean;\r\n icpNumber: string | undefined;\r\n\r\n constructor(\r\n public helperService: HelperService,\r\n public footerService: FooterService,\r\n public spinner: SpinnerService,\r\n public globalRepositoryService: GlobalRepositoryService,\r\n public messageService: MessageService,\r\n public translateService: TranslateService,\r\n public appSettingService: AppSettingsService,\r\n @Inject(PLATFORM_ID) private platformId: string) {\r\n this.isBrowser = isPlatformBrowser(platformId); }\r\n\r\n ngOnInit(): void { \r\n this.getFooterInformation(this.contentType);\r\n this.icpNumber = this.appSettingService.getICPNumber;\r\n }\r\n\r\n getFooterInformation(contentType: string) {\r\n \r\n const labsiteCode = this.globalRepositoryService.getLabsiteCode();\r\n if (labsiteCode) {\r\n this.spinner.show(true);\r\n if (!this.globalRepositoryService.volunteerEmailId) {\r\n this.footerService.getFooterInformationFromBlob(this.globalRepositoryService.getLabsiteCode(), contentType).subscribe((response: any) => {\r\n if (response) {\r\n const socialMediaLinks: SocialMediaLinks = response.socialMediaLinks;\r\n this.footerInformation.socialMediaLinks = socialMediaLinks; \r\n this.isDataLoaded = true;\r\n this.spinner.show(false);\r\n } else {\r\n this.messageService.alert(this.translateService.instant('Footer.ErrorWhileFetchingFooterInformation'), true);\r\n this.spinner.show(false);\r\n }\r\n }, () => {\r\n this.messageService.alert(this.translateService.instant('Footer.ErrorWhileFetchingFooterInformation'), true);\r\n this.spinner.show(false);\r\n });\r\n }\r\n else {\r\n this.footerService.getFooterInformation(this.globalRepositoryService.getLabsiteCode()).subscribe((response: SocialMediaLinks) => {\r\n if (response) {\r\n const socialMediaLinks: SocialMediaLinks = response;\r\n this.footerInformation.socialMediaLinks = socialMediaLinks; \r\n this.isDataLoaded = true;\r\n this.spinner.show(false);\r\n } else {\r\n this.messageService.alert(this.translateService.instant('Footer.ErrorWhileFetchingFooterInformation'), true);\r\n this.spinner.show(false);\r\n }\r\n }, () => {\r\n this.messageService.alert(this.translateService.instant('Footer.ErrorWhileFetchingFooterInformation'), true);\r\n this.spinner.show(false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n NavigateToLabsiteInformation(attribute: string)\r\n {\r\n this.helperService.NavigateToLabsiteInformation(attribute);\r\n }\r\n\r\n public getCurrentYear(): number{\r\n return new Date().getFullYear();\r\n }\r\n\r\n public DisplaySocialMediaLinks(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.tiktokUrl) && \r\n (!this.footerInformation.socialMediaLinks?.facebookUrl) && \r\n (!this.footerInformation.socialMediaLinks?.instagramUrl) && \r\n (!this.footerInformation.socialMediaLinks?.youtubeUrl) &&\r\n (!this.footerInformation.socialMediaLinks?.weChatUrl); \r\n }\r\n\r\n public DisplayTiktokLink(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.tiktokUrl); \r\n }\r\n\r\n public DisplayFacebookLink(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.facebookUrl); \r\n }\r\n\r\n public DisplayInstagramLink(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.instagramUrl); \r\n }\r\n\r\n public DisplayYoutubeLink(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.youtubeUrl); \r\n }\r\n\r\n public DisplayWeChatLink(): boolean {\r\n return (!this.footerInformation.socialMediaLinks?.weChatUrl); \r\n }\r\n\r\n public NavigateToUrl(url: string) {\r\n if (this.isBrowser) {\r\n window.open(url, \"_blank\");\r\n }\r\n }\r\n\r\n NavigateToStore(platform: string){\r\n if (platform == \"ios\") {\r\n window.open(this.appSettingService.getIosAppPath, \"_blank\");\r\n }\r\n if (platform == \"android\") {\r\n window.open(this.appSettingService.getAndroidAppPath, \"_blank\");\r\n }\r\n }\r\n\r\n NavigateToICPDetails(){\r\n window.open(this.appSettingService.getICPPath, \"_blank\"); \r\n }\r\n}","\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { GlobalRepositoryService } from '../../../core/repository/global-repository.service';\r\nimport { SpinnerService } from '../../../core/spinner/spinner.service';\r\nimport { LabsiteInformation } from '../../../features/labsiteInformation/labsiteInformation.model';\r\nimport { LabsiteInformationService } from '../../../features/labsiteInformation/labsiteInformation.service';\r\nimport { MessageService } from '../../../main/services/message.service';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'anms-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrls: ['./toolbar.component.scss']\r\n})\r\nexport class ToolbarComponent implements OnInit {\r\n\r\n headerText : any = '';\r\n contentType: string = 'BannerText';\r\n labsiteInformation !: LabsiteInformation;\r\n\r\n constructor(\r\n public translate: TranslateService,\r\n public labsiteInformationService: LabsiteInformationService,\r\n public spinner: SpinnerService,\r\n public globalRepositoryService: GlobalRepositoryService,\r\n public messageService: MessageService,\r\n public translateService: TranslateService,\r\n public sanitized: DomSanitizer\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.getLabsiteInformation(this.contentType);\r\n }\r\n\r\n getLabsiteInformation(contentType: string) {\r\n \r\n const labsiteCode = this.globalRepositoryService.getLabsiteCode();\r\n if (labsiteCode) {\r\n this.spinner.show(true);\r\n if (!this.globalRepositoryService.volunteerEmailId) {\r\n this.labsiteInformationService.getLabsiteInformationFromBlob(this.globalRepositoryService.getLabsiteCode(), contentType).subscribe((response: any) => {\r\n if (response) {\r\n const labsiteInfo: LabsiteInformation = { hasError: false, errorMessage: false, content: response.content};\r\n\r\n this.labsiteInformation = labsiteInfo;\r\n this.headerText = this.sanitized.bypassSecurityTrustHtml(this.labsiteInformation.content);\r\n this.spinner.show(false);\r\n } else {\r\n this.messageService.alert(this.translateService.instant('LabsiteInformation.ErrorWhileFetchingLabsiteInformation'), true);\r\n this.spinner.show(false);\r\n }\r\n }, () => {\r\n this.messageService.alert(this.translateService.instant('LabsiteInformation.ErrorWhileFetchingLabsiteInformation'), true);\r\n this.spinner.show(false);\r\n });\r\n }\r\n else {\r\n this.labsiteInformationService.getLabsiteInformation(this.globalRepositoryService.getLabsiteCode(), contentType).subscribe((response: LabsiteInformation) => {\r\n if (!response.hasError) {\r\n this.labsiteInformation = response;\r\n this.headerText = this.sanitized.bypassSecurityTrustHtml(this.labsiteInformation.content);\r\n this.spinner.show(false);\r\n } else {\r\n this.messageService.alert(this.translateService.instant('TopBarMenu.ErrorWhileFetchingBanner'), true);\r\n this.spinner.show(false);\r\n }\r\n }, () => {\r\n this.messageService.alert(this.translateService.instant('TopBarMenu.ErrorWhileFetchingBanner'), true);\r\n this.spinner.show(false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n transformToCamelCase(value:string): string {\r\n if (value) {\r\n const first = value.substring(0, 1).toLowerCase();\r\n value = first + value.substring(1); \r\n }\r\n return value;\r\n }\r\n \r\n}\r\n","","\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'anms-cookie',\r\n templateUrl: './cookie.component.html'\r\n})\r\nexport class CookieComponent {\r\n @Input() public isShown: boolean = false;\r\n}","
\r\n
\r\n
\r\n
\r\n {{ 'LandingPage.WelcomeText' | translate }}\r\n
\r\n
{{ 'LandingPage.TextBeforeLink' | translate}} {{ 'LandingPage.ClickHereText' | translate}}
\r\n
\r\n
\r\n\r\n
\r\n
{{ 'LandingPage.VolunteerText' | translate}}
\r\n
\r\n
\r\n \r\n
\r\n {{ landingPageImage.labsitename }}\r\n
>
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, OnInit, Output } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Component({\r\n selector: 'anms-landing-page',\r\n templateUrl: './landing-page.component.html',\r\n styleUrls: ['./landing-page.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class LandingPageComponent implements OnInit { \r\n\r\n @Output() valueEmitter: EventEmitter = new EventEmitter();\r\n\r\n landingPageImagesData: any = {};\r\n isLandingPageLoaded = false; \r\n constructor(private http: HttpClient,\r\n private cdr: ChangeDetectorRef, \r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // @ts-ignore \r\n const baseURL = this.router.location._locationStrategy._platformLocation._location.origin;\r\n\r\n this.http.get(baseURL+'/assets/images/landingPageImages/landingPageImagesList.json').subscribe(\r\n (data) => { \r\n this.landingPageImagesData = data; \r\n this.sortData(this.landingPageImagesData);\r\n this.isLandingPageLoaded = true; \r\n this.cdr.detectChanges(); \r\n },\r\n (error) => {\r\n console.error('Error fetching location data:', error);\r\n }\r\n );\r\n } \r\n\r\n sortData(landingPageImagesData: any) {\r\n landingPageImagesData.sort((a: { labsitename: string; }, b: { labsitename: any; }) => {\r\n return a.labsitename.localeCompare(b.labsitename);\r\n });\r\n }\r\n redirectToURL(url: string): void { \r\n this.valueEmitter.emit(url); \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 Eurofins Logo\r\n \r\n \r\n \r\n {{item.label | translate}}\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 Eurofins Logo\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 {{userDetails.name}} \r\n
\r\n
\r\n {{userDetails.email}}
\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\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n Eurofins Logo\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n","import { Location, isPlatformBrowser, registerLocaleData } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit, PLATFORM_ID, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { MatLegacyDialog as MatDialog } from '@angular/material/legacy-dialog';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { Meta, Title } from \"@angular/platform-browser\";\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { MsalBroadcastService, MsalService } from '@azure/msal-angular';\r\nimport { InteractionStatus } from '@azure/msal-browser';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport browser from 'browser-detect';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { environment as env } from '../environments/environment';\r\nimport { ApplicationService } from './app.service';\r\nimport { AppSettingsService, routeAnimations } from './core/core.module';\r\nimport { SliderConfiguration } from './core/models/sliderConfiguration.model';\r\nimport { GlobalRepositoryService } from './core/repository/global-repository.service';\r\nimport { SpinnerService } from './core/spinner/spinner.service';\r\nimport { DisclaimerComponent } from './features/disclaimer/disclaimer.component';\r\nimport { MenuItem } from './main/models/menuitem';\r\nimport { ScreenSizeValue } from './main/models/screenSizeValue';\r\nimport { HelperService } from './main/services/helper.service';\r\nimport { LoaderService } from './main/services/loader.service';\r\nimport { MessageService } from './main/services/message.service';\r\nimport { AppConstants } from './shared/constants/app-constants';\r\nimport { UserLoginService } from './userLogin.service';\r\nimport { LoggingService } from './main/services/logging.service';\r\n\r\n@Component({\r\n selector: 'anms-app',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n animations: [routeAnimations]\r\n})\r\nexport class AppComponent implements OnInit {\r\n isIframe = false;\r\n loginDisplay = false;\r\n userName = '';\r\n private readonly _destroying$ = new Subject();\r\n isProd = env.production;\r\n envName = env.envName;\r\n version = env.versions.app;\r\n public formWidth = '0px';\r\n validLabsite = true;\r\n errorStatusCode: string = '';\r\n isDataLoaded = false;\r\n showCookiePage = false;\r\n userDetails: any;\r\n showAccountDetails: boolean = false;\r\n loadSpinner: boolean = true;\r\n isLandingPageShow = false;\r\n labsitePath: string = '';\r\n\r\n\r\n private IsSilderReadOnly!: boolean;\r\n private formChangesubscription!: Subscription;\r\n private formClosesubscription!: Subscription;\r\n public isFormOnHold = false;\r\n public formMode = 'over';\r\n @ViewChild('dynamic', { static: true, read: ViewContainerRef })\r\n public viewContainerRef!: ViewContainerRef;\r\n @ViewChild('sidenav1') public sidenav!: MatSidenav;\r\n @ViewChild('sidenav2') public sidenav2!: MatSidenav;\r\n formHoldIconStyle: string = '5%';\r\n\r\n languages = ['en', 'de', 'sk', 'fr', 'es', 'pt-br', 'zh-cn', 'he', 'ro', 'zh'];\r\n formHoldIconPositions: ScreenSizeValue[] = [{ screenSize: 'xl', value: '5%' }, { screenSize: 'md', value: '10%' },\r\n { screenSize: 'sm', value: '14%' }, { screenSize: 'xs', value: '23%' }];\r\n\r\n navigation: MenuItem[] = [\r\n {\r\n link: 'home',\r\n label: 'TopBarMenu.Home'\r\n },\r\n {\r\n link: 'labsiteInformation/AboutUsPage',\r\n label: 'TopBarMenu.AboutUs'\r\n },\r\n {\r\n link: 'labsiteInformation/BeAVolunteerPage',\r\n label: 'TopBarMenu.BeAVolunteer'\r\n },\r\n {\r\n link: 'activeStudies',\r\n label: 'TopBarMenu.ActiveStudies'\r\n },\r\n\r\n {\r\n link: 'labsiteInformation/ContactPage',\r\n label: 'TopBarMenu.Contact'\r\n }\r\n ];\r\n\r\n profileNavigation: MenuItem[] = [\r\n {\r\n link: 'profile/myactivity',\r\n label: 'Profile.MyActivity'\r\n },\r\n {\r\n link: 'profile',\r\n label: 'Profile.MyAccount'\r\n }\r\n ];\r\n\r\n stickyHeader$: Observable | undefined;\r\n language$: Observable | undefined;\r\n theme$: Observable | undefined;\r\n isBrowser: boolean;\r\n cacheLocation: string;\r\n\r\n constructor(\r\n private translate: TranslateService,\r\n private authService: MsalService,\r\n private msalBroadcastService: MsalBroadcastService,\r\n private loginService: UserLoginService,\r\n public globalRepository: GlobalRepositoryService,\r\n private loader: LoaderService,\r\n public router: Router,\r\n public messageService: MessageService,\r\n public helperService: HelperService,\r\n private appService: AppSettingsService,\r\n public http: HttpClient,\r\n public dialog: MatDialog,\r\n public location: Location,\r\n private metaService: Meta,\r\n private title: Title,\r\n public globalRepositoryService: GlobalRepositoryService,\r\n public applicationService: ApplicationService,\r\n public spinner: SpinnerService,\r\n private appSettingService: AppSettingsService,\r\n public loggingService: LoggingService,\r\n @Inject(PLATFORM_ID) private platformId: string\r\n ) {\r\n this.isBrowser = isPlatformBrowser(platformId);\r\n this.cacheLocation = this.appSettingService.cache.cacheLocation;\r\n }\r\n\r\n\r\n private static isIEorEdgeOrSafari() {\r\n return ['ie', 'edge', 'safari'].includes(browser().name || '');\r\n }\r\n\r\n async addTag(labsiteCode: string) {\r\n\r\n const url = `${this.appService.publicFileUrl}Files/download/` + labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + AppConstants.Blob.Metadata;\r\n try {\r\n const result: any = await this.http.get(url).toPromise();\r\n if (result) {\r\n this.metaService.addTags(result.MetaTags);\r\n this.setTitle(result.Title);\r\n }\r\n }\r\n catch (e) {\r\n if (this.isBrowser) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n\r\n public setTitle(newTitle: string) {\r\n this.title.setTitle(newTitle);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setTranslation();\r\n if (this.isBrowser) {\r\n this.isIframe = window !== window.parent && !window.opener;\r\n }\r\n this.formChangesubscription = this.loader\r\n .onComponentAdd()\r\n .subscribe((sliderConfig: SliderConfiguration) => {\r\n this.displayDrawer(sliderConfig.Width);\r\n this.IsSilderReadOnly = sliderConfig.IsSilderReadOnly;\r\n });\r\n\r\n this.formClosesubscription = this.loader\r\n .onFormClose()\r\n .subscribe(() => this.closeForm());\r\n this.loader.setRootViewContainerRef(this.viewContainerRef);\r\n this.router.events\r\n .pipe(filter((event) => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this.handleSliderConfirmation();\r\n });\r\n\r\n\r\n\r\n /**\r\n * You can subscribe to MSAL events as shown below. For more info,\r\n * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md\r\n */\r\n this.msalBroadcastService.inProgress$\r\n .pipe(\r\n filter(\r\n (status: InteractionStatus) => status === InteractionStatus.None\r\n ),\r\n takeUntil(this._destroying$)\r\n )\r\n .subscribe(() => {\r\n // clear browser localStorage\r\n if (this.cacheLocation !== 'localStorage') {\r\n for (let i = 0; i < window.localStorage.length; i++) {\r\n const key = window.localStorage.key(i);\r\n if (key?.indexOf('b2clogin') !== -1) {\r\n window.localStorage.removeItem(key as string);\r\n }\r\n }\r\n }\r\n\r\n this.loginDisplay =\r\n this.authService.instance.getAllAccounts().length > 0;\r\n\r\n this.loginService.getUserDetails();\r\n });\r\n this.setScreenWiseConfig();\r\n // @ts-ignore\r\n const labSiteURLCode = this.router.location._basePath.split('/');\r\n if (!!labSiteURLCode && labSiteURLCode.length > 0 && labSiteURLCode != '') {\r\n window.localStorage.setItem('labSiteURLCode', labSiteURLCode[1]);\r\n // @ts-ignore\r\n if (this.router.location._locationStrategy._platformLocation._location.pathname.includes('/cookiePolicyPage')) {\r\n this.loadSpinner = false;\r\n this.showCookiePage = true;\r\n }\r\n else {\r\n this.loadLabsiteByURLConfigs(labSiteURLCode[1]);\r\n }\r\n }\r\n else {\r\n if (this.isBrowser && window.location.href.indexOf('logout') == -1 && window.location.href.indexOf('state') == -1) {\r\n // @ts-ignore \r\n const labsiteURLValue = this.router.location._locationStrategy._platformLocation._location.pathname;\r\n if (labsiteURLValue == '/home' || labsiteURLValue == '/') {\r\n this.isLandingPageShow = true;\r\n this.validLabsite = true;\r\n this.loadSpinner = false;\r\n this.isDataLoaded = false;\r\n }\r\n else {\r\n this.validLabsite = false;\r\n this.loadSpinner = false;\r\n this.errorStatusCode = '404';\r\n this.isDataLoaded = true;\r\n }\r\n }\r\n }\r\n\r\n this.globalRepositoryService\r\n .IsVolunteerCodeModified()\r\n .subscribe((isUpdated) => this.onVolunteerCodeModified(isUpdated));\r\n\r\n this.globalRepositoryService\r\n .IsVolunteerEmailIdModified()\r\n .subscribe((isUpdated) => this.onVolunteerEmailIdModified(isUpdated));\r\n\r\n this.globalRepositoryService.canShowVolunteerAppointmentsSubject.subscribe((canShowVolunteerAppointments: boolean) => {\r\n this.handleMyAppointments(canShowVolunteerAppointments);\r\n });\r\n\r\n this.globalRepositoryService.canShowStudyProductUsageSubject.subscribe((canShowStudyProductUsage: boolean) => {\r\n this.handleMyProductUsageLogs(canShowStudyProductUsage);\r\n });\r\n }\r\n\r\n onVolunteerEmailIdModified(isUpdated: boolean) {\r\n if (isUpdated) {\r\n this.userDetails.email = this.globalRepositoryService.getVolunteerEmailId();\r\n }\r\n }\r\n\r\n naviagteToProfile() {\r\n this.router.navigate(['profile/myactivity']);\r\n }\r\n\r\n onVolunteerCodeModified(isUpdated: boolean) {\r\n if (isUpdated) {\r\n this.getVolunteerDetails();\r\n const labsiteCode = this.globalRepository.getLabsiteCode();\r\n const volunteerId = this.globalRepositoryService.getVolunteerId();\r\n this.canShowProfileTabs(volunteerId, labsiteCode);\r\n }\r\n }\r\n\r\n getVolunteerDetails(): any {\r\n const volunteerId = this.globalRepositoryService.getVolunteerId();\r\n\r\n if (volunteerId !== null && !!volunteerId && volunteerId !== '') {\r\n this.applicationService.getVolunteerInformation(volunteerId)\r\n .subscribe((volunteer: any) => {\r\n this.userDetails = volunteer;\r\n this.showAccountDetails = true;\r\n this.spinner.show(false);\r\n }, () => {\r\n this.spinner.show(false);\r\n });\r\n } else {\r\n this.spinner.show(false);\r\n }\r\n }\r\n\r\n getLabsiteURLConfig(value: string) {\r\n // @ts-ignore \r\n this.router.location._basePath = '/' + value;\r\n // @ts-ignore \r\n this.router.location._locationStrategy._baseHref = '/' + value;\r\n // @ts-ignore \r\n this.router.location._locationStrategy._platformLocation._location.pathname = '/' + value + '/home';\r\n this.isLandingPageShow = false;\r\n this.loadLabsiteByURLConfigs(value);\r\n }\r\n async loadLabsiteByURLConfigs(labSiteURLCode: string) {\r\n\r\n try {\r\n if (!this.globalRepositoryService.volunteerEmailId) {\r\n const requestUrlConfig = `${this.appService.publicFileUrl}Files/download/` + AppConstants.Blob.LabsitesURLConfigFolder + '/' + AppConstants.Blob.LabsitesURLConfigFileName;\r\n const labsitesUrlConfigs: any = await this.http.get(requestUrlConfig).toPromise();\r\n const filteredData = labsitesUrlConfigs?.filter((s: any) => s.labSiteURLParam == labSiteURLCode);\r\n\r\n if (filteredData.length > 0) {\r\n const labsiteCode = filteredData[0].code;\r\n if (this.appService.isPublicWebSiteSyncronizerEnabled) {\r\n this.labsitePath = AppConstants.Blob.LabsiteByPublicSynchronizer;\r\n } else {\r\n this.labsitePath = AppConstants.Blob.LabSite;\r\n }\r\n const requestLabsiteData = `${this.appService.publicFileUrl}Files/download/` + labsiteCode + '/' + AppConstants.Blob.LabSite + '/' + this.labsitePath;\r\n const labsiteData: any = await this.http.get(requestLabsiteData).toPromise();\r\n\r\n this.doLoadLabsiteByURLConfigs(labsiteData);\r\n } else {\r\n this.validLabsite = false;\r\n this.loadSpinner = false;\r\n this.errorStatusCode = '404';\r\n this.isDataLoaded = true;\r\n }\r\n } else {\r\n const url = `${this.appService.baseApiUrlForCore}labsites/GetLabSiteByURLConfigs/` + labSiteURLCode;\r\n const result: any = await this.http.get(url).toPromise();\r\n this.doLoadLabsiteByURLConfigs(result);\r\n }\r\n } catch (exception: any) {\r\n this.messageService.alert(this.translate.instant('ErrorWhileLoadingLabSiteDetails'), true, 10000, true, '', exception.message);\r\n }\r\n }\r\n\r\n doLoadLabsiteByURLConfigs(labsiteData: any) {\r\n if (labsiteData) {\r\n this.addTag(labsiteData.code);\r\n this.globalRepository.setLabsiteDetails(labsiteData);\r\n this.globalRepository.setLabsiteCode(labsiteData.code);\r\n this.globalRepository.setLabsitePrefixCode(labsiteData.prefixCode);\r\n if (this.isBrowser) {\r\n window.localStorage.setItem('labSiteCode', labsiteData.code);\r\n window.localStorage.setItem('labSiteDetails', JSON.stringify(labsiteData));\r\n }\r\n this.CanShowNewsLink(labsiteData.isNewsPageUsed); \r\n this.LoadLabsiteTextForPublicWebsite(labsiteData.code);\r\n this.validLabsite = true;\r\n this.isDataLoaded = true;\r\n } else if (!labsiteData) {\r\n this.validLabsite = false;\r\n this.loadSpinner = false;\r\n this.errorStatusCode = '404';\r\n this.isDataLoaded = true;\r\n\r\n } else {\r\n this.messageService.alert(this.translate.instant('ErrorWhileFetchingLabSiteDetails') + labsiteData.errorMessage, true);\r\n }\r\n }\r\n\r\n private async LoadLabsiteTextForPublicWebsite(labsiteCode: string){\r\n try{\r\n const requestLabsiteText = `${this.appService.publicFileUrl}Files/download/` + AppConstants.Blob.LabSiteTextFolder + '/' + AppConstants.Blob.LabSiteTextFileName;\r\n const labsitesTextForLabsite: any = await this.http.get(requestLabsiteText).toPromise(); \r\n const filteredLabsiteText = labsitesTextForLabsite?.filter((s: any) => s.code == labsiteCode); \r\n \r\n if (filteredLabsiteText.length > 0) { \r\n this.globalRepository.setDisclaimersIntroductionText(encodeURIComponent(filteredLabsiteText[0].disclaimersIntroductionText)); \r\n this.globalRepository.setRegistrationVisitDescriptionText(encodeURIComponent(filteredLabsiteText[0].registrationVisitDescriptionText)); \r\n } \r\n } catch(error){\r\n this.loggingService.logTrace('Error while fetching the disclaimer and registration visit text from blob');\r\n }\r\n \r\n }\r\n private CanShowNewsLink(isNewsPageShowed: boolean) {\r\n if (isNewsPageShowed) {\r\n this.navigation.splice(4, 0,\r\n {\r\n link: 'newsPageInformation',\r\n label: 'TopBarMenu.News'\r\n\r\n });\r\n }\r\n }\r\n\r\n private canShowProfileTabs(volunteerCode: string, labsiteCode: string) {\r\n this.spinner.show(true);\r\n this.applicationService.canShowProfileTabs(volunteerCode, labsiteCode)\r\n .subscribe((canShowProfileTabs: any) => {\r\n this.globalRepositoryService.setCanShowVolunteerAppointments(canShowProfileTabs?.canShowVolunteerAppointmentTab);\r\n this.globalRepositoryService.setCanShowStudyProductUsage(canShowProfileTabs?.canShowProductUsageTab);\r\n this.spinner.show(false);\r\n }, () => {\r\n this.spinner.show(false);\r\n });\r\n }\r\n\r\n private handleMyAppointments(canShowVolunteerAppointments: boolean) {\r\n const myAppointmentLinks = 'profile/myappointments';\r\n const existingItem = this.profileNavigation.find(item => item.link === myAppointmentLinks);\r\n if (canShowVolunteerAppointments) {\r\n if (!existingItem) {\r\n this.profileNavigation.splice(1, 0, {\r\n link: myAppointmentLinks,\r\n label: 'Profile.MyAppointments'\r\n });\r\n }\r\n } else {\r\n const indexToRemove = this.profileNavigation.findIndex(item => item.link === myAppointmentLinks);\r\n if (indexToRemove !== -1) {\r\n this.profileNavigation.splice(indexToRemove, 1);\r\n }\r\n }\r\n }\r\n\r\n private handleMyProductUsageLogs(canShowStudyProductUsage: boolean) {\r\n const myProductUsageLinks = 'profile/myproductusagelog';\r\n const existingItem = this.profileNavigation.find(item => item.link === myProductUsageLinks);\r\n if (canShowStudyProductUsage) {\r\n if (!existingItem) {\r\n this.profileNavigation.splice(2, 0, {\r\n link: myProductUsageLinks,\r\n label: 'Profile.MyProductUsageLog'\r\n });\r\n }\r\n } else {\r\n const indexToRemove = this.profileNavigation.findIndex(item => item.link === myProductUsageLinks);\r\n if (indexToRemove !== -1) {\r\n this.profileNavigation.splice(indexToRemove, 1);\r\n }\r\n }\r\n }\r\n\r\n onLoginClick() {\r\n this.loginService.onLoginClick();\r\n }\r\n\r\n onLogoutClick() {\r\n this.loginService.onLogoutClick();\r\n }\r\n\r\n onSignUpClick() {\r\n const dialogRef = this.dialog.open(DisclaimerComponent, {\r\n data: {\r\n },\r\n autoFocus: false,\r\n disableClose: true\r\n });\r\n dialogRef.afterClosed().subscribe(popupResponse => {\r\n if (popupResponse == true) {\r\n this.loginService.onSignUpClick();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._destroying$.next(undefined);\r\n this._destroying$.complete();\r\n }\r\n\r\n setTranslation() {\r\n this.translate.addLangs(['en', 'fr', 'de', 'es', 'it', 'pl', 'ro', 'zh']);\r\n const browserLang = this.translate.getBrowserLang();\r\n if (this.isBrowser) {\r\n this.translate.use(browserLang.match(/en|fr|de|es|it|pl|ro|zh/) ? browserLang : 'en');\r\n }\r\n if (navigator && navigator.language && navigator.language === 'en-US') {\r\n this.translate.use('en-US');\r\n }\r\n this.localeInitializer().then((m) => m)\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n async localeInitializer(): Promise {\r\n const browserLang = this.translate.getBrowserLang();\r\n // For getting only 'en' from 'en-US'\r\n let localeId = 'en';\r\n if (this.isBrowser) {\r\n localeId = browserLang.match(/en|fr|de|es|it|pl|ro|zh/) ? browserLang : 'en';\r\n }\r\n\r\n // Do not remove the comment, it's called 'magic comment' used for loading less chunks of module\r\n return await import(\r\n /* webpackInclude: /(en|fr|de|es|it|pl|ro|zh)\\.mjs/ */\r\n /* webpackChunkName: \"i18n-locales\" */\r\n `@/../@angular/common/locales/${localeId}.mjs`\r\n ).then(module => registerLocaleData(module.default)\r\n );\r\n }\r\n\r\n /** Method to show Confirmation Dialog based on Slider Window status after Navigation */\r\n private handleSliderConfirmation(): void {\r\n if (this.loader.isSliderEdited() || this.loader.IsDataEdited()) {\r\n this.messageService.doConfirmationForUnsavedChanges(\r\n this.processPopupConfirmation\r\n );\r\n }\r\n }\r\n\r\n /** Method to handle the confirmation popup response */\r\n processPopupConfirmation = (actionResult: boolean): void => {\r\n if (actionResult) {\r\n this.loader.cancelForm();\r\n this.loader.setIsDataEdited(false);\r\n this.isFormOnHold = false;\r\n } else {\r\n this.loader.openSlider();\r\n }\r\n }\r\n\r\n /**This method is called on backdrop click of the slider */\r\n public onBackdropClick(): void {\r\n this.updateSliderDisplay();\r\n }\r\n\r\n /**This method is handle Slider Window display When escape key is used on Slider */\r\n public onEscape(): void {\r\n this.updateSliderDisplay();\r\n }\r\n\r\n /* #region Private Methods */\r\n /** This method is to check if the slider type is Readonly or editable */\r\n private updateSliderDisplay(): void {\r\n if (this.IsSilderReadOnly) {\r\n this.closeForm();\r\n this.isFormOnHold = false;\r\n } else {\r\n if (this.loader.isSliderEdited() || this.loader.IsDataEdited()) {\r\n this.isFormOnHold = true;\r\n } else {\r\n this.closeForm();\r\n this.isFormOnHold = false;\r\n }\r\n }\r\n }\r\n\r\n /** Method to open Slider Window on Click of form hold icon */\r\n public onHoldForm(): void {\r\n this.sidenav2.open();\r\n this.isFormOnHold = false;\r\n }\r\n\r\n /** Method to open Slider window */\r\n private displayDrawer(width: any): void {\r\n if (width.toString().includes('%')) {\r\n this.formWidth = width;\r\n } else {\r\n this.formWidth = width + 'px';\r\n }\r\n this.sidenav2.open();\r\n this.isFormOnHold = false;\r\n }\r\n\r\n /** Method to close Slider window */\r\n private closeForm(): void {\r\n this.sidenav2.close();\r\n this.isFormOnHold = false;\r\n }\r\n\r\n setScreenWiseConfig() {\r\n this.helperService.GetMediaType();\r\n this.helperService.getScreenSize().subscribe(x => {\r\n const style = this.helperService.getScreenSizeValue(this.formHoldIconPositions, x);\r\n if (style) {\r\n this.formHoldIconStyle = style;\r\n }\r\n });\r\n }\r\n\r\n getLabsiteCodeByURLConfig() {\r\n this.spinner.show(true);\r\n }\r\n}\r\n","import { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { IPublicClientApplication, PublicClientApplication, LogLevel } from '@azure/msal-browser';\r\nimport {\r\n MsalGuard, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService,\r\n MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration,\r\n MsalInterceptor,\r\n ProtectedResourceScopes\r\n} from '@azure/msal-angular';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport {ConfigService} from './core/config/config.service';\r\n\r\nconst URLs = [\r\n \"VolunteerServiceUrl\",\r\n \"RecruitmentServiceUrl\",\r\n \"SurveyServiceUrl\",\r\n \"CoreServiceUrl\",\r\n \"QueryServiceUrl\",\r\n \"VisitServiceUrl\"\r\n]\r\n\r\nconst API = '/api/';\r\n\r\nexport function initializerFactory(env: ConfigService): any {\r\n const promise = env.getSettings().then(() => {\r\n console.log('finished getting configurations dynamically.');\r\n });\r\n return () => promise;\r\n}\r\n\r\n// const isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1; // Remove this line to use Angular Universal\r\n\r\nexport function loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n}\r\n\r\nexport function MSALInstanceFactory(config: ConfigService): IPublicClientApplication {\r\n return new PublicClientApplication({\r\n auth: config.getSettingsForKey('auth'),\r\n cache: config.getSettingsForKey('cache'),\r\n system: {\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function MSALInterceptorConfigFactory(config: ConfigService): MsalInterceptorConfiguration {\r\n let protectedResourceMap = new Map | null>();\r\n const apiScope = config.getSettingsForKey('interceptor').apiAccessScope;\r\n\r\n // Must be added at the end.\r\n protectedResourceMap = ConfigureProtectedResource(protectedResourceMap, config, apiScope);\r\n\r\n return {\r\n interactionType: config.getSettingsForKey('interceptor').interactionType,\r\n protectedResourceMap\r\n };\r\n}\r\n\r\nfunction ConfigureProtectedResource(protectedResourceMap: Map, config: ConfigService, apiScope: any) {\r\n // Add scope to configure protected resource\r\n URLs.forEach(key => {\r\n protectedResourceMap.set(getUrlForKey(key, config), apiScope);\r\n });\r\n\r\n return protectedResourceMap;\r\n}\r\n\r\nfunction getUrlForKey(key: string, config: ConfigService): string {\r\n return config.getSettingsForKey('ConfigSettings.' + key) + API;\r\n}\r\n\r\n\r\nexport function MSALGuardConfigFactory(config: ConfigService): MsalGuardConfiguration {\r\n return {\r\n interactionType: config.getSettingsForKey('interactionType'),\r\n authRequest: config.getSettingsForKey('authRequest'),\r\n loginFailedRoute: config.getSettingsForKey('loginFailedRoute')\r\n };\r\n}\r\n\r\n@NgModule({\r\n providers: [],\r\n imports: [MsalModule]\r\n})\r\nexport class MsalConfigDynamicModule {\r\n\r\n static forRoot() {\r\n return {\r\n ngModule: MsalConfigDynamicModule,\r\n providers: [\r\n ConfigService,\r\n {\r\n provide: APP_INITIALIZER, useFactory: initializerFactory,\r\n deps: [ConfigService], multi: true\r\n },\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory,\r\n deps: [ConfigService]\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useFactory: MSALInterceptorConfigFactory,\r\n deps: [ConfigService]\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { APP_BASE_HREF, isPlatformBrowser } from '@angular/common';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { LOCALE_ID, NgModule, PLATFORM_ID } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatLegacyButtonModule as MatButtonModule } from '@angular/material/legacy-button';\r\nimport { MatLegacyListModule as MatListModule } from '@angular/material/legacy-list';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { MsalRedirectComponent } from '@azure/msal-angular';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { MultiTranslateHttpLoader } from 'ngx-translate-multi-http-loader';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { CoreModule } from './core/core.module';\r\nimport { CookieComponent } from './features/cookie/cookie.component';\r\nimport { DisclaimerComponent } from './features/disclaimer/disclaimer.component';\r\nimport { FooterComponent } from './main/layout/footer/footer.component';\r\nimport { SliderComponent } from './main/layout/slider/slider.component';\r\nimport { ToolbarComponent } from './main/layout/toolbar/toolbar.component';\r\nimport { MsalConfigDynamicModule } from './msal-config-dynamic.module';\r\nimport { MaterialModule } from './shared/material.module';\r\nimport { SharedModule } from './shared/shared.module';\r\nimport { LandingPageComponent } from './features/landing-page/landing-page.component';\r\n\r\nexport function createTranslateLoader(httpClient: HttpClient, platformId: string) {\r\n const translateLoader = isPlatformBrowser(platformId) ? new MultiTranslateHttpLoader(httpClient, [\r\n { prefix: '../assets/i18n/combinedTranslations/', suffix: '.json?v=' + new Date().getTime()}\r\n ]) : new MultiTranslateHttpLoader(httpClient, [\r\n ]);\r\n return translateLoader;\r\n}\r\n//const subdomain: any = window.location.pathname;\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n FooterComponent, ToolbarComponent, SliderComponent, DisclaimerComponent, CookieComponent, LandingPageComponent\r\n\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'serverApp' }),\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n CoreModule,\r\n MaterialModule,\r\n MatButtonModule,\r\n MatToolbarModule,\r\n MatListModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n SharedModule,\r\n MatNativeDateModule,\r\n ToastrModule.forRoot(),\r\n TranslateModule.forRoot({\r\n loader: {\r\n provide: TranslateLoader,\r\n useFactory: createTranslateLoader,\r\n deps: [HttpClient, PLATFORM_ID]\r\n }\r\n }),\r\n HttpClientModule,\r\n MsalConfigDynamicModule.forRoot(),\r\n FlexLayoutModule.withConfig({ ssrObserveBreakpoints: ['xs', 'lt-md', 'gt-md'] })\r\n ],\r\n providers: [\r\n { provide: LOCALE_ID, useFactory: GetLocalLang, deps: [PLATFORM_ID] },\r\n { provide: APP_BASE_HREF, useFactory: GetLabSiteURL, deps: [PLATFORM_ID] }\r\n ],\r\n bootstrap: [AppComponent, MsalRedirectComponent]\r\n})\r\nexport class AppModule { }\r\n\r\nexport function GetLocalLang(platformId: string) {\r\n if (isPlatformBrowser(platformId)) {\r\n return navigator.language.match(/en|fr|de|es|it|pl|ro/) ? navigator.language : 'en';\r\n }\r\n}\r\n\r\n\r\nexport function GetLabSiteURL(platformId: string) {\r\n if (isPlatformBrowser(platformId)) {\r\n const subdomain: any = window.location.pathname;\r\n return subdomain.split('/')[1].indexOf('-')>=0 ? '/'+subdomain.split('/')[1] : '/'\r\n }\r\n \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\nfunction bootstrap() {\r\n platformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n}\r\n\r\n\r\nif (document.readyState === 'complete') {\r\n bootstrap();\r\n} else {\r\n document.addEventListener('DOMContentLoaded', bootstrap);\r\n}\r\n\r\n","var map = {\n\t\"./de.mjs\": [\n\t\t8855,\n\t\t\"i18n-locales0\"\n\t],\n\t\"./en.mjs\": [\n\t\t9137,\n\t\t\"i18n-locales1\"\n\t],\n\t\"./es.mjs\": [\n\t\t2403,\n\t\t\"i18n-locales2\"\n\t],\n\t\"./extra/de.mjs\": [\n\t\t7470,\n\t\t\"i18n-locales3\"\n\t],\n\t\"./extra/en.mjs\": [\n\t\t2450,\n\t\t\"i18n-locales4\"\n\t],\n\t\"./extra/es.mjs\": [\n\t\t3835,\n\t\t\"i18n-locales5\"\n\t],\n\t\"./extra/fr.mjs\": [\n\t\t9744,\n\t\t\"i18n-locales6\"\n\t],\n\t\"./extra/it.mjs\": [\n\t\t3282,\n\t\t\"i18n-locales7\"\n\t],\n\t\"./extra/kde.mjs\": [\n\t\t6961,\n\t\t\"i18n-locales8\"\n\t],\n\t\"./extra/pl.mjs\": [\n\t\t6468,\n\t\t\"i18n-locales9\"\n\t],\n\t\"./extra/ro.mjs\": [\n\t\t3496,\n\t\t\"i18n-locales10\"\n\t],\n\t\"./extra/ses.mjs\": [\n\t\t6577,\n\t\t\"i18n-locales11\"\n\t],\n\t\"./extra/zh.mjs\": [\n\t\t9234,\n\t\t\"i18n-locales12\"\n\t],\n\t\"./fr.mjs\": [\n\t\t8384,\n\t\t\"i18n-locales13\"\n\t],\n\t\"./it.mjs\": [\n\t\t4129,\n\t\t\"i18n-locales14\"\n\t],\n\t\"./kde.mjs\": [\n\t\t8481,\n\t\t\"i18n-locales15\"\n\t],\n\t\"./pl.mjs\": [\n\t\t1499,\n\t\t\"i18n-locales16\"\n\t],\n\t\"./ro.mjs\": [\n\t\t5040,\n\t\t\"i18n-locales17\"\n\t],\n\t\"./ses.mjs\": [\n\t\t3640,\n\t\t\"i18n-locales18\"\n\t],\n\t\"./zh.mjs\": [\n\t\t8537,\n\t\t\"i18n-locales19\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 72;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./af\": 8685,\n\t\"./af.js\": 8685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 2614,\n\t\"./ar-kw.js\": 2614,\n\t\"./ar-ly\": 8630,\n\t\"./ar-ly.js\": 8630,\n\t\"./ar-ma\": 8674,\n\t\"./ar-ma.js\": 8674,\n\t\"./ar-ps\": 6235,\n\t\"./ar-ps.js\": 6235,\n\t\"./ar-sa\": 9032,\n\t\"./ar-sa.js\": 9032,\n\t\"./ar-tn\": 4730,\n\t\"./ar-tn.js\": 4730,\n\t\"./ar.js\": 254,\n\t\"./az\": 3052,\n\t\"./az.js\": 3052,\n\t\"./be\": 150,\n\t\"./be.js\": 150,\n\t\"./bg\": 3069,\n\t\"./bg.js\": 3069,\n\t\"./bm\": 3466,\n\t\"./bm.js\": 3466,\n\t\"./bn\": 8516,\n\t\"./bn-bd\": 557,\n\t\"./bn-bd.js\": 557,\n\t\"./bn.js\": 8516,\n\t\"./bo\": 6273,\n\t\"./bo.js\": 6273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 9815,\n\t\"./bs.js\": 9815,\n\t\"./ca\": 3331,\n\t\"./ca.js\": 3331,\n\t\"./cs\": 1320,\n\t\"./cs.js\": 1320,\n\t\"./cv\": 2219,\n\t\"./cv.js\": 2219,\n\t\"./cy\": 8266,\n\t\"./cy.js\": 8266,\n\t\"./da\": 6427,\n\t\"./da.js\": 6427,\n\t\"./de\": 7435,\n\t\"./de-at\": 2871,\n\t\"./de-at.js\": 2871,\n\t\"./de-ch\": 2994,\n\t\"./de-ch.js\": 2994,\n\t\"./de.js\": 7435,\n\t\"./dv\": 2357,\n\t\"./dv.js\": 2357,\n\t\"./el\": 5649,\n\t\"./el.js\": 5649,\n\t\"./en-au\": 9961,\n\t\"./en-au.js\": 9961,\n\t\"./en-ca\": 9878,\n\t\"./en-ca.js\": 9878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 864,\n\t\"./en-ie.js\": 864,\n\t\"./en-il\": 1579,\n\t\"./en-il.js\": 1579,\n\t\"./en-in\": 940,\n\t\"./en-in.js\": 940,\n\t\"./en-nz\": 6181,\n\t\"./en-nz.js\": 6181,\n\t\"./en-sg\": 4301,\n\t\"./en-sg.js\": 4301,\n\t\"./eo\": 5291,\n\t\"./eo.js\": 5291,\n\t\"./es\": 4529,\n\t\"./es-do\": 3764,\n\t\"./es-do.js\": 3764,\n\t\"./es-mx\": 2584,\n\t\"./es-mx.js\": 2584,\n\t\"./es-us\": 3425,\n\t\"./es-us.js\": 3425,\n\t\"./es.js\": 4529,\n\t\"./et\": 5203,\n\t\"./et.js\": 5203,\n\t\"./eu\": 678,\n\t\"./eu.js\": 678,\n\t\"./fa\": 3483,\n\t\"./fa.js\": 3483,\n\t\"./fi\": 6262,\n\t\"./fi.js\": 6262,\n\t\"./fil\": 2521,\n\t\"./fil.js\": 2521,\n\t\"./fo\": 4555,\n\t\"./fo.js\": 4555,\n\t\"./fr\": 3131,\n\t\"./fr-ca\": 8239,\n\t\"./fr-ca.js\": 8239,\n\t\"./fr-ch\": 1702,\n\t\"./fr-ch.js\": 1702,\n\t\"./fr.js\": 3131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 3821,\n\t\"./ga.js\": 3821,\n\t\"./gd\": 1753,\n\t\"./gd.js\": 1753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 2762,\n\t\"./gom-deva.js\": 2762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 2809,\n\t\"./gu.js\": 2809,\n\t\"./he\": 5402,\n\t\"./he.js\": 5402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 410,\n\t\"./hr.js\": 410,\n\t\"./hu\": 8288,\n\t\"./hu.js\": 8288,\n\t\"./hy-am\": 8999,\n\t\"./hy-am.js\": 8999,\n\t\"./id\": 1334,\n\t\"./id.js\": 1334,\n\t\"./is\": 6959,\n\t\"./is.js\": 6959,\n\t\"./it\": 4864,\n\t\"./it-ch\": 1124,\n\t\"./it-ch.js\": 1124,\n\t\"./it.js\": 4864,\n\t\"./ja\": 6141,\n\t\"./ja.js\": 6141,\n\t\"./jv\": 9187,\n\t\"./jv.js\": 9187,\n\t\"./ka\": 2136,\n\t\"./ka.js\": 2136,\n\t\"./kk\": 4332,\n\t\"./kk.js\": 4332,\n\t\"./km\": 8607,\n\t\"./km.js\": 8607,\n\t\"./kn\": 4305,\n\t\"./kn.js\": 4305,\n\t\"./ko\": 234,\n\t\"./ko.js\": 234,\n\t\"./ku\": 6003,\n\t\"./ku-kmr\": 9619,\n\t\"./ku-kmr.js\": 9619,\n\t\"./ku.js\": 6003,\n\t\"./ky\": 5061,\n\t\"./ky.js\": 5061,\n\t\"./lb\": 2786,\n\t\"./lb.js\": 2786,\n\t\"./lo\": 6183,\n\t\"./lo.js\": 6183,\n\t\"./lt\": 29,\n\t\"./lt.js\": 29,\n\t\"./lv\": 4169,\n\t\"./lv.js\": 4169,\n\t\"./me\": 8577,\n\t\"./me.js\": 8577,\n\t\"./mi\": 8177,\n\t\"./mi.js\": 8177,\n\t\"./mk\": 337,\n\t\"./mk.js\": 337,\n\t\"./ml\": 5260,\n\t\"./ml.js\": 5260,\n\t\"./mn\": 2325,\n\t\"./mn.js\": 2325,\n\t\"./mr\": 4695,\n\t\"./mr.js\": 4695,\n\t\"./ms\": 5334,\n\t\"./ms-my\": 7151,\n\t\"./ms-my.js\": 7151,\n\t\"./ms.js\": 5334,\n\t\"./mt\": 3570,\n\t\"./mt.js\": 3570,\n\t\"./my\": 7963,\n\t\"./my.js\": 7963,\n\t\"./nb\": 8028,\n\t\"./nb.js\": 8028,\n\t\"./ne\": 6638,\n\t\"./ne.js\": 6638,\n\t\"./nl\": 302,\n\t\"./nl-be\": 6782,\n\t\"./nl-be.js\": 6782,\n\t\"./nl.js\": 302,\n\t\"./nn\": 3501,\n\t\"./nn.js\": 3501,\n\t\"./oc-lnc\": 563,\n\t\"./oc-lnc.js\": 563,\n\t\"./pa-in\": 869,\n\t\"./pa-in.js\": 869,\n\t\"./pl\": 5302,\n\t\"./pl.js\": 5302,\n\t\"./pt\": 9687,\n\t\"./pt-br\": 4884,\n\t\"./pt-br.js\": 4884,\n\t\"./pt.js\": 9687,\n\t\"./ro\": 9107,\n\t\"./ro.js\": 9107,\n\t\"./ru\": 3627,\n\t\"./ru.js\": 3627,\n\t\"./sd\": 355,\n\t\"./sd.js\": 355,\n\t\"./se\": 3427,\n\t\"./se.js\": 3427,\n\t\"./si\": 1848,\n\t\"./si.js\": 1848,\n\t\"./sk\": 4590,\n\t\"./sk.js\": 4590,\n\t\"./sl\": 184,\n\t\"./sl.js\": 184,\n\t\"./sq\": 6361,\n\t\"./sq.js\": 6361,\n\t\"./sr\": 8965,\n\t\"./sr-cyrl\": 1287,\n\t\"./sr-cyrl.js\": 1287,\n\t\"./sr.js\": 8965,\n\t\"./ss\": 5456,\n\t\"./ss.js\": 5456,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 7558,\n\t\"./sw.js\": 7558,\n\t\"./ta\": 2702,\n\t\"./ta.js\": 2702,\n\t\"./te\": 3693,\n\t\"./te.js\": 3693,\n\t\"./tet\": 1243,\n\t\"./tet.js\": 1243,\n\t\"./tg\": 2500,\n\t\"./tg.js\": 2500,\n\t\"./th\": 5768,\n\t\"./th.js\": 5768,\n\t\"./tk\": 7761,\n\t\"./tk.js\": 7761,\n\t\"./tl-ph\": 5780,\n\t\"./tl-ph.js\": 5780,\n\t\"./tlh\": 9590,\n\t\"./tlh.js\": 9590,\n\t\"./tr\": 3807,\n\t\"./tr.js\": 3807,\n\t\"./tzl\": 3857,\n\t\"./tzl.js\": 3857,\n\t\"./tzm\": 654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 654,\n\t\"./ug-cn\": 845,\n\t\"./ug-cn.js\": 845,\n\t\"./uk\": 9232,\n\t\"./uk.js\": 9232,\n\t\"./ur\": 7052,\n\t\"./ur.js\": 7052,\n\t\"./uz\": 7967,\n\t\"./uz-latn\": 2233,\n\t\"./uz-latn.js\": 2233,\n\t\"./uz.js\": 7967,\n\t\"./vi\": 8615,\n\t\"./vi.js\": 8615,\n\t\"./x-pseudo\": 2320,\n\t\"./x-pseudo.js\": 2320,\n\t\"./yo\": 1313,\n\t\"./yo.js\": 1313,\n\t\"./zh-cn\": 4490,\n\t\"./zh-cn.js\": 4490,\n\t\"./zh-hk\": 5910,\n\t\"./zh-hk.js\": 5910,\n\t\"./zh-mo\": 8262,\n\t\"./zh-mo.js\": 8262,\n\t\"./zh-tw\": 4223,\n\t\"./zh-tw.js\": 4223\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 = 6700;"],"x_google_ignoreList":[50,51]}