{"version":3,"file":"main.js","mappings":"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uDAAAA,CAAAA,qFAAAA,GAAAA,uDAAAA,CAAAA,iEAAAA;AAAA;;;SAAvBuF;AAAuBga,WAAvBha,uBAAuB;AAAAia,cAFpB;;;;;;;;;;;;;;;;;;;;;ACXhB;AACA;AACA;AAEO,IAAMha,WAAW,GAAG;AACzBc,YAAU,EAAE;AADa,CAApB;AAIA,IAAM20B,cAAc,GAAG;AAC5BC,QAAM,EAAE,yCADoB;AAE5BC,YAAU,EAAE,4BAFgB;AAG5BC,aAAW,EAAE,mCAHe;AAI5BC,WAAS,EAAE,YAJiB;AAK5BC,eAAa,EAAE,wBALa;AAM5BC,mBAAiB,EAAE,cANS;AAO5BC,OAAK,EAAE;AAPqB,CAAvB,EAUP;;AACO,IAAMphB,WAAW,GAAG,gCAApB;AACA,IAAMyO,iBAAiB,GAAGzO,WAAW,GAAG,kBAAxC;AACA,IAAMxL,YAAY,GAAG,4BAArB;AACA,IAAM6Q,QAAQ,GAAG,EAAjB;AAEP;;;;;;;AAOA;;;;;;;;;;;;;;;;;AC/BA;AAEA;AACA;;AAEA,IAAIja,6EAAJ,EAA4B;AAC1Bi2B,EAAAA,6DAAc;AACf;;AAEDC,sEAAAA,GAAyBC,eAAzB,CAAyCh2B,sDAAzC,EACG6X,KADH;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA,wCAAwC;AACxC;AACA;;;;;;;;;;ACvRA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/chat/chat.component.ts","./src/app/components/chat/chat.component.html","./src/app/components/components.module.ts","./src/app/components/dialogs/buddypopup/buddy-popup.component.ts","./src/app/components/dialogs/buddypopup/buddy-popup.component.html","./src/app/components/dialogs/chat-information/chat-information.component.ts","./src/app/components/dialogs/chat-information/chat-information.component.html","./src/app/components/dialogs/delete-account/delete-account.component.ts","./src/app/components/dialogs/delete-account/delete-account.component.html","./src/app/components/dialogs/feedback/feedback.component.ts","./src/app/components/dialogs/feedback/feedback.component.html","./src/app/components/dialogs/technicalsupport/technical-support.component.ts","./src/app/components/dialogs/technicalsupport/technical-support.component.html","./src/app/components/dialogs/unlockpopup/unlock-popup.component.ts","./src/app/components/dialogs/unlockpopup/unlock-popup.component.html","./src/app/components/elements/Block/block.component.ts","./src/app/components/elements/Block/block.component.html","./src/app/components/elements/Element/element.component.ts","./src/app/components/elements/Element/element.component.html","./src/app/components/elements/Element_.ts","./src/app/components/elements/Headline/headline.component.ts","./src/app/components/elements/Headline/headline.component.html","./src/app/components/elements/Line/line.component.ts","./src/app/components/elements/Line/line.component.html","./src/app/components/elements/Media/media.component.ts","./src/app/components/elements/Media/media.component.html","./src/app/components/elements/Question.ts","./src/app/components/elements/QuestionDate/text-date.component.ts","./src/app/components/elements/QuestionDate/text-date.component.html","./src/app/components/elements/QuestionMultipleChoice/multiple-choice.component.ts","./src/app/components/elements/QuestionMultipleChoice/multiple-choice.component.html","./src/app/components/elements/QuestionSingleChoice/single-choice.component.ts","./src/app/components/elements/QuestionSingleChoice/single-choice.component.html","./src/app/components/elements/QuestionSlider/slider.component.ts","./src/app/components/elements/QuestionSlider/slider.component.html","./src/app/components/elements/QuestionTable/questiontable.component.ts","./src/app/components/elements/QuestionTable/questiontable.component.html","./src/app/components/elements/QuestionTextArea/text-area.component.ts","./src/app/components/elements/QuestionTextArea/text-area.component.html","./src/app/components/elements/QuestionTextString/text-string.component.ts","./src/app/components/elements/QuestionTextString/text-string.component.html","./src/app/components/elements/QuestionYesNo/yes-no.component.ts","./src/app/components/elements/QuestionYesNo/yes-no.component.html","./src/app/components/elements/Space/space.component.ts","./src/app/components/elements/Space/space.component.html","./src/app/components/elements/Text/text.component.ts","./src/app/components/elements/Text/text.component.html","./src/app/components/header/header.component.ts","./src/app/components/header/header.component.html","./src/app/components/progress/text-progress-bar/text-progress-bar.component.ts","./src/app/components/progress/text-progress-bar/text-progress-bar.component.html","./src/app/directives/directives.module.ts","./src/app/directives/scrollbar-theme.directive.ts","./src/app/guards/auth.guard.ts","./src/app/guards/skill-feature.guard.ts","./src/app/guards/webapp.guard.ts","./src/app/models/Activity.ts","./src/app/models/Announcement.ts","./src/app/models/Answersheet.ts","./src/app/models/Diary.ts","./src/app/models/DiaryInstance.ts","./src/app/models/Instance.ts","./src/app/models/Intervention.ts","./src/app/models/Invitation.ts","./src/app/models/Lesson.ts","./src/app/models/Message.ts","./src/app/models/Skill.ts","./src/app/models/Thread.ts","./src/app/models/User.ts","./src/app/models/elements/BlockModel.ts","./src/app/models/elements/ElementModel.ts","./src/app/models/elements/Enums.ts","./src/app/models/elements/HeadlineModel.ts","./src/app/models/elements/LineModel.ts","./src/app/models/elements/MediaModel.ts","./src/app/models/elements/PageModel.ts","./src/app/models/elements/QuestionDateModel.ts","./src/app/models/elements/QuestionModel.ts","./src/app/models/elements/QuestionMultipleChoiceModel.ts","./src/app/models/elements/QuestionSingleChoiceModel.ts","./src/app/models/elements/QuestionSliderModel.ts","./src/app/models/elements/QuestionTableModel.ts","./src/app/models/elements/QuestionTextAreaModel.ts","./src/app/models/elements/QuestionTextStringModel.ts","./src/app/models/elements/QuestionYesNoModel.ts","./src/app/models/elements/SpaceModel.ts","./src/app/models/elements/TextModel.ts","./src/app/providers/alert/alert.service.ts","./src/app/providers/firebase/firebase.service.ts","./src/app/providers/helper/helper.service.ts","./src/app/providers/local-storage/local-storage.service.ts","./src/app/providers/parser/parser.service.ts","./src/app/providers/request-provider/request-provider.service.ts","./src/app/providers/token-interceptor/token-interceptor.service.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","ignored|/builds/aas2/aas2-ionic/Patientenmodul/node_modules/bcryptjs/dist|crypto"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuard } from './guards/auth.guard';\r\nimport { WebAppGuard } from './guards/webapp.guard';\r\nimport { SkillFeatureGuard } from './guards/skill-feature.guard';\r\n\r\nconst routes: Routes = [\r\n { path: '', loadChildren: () => import('./pages/landing/landing.module').then(m => m.LandingPageModule), canActivate: [WebAppGuard] },\r\n { path: 'landing', loadChildren: () => import('./pages/landing/landing.module').then(m => m.LandingPageModule), canActivate: [WebAppGuard] },\r\n { path: 'login', loadChildren: () => import('./pages/login/login.module').then(m => m.LoginPageModule), canActivate: [WebAppGuard] },\r\n { path: 'forgot-password', loadChildren: () => import('./pages/forgot-password/forgot-password.module').then(m => m.ForgotPasswordPageModule), canActivate: [WebAppGuard] },\r\n { path: 'home', loadChildren: () => import('./pages/home/home.module').then(m => m.HomePageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'intervention-overview', loadChildren: () => import('./pages/intervention-overview/intervention-overview.module').then(m => m.InterventionOverviewPageModule), canActivate: [AuthGuard] },\r\n { path: 'lesson-overview/:interventionID/:instanceID', loadChildren: () => import('./pages/lesson-overview/lesson-overview.module').then(m => m.LessonOverviewPageModule), canActivate: [AuthGuard] },\r\n { path: 'lesson/:lessonID/:instanceID', loadChildren: () => import('./pages/lesson/lesson.module').then(m => m.LessonPageModule), canActivate: [AuthGuard] }, // has canDeactivate in lesson.module (not used for answersheet route below) -> todo move it here \r\n { path: 'lesson/:lessonID/:instanceID/:answersheetID', loadChildren: () => import('./pages/lesson/lesson.module').then(m => m.LessonPageModule), canActivate: [AuthGuard] },\r\n { path: 'diary-overview', loadChildren: () => import('./pages/diary-overview/diary-overview.module').then(m => m.DiaryOverviewPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'diary/:diaryID/:instanceID', loadChildren: () => import('./pages/diary/diary.module').then(m => m.DiaryPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'threads', loadChildren: () => import('./pages/threads/threads.module').then(m => m.ThreadsPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'chat/:threadID', loadChildren: () => import('./pages/chat/chat.module').then(m => m.ChatPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'invitations', loadChildren: () => import('./pages/invitations/invitations.module').then(m => m.InvitationsPageModule), canActivate: [AuthGuard] },\r\n { path: 'settings', loadChildren: () => import('./pages/settings/settings.module').then(m => m.SettingsPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'imprint', loadChildren: () => import('./pages/imprint/imprint.module').then(m => m.ImprintPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'app-imprint', loadChildren: () => import('./pages/imprint/imprint.module').then(m => m.ImprintPageModule), canActivate: [WebAppGuard] }, //imprint without auth (no menu & navbar, other background)\r\n { path: 'privacy', loadChildren: () => import('./pages/privacy/privacy.module').then(m => m.PrivacyPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'app-privacy', loadChildren: () => import('./pages/privacy/privacy.module').then(m => m.PrivacyPageModule), canActivate: [WebAppGuard] }, //privacy without auth (no menu & navbar & more preferences (account deletion), other background)\r\n { path: 'security', loadChildren: () => import('./pages/security/security.module').then(m => m.SecurityPageModule), canActivate: [AuthGuard, WebAppGuard] },\r\n { path: 'skill-overview/:interventionID/:instanceID', loadChildren: () => import('./pages/skill-overview/skill-overview.module').then(m => m.SkillOverviewPageModule), canActivate: [AuthGuard, WebAppGuard, SkillFeatureGuard] },\r\n { path: 'skill/:interventionID/:instanceID/:skillID', loadChildren: () => import('./pages/skill/skill.module').then(m => m.SkillPageModule), canActivate: [AuthGuard, WebAppGuard, SkillFeatureGuard] },\r\n { path: 'progress', loadChildren: () => import('./pages/progress/progress.module').then(m => m.ProgressPageModule), canActivate: [AuthGuard, WebAppGuard, SkillFeatureGuard] },\r\n { path: '**', redirectTo: 'home', pathMatch: 'full' }\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules }),\r\n ],\r\n exports: [RouterModule]\r\n})\r\n// @ts-ignore\r\nexport class AppRoutingModule { }\r\n","import {Component, EventEmitter, Output} from '@angular/core';\nimport {MenuController, ModalController, Platform} from '@ionic/angular';\nimport {SplashScreen} from '@ionic-native/splash-screen/ngx';\nimport {StatusBar} from '@ionic-native/status-bar/ngx';\nimport {Router} from '@angular/router';\nimport {filter} from 'rxjs/operators';\nimport {TranslateService} from '@ngx-translate/core';\nimport {NavigationEnd, RouterEvent} from '@angular/router';\nimport {TechnicalSupportComponent} from './components/dialogs/technicalsupport/technical-support.component';\nimport {AlertService} from './providers/alert/alert.service';\nimport {ParserService} from './providers/parser/parser.service';\nimport {LocalStorageService} from \"./providers/local-storage/local-storage.service\";\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n styleUrls: ['app.component.scss']\n})\nexport class AppComponent {\n navigate: any;\n previousUrl: string;\n smallScreen: boolean = false;\n @Output('routeEmitter') routeEmitter: EventEmitter = new EventEmitter();\n\n constructor(\n private platform: Platform,\n private splashScreen: SplashScreen,\n private statusBar: StatusBar,\n private router: Router,\n private menuCtrl: MenuController,\n private alertService: AlertService,\n private translateService: TranslateService,\n private modalController: ModalController,\n private parserService: ParserService,\n private localStorage: LocalStorageService\n ) {\n this.sideMenu();\n this.initializeApp();\n this.registerNoMenuPages();\n router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.previousUrl = event.url;\n });\n }\n\n initializeApp() {\n document.body.classList.toggle('darkTheme', true);\n this.translateService.setDefaultLang(this.localStorage.getAppLanguage());\n\n this.platform.ready().then(() => {\n if (this.platform.is('android') || this.platform.is('ios')) {\n this.statusBar.styleDefault();\n this.splashScreen.hide();\n }\n\n if(this.platform.width() < 992){\n this.smallScreen = true;\n }\n\n this.platform.resize.subscribe(() => {\n if(this.platform.width() < 992){\n this.smallScreen = true;\n }else{\n this.smallScreen = false;\n }\n });\n });\n }\n\n sideMenu() {\n this.navigate =\n [\n {\n title: 'PAGES.HOME',\n url: '/home',\n icon: 'home-outline',\n id: 'navHome' //dont change ids!! used for testing\n },\n {\n title: 'PAGES.MY_INTERVENTIONS',\n url: '/intervention-overview',\n icon: 'clipboard-outline',\n id: 'navInterventions'\n },\n {\n title: 'PAGES.MY_DIARIES',\n url: '/diary-overview',\n icon: 'book-outline',\n id: 'navDiaries'\n },\n {\n title: 'PAGES.CHAT',\n url: '/threads/chat-overview',\n icon: 'people-outline',\n id: 'navChat'\n },\n // {\n // title: 'PAGES.OPEN_INTERVENTIONS',\n // url: '/open-interventions',\n // icon: 'globe'\n // },\n {\n title: 'PAGES.INVITATIONS',\n url: '/invitations',\n icon: 'paper-plane-outline',\n id: 'navInvitations'\n },\n {\n title: 'PAGES.MY_PROGRESS',\n url: '/progress',\n icon: 'podium-outline',\n id: 'navProgress'\n },\n {\n title: 'PAGES.MY_PROFILE',\n url: '/settings',\n icon: 'person-outline',\n id: 'navProfile'\n }\n ];\n }\n\n registerNoMenuPages() {\n this.router.events.subscribe((event: RouterEvent) => {\n const noMenu = ['/login', '/forgot-password', '/', '/app-imprint', '/app-privacy'];\n if (this.localStorage.getIsNativeApp() || event instanceof NavigationEnd && noMenu.includes(event.urlAfterRedirects)) {\n this.menuCtrl.enable(false);\n } else if (event instanceof NavigationEnd && !noMenu.includes(event.urlAfterRedirects)) {\n this.menuCtrl.enable(true);\n }\n });\n }\n\n routeToUrl(url: string, event) {\n event.stopPropagation();\n if (this.previousUrl.includes('/lesson/')) {\n this.routeEmitter.emit(url);\n } else {\n this.router.navigateByUrl(url);\n }\n this.menuCtrl.close();\n }\n\n closeMenu() {\n this.menuCtrl.close();\n }\n\n showPage(url){\n if(url === \"/diary-overview\"){\n return this.parserService.showDiaries\n }else if(url === \"/progress\"){\n return this.parserService.showProgress\n }else{\n return true\n }\n }\n\n async openEmailSupport() {\n const modal = await this.modalController.create({\n component: TechnicalSupportComponent,\n cssClass: 'techModal'\n });\n return await modal.present();\n }\n}\n","\n \n \n \n \n \n \n \n \n
\n \n
\n \n
\n
\n \n \n \n \n \n {{pages.title | translate}}\n 0\" slot=\"end\"\n class=\"pending\" [class.pendingActive]=\"previousUrl === pages.url\">\n {{parserService.invitations.length}}\n \n 0 || parserService.newFeedback > 0)\" slot=\"end\"\n class=\"pending\" [class.pendingActive]=\"previousUrl === pages.url\">\n {{parserService.newMessages + parserService.newFeedback}}\n \n \n \n \n \n
\n\n
\n
\n\n \n\n \n \n \n {{\"PAGES.IMPRINT\" | translate}}\n \n |\n \n {{\"PAGES.PRIVACY\" | translate}}\n \n |\n \n {{\"PAGES.SECURITY_DECLARATION\" | translate}}\n \n \n \n
\n
\n
\n \n
\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { RouteReuseStrategy } from '@angular/router';\nimport { IonicModule, IonicRouteStrategy } from '@ionic/angular';\nimport { SplashScreen } from '@ionic-native/splash-screen/ngx';\nimport { StatusBar } from '@ionic-native/status-bar/ngx';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { File } from '@ionic-native/file/ngx';\nimport { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http';\nimport { CommonModule } from '@angular/common';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { AutosizeModule } from 'ngx-autosize';\nimport { IonicStorageModule } from '@ionic/storage';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { Ng2FlatpickrModule } from \"ng2-flatpickr\";\nimport { FCM } from '@ionic-native/fcm/ngx'\n// import { AngularFireModule } from '@angular/fire/compat';\nimport { AppComponent } from './app.component';\nimport { AppRoutingModule } from './app-routing.module';\nimport { ComponentsModule } from \"./components/components.module\";\nimport { AlertService } from './providers/alert/alert.service';\nimport { FirebaseService } from './providers/firebase/firebase.service';\nimport { HelperService } from \"./providers/helper/helper.service\";\nimport { LocalStorageService } from './providers/local-storage/local-storage.service';\nimport { ParserService } from \"./providers/parser/parser.service\";\nimport { RequestProviderService } from './providers/request-provider/request-provider.service';\nimport { TokenInterceptorService } from \"./providers/token-interceptor/token-interceptor.service\";\nimport { environment, firebaseConfig } from '../environments/environment';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, \"./assets/i18n/\", \".json\");\n}\n\n@NgModule({\n declarations: [AppComponent],\n entryComponents: [],\n imports: [\n CommonModule,\n BrowserModule,\n ComponentsModule,\n HttpClientModule,\n IonicModule.forRoot({swipeBackEnabled: false}),\n // AngularFireModule.initializeApp(firebaseConfig),\n IonicStorageModule.forRoot(),\n AppRoutingModule,\n AutosizeModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),\n BrowserAnimationsModule,\n Ng2FlatpickrModule,\n FontAwesomeModule,\n ],\n providers: [\n StatusBar,\n HttpClientModule,\n SplashScreen,\n File,\n HttpClientModule,\n FCM,\n AlertService,\n FirebaseService,\n HelperService,\n LocalStorageService,\n ParserService,\n RequestProviderService,\n TokenInterceptorService,\n { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\n { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptorService, multi: true }\n ],\n bootstrap: [AppComponent],\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\n\nexport class AppModule {\n public darkTheme = true;\n constructor() { }\n}\n","import {Component, Input, OnChanges, OnInit, ViewChild, Output, EventEmitter} from '@angular/core';\nimport {ModalController, Platform} from \"@ionic/angular\";\nimport { map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport {ChatInformationComponent} from '../dialogs/chat-information/chat-information.component';\nimport {ParserService} from \"../../providers/parser/parser.service\";\nimport {HelperService} from \"../../providers/helper/helper.service\";\nimport {RequestProviderService} from \"../../providers/request-provider/request-provider.service\";\nimport {LocalStorageService} from '../../providers/local-storage/local-storage.service';\nimport {AlertService} from '../../providers/alert/alert.service';\n\n@Component({\n selector: 'app-chat-component',\n templateUrl: './chat.component.html',\n styleUrls: ['./chat.component.scss'],\n})\nexport class ChatComponent implements OnInit, OnChanges {\n @Input() fullSize;\n @Input() thread;\n @Output() sentMessage = new EventEmitter();\n @ViewChild('chatContentRef') chatContentRef;\n\n private myUserId: number;\n public newMsg: string;\n public height: number;\n\n constructor(\n private platform: Platform,\n private modalController: ModalController,\n public parserService: ParserService,\n private helperService: HelperService,\n private requestProvider: RequestProviderService,\n private localStorage: LocalStorageService,\n private alertService: AlertService,\n ) {\n }\n\n ngOnChanges() {\n setTimeout(() => {this.chatContentRef.scrollToBottom(0)}, 500);\n }\n\n ngOnInit() {\n this.myUserId = this.localStorage.getUserId();\n let heightSub = 300;\n if(this.fullSize){\n heightSub = 175;\n }\n this.height = this.platform.height() - heightSub;\n this.platform.resize.subscribe(() => {\n this.height = this.platform.height() - heightSub;\n });\n }\n\n /**\n * @method sendMessage\n *\n * Sends message from input field into thread. Emits event to get new messages, scrolls down on change.\n */\n sendMessage() {\n this.requestProvider.sendMessage(this.newMsg, this.thread.id).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.newMsg = '';\n this.sentMessage.emit();\n }, (error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_SEND_MESSAGE');\n });\n }\n\n /**\n * @method presentChatInformation\n *\n * Shows available information about the current thread via a modal.\n */\n async presentChatInformation() {\n const modal = await this.modalController.create({\n component: ChatInformationComponent,\n componentProps: {\n 'users': this.thread.participants,\n }\n });\n return await modal.present();\n }\n\n scrollBottomSlow() {\n this.chatContentRef.scrollToBottom(300);\n }\n\n getOffsetSize(message, size) {\n if(message.authorId != this.myUserId){\n if(size == 0 || size == 3){\n return 0\n }else if(size == 1 || size == 2){\n return 1\n }else{\n return 2\n }\n }else{\n if(size == 0 || size == 1){\n return 3\n }else{\n return 5\n }\n }\n }\n}\n","\n \n \n \n \n \n \n
\n \n {{thread.subject}}\n \n
\n
\n
\n\n \n \n \n\n\n \n \n \n \n {{ message.authorName }}\n \n 3\" style=\"float:right\">\n \n \n
\n \n {{ message.message }}\n \n
\n
\n {{ message.createdAt | date: 'dd.MM.yyyy, HH:mm' }}\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { IonicModule } from '@ionic/angular';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { Ng2FlatpickrModule } from 'ng2-flatpickr';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { Element_ } from './elements/Element_';\nimport { SingleChoice } from './elements/QuestionSingleChoice/single-choice.component';\nimport { Slider } from './elements/QuestionSlider/slider.component';\nimport { QuestionTable } from './elements/QuestionTable/questiontable.component';\nimport { TextArea } from './elements/QuestionTextArea/text-area.component';\nimport { Date_ } from './elements/QuestionDate/text-date.component';\nimport { TextString } from './elements/QuestionTextString/text-string.component';\nimport { Space } from './elements/Space/space.component';\nimport { YesNo } from './elements/QuestionYesNo/yes-no.component';\nimport { Line } from './elements/Line/line.component';\nimport { MultipleChoice } from './elements/QuestionMultipleChoice/multiple-choice.component';\nimport { Headline } from './elements/Headline/headline.component';\nimport { Media } from './elements/Media/media.component';\nimport { Block } from './elements/Block/block.component';\nimport { Text_ } from './elements/Text/text.component';\nimport { ChatComponent } from './chat/chat.component';\nimport { HeaderComponent } from './header/header.component';\nimport { DeleteAccountComponent } from './dialogs/delete-account/delete-account.component';\nimport { TechnicalSupportComponent } from './dialogs/technicalsupport/technical-support.component';\nimport { ChatInformationComponent } from './dialogs/chat-information/chat-information.component';\nimport { FeedbackComponent } from './dialogs/feedback/feedback.component';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { BuddyPopupComponent } from './dialogs/buddypopup/buddy-popup.component';\nimport { UnlockPopupComponent } from './dialogs/unlockpopup/unlock-popup.component';\nimport { TextProgressBar } from './progress/text-progress-bar/text-progress-bar.component';\nimport { Element } from './elements/Element/element.component';\n\n@NgModule({\n entryComponents: [\n ChatComponent,\n ChatInformationComponent,\n FeedbackComponent,\n TechnicalSupportComponent,\n DeleteAccountComponent,\n Block,\n Headline,\n Line,\n Media,\n Date_,\n MultipleChoice,\n SingleChoice,\n Slider,\n QuestionTable,\n TextArea,\n TextString,\n YesNo,\n Space,\n Text_,\n Element,\n TextProgressBar,\n HeaderComponent,\n BuddyPopupComponent,\n UnlockPopupComponent,\n ],\n imports: [\n IonicModule,\n CommonModule,\n DirectivesModule,\n TranslateModule,\n FormsModule,\n Ng2FlatpickrModule,\n FontAwesomeModule,\n MatMenuModule,\n MatButtonModule,\n MatIconModule,\n MatExpansionModule,\n ],\n declarations: [\n ChatComponent,\n ChatInformationComponent,\n FeedbackComponent,\n TechnicalSupportComponent,\n DeleteAccountComponent,\n Block,\n Headline,\n Line,\n Media,\n Date_,\n MultipleChoice,\n SingleChoice,\n Slider,\n QuestionTable,\n TextArea,\n TextString,\n YesNo,\n Space,\n Text_,\n Element,\n TextProgressBar,\n HeaderComponent,\n BuddyPopupComponent,\n UnlockPopupComponent,\n ],\n exports: [\n ChatComponent,\n Block,\n Headline,\n Line,\n Media,\n Date_,\n MultipleChoice,\n SingleChoice,\n Slider,\n QuestionTable,\n TextArea,\n TextString,\n YesNo,\n Space,\n Text_,\n Element,\n TextProgressBar,\n HeaderComponent,\n TranslateModule,\n FontAwesomeModule,\n MatMenuModule,\n MatButtonModule,\n MatIconModule,\n MatExpansionModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class ComponentsModule {}\n","import {AfterViewInit, Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {ModalController} from '@ionic/angular';\nimport { map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport * as confetti from 'canvas-confetti';\nimport {RequestProviderService} from '../../../providers/request-provider/request-provider.service';\n\n@Component({\n selector: 'app-buddy-popup',\n templateUrl: './buddy-popup.component.html',\n styleUrls: ['./buddy-popup.component.scss'],\n})\nexport class BuddyPopupComponent implements AfterViewInit {\n @ViewChild('confettiCanvasRef', { static: true }) confettiCanvasRef: ElementRef;\n @Input() dialogData: { dailyTaskDone: boolean, dailyTaskDoneBuddy: boolean, reminded: boolean, remindedBuddy: boolean };\n @Input() buddyInstanceId: number;\n justReminded = false; //reminded just says that the buddy was reminded, not if it was now or on last open of window; if this is true it was right now, if not it was on earlier open\n disableButton = false;\n\n constructor(\n private modalController: ModalController,\n private requestProvider: RequestProviderService\n ) { }\n\n ngAfterViewInit() {\n if (this.dialogData.dailyTaskDone && this.dialogData.dailyTaskDoneBuddy) {\n this.fireConfetti();\n }\n }\n\n onCloseDialog() {\n // using the injected ModalController this page\n // can \"dismiss\" itself and optionally pass back data\n this.modalController.dismiss();\n }\n\n sendReminderMail() {\n this.disableButton = true;\n this.requestProvider.sendBuddyReminder(this.buddyInstanceId).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.disableButton = false;\n this.dialogData.reminded = true;\n this.justReminded = true;\n this.fireConfetti();\n }, (error) => {\n this.disableButton = false\n });\n }\n\n private fireConfetti(): void {\n const duration = 3_000;\n const animationEnd = Date.now() + duration;\n const defaults = { startVelocity: 10, spread: 360, ticks: 60, zIndex: 0 };\n\n const canvas: any = {};\n canvas.confetti = canvas.confetti || confetti.create(this.confettiCanvasRef.nativeElement, { resize: true });\n\n // Fire two confetti instances every 250 ms\n const interval = setInterval(() => {\n const timeLeft = animationEnd - Date.now();\n\n if (timeLeft <= 0) {\n return clearInterval(interval);\n }\n\n const randomInRange = (min: number, max: number) => Math.random() * (max - min) + min;\n\n const particleCount = 75 * (timeLeft / duration);\n // since particles fall down, start a bit higher than random\n canvas.confetti(Object.assign({}, defaults, {\n particleCount,\n origin: { x: randomInRange(0.1, 0.3), y: Math.random() - 0.2 }\n }));\n canvas.confetti(Object.assign({}, defaults, {\n particleCount,\n origin: { x: randomInRange(0.7, 0.9), y: Math.random() - 0.2 }\n }));\n }, 350);\n }\n\n}\n","\n \n \n \n\n\n\n
\n

\n {{ 'BUDDY.SUCCESS' | translate }}\n

\n \n \n

\n {{ 'BUDDY.BOTH_DONE' | translate }}\n

\n
\n \n \n

\n {{ 'BUDDY.REMIND_TEXT' | translate }}\n

\n
\n \n \n

\n {{ 'BUDDY.REMINDED' | translate }}\n

\n\n

\n {{ 'BUDDY.ALREADY_REMINDED' | translate }}\n

\n
\n
\n\n
\n \n \n {{ 'BUDDY.REMIND' | translate }}\n \n
\n\n","import {Component, Input} from '@angular/core';\nimport {ModalController} from \"@ionic/angular\";\nimport {HelperService} from \"../../../providers/helper/helper.service\";\n\n@Component({\n selector: 'app-chat-information',\n templateUrl: './chat-information.component.html',\n styleUrls: ['./chat-information.component.scss'],\n})\nexport class ChatInformationComponent {\n @Input() users: {id: number, name: string}[];\n\n constructor(\n private modalController: ModalController,\n private helperService: HelperService\n ) {\n }\n\n dismiss() {\n // using the injected ModalController this page can \"dismiss\" itself \n this.modalController.dismiss({\n 'dismissed': true\n });\n }\n\n}\n","\n \n \n {{\"CHAT_FEEDBACK.CHAT_INFORMATION\" | translate}}\n \n \n \n \n \n \n \n\n\n

\n {{\"CHAT_FEEDBACK.PARTICIPANTS\" | translate}}\n

\n \n \n \n \n \n \n {{user.name}}\n \n \n \n
\n","import {Component} from '@angular/core';\nimport {ModalController} from '@ionic/angular';\nimport {HttpResponse} from '@angular/common/http';\nimport {RequestProviderService} from \"../../../providers/request-provider/request-provider.service\";\nimport {AlertService} from \"../../../providers/alert/alert.service\";\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: './delete-account.component.html',\n styleUrls: ['./delete-account.component.scss'],\n})\nexport class DeleteAccountComponent {\n public password: string = \"\";\n public hide = true;\n public usePseudonymized: boolean;\n\n constructor(\n private modalController: ModalController,\n private requestProvider: RequestProviderService,\n private alertService: AlertService,\n ) {\n }\n\n onCloseDialog() {\n this.modalController.dismiss({\n 'requested': false\n });\n }\n\n requestDeletion() {\n this.requestProvider.requestDeleteAccount(this.password, this.usePseudonymized).subscribe(async (response) => {\n if (response instanceof HttpResponse && response.status == 201) {\n await this.alertService.presentToast('SUCCESS.SUCCESS_ACCOUNT_DELETION_REQUESTED');\n this.modalController.dismiss({\n 'requested': true\n });\n }\n },(error) => {\n if(error.status === 422 && JSON.stringify(error).includes(\"user\")){\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_ACCOUNT_DELETION_ALREADY_REQUESTED');\n }else if(error.status === 422 && JSON.stringify(error).includes(\"password\")){\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_PASSWORD_WRONG');\n }else{\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_SOMETHING_WENT_WRONG');\n }\n })\n }\n}\n","\n \n \n \n\n\n
\n

\n {{ 'PROFILE.REQUEST_DELETE_ACCOUNT' | translate }}\n

\n

\n {{ 'PROFILE.REQUEST_DELETE_ACCOUNT_TEXT' | translate }}\n

\n\n \n \n {{\"PROFILE.REQUEST_DELETE_ACCOUNT_DATA\" | translate}}\n \n \n \n {{\"PROFILE.REQUEST_DELETE_ACCOUNT_PSEUDONYMIZE\" | translate}}\n \n \n {{\"PROFILE.REQUEST_DELETE_ACCOUNT_DELETE_DATA\" | translate}}\n \n \n \n\n \n \n {{\"LOGIN_REGISTRATION.PASSWORD\" | translate}}\n \n \n \n \n \n \n \n
\n\n\n \n {{'PROFILE.REQUEST_DELETE_ACCOUNT_BUTTON' | translate}}\n \n\n","import {Component, Input, OnInit, ViewChild} from '@angular/core';\nimport {ModalController, NavParams} from \"@ionic/angular\";\nimport { map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport {HttpErrorResponse} from '@angular/common/http';\nimport {Thread} from '../../../models/Thread';\nimport {ChatInformationComponent} from '../chat-information/chat-information.component';\nimport {ParserService} from \"../../../providers/parser/parser.service\";\nimport {RequestProviderService} from \"../../../providers/request-provider/request-provider.service\";\nimport {LocalStorageService} from '../../../providers/local-storage/local-storage.service';\nimport {AlertService} from '../../../providers/alert/alert.service';\n\n@Component({\n selector: 'app-feedback',\n templateUrl: './feedback.component.html',\n styleUrls: ['./feedback.component.scss'],\n})\nexport class FeedbackComponent implements OnInit {\n @Input() thread: Thread;\n @ViewChild('chatContentRef') chatContentRef;\n\n private myUserId: number;\n public newMsg: string;\n\n constructor(\n private navParams: NavParams,\n private modalController: ModalController,\n private parserService: ParserService,\n private requestProvider: RequestProviderService,\n private localStorage: LocalStorageService,\n private alertService: AlertService,\n ) {\n navParams.get('thread');\n }\n\n ngOnInit() {\n this.myUserId = this.localStorage.getUserId();\n\n setTimeout(() => {this.chatContentRef.scrollToBottom(0)}, 500);\n\n if(this.thread.lessonFeedbackRequired && !this.thread.read){\n let progressJSON = {\n \"data\": {\n \"type\": \"intervention_instance\",\n \"attributes\": {\n \"progress\": {\n \"feedback_provided\": {\n \"questionnaire_id\": this.thread.lessonId,\n \"thread_id\": this.thread.id,\n \"read\": true,\n \"answersheet_id\": this.thread.answersheetId\n }\n }\n }\n }\n };\n\n this.requestProvider.setFeedbackRead(this.thread.assignedInstanceID, progressJSON).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n if (response instanceof HttpErrorResponse) {\n //feedback can not be set to read, try to set thread read by requesting thread details\n this.getNewMessages(true);\n }else{\n this.thread.read = true;\n this.parserService.newFeedback--;\n }\n }, (error) => {\n //feedback can not be set to read, try to set thread read by requesting thread details\n this.getNewMessages(true);\n });\n }else{\n if(!this.thread.read){\n this.parserService.newFeedback--;\n }\n this.thread.read = true;\n }\n }\n\n dismiss() {\n this.modalController.dismiss({\n 'dismissed': true\n });\n }\n\n /**\n * @method sendMessage\n *\n * Sends the message which is contained in the input field. Sends it into the\n * thread which is currently active. Then pulls the messages of the chat\n * (Sent by the user), pushes them into view and scrolls down.\n */\n sendMessage() {\n this.requestProvider.sendMessage(this.newMsg, this.thread.id).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.newMsg = '';\n this.getNewMessages(false);\n }, (error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_SEND_MESSAGE');\n });\n }\n\n getNewMessages(readFeedback: boolean){\n this.requestProvider.getMessageThread(this.thread.id).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.thread = this.parserService.parseThread(response);\n setTimeout(() => {this.chatContentRef.scrollToBottom(300)}, 500);\n }, (error) => {\n this.handleErrorGetMessages(readFeedback);\n });\n }\n\n handleErrorGetMessages(readFeedback: boolean){\n if(readFeedback){\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_READ_FEEDBACK');\n }else{\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_DATA_LOADING');\n }\n }\n\n /**\n * @method presentChatInformation\n *\n * Shows available information about the current thread via a modal.\n */\n async presentChatInformation() {\n const modal = await this.modalController.create({\n component: ChatInformationComponent,\n componentProps: {\n 'users': this.thread.participants,\n }\n });\n return await modal.present();\n }\n\n scrollBottomSlow() {\n this.chatContentRef.scrollToBottom(300);\n }\n\n getOffsetSize(message) {\n if(message.authorId != this.myUserId){\n return 0\n }else{\n return 3\n }\n }\n}\n","\n \n \n {{\"CHAT_FEEDBACK.FEEDBACK\" | translate}}\n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n\n\n \n \n \n \n {{ message.authorName }}\n \n
\n \n {{ message.message }}\n \n
\n
\n {{ message.createdAt | date: 'dd.MM.yyyy, HH:mm' }}\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n\n","import { Component } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SUPPORT_MAIL } from '../../../../environments/environment';\n\n@Component({\n selector: 'app-technical-support',\n templateUrl: './technical-support.component.html',\n styleUrls: ['./technical-support.component.scss'],\n})\nexport class TechnicalSupportComponent {\n public supportMail = SUPPORT_MAIL;\n\n constructor(\n private modalController: ModalController,\n private translateService: TranslateService\n ) {\n }\n\n onCloseDialog() {\n this.modalController.dismiss();\n }\n\n onOpenEmailClient() {\n window.location.href = 'mailto:' + this.supportMail + '?subject=' + this.translateService.instant('SUPPORT.TECHNICAL_SUPPORT');\n }\n}\n","\n \n \n \n\n\n
\n

\n {{ 'SUPPORT.TECHNICAL_SUPPORT' | translate }}\n

\n

\n {{ 'SUPPORT.INFO_TEXT' | translate }}\n

\n

\n {{supportMail}}\n

\n
\n\n\n \n {{ 'SUPPORT.SEND_MAIL' | translate }}\n \n\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ModalController} from \"@ionic/angular\";\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {faAngleDoubleDown} from '@fortawesome/free-solid-svg-icons';\nimport {AlertService} from \"../../../providers/alert/alert.service\";\nimport {Lesson} from \"../../../models/Lesson\";\nimport {Instance} from \"../../../models/Instance\";\n\n@Component({\n selector: 'app-unlock-popup',\n templateUrl: './unlock-popup.component.html',\n styleUrls: ['./unlock-popup.component.scss'],\n})\nexport class UnlockPopupComponent implements OnInit {\n // after submit answersheet: unlock dialog is shown if\n // - condition fulfilled, lesson not yet unlocked -> lesson shown\n // - condition fulfilled, lesson unlocked, lesson is bonus lesson -> text shown\n // if lessons for both cases -> lessons & text shown\n\n //lesson overview:\n //for finished lessons, which can still unlock lessons, the unlock button is shown -> this dialog can be opened again\n //which can still unlock lessons meaning:\n //not all lessons which can be unlocked by this lesson are already unlocked\n //if (unlock multiple === false) additionally: none was unlocked yet\n\n //diary page:\n //one unlock button (for the last submitted answersheet) -> this dialog can be opened again\n //shown only if not all lessons which can be unlocked by this diary are already unlocked\n //if button is once hidden, it stays hidden; if it is still shown there are some lessons which could be unlocked (but maybe not for current answersheet)\n //\n //button is shown in this cases, unlock dialog will not be opened, but alert will be shown\n //case 1: answers of last answersheet do not fulfill condition (clicking shows 'gerade keine passenden lektionen')\n //case 2: if unlock multiple false & one was already unlocked for this answersheet (clicking shows 'bereits 1 Zusatzlektion freigeschaltet, nächste nach nächstem Eintrag freigeschaltbar')\n\n @Input() offers: Array <{instance: Instance, unlock: Lesson}>;\n @Input() unlockMultiple: Boolean;\n @Input() unlockServer: Array ;\n @Input() unlockIds: Array ;\n @Input() isDiary: Boolean;\n @Input() hasAlreadyUnlockedOffers: Array ;\n @Input() alreadyUnlockedServer: Array ;\n @Input() alreadyUnlockedDetails: Array ;\n\n public faAngleDoubleDown = faAngleDoubleDown;\n choosenOffers = [];\n selectedLesson = -1;\n showTopBorder: boolean = false;\n showBottomBorder: boolean = true;\n userScrolled: boolean = false;\n\n constructor(\n private modalController: ModalController,\n private alertController: AlertService,\n private translateService: TranslateService\n ) { }\n\n ngOnInit() {\n this.choosenOffers = new Array(this.offers.length).fill(false);\n\n }\n\n ngAfterViewInit() {\n let self = this;\n document.getElementById('unlockQuestionnairesList').addEventListener(\"scroll\", event => {\n const e = (event.target as HTMLInputElement);\n\n if(e.scrollTop < 10){\n //0-9 -> only show bottom\n self.showTopBorder = false;\n self.showBottomBorder = true;\n }else if(e.scrollTop + e.clientHeight < e.scrollHeight - 10){\n // 10 - (height - 9) -> show both\n self.showTopBorder = true;\n self.showBottomBorder = true;\n }else{\n //(height - 9) - height -> only show top\n self.showTopBorder = true;\n self.showBottomBorder = false;\n }\n\n if(e.scrollTop > 100){\n self.userScrolled = true;\n }\n\n if(window.screen.width < 700){\n document.getElementById(\"scrollUnlockLessons\").style.display = (!self.userScrolled && document.getElementById(\"scrollUnlockLessons\").style.display != \"none\") ? \"block\" : \"none\";\n }\n });\n }\n\n removeSelection(i: number) {\n this.selectedLesson = -1;\n }\n\n getChoosenQuestionnaires(): Array{\n let result = [];\n for (let i = 0; i < this.offers.length; i++){\n if (this.choosenOffers[i]){\n result.push(this.offers[i])\n }\n }\n return result;\n }\n\n unlock() {\n if((this.unlockMultiple && !this.choosenOffers.includes(true)) || !this.unlockMultiple && (this.selectedLesson === -1 || this.selectedLesson === -2 || this.selectedLesson === undefined)){\n // no choosen questionnaires\n this.onCloseDialog();\n }else{\n let result = this.unlockMultiple ? this.getChoosenQuestionnaires() : this.offers[this.selectedLesson];\n this.modalController.dismiss(result);\n }\n }\n\n onCloseDialog() {\n if(this.offers.length > 0){\n this.alertController.showChoice('LESSON.NO_UNLOCK', 'LESSON.SURE_NO_UNLOCK', 'BUTTONS.CANCEL', 'BUTTONS.YES',\n () => {\n // brings user back to selection\n },\n () => {\n // will return no content to unlock\n this.modalController.dismiss();\n });\n }else{ //unlock modal only opened with offers length === 0 for diaries\n //just close modal\n this.modalController.dismiss();\n }\n }\n\n getText(){\n if(this.offers.length > 0){\n return this.translateService.instant('LESSON.UNLOCK_INFO')\n }else{ //unlock modal only opened with offers length === 0 for bonus lessons\n return this.translateService.instant('LESSON.ALL_UNLOCKED')\n }\n }\n\n getButtonText(){\n if(this.offers.length > 0){\n return this.translateService.instant('BUTTONS.UNLOCK')\n }else{ //unlock modal only opened with offers length === 0 for bonus lessons\n return this.translateService.instant('BUTTONS.OK')\n }\n }\n\n getUnlockOneMultipleText(){\n return this.unlockMultiple ? this.translateService.instant('LESSON.UNLOCK_INFO_MULTIPLE') : this.translateService.instant('LESSON.UNLOCK_INFO_ONE')\n }\n\n unlockIsDifferent(){\n return JSON.stringify(this.unlockServer) != JSON.stringify(this.unlockIds)\n }\n\n alreadyUnlockedIsDifferent(){\n return JSON.stringify(this.hasAlreadyUnlockedOffers) != JSON.stringify(this.alreadyUnlockedServer)\n }\n}\n","
\n \n \n \n \n \n
\n
0 && unlockIds.length > 0\">\n
\n FEHLER: Bitte Screenshot machen & url notieren\n debug freischaltbar:
\n server: {{unlockServer}}
\n app: {{unlockIds}}\n
\n
\n\n
0\">\n
\n FEHLER: Bitte Screenshot machen & url notieren\n debug schon freigeschaltet:
\n {{alreadyUnlockedServer}}
\n {{hasAlreadyUnlockedOffers}}\n
\n
\n\n

\n {{getText()}}\n

\n\n
\n
    \n
  • \n {{entry}}\n
  • \n
\n\n

\n {{\"LESSON.ALREADY_UNLOCKED_BONUSLESSONS_INFO\" | translate}}\n

\n
\n\n

0\">\n {{getUnlockOneMultipleText()}}\n

\n\n
\n
0\" id=\"unlockQuestionnairesList\" class=\"questionnaires\" [class.topBorder]=\"showTopBorder && !showBottomBorder\"\n [class.bottomBorder]=\"showBottomBorder && !showTopBorder\" [class.bothBorders]=\"showTopBorder && showBottomBorder\">\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {{offer.unlock.title}}\n \n \n \n \n \n {{offer.unlock.description}}\n \n \n \n \n \n \n \n 0 && selectedLesson != -1 && selectedLesson != undefined && selectedLesson === i\" class=\"ion-align-items-center resetButton\" style=\"text-align-last: end\">\n \n {{ 'LESSON.RESET' | translate }}\n \n \n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n {{offer.unlock.title}}\n \n \n \n \n \n {{offer.unlock.description}}\n \n \n \n \n \n \n \n
\n
\n
\n
\n \n
\n
0 && offers.length > 0\" class=\"information\">\n
\n {{\"LESSON.ALREADY_UNLOCKED_BONUSLESSONS\" | translate}}\n
\n\n
    \n
  • \n {{entry}}\n
  • \n
\n\n

\n {{\"LESSON.ALREADY_UNLOCKED_BONUSLESSONS_INFO\" | translate}}\n

\n
\n
\n \n {{getButtonText()}}\n \n
\n
\n","import {Component, OnInit, Input} from '@angular/core';\nimport {Element} from '../Element/element.component';\nimport {BlockModel} from \"../../../models/elements/BlockModel\";\nimport {BlockType} from 'src/app/models/elements/Enums';\nvar evaluationService = require('@aas2/aas2-evaluation-service');\n\n@Component({\n selector: 'app-block',\n templateUrl: './block.component.html',\n styleUrls: ['./block.component.scss'],\n})\nexport class Block extends Element implements OnInit {\n @Input() public loopIndex: number;\n public model: BlockModel;\n public hideElements: boolean;\n public hideDetails: boolean;\n public repeat: number = 1;\n\n constructor() {\n super();\n this.model = this.model as BlockModel;\n }\n\n ngOnInit(){\n this.hideElements = this.model.type != BlockType.NONE;\n this.hideDetails = this.model.type == BlockType.BOTH;\n\n if(!this.isDynamicLoop()){\n this.repeat = this.model.repeat['data'];\n }else{\n //reinit quicksaved, language change, answersheet\n this.setRepetition();\n\n this.model.lesson.answers.subscribe(x => {\n //on change of answers re-evaluate\n this.setRepetition();\n });\n }\n\n if (this.isConditional()) {\n //reinit quicksaved, language change, answersheet\n this.evaluateBlock();\n\n this.model.lesson.answers.subscribe(x => {\n //on change of answers re-evaluate\n this.evaluateBlock();\n })\n }\n }\n\n setRepetition(){\n if(this.model.lesson.getAnswer(this.model.repeat['data']) != null){\n this.repeat = this.model.lesson.getAnswer(this.model.repeat['data']);\n }\n }\n\n evaluateBlock(){\n let conditionTrue = evaluationService.evaluateCondition(this.model.condition, this.model.lesson._answers);\n if(this.model.type == BlockType.BOTH){\n this.hideDetails = !conditionTrue;\n }else{\n this.hideElements = !conditionTrue;\n }\n }\n\n get numberOfRepetitions(): any {\n return Array.from({length: this.repeat}, (v, k) => k + 1)\n }\n\n toggleBlock() {\n this.hideElements = !this.hideElements;\n }\n\n // isStaticLoop(): boolean {\n // return !(this.model['repeat']['question'] && this.model['repeat']['data']);\n // }\n\n isDynamicLoop(): boolean {\n return this.model['repeat']['question'];\n }\n\n isConditional() {\n return this.model.type == BlockType.CONDITIONAL || this.model.type == BlockType.BOTH\n }\n\n hasDetails(){\n return this.model.type == BlockType.DETAILS || this.model.type == BlockType.BOTH\n }\n}\n","
\n
\n \n
\n {{model.text}}\n
\n
\n \n \n \n \n \n \n
\n
\n\n
\n \n \n \n \n \n \n
\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ElementModel} from 'src/app/models/elements/ElementModel';\nvar evaluationService = require('@aas2/aas2-evaluation-service');\n\n@Component({\n selector: 'app-element',\n templateUrl: './element.component.html',\n styleUrls: ['./element.component.scss'],\n})\nexport class Element implements OnInit {\n public model: ElementModel;\n public type: string;\n @Input() public loopIndex: number;\n\n constructor() {}\n\n ngOnInit() {\n if(this.model.lesson.answers){\n //for lesson resolve references\n this.model.lesson.answers.subscribe(x => {\n for (let attr of this.model.resolvable) {\n let attrResolved = attr + 'Resolved';\n if(attrResolved === \"optionsResolved\"){\n //solve references for each option entry\n let resolvedOptions = [];\n for(let entry in this[attr]){\n resolvedOptions[entry] = evaluationService.evaluateReferences(this[attr][entry], this.model.lesson._answers, this.model.lesson.labelList, this.model.lesson.localStorage.getAppLanguage());\n }\n this[attrResolved] = resolvedOptions;\n }else{\n this[attrResolved] = evaluationService.evaluateReferences(this[attr], this.model.lesson._answers, this.model.lesson.labelList, this.model.lesson.localStorage.getAppLanguage());\n }\n }\n })\n }else{\n //for skills use normal attribute (there are no references in skills)\n for (let attr of this.model.resolvable) {\n let attrResolved = attr + 'Resolved'\n this[attrResolved] = this[attr];\n }\n }\n }\n\n @Input() set init(element: ElementModel) {\n this.model = element;\n this.type = element.constructor.name;\n }\n}\n","\n
\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n\n \n
\n
\n","import { Input, Directive } from \"@angular/core\";\nimport {ElementModel} from \"../../models/elements/ElementModel\";\n\n@Directive()\nexport abstract class Element_ {\n model: ElementModel;\n\n protected constructor() {}\n\n @Input() set init(element: ElementModel) {\n this.model = element;\n }\n}\n","import { Component } from '@angular/core';\nimport { Element_ } from \"../Element_\";\nimport { HeadlineModel } from \"../../../models/elements/HeadlineModel\";\n@Component({\n selector: 'app-headline',\n templateUrl: './headline.component.html',\n styleUrls: ['./headline.component.scss'],\n})\nexport class Headline extends Element_ {\n public model;\n\n constructor() {\n super();\n this.model = this.model as HeadlineModel;\n }\n}\n","
\n
\n
\n
\n","import { Component } from '@angular/core';\nimport { Element_ } from \"../Element_\";\n\n@Component({\n selector: 'app-line',\n templateUrl: './line.component.html',\n styleUrls: ['./line.component.scss'],\n})\nexport class Line extends Element_ {\n constructor() {\n super();\n }\n}\n","
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faFilePowerpoint, faFileWord, faFileExcel, faFilePdf } from '@fortawesome/free-solid-svg-icons';\nimport { Element_ } from \"../Element_\";\nimport { MediaType } from \"../../../../app/models/elements/Enums\";\nimport { MediaModel } from \"../../../models/elements/MediaModel\";\n\n@Component({\n selector: 'app-media',\n templateUrl: './media.component.html',\n styleUrls: ['./media.component.scss'],\n host: { '[class.banner]': 'this.model.banner' }\n})\n\nexport class Media extends Element_ implements OnInit {\n faIcon;\n model: MediaModel;\n\n constructor() {\n super();\n this.model = this.model as MediaModel;\n }\n\n ngOnInit() {\n if (MediaType.isExcel(this.model.type)) {\n this.faIcon = faFileExcel;\n } else if (MediaType.isWord(this.model.type)) {\n this.faIcon = faFileWord;\n } else if (MediaType.isPdf(this.model.type)) {\n this.faIcon = faFilePdf;\n } else if (MediaType.isPowerpoint(this.model.type)) {\n this.faIcon = faFilePowerpoint;\n }\n }\n\n get MediaType() {\n return MediaType;\n }\n}\n","
\n
\n

\n {{model.subtitleResolved}}\n

\n
\n \"picture\n \n\n
\n \n \n
\n\n
\n \n
\n\n \n\n
\n

\n {{model.descriptionResolved}}\n

\n
\n
\n","import { Element_ } from \"./Element_\";\nimport { Directive } from \"@angular/core\";\n\n@Directive()\nexport class Question extends Element_ {\n constructor() {\n super();\n }\n}\n","import {Component, OnInit, Input} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport German from 'flatpickr/dist/l10n/de.js';\nimport {Question} from \"../Question\";\nimport {QuestionDateModel} from \"../../../models/elements/QuestionDateModel\";\n\n@Component({\n selector: 'app-text-date',\n templateUrl: './text-date.component.html',\n styleUrls: ['./text-date.component.scss'],\n})\nexport class Date_ extends Question implements OnInit {\n @Input() public loopIndex: number;\n model: QuestionDateModel;\n initDate: any;\n dateOptions;\n value: any = null;\n\n constructor(\n private translateService: TranslateService\n ) {\n super();\n }\n\n ngOnInit() {\n let locale = German.en\n if (this.translateService.instant(\"LESSON.DATE_FORMAT_LAN\") == \"de\") {\n locale = German.de\n }\n let onChange = (selectedDates: any) => {\n this.emitAnswer(selectedDates[0]);\n }\n let dateFormat = this.translateService.instant(\"LESSON.DATE_FORMAT_DATETIME\");\n if (this.model.type == 'date') {\n dateFormat = this.translateService.instant(\"LESSON.DATE_FORMAT_DATE\");\n } else if (this.model.type == 'time') {\n dateFormat = this.translateService.instant(\"LESSON.DATE_FORMAT_TIME\");\n }\n let show24hrs = (this.translateService.instant(\"LESSON.DATE_AMPM\") === \"false\");\n\n this.dateOptions = {\n altFormat: dateFormat,\n dateFormat: dateFormat,\n enableTime: !(this.model.type == 'date'),\n time_24hr: show24hrs,\n noCalendar: (this.model.type == 'time'),\n defaultHour: 0,\n defaultMinute: 0,\n locale: locale,\n clickOpens: !this.model.isDisabled,\n onClose: onChange,\n position: 'auto center'\n }\n\n let answer = this.currentValue;\n if(answer){\n //the answer is saved in utc, but it is what the user actually selected\n //2023-01-30T00:00:00.000Z -> so we just cut the string to 2023-01-30T00:00 \n answer = (this.model.type == 'time') ? answer.substr(10,5) : new Date(answer.substr(0,16));\n this.initDate = answer;\n }\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(answer);\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n //selected value is date in timezone of user -> has to be in utc\n //example: user selects \"30.1.23 0 uhr\"\n //value of the picker is \"Mon Jan 30 2023 00:00:00 GMT+0100\" -> the correct time but shown in timezone of the user\n //we want exacly this time \"30.1.23 0 uhr\" but saved in utc, so it is the same no matter where it was saved\n //saved answer is: 2023-01-30T00:00:00.000Z\n //for init see comment above\n let answ = null;\n if(value){\n answ = new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes())).toISOString();\n }\n\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, answ);\n\n let inserted = this.currentValue;\n if(inserted){\n this.initDate = new Date(inserted.substr(0,16))\n }\n }\n\n get currentValue(): any {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n \n {{model.questionResolved}}\n \n
\n \n
\n
\n","import { Component, ElementRef, Input, Renderer2, ViewChild, AfterViewInit } from '@angular/core';\nimport { Question } from \"../Question\";\nimport { QuestionMultipleChoiceModel } from \"../../../models/elements/QuestionMultipleChoiceModel\";\n\n@Component({\n selector: 'app-multiple-choice',\n templateUrl: './multiple-choice.component.html',\n styleUrls: ['./multiple-choice.component.scss'],\n})\n\nexport class MultipleChoice extends Question implements AfterViewInit {\n @ViewChild('selectRef', { read: ElementRef }) selectRef: ElementRef;\n @Input() public loopIndex: number;\n public model: QuestionMultipleChoiceModel;\n value: Array = null;\n loading: boolean = false;\n oldOptions: Array = null;\n\n constructor(\n private renderer: Renderer2\n ) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.injectStyle();\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n }\n\n ngOnInit(){\n //reload ion-select on change of answers (references could have changed; if those are in selected answer, the text is not updated automatically)\n //only do this if there even is a reference in the selected answer and the resolved value changed\n this.model.lesson.answers.subscribe(x => {\n //get selected options unresolved & for each check if option has a reference & resolved option text changed\n let selectedOptionChanged = false;\n for(let val in this.currentValue){\n let indexOfOption = this.model.values.findIndex(value => value === this.currentValue[val]);\n if(indexOfOption != -1){\n let selectedAnswerUnresolved = this.model.options[indexOfOption];\n if(selectedAnswerUnresolved.toString().includes(\"{{\") && this.oldOptions[indexOfOption] != this.model.optionsResolved[indexOfOption]){\n selectedOptionChanged = true;\n }\n }\n }\n\n //check if selected\n if(selectedOptionChanged){\n this.loading = true;\n setTimeout(() => {\n this.loading = false;\n }, 10);\n }\n this.oldOptions = JSON.parse(JSON.stringify(this.model.optionsResolved))\n })\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n /**\n * Styling shadow DOM. As there is no hook for when shadow DOM has finished loading, we catch nullpointer from ion-select\n * styling and try again.\n */\n private injectStyle() {\n try {\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'white-space', \"normal\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'text-overflow', \"unset\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'word-break', \"break-word\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[1], 'align-self', \"center\");\n } catch (TypeError) {\n setTimeout(() => {\n this.injectStyle()\n }, 100)\n }\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): Array {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n \n \n {{model.questionResolved}}\n \n \n \n {{model.optionsResolved[i]}}\n \n \n \n
\n","import { AfterViewInit, Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\nimport { Question } from '../Question';\nimport { QuestionSingleChoiceModel } from \"../../../models/elements/QuestionSingleChoiceModel\";\n\n@Component({\n selector: 'app-single-choice',\n templateUrl: './single-choice.component.html',\n styleUrls: ['./single-choice.component.scss'],\n})\n\nexport class SingleChoice extends Question implements AfterViewInit {\n @ViewChild('selectRef', { read: ElementRef }) selectRef: ElementRef;\n @Input() public loopIndex: number;\n public model: QuestionSingleChoiceModel;\n value: String = null;\n loading: boolean = false;\n oldOptions: Array = null;\n\n constructor(\n private renderer: Renderer2\n ) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.injectStyle();\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n }\n\n ngOnInit(){\n //reload ion-select on change of answers (references could have changed; if those are in selected answer, the text is not updated automatically)\n //only do this if there even is a reference in the selected answer and the resolved value changed\n this.model.lesson.answers.subscribe(x => {\n //get selected option unresolved & check if option has a reference & resolved option text changed\n let selectedOptionChanged = false;\n let indexOfOption = this.model.values.findIndex(value => value === this.currentValue);\n if(indexOfOption != -1){\n let selectedAnswerUnresolved = this.model.options[indexOfOption];\n if(selectedAnswerUnresolved.includes(\"{{\") && this.oldOptions[indexOfOption] != this.model.optionsResolved[indexOfOption]){\n selectedOptionChanged = true;\n }\n }\n\n //check if selected\n if(selectedOptionChanged){\n this.loading = true;\n setTimeout(() => {\n this.loading = false;\n }, 10);\n }\n this.oldOptions = JSON.parse(JSON.stringify(this.model.optionsResolved))\n })\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n /**\n * Styling shadow DOM. As there is no hook for when shadow DOM has finished loading, we catch nullpointer from ion-select\n * styling and try again.\n */\n private injectStyle() {\n try {\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'white-space', \"normal\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'text-overflow', \"unset\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[0], 'word-break', \"break-word\");\n this.renderer.setStyle(this.selectRef.nativeElement.shadowRoot.childNodes[1], 'align-self', \"center\");\n } catch (TypeError) {\n setTimeout(() => {\n this.injectStyle()\n }, 100)\n }\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): String {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n \n \n {{model.questionResolved}}\n \n \n \n {{model.optionsResolved[i]}}\n \n \n \n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Question } from \"../Question\";\nimport { QuestionSliderModel } from \"../../../models/elements/QuestionSliderModel\";\n\n@Component({\n selector: 'app-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n})\n\nexport class Slider extends Question implements OnInit {\n @Input() public loopIndex: number;\n public model: QuestionSliderModel;\n public manyPoints: boolean = false;\n value: number = null;\n // answered = null;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n // this.answered = (answer != null);\n }\n\n public ngOnInit(): void {\n this.manyPoints = this.model ? this.model.scaleRangeRight > 20 : false;\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public onAddToRange(): void {\n if(this.value == null){\n this.emitAnswer(this.model.start + 1);\n }else if(this.value < this.model.scaleRangeRight){\n this.value++;\n this.emitAnswer(this.value);\n }\n }\n\n public onSubtractFromRange(): void {\n if(this.value == null){\n this.emitAnswer(this.model.start - 1);\n }else if(this.value > this.model.scaleRangeLeft){\n this.value--;\n this.emitAnswer(this.value);\n }\n }\n\n public rangeFocused(value: CustomEvent) {\n //this is only used for when nothing selected and then start value should be selected\n if(this.currentValue === null){\n this.emitAnswer(this.model.start)\n }\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): number {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n \n {{model.questionResolved}}\n \n
\n
\n \n {{model.labelLeft}}\n \n

\n {{value}}\n

\n \n {{model.labelRight}}\n \n
\n \n \n \n \n \n \n \n \n \n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Question } from \"../Question\";\nimport { QuestionTableModel } from \"../../../models/elements/QuestionTableModel\";\n\n@Component({\n selector: 'app-questiontable',\n templateUrl: './questiontable.component.html',\n styleUrls: ['./questiontable.component.scss'],\n host: { 'class': 'question' }\n})\n\nexport class QuestionTable extends Question implements OnInit{\n @Input() public loopIndex: number;\n public model: QuestionTableModel;\n public questionTexts: String[];\n value: Array = null;\n\n constructor() {\n super();\n }\n\n ngOnInit(){\n this.questionTexts = JSON.parse(this.model.question);\n this.value = new Array(this.questionTexts.length).fill(null);\n }\n\n public ngAfterViewInit(): void {\n // emit null (so that there is an entry for each repetition) or saved answer\n // in this case Array with null entries for all values\n let currentVal = this.currentValue;\n if(currentVal == null){\n currentVal = new Array(this.questionTexts.length).fill(null);\n }\n this.value = currentVal;\n this.emitAnswer();\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public emitAnswer() {\n if (this.model.lesson.loading) {\n return\n }else if(this.value.includes(undefined)){\n this.value = this.value.map(v => v === undefined ? null : v);\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, this.value);\n this.value = this.currentValue;\n }\n\n get numberOfValues(): number {\n return (this.model.maxVal - this.model.minVal + 1)\n }\n\n get currentValue(): Array {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
3\" class=\"ion-text-left question questionTable\">\n
\n \n {{question}}\n \n \n \n
\n \n \n {{model.answerTexts[model.minVal + m]}}\n \n \n \n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\nimport { Question } from \"../Question\";\nimport { QuestionTextAreaModel } from \"../../../models/elements/QuestionTextAreaModel\";\n\n@Component({\n selector: 'app-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.scss'],\n})\nexport class TextArea extends Question {\n @Input() public loopIndex: number;\n @Input() isDiary = false;\n model: QuestionTextAreaModel;\n value: String = null;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): String {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n
\n \n {{model.questionResolved}}\n \n
\n \n
\n","import { Component, Input } from '@angular/core';\nimport { Question } from \"../Question\";\nimport { QuestionTextStringModel } from \"../../../models/elements/QuestionTextStringModel\";\n\n@Component({\n selector: 'app-text-string',\n templateUrl: './text-string.component.html',\n styleUrls: ['./text-string.component.scss'],\n})\nexport class TextString extends Question {\n @Input() public loopIndex: number;\n public model: QuestionTextStringModel;\n value: String = null;\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): String {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n
\n \n {{model.questionResolved}}\n \n
\n \n
\n","import {Component, Input} from '@angular/core';\nimport {TranslateService} from \"@ngx-translate/core\";\nimport {Question} from \"../Question\";\nimport {QuestionYesNoModel} from \"../../../models/elements/QuestionYesNoModel\";\n\n@Component({\n selector: 'app-yes-no',\n templateUrl: './yes-no.component.html',\n styleUrls: ['./yes-no.component.scss'],\n})\n\nexport class YesNo extends Question {\n @Input() public loopIndex: number;\n model: QuestionYesNoModel;\n yesTranslated: string;\n noTranslated: string;\n value: boolean = null;\n\n constructor(\n private translateService: TranslateService\n ) {\n super();\n this.yesTranslated = this.translateService.instant('LESSON.YES');\n this.noTranslated = this.translateService.instant('LESSON.NO');\n }\n\n ngAfterViewInit() {\n //emit null (so that there is an entry for each repetition) or saved answer\n this.emitAnswer(this.currentValue);\n }\n\n ngOnDestroy(){\n console.log(\"destroy pos \" + this.model.position + \" loop\" + this.loopIndex)\n this.model.lesson.removeAnswerRepetition(this.model.position, this.loopIndex);\n }\n\n public emitAnswer(value: any) {\n if (value === undefined || this.model.lesson.loading) {\n return\n }\n // insert technical answer in global array\n this.model.lesson.insertAnswer(this.model.position, this.loopIndex, value);\n this.value = this.currentValue;\n }\n\n get currentValue(): boolean {\n return this.model.lesson.getAnswer(this.model.position, this.loopIndex)\n }\n}\n","
\n \n {{model.questionResolved}}\n \n
\n \n {{yesTranslated}}\n \n \n {{noTranslated}}\n \n
\n
\n","import { Component } from '@angular/core';\nimport { Element_ } from \"../Element_\";\nimport { SpaceModel } from \"../../../models/elements/SpaceModel\";\n\n@Component({\n selector: 'app-space',\n templateUrl: './space.component.html',\n styleUrls: ['./space.component.scss'],\n})\nexport class Space extends Element_ {\n model: SpaceModel;\n\n constructor() {\n super();\n this.model = this.model as SpaceModel;\n }\n}\n","
\n
\n
\n
\n
\n","import {Component, ViewEncapsulation} from '@angular/core';\nimport {Element_} from \"../Element_\";\nimport {TextModel} from \"../../../models/elements/TextModel\";\nimport {TextType} from \"../../../../app/models/elements/Enums\";\nimport {Platform} from '@ionic/angular';\n\n\n@Component({\n selector: 'app-text',\n templateUrl: './text.component.html',\n styleUrls: ['./text.component.scss'],\n encapsulation: ViewEncapsulation.None, // THIS IS IMPORTANT, without you can't style data passed via [innerHTML]\n})\nexport class Text_ extends Element_ {\n\n model: TextModel;\n tableWidth: number;\n\n constructor(\n private platform: Platform\n ) {\n super();\n this.model = this.model as TextModel;\n }\n\n get TextType() {return TextType;}\n\n getIcon() {\n if (this.model.type == this.TextType.IMPORTANT) {\n return \"alert\";\n } else if (this.model.type == this.TextType.TIP) {\n return \"bulb\";\n } else if (this.model.type == this.TextType.INFO) {\n return \"information-circle-outline\";\n } else if (this.model.type == this.TextType.SUCCESS) {\n return \"checkmark\";\n }\n }\n\n get isMobile(): boolean {return this.platform.is('mobileweb');}\n\n get numberOfColumns(): number {\n return JSON.stringify(this.model.text).split(\"\")[1].split(\"\")[1].split(\"\").length - 1\n }\n}\n","
\n
\n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n \n \n \n
\n
4}\" [innerHTML]=\"model._textResolved\">\n
\n
\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {NavController, Platform} from '@ionic/angular';\nimport {HttpResponse, HttpErrorResponse} from '@angular/common/http';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {TranslateService} from '@ngx-translate/core';\nimport { map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nimport {Activity} from \"../../models/Activity\";\nimport {AlertService} from '../../providers/alert/alert.service';\nimport {LocalStorageService} from '../../providers/local-storage/local-storage.service';\nimport {ParserService} from \"../../providers/parser/parser.service\";\nimport {HelperService} from \"../../providers/helper/helper.service\";\nimport {RequestProviderService} from \"../../providers/request-provider/request-provider.service\";\nimport {TokenInterceptorService} from \"../../providers/token-interceptor/token-interceptor.service\";\nimport { BACKEND_URL } from \"../../../environments/environment\";\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n})\nexport class HeaderComponent implements OnInit {\n @Input() title: string;\n @Input() back = false;\n @Input() save = false;\n @Input() answersChanged: boolean;\n @Input() confirmBack = false;\n @Input() icon: string;\n @Output('saveEmitter') saveEmitter: EventEmitter = new EventEmitter();\n @Output('backEmitter') backEmitter: EventEmitter = new EventEmitter();\n @Output('changeLanguageEmitter') changeLanguageEmitter: EventEmitter = new EventEmitter();\n\n private language: string;\n public smallScreen: boolean = false;\n private length: number = 0;\n private loadedActivities: Array = [];\n\n constructor(\n private navCtrl: NavController,\n private router: Router,\n private alertService: AlertService,\n private translateService: TranslateService,\n public localStorage: LocalStorageService,\n private platform: Platform,\n private requestProvider: RequestProviderService,\n public parserService: ParserService,\n private helperService: HelperService,\n private tokenInterceptorService: TokenInterceptorService,\n ) {\n }\n\n ngOnInit() {\n //for page refresh\n document.body.classList.toggle('darkTheme', this.localStorage.getTheme() == '0');\n document.documentElement.style.setProperty('--backgroundImage', 'url(\"../../../assets/imgs/' + this.localStorage.getBackground() + '.jpg\")');\n\n this.router.events.subscribe((ev) => {\n if (ev instanceof NavigationEnd) {\n this.language = this.localStorage.getAppLanguage();\n this.translateService.use(this.language);\n }\n });\n\n if(this.platform.width() < 992){\n this.smallScreen = true;\n }\n\n this.platform.resize.subscribe(() => {\n if(this.platform.width() < 992){\n this.smallScreen = true;\n }else{\n this.smallScreen = false;\n }\n });\n }\n\n menuOpened(){\n this.loadedActivities = [];\n const infiniteScroll = document.getElementById('scrollActivities');\n console.log(infiniteScroll)\n\n infiniteScroll.addEventListener('ionInfinite', async function (){\n if(this.length < this.parserService.activityLog.length){\n console.log('Loading data...');\n await this.wait(500);\n //infiniteScroll.target.complete();\n this.appendItems(10);\n console.log('Done');\n }else{\n console.log('No More Data');\n //infiniteScroll.target.disabled = true;\n }\n });\n\n this.appendItems(30);\n }\n\n appendItems(number: number){\n console.log('length is', this.length);\n const originalLength = this.length;\n for (var i = 0; i < number; i++){\n this.loadedActivities.push(this.parserService.activityLog[i + originalLength]);\n this.length++;\n }\n console.log(this.loadedActivities)\n }\n\n wait(time: number):Promise{\n return new Promise((resolve) => {\n setTimeout(() => resolve, time);\n });\n }\n\n changeLanguage(selectedLanguage) {\n if (selectedLanguage !== this.language) {\n this.language = selectedLanguage;\n this.translateService.use(this.language);\n this.localStorage.setAppLanguage(this.language);\n this.tokenInterceptorService.cancelPendingRequests();\n this.changeLanguageEmitter.emit();\n }\n }\n\n logout() {\n let id = this.localStorage.getDeviceTokenId();\n if(id != -1){\n this.requestProvider.deleteDeviceToken(id).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.logoutRequest();\n }, (error) => {\n this.logoutRequest();\n });\n }else{\n this.logoutRequest();\n }\n }\n\n logoutRequest(){\n this.localStorage.removeDeviceTokenId();\n this.requestProvider.logout().pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n this.tokenInterceptorService.cancelPendingRequests();\n this.localStorage.removeToken();\n this.localStorage.removeUserEmail();\n this.localStorage.removeLocalUser();\n this.localStorage.removeUserId();\n this.parserService.newMessages = 0;\n this.parserService.newFeedback = 0;\n this.parserService.showAnnouncements = false;\n this.parserService.selectedAnnouncement = 0;\n this.navCtrl.navigateRoot('/login', {animated: true, animationDirection: 'forward'}); //use this to reset root so that no data of previously logged in user is still there todorouting\n // this.router.navigate(['/login'], {replaceUrl: true});\n }, (error) => {\n if (JSON.stringify(error) == '\\\"no internet connection.\\\"' || (error instanceof HttpErrorResponse && error.status == 401)) {\n this.localStorage.removeToken();\n this.localStorage.removeUserEmail();\n this.localStorage.removeLocalUser();\n this.localStorage.removeUserId();\n this.navCtrl.navigateRoot('/login', {animated: true, animationDirection: 'forward'}); //use this to reset root so that no data of previously logged in user is still there todorouting\n }else{\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_SOMETHING_WENT_WRONG');\n }\n });\n }\n\n private refresh() {\n this.requestProvider.refreshToken().then((response) => {\n if (response instanceof HttpResponse && response.status == 200) {\n this.localStorage.setToken(response.body.data.attributes.token);\n }\n }).catch((error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_TOKEN_REFRESH');\n });\n }\n\n goBack() {\n this.navCtrl.back();\n }\n\n routeToInvitations(){\n this.router.navigateByUrl('/invitations');\n }\n\n saveQuestionnaire(){\n this.saveEmitter.emit();\n }\n\n showHideAnnouncements(){\n this.parserService.showAnnouncements = !this.parserService.showAnnouncements;\n }\n\n previousAnnouncement(){\n this.parserService.selectedAnnouncement--;\n }\n\n nextAnnouncement(){\n this.parserService.selectedAnnouncement++;\n }\n\n emit() {}\n\n get isMobile(): boolean { return this.platform.is('mobileweb'); }\n\n get isDevelopVersion(): boolean { return !BACKEND_URL.includes(\"esano\"); }\n}\n","\n \n \n \n \n \n \n \n \n \n \n \n \n

\n {{ title }}\n

\n
\n\n \n Develop\n \n\n
\n 0\"\n mat-button\n id=\"showHideAnnouncements\"\n (click)=\"showHideAnnouncements()\"\n >\n notifications_none\n \n \n feedback\n \n \n

\n {{ \"HOME.YOUR_ACTIVITYLOG\" | translate }}\n

\n
\n {{ activity.text }}\n
\n {{\n helperService.formatDate(\n activity.created_at,\n localStorage.getAppLanguage()\n )\n }}\n
\n
\n \n \n \n \n \n \n
\n
\n\n
\n \n \n {{ \"GENERAL.GERMAN\" | translate }}\n \n \n {{ \"GENERAL.ENGLISH\" | translate }}\n \n \n
\n\n \n \n \n \n \n\n \n \n \n \n \n
\n\n 0\n \"\n class=\"announcement\"\n [ngClass]=\"\n parserService.announcements[parserService.selectedAnnouncement].type\n \"\n >\n
\n \n
\n \n {{\n parserService.announcements[parserService.selectedAnnouncement].title\n }}\n \n

\n {{\n parserService.announcements[parserService.selectedAnnouncement].message\n }}\n

\n
\n 0\"\n name=\"arrow-back\"\n (click)=\"previousAnnouncement()\"\n >\n {{ parserService.selectedAnnouncement + 1 }}\n {{ \"GENERAL.OF\" | translate }}\n {{ parserService.announcements.length }}\n \n
\n \n
\n","import { Component, ElementRef, Input, OnInit, ViewChild} from '@angular/core';\nimport { HelperService } from 'src/app/providers/helper/helper.service';\n\n@Component({\n selector: 'app-text-progress-bar',\n templateUrl: './text-progress-bar.component.html',\n styleUrls: ['./text-progress-bar.component.scss']\n})\nexport class TextProgressBar implements OnInit {\n @Input() pxProgressBarHeight: number;\n @Input() pxFontSize: number;\n @Input() value: number;\n @Input() text: string;\n @Input() progressBackground: string = null;\n @ViewChild('progressBarRef', { read: ElementRef }) progressBarRef: ElementRef;\n\n constructor(\n private helperService: HelperService\n ) { }\n\n ngOnInit(){\n // if no font size specified, use progress bar height\n if(this.text && !this.pxFontSize){\n this.pxFontSize = this.pxProgressBarHeight;\n }\n }\n\n ngAfterViewInit() {\n if(this.progressBackground){\n let pbStyle = this.progressBarRef.nativeElement.style;\n pbStyle.setProperty(\"--progress-background\", this.progressBackground);\n //use a brightened version of progressBackground\n pbStyle.setProperty(\"--background\", this.helperService.brightenHexColor(this.progressBackground, 50));\n }\n }\n}\n","
\n \n
\n {{text}}\n
\n
\n","import {NgModule} from \"@angular/core\";\nimport {IonicModule} from \"@ionic/angular\";\nimport {CommonModule} from \"@angular/common\";\nimport {ScrollbarThemeDirective} from \"./scrollbar-theme.directive\";\n\n@NgModule({\n imports: [\n IonicModule,\n CommonModule\n ],\n declarations: [\n ScrollbarThemeDirective\n ],\n exports: [\n ScrollbarThemeDirective\n ]\n})\n\nexport class DirectivesModule{}\n","import {NgModule, Directive, ElementRef, Input, OnInit} from '@angular/core';\n\n@Directive({\n selector: '[appScrollbarTheme]'\n})\nexport class ScrollbarThemeDirective implements OnInit{\n @Input('hide') hide = false;\n\n saveRef: ElementRef;\n\n constructor(\n elRef: ElementRef\n ) {\n // can't access width parameter in constructor, so saving reference to access on ngOnInit\n this.saveRef = elRef;\n }\n\n ngOnInit(): void {\n let width = 10\n if (this.hide){\n width = 0;\n }\n const stylesheetBlue =\n `::-webkit-scrollbar-track\n {\n \t-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);\n \tbackground-color: #F5F5F5;\n \tborder-radius: 10px;\n }\n ::-webkit-scrollbar\n {\n width: `+ width + `px;\n background-color: #000;\n }\n ::-webkit-scrollbar-thumb\n {\n border-radius: 10px;\n background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.44, rgb(122,153,217)),\n color-stop(0.72, rgb(73,125,189)), color-stop(0.86, rgb(28,58,148)));\n }`;\n\n const stylesheet =\n `::-webkit-scrollbar-track\n {\n -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);\n border-radius: 10px;\n background-color: #F5F5F5;\n }\n\n ::-webkit-scrollbar\n {\n width: `+ width + `px;\n background-color: --body-color;\n }\n\n ::-webkit-scrollbar-thumb\n {\n border-radius: 10px;\n -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);\n background-color: #1d3557;\n }`;\n\n const styleElmt = this.saveRef.nativeElement.shadowRoot.querySelector('style');\n if (styleElmt) {\n styleElmt.append(stylesheet);\n } else {\n const barStyle = document.createElement('style');\n barStyle.append(stylesheet);\n this.saveRef.nativeElement.shadowRoot.appendChild(barStyle);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { LocalStorageService } from \"../providers/local-storage/local-storage.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(\n private router: Router,\n private localStorage: LocalStorageService,\n ) {\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n //check if user has valid token\n if (this.localStorage.getToken() != \"\") {\n return of(true);\n } else {\n this.router.navigateByUrl('/login');\n return of(false);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { FEATURES } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SkillFeatureGuard implements CanActivate {\n private features = FEATURES;\n\n constructor(\n private router: Router,\n ) {\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n if(this.features.includes(\"skills\")){\n return of(true);\n }else{\n this.router.navigateByUrl('/home');\n return of(false);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';\nimport { Observable, of } from 'rxjs';\nimport { LocalStorageService } from \"../providers/local-storage/local-storage.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WebAppGuard implements CanActivate {\n constructor(\n private router: Router,\n private localStorage: LocalStorageService,\n ) {\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\n //check if it is native app\n if (!this.localStorage.getIsNativeApp()) {\n return of(true);\n } else {\n this.router.navigateByUrl('/intervention-overview');\n return of(false);\n }\n }\n}\n","export class Activity{\n id: number;\n text: string;\n action: string;\n created_at: Date;\n\n constructor(id: number, text: string, action: string, created_at: Date) {\n this.id = id;\n this.text = text;\n this.action = action;\n this.created_at = created_at;\n }\n}\n","export class Announcement{\n id: number;\n type: string;\n title: string;\n message: string;\n\n constructor(id: number, type: string, title: string, message: string) {\n this.id = id;\n this.type = type;\n this.title = title;\n this.message = message;\n }\n}\n","export class Answersheet {\n id: number;\n lessonId: number;\n instanceID: number;\n diaryInstanceID: number;\n answers: Array;\n locale: string;\n collected_at: number;\n version: string;\n\n constructor(id: number, lessonId: number, instanceID: number, diaryInstanceID: number, answers: Array, locale: string, collected_at: number, version: string) {\n this.id = id;\n this.lessonId = lessonId;\n this.instanceID = instanceID;\n this.diaryInstanceID = diaryInstanceID;\n this.answers = answers;\n this.locale = locale;\n this.collected_at = collected_at;\n this.version = version;\n }\n}\n","export class Diary {\n diaryId: number;\n title: string;\n description: string;\n picture: string;\n studyId: number\n lessonId: number\n\n constructor(diaryId: number, title: string, description: string, picture: string, studyId: number, lessonId: number) {\n this.diaryId = diaryId;\n this.title = title;\n this.description = description;\n this.picture = picture;\n this.studyId = studyId;\n this.lessonId = lessonId;\n }\n}\n","import {Answersheet} from \"./Answersheet\";\n\nexport class DiaryInstance{\n id: number;\n diaryID: number;\n title: string;\n description: string;\n picture: string;\n lessonOfDiary: number;\n studyId: number;\n answersheets: Answersheet[] = [];\n interventionInstanceId: number;\n hasQuicksavedAnswers: boolean = false;\n\n constructor(id: number, diaryID: number, title: string, description: string, picture: string, lessonOfDiary: number, studyId: number, interventionInstanceId: number) {\n this.id = id;\n this.diaryID = diaryID;\n this.title = title;\n this.description = description;\n this.picture = picture;\n this.lessonOfDiary = lessonOfDiary;\n this.studyId = studyId;\n this.interventionInstanceId = interventionInstanceId;\n }\n}\n","import {Lesson} from \"./Lesson\";\nimport {Answersheet} from \"./Answersheet\";\n\nexport class Instance {\n id: number;\n intervention_id: number;\n intervention_type: string;\n intervention_title: string;\n intervention_description: string;\n intervention_picture: string;\n ecoach_id: number;\n patient_id: number;\n configuration: Configuration;\n progress: Progress;\n created_at: Date;\n study_id: number;\n all_questionnaires?: Lesson[] = [];\n next_questionnaire_unlocks_at: Date;\n answersheets?: Answersheet[] = [];\n unlockMultiple: boolean = true;\n\n constructor(id: number, intervention_id: number, intervention_type: string, ecoach_id: number, patient_id: number, configuration: Configuration,\n progress: Progress, created_at: Date, intervention_title: string, intervention_description: string, intervention_picture: string, study_id: number, unlockMultiple: boolean) {\n this.id = id;\n this.intervention_id = intervention_id;\n this.intervention_type = intervention_type;\n this.ecoach_id = ecoach_id;\n this.patient_id = patient_id;\n this.configuration = configuration;\n this.progress = progress;\n this.created_at = created_at;\n this.intervention_title = intervention_title;\n this.intervention_description = intervention_description;\n this.intervention_picture = intervention_picture;\n this.study_id = study_id;\n this.unlockMultiple = unlockMultiple;\n }\n}\n\nexport interface Configuration {\n questionnaire_configuration: Questionnaire_Configuration[],\n custom_order: number[];\n}\n\nexport interface Questionnaire_Configuration {\n id: number,\n unlock_type: string,\n unlock_date: number;\n feedback_required: boolean;\n condition: Condition;\n bonus_lesson: boolean;\n}\n\nexport interface Condition {\n questionnaire_id: string;\n diary_id: string;\n ifBlock: any;\n}\n\nexport interface Progress {\n finished_questionnaires: number[];\n unlocked_questionnaires: number[];\n current_state: string;\n feedback_provided: Feedback_Provided[];\n unlocked_questionnaires_conditionally: Object[];\n}\n\nexport interface Feedback_Provided {\n questionnaire_id: number,\n thread_id: number,\n read: boolean,\n answersheet_id: number,\n feedback_required: boolean\n}\n","export class Intervention {\n id: number;\n title: string;\n description: string;\n type: string;\n gamification: Gamification;\n unlockMultiple: boolean;\n smallLayout: boolean;\n\n constructor(id: number, title: string, description: string, type: string, gamification: Gamification, unlockMultiple, smallLayout: boolean){\n this.id = id;\n this.title = title;\n this.description = description;\n this.type = type;\n this.gamification = gamification;\n this.unlockMultiple = unlockMultiple;\n this.smallLayout = smallLayout;\n }\n}\n\nexport interface Gamification{\n progressbars_enabled: boolean;\n skills_order: Array;\n}\n","export class Invitation {\n id: number;\n expiresAt: number;\n invitationToken: string;\n studyTitle: string;\n\n constructor(id: number, expiresAt: number, invitationToken: string, studyTitle: string) {\n this.id = id;\n this.expiresAt = expiresAt;\n this.invitationToken = invitationToken;\n this.studyTitle = studyTitle;\n }\n}\n","import {DiaryInstance} from \"./DiaryInstance\";\nimport {ElementModel} from \"./elements/ElementModel\";\n\nexport class Lesson {\n id: number;\n title: string;\n studyId: number;\n description: string;\n answersheetId: number;\n answersheetVersion: string;\n questions_required: boolean;\n finished: boolean = false;\n elements: Array;\n defaultColor: string\n answersLesson: boolean = false;\n conditional: boolean = false;\n afterPrevious: boolean = false;\n unlocked: boolean = false;\n unlock_diaries: Array;\n diaryID: number;\n skills: Array = [];\n // can be set during runtime if required\n diaryInstances: DiaryInstance[] = [];\n bonusLesson: boolean = true;\n // quicksaved completion progress and saveDate (set manually from localstorage during runtime if required)\n completionProgress: number;\n savedDate: Date;\n\n constructor(id: number, title: string, description: string, finished: boolean, defaultColor: string, unlock_diaries: Array,\n questions_required: boolean, diaryID: number, studyId: number, skills: Array) {\n this.id = id;\n this.title = title;\n this.description = description;\n this.finished = finished;\n this.defaultColor = defaultColor;\n this.unlock_diaries = unlock_diaries;\n this.questions_required = questions_required;\n this.diaryID = diaryID;\n this.studyId = studyId;\n this.skills = skills;\n }\n}\n","export class Message {\n id: number = 0;\n authorId: number = 0;\n authorName: string = \"\";\n message: string = \"\";\n createdAt: number = 0;\n\n constructor(id: number, authorId: number, authorName: string, message: string, createdAt: number) {\n this.id = id;\n this.authorId = authorId;\n this.authorName = authorName;\n this.message = message;\n this.createdAt = createdAt;\n }\n}\n","import { ElementModel } from \"./elements/ElementModel\";\n\nexport class Skill{\n id: number;\n intervention_id: number;\n title: string;\n color: string;\n icon: string;\n description: Array;\n study_id: number;\n\n constructor(id: number, intervention_id: number, title: string, color: string, icon: string, description: Array, study_id: number){\n this.id = id;\n this.intervention_id = intervention_id;\n this.title = title;\n this.color = color;\n this.icon = icon;\n this.description = description;\n this.study_id = study_id;\n }\n}","import {Message} from './Message';\n\nexport class Thread {\n id: number = 0;\n subject: string = \"\";\n answersheetId: number = 0;\n assignedInstanceID: number;\n lessonId: number = 0;\n lessonFeedbackRequired: boolean = false;\n read: boolean;\n createdAt: number = 0;\n unreadMessages: number = 0;\n messages: Message[] = [];\n participants: {id: number, name: string}[] = [];\n picture: string = \"\";\n\n constructor(id: number, subject: string, answersheetId: number, assignedInstanceID: number, lessonId: number, lessonFeedbackRequired: boolean, read: boolean,\n createdAt: number, unreadMessages: number, messages: Message[], participants: {id: number, name: string}[], picture: string) {\n this.id = id;\n this.subject = subject;\n this.answersheetId = answersheetId;\n this.assignedInstanceID = assignedInstanceID;\n this.lessonId = lessonId;\n this.lessonFeedbackRequired = lessonFeedbackRequired;\n this.read = read;\n this.createdAt = createdAt;\n this.unreadMessages = unreadMessages;\n this.messages = messages;\n this.participants = participants;\n this.picture = picture;\n }\n}\n","export class User{\n id: number;\n name: string;\n firstname: string;\n lastname: string;\n settings: UserSettings;\n\n constructor(id: number, name: string, firstname: string, lastname: string, settings: UserSettings) {\n this.id = id;\n this.name = name;\n this.firstname = firstname;\n this.lastname = lastname;\n this.settings = settings;\n }\n}\n\nexport interface UserSettings {\n background: string,\n theme: string,\n language: string,\n locale: string\n}\n","import {ElementModel} from \"./ElementModel\";\nimport {BlockType} from \"../../../app/models/elements/Enums\";\n\nexport class BlockModel extends ElementModel {\n text: string = '';\n type: BlockType;\n condition: string;\n repeat: string;\n position: number;\n elements = [];\n\n constructor(position: number, text: string, type: BlockType, condition: string, repeat: string) {\n super(position);\n this.text = text;\n this.type = type;\n this.condition = condition;\n this.repeat = repeat;\n }\n}\n","import {LessonPage} from \"../../pages/lesson/lesson.page\";\n\nexport abstract class ElementModel {\n elementType: string;\n position: number;\n lesson: LessonPage;\n isDisabled: boolean;\n resolvable: Array = [];\n\n protected constructor(position: number) {\n this.position = position;\n this.elementType = this.constructor.name;\n }\n}\n","export enum QuestionTypes {\n YES_NO, SINGLE_CHOICE, MULTIPLE_CHOICE, SAM_SCALE_FACE, SAM_SCALE_BODY, SLIDER,\n TEXT_AREA, TEXT_STRING, TEXT_DATE, HEADLINE, TEXT, MEDIA, BLOCK_OPENS, BLOCK_CLOSES, PAGE_CONDITIONAL,\n SPACE, LINE\n}\n\nexport enum MediaType {\n IMAGE_PNG, IMAGE_JPEG, IMAGE_GIF, IMAGE_SVG, AUDIO_MPEG, AUDIO_WAV, AUDIO_M4A, VIDEO_MP4, APPLICATION_DOC, APPLICATION_DOCX,\n APPLICATION_PPT, APPLICATION_PPTX, APPLICATION_ODT, APPLICATION_PDF,\n NOT_SUPPORTED\n}\n\nexport namespace MediaType {\n export function isApplication(media: MediaType): boolean {\n return (media == MediaType.APPLICATION_DOC || media == MediaType.APPLICATION_DOCX ||\n media == MediaType.APPLICATION_PPT || media == MediaType.APPLICATION_PPTX ||\n media == MediaType.APPLICATION_ODT || media == MediaType.APPLICATION_PDF);\n }\n\n export function isAudio(media: MediaType): boolean {\n return (media == MediaType.AUDIO_MPEG || media == MediaType.AUDIO_WAV || media == MediaType.AUDIO_M4A);\n }\n\n export function isImage(media: MediaType): boolean {\n return (media == MediaType.IMAGE_PNG || media == MediaType.IMAGE_JPEG || media == MediaType.IMAGE_GIF || media == MediaType.IMAGE_SVG);\n }\n\n export function isVideo(media: MediaType): boolean {\n return (media == MediaType.VIDEO_MP4);\n }\n\n export function isWord(media: MediaType): boolean {\n return (media === MediaType.APPLICATION_DOC || media === MediaType.APPLICATION_DOCX);\n }\n\n export function isExcel(media: MediaType): boolean {\n return (media === MediaType.APPLICATION_ODT);\n }\n\n export function isPowerpoint(media: MediaType): boolean {\n return (media === MediaType.APPLICATION_PPT || media === MediaType.APPLICATION_PPTX);\n }\n\n export function isPdf(media: MediaType): boolean {\n return (media === MediaType.APPLICATION_PDF);\n }\n}\n\nexport enum TextType {\n NONE, IMPORTANT, TIP, INFO, SUCCESS, HIGHLIGHT, TABLE\n}\nexport enum BlockType {\n NONE, DETAILS, CONDITIONAL, BOTH\n}\n","import {SafeHtml} from \"@angular/platform-browser\";\nimport {ElementModel} from \"./ElementModel\";\n\nexport class HeadlineModel extends ElementModel {\n resolvable = ['headline'];\n _headlineResolved: SafeHtml;\n headline: string;\n color: string;\n\n constructor(position: number, headline: string, color: string) {\n super(position);\n this.headline = headline;\n this.color = color;\n }\n\n public set headlineResolved(value: string) {\n this._headlineResolved = this.lesson.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import {ElementModel} from \"./ElementModel\";\n\nexport class LineModel extends ElementModel{\n constructor(position: number) {\n super(position);\n }\n}\n","import {MediaType} from '../../../app/models/elements/Enums';\nimport {ElementModel} from \"./ElementModel\";\n\nexport class MediaModel extends ElementModel {\n resolvable = ['subtitle', 'description'];\n subtitle: string;\n subtitleResolved: string;\n description: string;\n descriptionResolved: string;\n type: MediaType;\n webUri;\n isAudio: boolean;\n localUri;\n filePath: string;\n fileName: string;\n width: string;\n height: string;\n banner: boolean;\n platformIsAndroid: boolean = false;\n\n constructor(position: number, type: MediaType, isAudio: boolean, webUri, localUri, description: string, subtitle: string, filePath: string,\n fileName: string, width: string, height: string, banner: boolean, platformIsAndroid: boolean) {\n super(position);\n this.type = type;\n this.webUri = webUri;\n this.isAudio = isAudio;\n this.localUri = localUri;\n this.description = description;\n this.subtitle = subtitle;\n this.filePath = filePath;\n this.fileName = fileName;\n this.width = width;\n this.height = height;\n this.banner = banner;\n this.platformIsAndroid = platformIsAndroid;\n }\n}\n","import {ElementModel} from \"./ElementModel\";\n\nexport class PageModel extends ElementModel {\n color: string;\n condition: string;\n progressbar_text: string;\n elements: Array = [];\n pageIndex: number;\n\n constructor(position: number, color: string, condition: string, progessbar_text: string) {\n super(position);\n this.color = color;\n this.condition = condition;\n this.progressbar_text = progessbar_text;\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionDateModel extends QuestionModel {\n type: string;\n\n constructor(position: number, question: string, required: boolean, label: string, type: string) {\n super(position, question, required, label);\n this.type = type;\n }\n}\n","import {ElementModel} from \"./ElementModel\";\n\nexport abstract class QuestionModel extends ElementModel {\n resolvable = ['question']\n question: string;\n questionResolved: string;\n required: boolean;\n highlight: boolean;\n label: string;\n\n constructor(position: number, question: string, required: boolean, label: string) {\n super(position);\n this.question = question;\n this.required = required;\n this.label = label;\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionMultipleChoiceModel extends QuestionModel {\n resolvable = ['question', 'options']\n options: Array = [];\n optionsResolved: Array;\n values: Array = [];\n\n constructor(position: number, question: string, required: boolean, label: string, options: string[], values: string[]) {\n super(position, question, required, label);\n this.options = options;\n this.values = values;\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionSingleChoiceModel extends QuestionModel {\n resolvable = ['question', 'options']\n options: Array = [];\n optionsResolved: Array;\n values: Array = [];\n\n constructor(position: number, question: string, required: boolean, label: string, options: string[], values: string[]) {\n super(position, question, required, label);\n this.options = options;\n this.values = values;\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionSliderModel extends QuestionModel {\n labelLeft: string = \"\";\n labelRight: string = \"\";\n scaleRangeLeft: number = 0;\n scaleRangeRight: number = 1;\n stepWidth: number = 1;\n start: number;\n\n constructor(position: number, question: string, required: boolean, label: string, labelLeft: string, labelRight: string, scaleRangeLeft: number,\n scaleRangeRight: number, stepWidth: number, start: number) {\n super(position, question, required, label);\n this.labelLeft = labelLeft;\n this.labelRight = labelRight;\n this.scaleRangeLeft = scaleRangeLeft;\n this.scaleRangeRight = scaleRangeRight;\n this.stepWidth = stepWidth;\n this.start = start ? start : scaleRangeLeft;\n }\n}\n","import { QuestionModel } from \"./QuestionModel\";\n\nexport class QuestionTableModel extends QuestionModel {\n minVal: number = 0;\n maxVal: number = 1;\n answerTexts: Array = [];\n\n constructor(position: number, question: string, required: boolean, label: string, answers: string[], minVal: number, maxVal: number) {\n super(position, question, required, label);\n this.minVal = minVal;\n this.maxVal = maxVal;\n this.answerTexts = answers;\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionTextAreaModel extends QuestionModel {\n constructor(position: number, question: string, required: boolean, label: string) {\n super(position, question, required, label);\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionTextStringModel extends QuestionModel {\n constructor(position: number, question: string, required: boolean, label: string) {\n super(position, question, required, label);\n }\n}\n","import {QuestionModel} from \"./QuestionModel\";\n\nexport class QuestionYesNoModel extends QuestionModel {\n constructor(position: number, question: string, required: boolean, label: string) {\n super(position, question, required, label);\n }\n}\n","import {ElementModel} from \"./ElementModel\";\n\nexport class SpaceModel extends ElementModel{\n size: number\n\n constructor(position: number, size: number) {\n super(position);\n this.size = size;\n }\n}\n","import {SafeHtml} from \"@angular/platform-browser\";\nimport {ElementModel} from \"./ElementModel\";\nimport {TextType} from \"../../../app/models/elements/Enums\";\n\nexport class TextModel extends ElementModel {\n resolvable = ['text', 'headline'];\n text: string;\n _textResolved: SafeHtml;\n type: TextType;\n\n constructor(positon: number, text: string, type: TextType) {\n super(positon);\n this.text = text;\n this.type = type;\n }\n\n public set textResolved(value: string) {\n this._textResolved = this.lesson.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AlertController, LoadingController, ToastController } from \"@ionic/angular\";\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AlertService {\n constructor(\n private alertController: AlertController,\n private loadingController: LoadingController,\n private translateService: TranslateService,\n private toastController: ToastController\n ) {\n }\n\n /**\n * @method presentLoading\n *\n * Presents the standard loading modal.\n */\n public async presentLoading() {\n try {\n await this.loadingController.dismiss();\n } catch (e) { }\n let message = await this.translateService.instant(\"GENERAL.PLEASE_WAIT\");\n const loading = await this.loadingController.create({\n message: message,\n backdropDismiss: false,\n translucent: true,\n cssClass: 'custom-class custom-loading'\n });\n return await loading.present();\n }\n\n /**\n * @method dismissLoading\n *\n * Dismisses the loading modal.\n */\n public dismissLoading() {\n this.loadingController.dismiss().catch();\n }\n\n /**\n * @method presentToast\n * @param message The message which will be presented on the toast. Has to be inside the translations file.\n *\n * Presents a toast with custom text.\n */\n public async presentToastWithoutClosing(message: string) {\n try {\n await this.toastController.dismiss();\n } catch (e) { }\n\n const toast = await this.toastController.create({\n message: this.translateService.instant(message),\n position: \"top\",\n buttons: [\n {\n text: 'x',\n role: 'cancel',\n handler: () => { }\n }\n ]\n });\n toast.present();\n }\n\n /**\n * @method presentToast\n * @param message The message which will be presented on the toast. Has to be inside the translations file.\n *\n * Presents a toast with custom text.\n */\n public async presentToast(message: string) {\n try {\n await this.toastController.dismiss();\n } catch (e) { }\n\n const toast = await this.toastController.create({\n message: this.translateService.instant(message),\n duration: 5000,\n position: \"top\",\n buttons: [\n {\n text: 'x',\n role: 'cancel',\n handler: () => { }\n }\n ]\n });\n toast.present();\n }\n\n public async dismissAllToasts() {\n try {\n await this.toastController.dismiss();\n } catch (e) { }\n }\n\n /**\n * error window\n */\n public async showError(title, errorText) {\n const alert = await this.alertController.create({\n header: this.translateService.instant(title),\n subHeader: this.translateService.instant(errorText),\n buttons: [this.translateService.instant('BUTTONS.OK')]\n });\n alert.present();\n }\n\n /**\n * error window with details\n */\n public async showErrorWithDetails(title, errorText, errorDetails) {\n const alert = await this.alertController.create({\n header: this.translateService.instant(title),\n subHeader: this.translateService.instant(errorText),\n message: errorDetails,\n buttons: [this.translateService.instant('BUTTONS.OK')]\n });\n alert.present();\n }\n\n /**\n * Info window\n */\n public async showChoice(title, infoText, button1, button2, callbackButton1, callbackButton2) {\n const alert = await this.alertController.create({\n header: this.translateService.instant(title),\n subHeader: this.translateService.instant(infoText),\n buttons: [{\n text: this.translateService.instant(button1),\n handler: () => {\n callbackButton1();\n },\n role: 'cancel'\n }, {\n text: this.translateService.instant(button2),\n handler: () => {\n callbackButton2();\n }\n }]\n });\n await alert.present();\n }\n}\n","import {Injectable, EventEmitter} from '@angular/core';\nimport {Platform} from \"@ionic/angular\";\nimport {FCM} from \"@ionic-native/fcm/ngx\";\n// import { AngularFireMessaging } from '@angular/fire/compat/messaging';\nimport {Router} from \"@angular/router\";\nimport {map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\n// import {Invitation} from \"../../models/Invitation\";\nimport {LocalStorageService} from \"../local-storage/local-storage.service\";\nimport {RequestProviderService} from \"../request-provider/request-provider.service\";\nimport {AlertService} from \"../alert/alert.service\";\nimport {ParserService} from \"../parser/parser.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirebaseService {\n updateEmitter: EventEmitter = new EventEmitter();\n\n constructor(\n private platform: Platform,\n private router: Router,\n private fcm: FCM,\n // private afMessaging: AngularFireMessaging,\n private localStorage: LocalStorageService,\n private alertService: AlertService,\n private parserService: ParserService,\n private requestProvider: RequestProviderService,\n ) {\n }\n\n /**\n * @method getToken (mobile)\n *\n * Gets the necessary firebase token of the device and registers it as device token to the sever\n */\n public getToken() {\n this.fcm.getToken().then(token => {\n this.requestProvider.registerDeviceToken(token).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n let tokenId = response.headers.get('Location');\n tokenId = tokenId.split(\"\").reverse().join(\"\");\n tokenId = tokenId.substr(0, tokenId.indexOf('/'));\n tokenId = tokenId.split(\"\").reverse().join(\"\");\n this.localStorage.setDeviceTokenId(tokenId);\n }, (error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_FIREBASE_TOKEN');\n });\n });\n }\n\n /**\n * @method listenMobile\n *\n * Starts the listener for receiving message of firebase on mobile devices\n */\n public listenMobile() {\n this.fcm.onNotification().subscribe(payload => {\n this.showAlertMessage(\"You got new data\", \"New data\", \"threads/chat-overview\", \"Go to conversations\");\n });\n }\n\n // mobile\n public showAlertMessage(msg: string, header: string, route: string, text: string) {\n if (this.router.url.includes(\"lesson\") || this.router.url.includes(\"chat\")) {\n setTimeout(() => this.showAlertMessage(msg, header, route, text), 5000);\n return;\n }\n this.alertService.showChoice(header, msg, 'BUTTONS.CANCEL', text,\n () => {},\n () => {\n this.router.navigate([route]);\n });\n }\n\n /**\n * @method onTokenRefresh (mobile)\n *\n * Subscribe to the event of changes to the firebase token and registers the new token to the serve\n */\n public onTokenRefresh() {\n this.fcm.onTokenRefresh()\n .subscribe((token) => {\n this.requestProvider.registerDeviceToken(token).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n .subscribe((response) => {\n let tokenId = response.headers.get('Location');\n tokenId = tokenId.split(\"\").reverse().join(\"\");\n tokenId = tokenId.substr(0, tokenId.indexOf('/'));\n tokenId = tokenId.split(\"\").reverse().join(\"\");\n this.localStorage.setDeviceTokenId(tokenId);\n }, (error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_FIREBASE_TOKEN');\n });\n });\n }\n\n /**\n * @method requestPermission (web)\n * Requests permission to allow push notification for Web Users. If allowed, it genereates a token which gets registered to the server\n */\n public requestPermission() {\n // this.afMessaging.requestToken\n // .subscribe((token) => {\n // this.requestProvider.registerDeviceToken(token).pipe(map((result) => result), catchError(error => {return throwError(error)}))\n // .subscribe((response) => {\n // let tokenId = response.headers.get('Location');\n // tokenId = tokenId.split(\"\").reverse().join(\"\");\n // tokenId = tokenId.substr(0, tokenId.indexOf('/'));\n // tokenId = tokenId.split(\"\").reverse().join(\"\");\n // this.localStorage.setDeviceTokenId(tokenId);\n // }, (error) => {\n // this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_FIREBASE_TOKEN');\n // });\n // },\n // (error) => {});\n }\n\n /**\n * @method listenWeb\n *\n * Starts the listener for receiving message of firebase for Web Users\n */\n public listenWeb() { //todoRefactoring reload data on current page\n // this.afMessaging.messages.subscribe((payload) => {\n // let body = JSON.parse(payload['notification']['body'])\n // console.log(payload['notification'])\n // if(body.answersheet_id != null || body.title == 'intervention_instance_state_updated: feedback_provided'){\n // this.alertService.presentToast(\"CHAT_FEEDBACK.NEW_FEEDBACK\");\n // this.updateEmitter.emit();\n\n // //show number of new feedback threads in navigation\n // this.requestProvider.getMyFeedback().pipe(map((result) => result), catchError(error => {return throwError(error)}))\n // .subscribe((response) => {\n // this.parserService.parseThreads(response, 'feedback');\n // },\n // (error) => {\n // this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_DATA_LOADING');\n // });\n // }else if(body.thread_id != null){\n // this.alertService.presentToast(\"CHAT_FEEDBACK.NEW_MESSAGE\");\n // this.updateEmitter.emit();\n\n // //show number of new messages in navigation\n // this.requestProvider.getMyMessages().pipe(map((result) => result), catchError(error => {return throwError(error)}))\n // .subscribe((response) => {\n // this.parserService.parseThreads(response, 'messages');\n // }, (error) => {\n // this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_DATA_LOADING');\n // });\n // }else{\n // //todoRefactoring active state?\n // switch (body.title) {\n // case 'intervention_instance_created':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.NEW_INSTANCE\");\n // this.updateEmitter.emit();\n // break;\n // case 'intervention_instance_state_updated: paused':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.INSTANCE_PAUSED\");\n // this.updateEmitter.emit();\n // break;\n // case 'intervention_instance_state_updated: canceled':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.INSTANCE_CANCELED\");\n // this.updateEmitter.emit();\n // break;\n // case 'intervention_instance_state_updated: completed':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.INSTANCE_COMPLETED\");\n // this.updateEmitter.emit();\n // break;\n // case 'intervention_instance_unlocked_questionnaires_updated':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.LESSON_UNLOCKED\");\n // this.updateEmitter.emit();\n // break;\n // case 'study_invitation_sent':\n // this.alertService.presentToast(\"CHAT_FEEDBACK.STUDY_INVITATION_AVAILABLE\");\n // this.parserService.invitations.push(new Invitation(-1, -1, \"\", \"\"));\n // break;\n // default:\n // this.updateEmitter.emit(); //todoRefactoring remove\n // break;\n // }\n // }\n // });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport * as CryptoJS from 'crypto-js';\nimport { Thread } from \"../../models/Thread\";\nimport { BACKEND_URL, BACKEND_URL_MEDIA } from \"../../../environments/environment\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HelperService {\n private previousUrl: string;\n private currentUrl: string;\n\n constructor(\n private translateService: TranslateService,\n private router: Router,\n ) {\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n };\n });\n }\n\n public formatDate(unformattedDate: number, locale: string): string {\n const date = new Date(unformattedDate);\n const dateOptions = { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' } as const;\n const timeOptions = { hour: '2-digit', minute: '2-digit' } as const;\n let dateString = date.toLocaleDateString(locale, dateOptions) + \", \" + date.toLocaleTimeString(locale, timeOptions);\n if (locale == \"de-DE\") {\n dateString += \" Uhr\";\n }\n return dateString\n }\n\n public getPicture(picture: string, studyId) {\n if (picture) {\n return BACKEND_URL_MEDIA + \"/\" + studyId + \"/\" + picture\n } else {\n return \"../../../assets/imgs/NoPic.png\"\n }\n }\n\n public getUserPicture(userId: number) {\n return BACKEND_URL + \"/uploads/users/\" + userId\n }\n\n public getPreviousUrl() {\n return this.previousUrl;\n }\n\n public getStateText(instanceState: string, details: boolean) {\n if (instanceState === \"awaiting_next_questionnaire\") {\n return this.translateService.instant('INSTANCE.WAITING_LESSON_UNLOCK');\n } else if (instanceState === \"feedback_required\") {\n if (details) {\n return this.translateService.instant('INSTANCE.INSTANCE_FEEDBACK_REQUIRED');\n } else {\n return this.translateService.instant('INSTANCE.WAITING_LESSON_FEEDBACK');\n }\n } else if (instanceState === \"feedback_provided\") {\n return this.translateService.instant('INSTANCE.LOOK_AT_FEEDBACK');\n } else if (instanceState === \"paused\") {\n return this.translateService.instant('INSTANCE.INSTANCE_PAUSED');\n } else if (instanceState === \"canceled\") {\n return this.translateService.instant('INSTANCE.INSTANCE_CANCELED');\n } else if (instanceState === \"completed\") {\n return this.translateService.instant('INSTANCE.INSTANCE_COMPLETED');\n } else {\n return \"\"\n }\n }\n\n public sortThreadsByNewestDate(threads: Thread[]) {\n for (const thread of threads) {\n if (thread.messages.length !== 0) {\n threads.sort((n1, n2) => {\n if (n1.messages.length !== 0 && n2.messages.length !== 0) {\n if (n1.messages[n1.messages.length - 1].createdAt < n2.messages[n2.messages.length - 1].createdAt) {\n return 1;\n }\n if (n1.messages[n1.messages.length - 1].createdAt > n2.messages[n2.messages.length - 1].createdAt) {\n return -1;\n }\n return 0;\n } else {\n return -1;\n }\n });\n }\n }\n return threads\n }\n\n public encrypt(data: string, key) {\n return CryptoJS.AES.encrypt(data, key).toString();\n }\n\n public decrypt(data, key): string {\n let bytes = CryptoJS.AES.decrypt(data, key);\n return bytes.toString(CryptoJS.enc.Utf8);\n }\n\n // Expects format: '#rrggbb'\n brightenHexColor(color: string, percent: number) {\n color = color.substr(1, 6);\n var r = parseInt(color.substr(0, 2), 16);\n var g = parseInt(color.substr(2, 2), 16);\n var b = parseInt(color.substr(4, 2), 16);\n\n return '#' +\n ((0 | (1 << 8) + r + (256 - r) * percent / 100).toString(16)).substr(1) +\n ((0 | (1 << 8) + g + (256 - g) * percent / 100).toString(16)).substr(1) +\n ((0 | (1 << 8) + b + (256 - b) * percent / 100).toString(16)).substr(1);\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as bcrypt from 'bcryptjs';\nimport { Storage } from '@ionic/storage';\nimport { HelperService } from \"../../providers/helper/helper.service\";\nimport { Answer } from \"../../models/Answer\";\n// import { MediaType, QuestionTypes } from '../../../app/models/elements/Enums';\n// import { DomSanitizer, SafeUrl } from '@angular/platform-browser';\n// import { Platform } from '@ionic/angular';\n// import { SecureStorage, SecureStorageObject } from '@ionic-native/secure-storage/ngx';\n// import { File } from '@ionic-native/file/ngx';\n// import { Lesson } from \"../../models/Lesson\";\n// import { MediaModel } from \"../../models/elements/MediaModel\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalStorageService {\n constructor(\n private nativeStorage: Storage,\n private helperService: HelperService,\n // private storage: SecureStorage,\n // private file: File,\n // private sanitizer: DomSanitizer,\n // private platform: Platform,\n ) {\n }\n\n public setToken(token: string) {\n localStorage.setItem('token', token);\n }\n\n public getToken(): string {\n let token = localStorage.getItem('token');\n if (!token) {\n token = \"\";\n }\n return token\n }\n\n public removeToken() {\n localStorage.removeItem('token');\n }\n\n //set by native app\n public getIsNativeApp(): boolean {\n let string = localStorage.getItem('mobile_app');\n if(string && string == \"1\"){\n return true\n }else{\n return false\n }\n }\n\n public setUserId(id: number) {\n localStorage.setItem('userid', String(id));\n }\n\n public getUserId(): number {\n let id = parseInt(localStorage.getItem('userid'));\n if (!id) {\n id = -1;\n }\n return id\n }\n\n public removeUserId() {\n localStorage.removeItem('userid');\n }\n\n public setUserEmail(email: string) {\n localStorage.setItem('userMail', email);\n }\n\n public getUserEmail(): string {\n let email = localStorage.getItem('userMail');\n if (!email) {\n email = \"\";\n }\n return email\n }\n\n public removeUserEmail() {\n localStorage.removeItem('userMail');\n }\n\n public setLocalUser(id: number, password: string) {\n let salt = bcrypt.genSaltSync(10);\n let hashedPassword = bcrypt.hashSync(password, salt);\n localStorage.setItem(id + \"\", hashedPassword);\n }\n\n //get hashed password of user if user exists\n public getLocalUser(id: number): string {\n let pw = localStorage.getItem(id + \"\");\n if (!pw) {\n pw = \"\";\n }\n return pw\n }\n\n public removeLocalUser() {\n localStorage.removeItem(this.getUserId() + \"\");\n }\n\n public setTheme(theme: string) {\n localStorage.setItem('theme', theme);\n }\n\n public getTheme(): string {\n let theme = localStorage.getItem('theme');\n if (!theme) {\n theme = \"0\";\n }\n return theme\n }\n\n public setBackground(background: string) {\n localStorage.setItem('background', background);\n }\n\n public getBackground(): string {\n let background = localStorage.getItem('background');\n if (!background) {\n background = \"0\";\n }\n return background\n }\n\n public setAppLanguage(language: string) {\n localStorage.setItem('appLanguage', language);\n }\n\n public getAppLanguage(): string {\n let language = localStorage.getItem('appLanguage');\n if (!language) {\n language = \"de\" //could use this.translate.getBrowserLang();\n this.setAppLanguage(\"de\");\n }\n return language\n }\n\n public setDeviceTokenId(id: string) {\n localStorage.setItem('devicetoken', String(id));\n }\n\n public getDeviceTokenId(): number {\n let id = parseInt(localStorage.getItem('devicetoken'));\n if (!id) {\n id = -1;\n }\n return id\n }\n\n public removeDeviceTokenId() {\n localStorage.removeItem('devicetoken');\n }\n\n /**\n * @method saveAnswersLocally\n * @param lessonId\n * @param instanceId (for diary diaryInstanceId is used)\n * @param isDiary\n * @param answers\n * @param page\n *\n * save answers of a lesson into secure storage (encrypted)\n * @param instanceId\n */\n public async setQuicksavedAnswers(lessonId: number, instanceId: number, isDiary: boolean, answers: Array, page: number) {\n let userEmail = this.getUserEmail();\n let data = {\n answers: answers,\n page: page\n }\n let encryptedData = this.helperService.encrypt(JSON.stringify(data), userEmail);\n return new Promise((resolve, reject) => {\n this.nativeStorage.set(userEmail + ':lesson' + lessonId + ':quicksavedAnswers' + instanceId + ':instance' + isDiary + 'isDiary', encryptedData).then((successful) => {\n let decryptedData = this.helperService.decrypt(successful, userEmail);\n resolve(successful);\n }, (error) => {\n reject(error);\n });\n });\n }\n\n /**\n * @method getQuicksavedAnswers\n * @param lessonId\n * @param instanceId (for diary diaryInstanceId is used)\n * @return Promise for array of answers. Each entry in the array consists of a label and an answer. The label\n * marks the question the answer belongs to.\n *\n * return answers of a lesson the user has quicksaved\n */\n public async getQuicksavedAnswers(lessonId: number, instanceId: number, isDiary: boolean): Promise {\n let userEmail = this.getUserEmail();\n return await this.nativeStorage.get(userEmail + ':lesson' + lessonId + ':quicksavedAnswers' + instanceId + ':instance' + isDiary + 'isDiary').then((data) => {\n let decryptedData = this.helperService.decrypt(data, userEmail);\n return JSON.parse(decryptedData);\n }).catch((error) => {\n return [];\n });\n }\n\n /**\n * @method removeQuicksavedAnswers\n * @param lessonId\n *\n * remove quicksavings of a lesson.\n */\n public async removeQuicksavedAnswers(lessonId: number, instanceId: number, isDiary: boolean) {\n let userEmail = this.getUserEmail();\n return new Promise((resolve, reject) => {\n try {\n this.nativeStorage.remove(userEmail + ':lesson' + lessonId + ':quicksavedAnswers' + instanceId + ':instance' + isDiary + 'isDiary').then((data) => {\n resolve(data);\n }, (error) => {\n reject(error);\n });\n } catch (exception) {\n reject(exception);\n }\n });\n }\n\n /**\n *\n * @param lessonId\n * @param instanceId\n * @param currentPage\n * @param totalPages\n *\n * saves current quicksaved lesson progress through page count into local storage\n */\n public async setLessonProgress(lessonId: number, instanceId: number, currentPage: number, totalPages: number) {\n let userEmail = this.getUserEmail();\n let savedDate = new Date();\n let data = {\n currentPage: currentPage,\n totalPages: totalPages,\n savedDate: savedDate\n }\n let encryptedData = this.helperService.encrypt(JSON.stringify(data), userEmail);\n return new Promise((resolve, reject) => {\n this.nativeStorage.set(userEmail + ':lesson' + lessonId + ':progress' + instanceId + ':instance', encryptedData).then((successful) => {\n let decryptedData = this.helperService.decrypt(successful, userEmail);\n resolve(successful);\n }, (error) => {\n reject(error);\n });\n });\n }\n\n /**\n *\n * @param lessonId\n * @param instanceId\n * @returns Promise for array of pages count\n *\n * Returns current page progress of quicksaved answers\n */\n public async getLessonProgress(lessonId: number, instanceId: number): Promise {\n let userEmail = this.getUserEmail();\n return await this.nativeStorage.get(userEmail + ':lesson' + lessonId + ':progress' + instanceId + ':instance').then((data) => {\n let decryptedData = this.helperService.decrypt(data, userEmail);\n return JSON.parse(decryptedData);\n }).catch((error) => {\n return [];\n });\n }\n\n /**\n *\n * @param lessonId\n * @param instanceId\n *\n * removes current quicksaved page progress\n */\n public async removeLessonProgress(lessonId: number, instanceId: number) {\n let userEmail = this.getUserEmail();\n return new Promise((resolve, reject) => {\n try {\n this.nativeStorage.remove(userEmail + ':lesson' + lessonId + ':progress' + instanceId + ':instance').then((data) => {\n resolve(data);\n }, (error) => {\n reject(error);\n });\n } catch (exception) {\n reject(exception);\n }\n });\n }\n\n /*\n to use secure storage replace\n await this.storageReady();\n return await this.secureStorageUser.get(email).then((data) => {\n\n private secureStorageUser: SecureStorageObject;\n\n storageReady() {\n return new Promise((resolveReady, rejectReady) => {\n let promiseUsers = new Promise(async (resolve, reject) => {\n if (this.secureStorageUser == null) {\n await this.storage.create('users').then((secureStorage: SecureStorageObject) => {\n this.secureStorageUser = secureStorage;\n resolve();\n }).catch((error) => {\n reject(error);\n });\n } else {\n resolve();\n }\n });\n\n Promise.all([\n promiseUsers,\n ]).then(() => {\n resolveReady();\n }, (error) => {\n rejectReady(error);\n });\n });\n }\n */\n\n // methods to save lesson & media locally\n //\n // /**\n // * @method saveLessonLocally\n // * @param lesson\n // *\n // * Save a LessonModel to local storage.\n // */\n // saveLessonLocally(lesson: Lesson) {\n // // encrypt lesson and save as JSON in secure storage\n // return new Promise(async (resolve, reject) => {\n // // media elements are saved as files on the device. The uri for the element is laoded from the storage.\n // // this uri is to big to be saved again, so it will be deleted. When loading the lesson again, the uri gets\n // // reset. After successfully saving, the uris are set back so the currently used model keeps its data.\n // let localUris: { webUri: string, uri: SafeUrl }[] = [];\n // for (let element of lesson.elements){\n // if (element instanceof MediaModel) {\n // localUris.push({webUri: element.webUri, uri: element.localUri});\n // element.localUri = '';\n // }\n // }\n // let encryptedData = this.helperService.encrypt(JSON.stringify(lesson), this.getUserEmail());\n // let language = \"de\"; //use current\n //\n // this.nativeStorage.set('lesson:' + lesson.id + ':' + language, JSON.stringify(lesson)).then((successful) => {\n // for (let element of lesson.elements) {\n // if (element instanceof MediaModel) {\n // for (let localUri of localUris) {\n // if (localUri.webUri == element.webUri) {\n // element.localUri = localUri.uri;\n // }\n // }\n // }\n // }\n // resolve(successful);\n // }).catch((error) => {\n // for (let element of lesson.elements) {\n // if (element instanceof MediaModel) {\n // for (let localUri of localUris) {\n // if (localUri.webUri == element['label']) {\n // element.localUri = localUri.uri;\n // }\n // }\n // }\n // }\n // reject(error);\n // });\n // });\n // }\n //\n // /**\n // * @method getLocalLesson\n // * @param lessonId\n // * @return Promise for a LessonModel containing a specific lesson.\n // *\n // * Load a lesson from local Storage.\n // */\n // async getLocalLesson(lessonId: number): Promise {\n // // get intervention entry\n // let lesson: Lesson = await this.nativeStorage.get('lesson:' + lessonId + ':' + this.getAppLanguage()).then(async (lessonString) => {\n // // decrypt lesson and parse into LessonModel\n // let decryptedData = this.helperService.decrypt(lessonString, this.getUserEmail());\n // lesson = JSON.parse(decryptedData);\n // let lessonLoaded = JSON.parse(lessonString);\n //\n // // load media file for each media element and set uri accordingly\n // for (let page of lessonLoaded.elements) {\n // for (let element of page.questions) {\n // if (element.type == QuestionTypes.MEDIA) {\n // if (element.questionModel['localUri'] == '') {\n // element.questionModel['localUri'] = await this.loadMediaFile(element.questionModel['filePath'], element.questionModel['fileName'], element.type['type']).then((url) => {\n // return url;\n // }).catch(() => {\n // return element.questionModel['webUri'];\n // });\n // }\n // }\n // }\n // }\n // return lessonLoaded;\n // }).catch((error) => {\n // throw('could not load local lesson');\n // });\n // return lesson;\n // }\n //\n // /**\n // * @method saveMediaFile\n // * @param filePath\n // * @param fileName\n // * @param blob\n // * @param replace\n // *\n // * create a file for a media component on the device\n // */\n // saveMediaFile(filePath: string, fileName: string, blob: Blob, replace: boolean) {\n // return new Promise(async (resolve, reject) => {\n // if (!this.platform.is('android') && !this.platform.is('ios')) {\n // // return the online url for browser module since browser cannot save media locally\n // resolve('browser');\n // }\n // await this.file.writeFile(filePath, fileName, blob, {replace: replace}).then(() => {\n // resolve();\n // }).catch((error) => {\n // reject(error); //Rethrow - will be caught by caller\n // });\n //\n // });\n // }\n //\n // /**\n // * @method loadMediaFile\n // * @param filePath\n // * @param fileName\n // * @param type\n // * @return Promise for Media File\n // *\n // * creates a Safe Url for a saved media file which can then be used as source by html tags.\n // */\n // async loadMediaFile(filePath: string, fileName: string, type: MediaType): Promise {\n // if (!this.platform.is('android') && !this.platform.is('ios')) {\n // // return the online url for browser module since browser cannot save media locally\n // throw ('browser');\n // }\n // if (!this.file.checkFile(filePath, fileName)) {\n // throw('file does not exist');\n // }\n // let fileType: string;\n // switch (type) {\n // case (MediaType.IMAGE_JPEG):\n // fileType = 'image/jpg';\n // break;\n // case (MediaType.IMAGE_PNG):\n // fileType = 'image/png';\n // break;\n // case (MediaType.IMAGE_GIF):\n // fileType = 'image/gif';\n // break;\n // case (MediaType.AUDIO_WEBM):\n // fileType = 'audio/wemb';\n // break;\n // case (MediaType.AUDIO_OGG):\n // fileType = 'audio/ogg';\n // break;\n // case (MediaType.VIDEO_WEBM):\n // fileType = 'video/webm';\n // break;\n // case (MediaType.VIDEO_OGG):\n // fileType = 'video/ogg';\n // break;\n // default:\n // throw('media type does not exist.');\n // }\n // return await this.file.readAsArrayBuffer(filePath, fileName).then((result) => {\n // let blob = new Blob([result], {type: fileType});\n // let urlCreator = window.URL;\n // return this.sanitizer.bypassSecurityTrustUrl(urlCreator.createObjectURL(blob));\n // });\n // }\n}\n","import { Injectable } from \"@angular/core\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { Platform } from \"@ionic/angular\";\nimport { File } from \"@ionic-native/file/ngx\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { User } from \"../../models/User\";\nimport { Diary } from \"../../models/Diary\";\nimport { DiaryInstance } from \"../../models/DiaryInstance\";\nimport { Activity } from \"../../models/Activity\";\nimport { Invitation } from \"../../models/Invitation\";\nimport { Instance } from \"../../models/Instance\";\nimport { Lesson } from \"../../models/Lesson\";\nimport { Answersheet } from \"../../models/Answersheet\";\nimport { Thread } from \"../../models/Thread\";\nimport { Message } from \"../../models/Message\";\nimport { ElementModel } from \"../../models/elements/ElementModel\";\nimport { BlockModel } from \"../../models/elements/BlockModel\";\nimport { LineModel } from \"../../models/elements/LineModel\";\nimport { PageModel } from \"../../models/elements/PageModel\";\nimport { SpaceModel } from \"../../models/elements/SpaceModel\";\nimport { TextModel } from \"../../models/elements/TextModel\";\nimport { HeadlineModel } from \"../../models/elements/HeadlineModel\";\nimport { MediaModel } from \"../../models/elements/MediaModel\";\nimport { QuestionYesNoModel } from \"../../models/elements/QuestionYesNoModel\";\nimport { QuestionSingleChoiceModel } from \"../../models/elements/QuestionSingleChoiceModel\";\nimport { QuestionMultipleChoiceModel } from \"../../models/elements/QuestionMultipleChoiceModel\";\nimport { QuestionSliderModel } from \"../../models/elements/QuestionSliderModel\";\nimport { QuestionTableModel } from \"../../models/elements/QuestionTableModel\";\nimport { QuestionTextStringModel } from \"../../models/elements/QuestionTextStringModel\";\nimport { QuestionTextAreaModel } from \"../../models/elements/QuestionTextAreaModel\";\nimport { QuestionDateModel } from \"../../models/elements/QuestionDateModel\";\nimport { Announcement } from \"../../models/Announcement\";\nimport { AlertService } from \"../alert/alert.service\";\nimport { HelperService } from \"../helper/helper.service\";\nimport { RequestProviderService } from \"../../providers/request-provider/request-provider.service\";\nimport { LocalStorageService } from \"../local-storage/local-storage.service\";\nimport {\n BlockType,\n MediaType,\n TextType,\n} from \"../../../app/models/elements/Enums\";\nimport { BACKEND_URL } from \"../../../environments/environment\";\nimport { Intervention } from \"../../models/Intervention\";\nimport { Skill } from \"src/app/models/Skill\";\n\n@Injectable({\n providedIn: \"root\",\n})\nexport class ParserService {\n public activityLog: Array = [];\n public invitations: Array = [];\n public newMessages: number = 0;\n public newFeedback: number = 0;\n public announcements: Array = [];\n public showAnnouncements: boolean = false;\n public selectedAnnouncement: number = 0;\n public showDiaries: boolean = true;\n public showProgress: boolean = true;\n\n constructor(\n private file: File,\n private sanitizer: DomSanitizer,\n private platform: Platform,\n private alertService: AlertService,\n private localStorage: LocalStorageService,\n private requestProvider: RequestProviderService,\n private helperService: HelperService,\n private translationService: TranslateService\n ) {}\n\n public parseUser(userJSON: object): User {\n let user = userJSON[\"body\"].data;\n if (!user.attributes.settings) {\n user.attributes.settings = {};\n }\n if (!user.attributes.settings.background) {\n user.attributes.settings.background = \"0\";\n }\n if (!user.attributes.settings.theme) {\n user.attributes.settings.theme = \"0\";\n }\n if (!user.attributes.settings.language) {\n user.attributes.settings.language = \"de\";\n }\n if (!user.attributes.settings.locale) {\n user.attributes.settings.locale = \"de\";\n }\n let result = new User(\n user.id,\n user.attributes.name,\n user.attributes.firstname,\n user.attributes.lastname,\n user.attributes.settings\n );\n return result;\n }\n\n public parseActivities(activityArrJSON: object): Array {\n let activityArr = activityArrJSON[\"body\"].data;\n let result = [];\n for (let index in activityArr) {\n let attributesJSON = activityArr[index].attributes;\n let activityText = attributesJSON.text;\n if (attributesJSON.name != null) {\n activityText = activityText.replace(\"{{name}}\", attributesJSON.name);\n }\n result.push(\n new Activity(\n activityArr[index].id,\n activityText,\n attributesJSON.action,\n new Date(attributesJSON.created_at)\n )\n );\n }\n return result;\n }\n\n public parseInvitations(invitationArrJSON: object): Array {\n let invitationArr = invitationArrJSON[\"body\"].data;\n let result = [];\n for (let index in invitationArr) {\n let timestamp = Number(\n invitationArr[index].attributes.expires_at + \"000\"\n );\n result.push(\n new Invitation(\n invitationArr[index].id,\n timestamp,\n invitationArr[index].attributes.uri.replace(\n BACKEND_URL + \"/api/v1/studies/invitation?token=\",\n \"\"\n ),\n invitationArr[index].attributes.study_title\n )\n );\n }\n this.invitations = result;\n return result;\n }\n\n public parseInterventions(interventionArrJSON: object): Array {\n let interventionsArr = interventionArrJSON[\"body\"].data;\n let result = [];\n for (let index in interventionsArr) {\n result.push(this.parseIntervention(interventionsArr[index]));\n }\n return result;\n }\n\n public parseIntervention(interventionJSON: object): Intervention {\n let attributes = interventionJSON[\"attributes\"];\n let id = interventionJSON[\"id\"];\n let unlockMultiple;\n if (interventionJSON[\"body\"]) {\n attributes = interventionJSON[\"body\"].data.attributes;\n id = interventionJSON[\"body\"].data.id;\n unlockMultiple =\n attributes.unlock_multiple_conditionals === undefined ||\n attributes.unlock_multiple_conditionals == 1 ||\n attributes.unlock_multiple_conditionals == true\n ? true\n : false;\n }\n return new Intervention(\n id,\n attributes.title,\n attributes.description,\n attributes.type,\n attributes.gamification,\n unlockMultiple,\n attributes.small_layout\n );\n }\n\n public parseInstances(\n instanceArrJSON: object,\n interventions: Array\n ): Array {\n let instanceArr = instanceArrJSON[\"body\"].data;\n let result = [];\n for (let index in instanceArr) {\n result.push(this.parseInstance(instanceArr[index]));\n }\n\n //check if user has instances with skills\n if (interventions.length > 0) {\n let instancesWithSkills = result.filter(\n (instance) =>\n instance.progress.current_state != \"completed\" &&\n instance.progress.current_state != \"canceled\"\n );\n instancesWithSkills = instancesWithSkills.filter((instance) => {\n let intervention = interventions.find(\n (i) => i.id == instance.intervention_id\n );\n return (\n intervention.gamification &&\n intervention.gamification.skills_order &&\n intervention.gamification.skills_order.length\n );\n });\n this.showProgress = instancesWithSkills.length > 0;\n }\n\n return result;\n }\n\n public parseInstance(instanceJSON: object): Instance {\n let attributes = instanceJSON[\"attributes\"];\n let id = instanceJSON[\"id\"];\n let unlockMultiple;\n if (instanceJSON[\"body\"]) {\n attributes = instanceJSON[\"body\"].data.attributes;\n id = instanceJSON[\"body\"].data.id;\n unlockMultiple =\n attributes.unlock_multiple_conditionals === undefined ||\n attributes.unlock_multiple_conditionals == 1 ||\n attributes.unlock_multiple_conditionals == true\n ? true\n : false;\n }\n let result = new Instance(\n id,\n attributes.intervention_id,\n attributes.intervention_type,\n attributes.ecoach_id,\n attributes.patient_id,\n attributes.configuration,\n attributes.progress,\n new Date(attributes.created_at),\n attributes.intervention_title,\n attributes.intervention_description,\n attributes.intervention_media,\n attributes.study_id,\n unlockMultiple\n );\n return result;\n }\n\n public parseLessons(lessonJSON: object): Array {\n let lessonArr = lessonJSON[\"body\"].data;\n let result = [];\n for (let index in lessonArr) {\n result.push(this.parseLesson(lessonArr[index]));\n }\n return result;\n }\n\n public parseLesson(lessonJSON: object): Lesson {\n let attributes = lessonJSON[\"attributes\"];\n let id = lessonJSON[\"id\"];\n if (lessonJSON[\"body\"]) {\n attributes = lessonJSON[\"body\"].data.attributes;\n id = lessonJSON[\"body\"].data.id;\n }\n let defaultColor = attributes.page_color;\n if (!defaultColor || defaultColor == null || defaultColor == \"\") {\n defaultColor = \"#FEFCF0\";\n } else if (!defaultColor.startsWith(\"#\")) {\n defaultColor = this.helperService.getPicture(\n defaultColor,\n attributes.study_id\n );\n }\n\n let unlock_diaries = [];\n if (attributes.unlock_diaries != null) {\n unlock_diaries = attributes.unlock_diaries;\n }\n let result = new Lesson(\n parseInt(id),\n attributes.title,\n attributes.description,\n attributes.is_filled_out,\n defaultColor,\n unlock_diaries,\n attributes.questions_required == 1,\n attributes.diary_id,\n attributes.study_id,\n attributes.skills\n );\n return result;\n }\n\n public parseDiaryInstances(\n diaryInstanceArrJSON: object,\n isAllInstances: boolean\n ): Array {\n let diaryInstanceArr = diaryInstanceArrJSON[\"body\"].data;\n let result = [];\n for (let index in diaryInstanceArr) {\n result.push(this.parseDiaryInstance(diaryInstanceArr[index]));\n }\n //showDiaries if all instances are requested or if requested for a specific intervention instance, which now has diary instances (result.length > 0)\n if (isAllInstances || result.length > 0) {\n this.showDiaries = result.length > 0;\n }\n return result;\n }\n\n public parseDiaryInstance(diaryInstanceJSON: object): DiaryInstance {\n let attributes = diaryInstanceJSON[\"attributes\"];\n return new DiaryInstance(\n diaryInstanceJSON[\"id\"],\n attributes.diary_id,\n attributes.diary_title,\n attributes.diary_description,\n attributes.diary_picture,\n attributes.diary_questionnaire_id,\n attributes.study_id,\n attributes.intervention_instance_id\n );\n }\n\n public parseDiary(diaryJSON: object): Diary {\n let diary = diaryJSON[\"body\"].data;\n let result = new Diary(\n diary.id,\n diary.attributes.title,\n diary.attributes.description,\n diary.attributes.picture,\n diary.attributes.study_id,\n diary.attributes.questionnaire_id\n );\n return result;\n }\n\n public parseAnswersheets(answersheetArrJSON: object): Array {\n let answersheetArr = answersheetArrJSON[\"body\"].data;\n let result = [];\n for (let index in answersheetArr) {\n result.push(this.parseAnswersheet(answersheetArr[index]));\n }\n return result;\n }\n\n public parseAnswersheet(answersheetJSON: object): Answersheet {\n let attributes = answersheetJSON[\"attributes\"];\n let id = answersheetJSON[\"id\"];\n if (answersheetJSON[\"body\"]) {\n attributes = answersheetJSON[\"body\"].data.attributes;\n id = answersheetJSON[\"body\"].data.id;\n }\n\n let result = new Answersheet(\n id,\n attributes.questionnaire_id,\n attributes.intervention_instance_id,\n attributes.diary_instance_id,\n attributes.answers,\n attributes.locale,\n attributes.collected_at * 1000,\n attributes.version\n );\n return result;\n }\n\n /**\n * @param elementsJson (String), contains all Elements\n * @param returns (JSON Object), all question elements as json with element properties at key position;\n * needs keys\n * - questionType (String) (for TextDate questions the specific type from values array has to be used here)\n *`- values (Array) (for Single/Multiple Choice, can be empty otherwise)\n * - translations (JSON Object with language as key, Array with answer strings as value) (answer translations, for Single/Multiple Choice, can be empty otherwise)\n *\n * example: {\"2\": {\"questionType\": \"TextDate\", \"values\": [], translations: {}}, \"5\": {\"questionType\": \"SingleChoice\", \"values\": [a, b],\n * translations: {\"en\": [\"answer a\", \"answer b\"], \"de\": [\"Antwort a\", \"Antwort b\"]}}}\n */\n parseLabelList(elementJSON: object): any {\n let parsedResponse = elementJSON[\"body\"].data.attributes.elements;\n if (parsedResponse.length == 0) {\n return [];\n }\n\n let language = this.localStorage.getAppLanguage();\n let result = {};\n for (let entry of parsedResponse) {\n if (entry.elementtype != \"elements/questions\") continue;\n let type = entry[\"questiontype\"];\n\n if (type == \"TextDate\") {\n type =\n \"Text\" +\n entry.values[0].replace(\"date\", \"Date\").replace(\"time\", \"Time\");\n }\n\n result[entry.position] = {\n questionType: type,\n values: entry.values,\n translations: {\n [language]: entry.answers,\n },\n };\n }\n return result;\n }\n\n /**\n * @method parseElements\n * @param elementJSON\n * @return array of PageComponents. Each PageComponent has an array containing ElementModels (e.g. QuestionModels and their QuestionType)\n *\n * todoNewElementFormat maybe check for questions, conditional blocks etc in skills\n */\n public parseElements(elementJSON: object): Array {\n let parsedResponse = elementJSON[\"body\"].data.attributes.elements;\n if (parsedResponse.length == 0) {\n return [new PageModel(0, \"\", \"\", \"\")];\n }\n\n // iterate through all elements of the response and try to parse them\n let elements: Array = [];\n // the first element always has to be a page\n // old lessons don't have this\n if (parsedResponse[0].elementtype != \"elements/pages\") {\n elements.push(new PageModel(0, \"\", \"\", \"\"));\n }\n\n for (let entry of parsedResponse) {\n let parsedElement = null;\n switch (entry.elementtype) {\n case \"elements/elements\":\n break;\n case \"elements/headlines\":\n parsedElement = this.parseHeadline(entry);\n break;\n case \"elements/texts\":\n parsedElement = this.parseText(entry);\n break;\n case \"elements/media\":\n parsedElement = this.parseMedia(entry);\n break;\n case \"elements/questions\":\n parsedElement = this.parseQuestion(entry);\n break;\n case \"elements/pages\":\n parsedElement = this.parsePage(entry);\n elements.push(parsedElement);\n break;\n case \"elements/lines\":\n parsedElement = new LineModel(entry.position);\n break;\n case \"elements/spaces\":\n parsedElement = this.parseSpace(entry);\n break;\n case \"elements/blockopens\":\n parsedElement = this.parseBlock(entry);\n elements.push(parsedElement);\n break;\n case \"elements/blockcloses\":\n // find corresponding block opens element\n let filtered = elements.filter((p) => p instanceof BlockModel);\n let block = filtered[filtered.length - 1];\n let spliced = elements.splice(\n elements.lastIndexOf(block),\n elements.length - 1\n );\n parsedElement = spliced[0];\n // in case of conditional pages append them to the corresponding block\n // if (spliced.length > 1) parsedElement.elements.concat(spliced.slice(1))\n break;\n default:\n throw \"switch default!\";\n }\n if (parsedElement && entry.elementtype != \"elements/blockcloses\") {\n parsedElement.position = entry.position;\n }\n if (\n parsedElement &&\n entry.elementtype != \"elements/blockopens\" &&\n entry.elementtype != \"elements/pages\"\n ) {\n elements[elements.length - 1].elements.push(parsedElement);\n }\n }\n\n return elements as Array;\n }\n\n /**\n * @method parseHeadline\n * @param content\n * @return QuestionModel for a simple headline with no actual question and its tiype\n *\n * parse response part into Headline QuestionModel\n */\n public parseHeadline(content: string): HeadlineModel {\n let headline = new HeadlineModel(\n null,\n content[\"headline\"],\n content[\"color\"]\n );\n if (headline.headline == null) {\n headline.headline = \"No headline\";\n }\n return headline;\n }\n\n /**\n * @method parseText\n * @param content\n * @return QuestionModels for a simple text with no actual question and its type.\n */\n public parseText(content: string): TextModel {\n let parsedType: TextType;\n switch (content[\"type\"]) {\n case \"none\":\n parsedType = TextType.NONE;\n break;\n case \"important\":\n parsedType = TextType.IMPORTANT;\n break;\n case \"tip\":\n parsedType = TextType.TIP;\n break;\n case \"info\":\n parsedType = TextType.INFO;\n break;\n case \"success\":\n parsedType = TextType.SUCCESS;\n break;\n case \"highlight\":\n parsedType = TextType.HIGHLIGHT;\n break;\n case \"table\":\n parsedType = TextType.TABLE;\n break;\n default:\n parsedType = TextType.NONE;\n }\n let text = content[\"text\"];\n let parser = new DOMParser();\n let htmlDoc = parser.parseFromString(text, \"text/html\");\n let imgs = htmlDoc.getElementsByTagName(\"img\");\n for (let i = 0; i < imgs.length; i++) {\n let img = imgs[i];\n if (img.width > 0) {\n img.style.setProperty(\n \"width\",\n img.width.toString() + \"px\",\n \"important\"\n );\n }\n }\n // let textSanitized = this.sanitizer.bypassSecurityTrustHtml(text);\n return new TextModel(null, text, parsedType);\n }\n\n /**\n * @method parseMedia\n * @param content\n * @return Media\n */\n parseMedia(content: string): MediaModel {\n // set type for media model\n let mimeType = content[\"mimetype\"];\n let isAudio = false;\n let type: MediaType;\n switch (mimeType) {\n case \"image/png\":\n type = MediaType.IMAGE_PNG;\n break;\n case \"image/jpeg\":\n type = MediaType.IMAGE_JPEG;\n break;\n case \"image/gif\":\n type = MediaType.IMAGE_GIF;\n break;\n case \"image/svg+xml\":\n type = MediaType.IMAGE_SVG;\n break;\n case \"audio/mpeg\":\n type = MediaType.AUDIO_MPEG;\n break;\n case \"audio/wav\":\n case \"audio/x-wav\":\n type = MediaType.AUDIO_WAV;\n break;\n case \"audio/x-m4a\":\n type = MediaType.AUDIO_M4A;\n break;\n case \"video/mp4\":\n // try catch block for backward compatibility\n // old interventions miss the is_audio key in video/mp4 elements\n try {\n isAudio = content[\"is_audio\"] == 1;\n } catch (e) {}\n type = MediaType.VIDEO_MP4;\n break;\n case \"application/msword\":\n type = MediaType.APPLICATION_DOC;\n break;\n case \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":\n type = MediaType.APPLICATION_DOCX;\n break;\n case \"application/vnd.ms-powerpoint\":\n type = MediaType.APPLICATION_PPT;\n break;\n case \"application/vnd.openxmlformats-officedocument.presentationml.presentation\":\n type = MediaType.APPLICATION_PPTX;\n break;\n case \"application/vnd.oasis.opendocument.text\":\n type = MediaType.APPLICATION_ODT;\n break;\n case \"application/pdf\":\n type = MediaType.APPLICATION_PDF;\n break;\n default:\n type = MediaType.NOT_SUPPORTED;\n }\n\n let uri = content[\"uri\"];\n if (uri == null) {\n uri = \"Empty\";\n }\n\n // get name of media model as accessed at the back-end\n let currentIndexOfChar = 0;\n let indexOfLastChar = 0;\n while (currentIndexOfChar != -1) {\n indexOfLastChar = currentIndexOfChar;\n currentIndexOfChar = uri.indexOf(\"/\", currentIndexOfChar + 1);\n }\n let file = uri.substr(indexOfLastChar + 1);\n\n // set data for the model\n let platformIsAndroid = false;\n if (this.platform.is(\"android\")) {\n platformIsAndroid = true;\n }\n\n let width = content[\"width\"];\n let height = content[\"height\"];\n let banner = content[\"banner\"];\n if (banner == 1) {\n banner = true;\n } else {\n banner = false;\n }\n\n return new MediaModel(\n null,\n type,\n isAudio,\n uri,\n uri,\n content[\"description\"],\n content[\"subtitle\"],\n content[\"filename\"],\n file,\n width,\n height,\n banner,\n platformIsAndroid\n );\n }\n\n /**\n * @method parseQuestion\n * @param content\n * @return QuestionModel and its Type\n *\n * Parse part of response into corresponding Questiontype\n */\n public parseQuestion(content: string): ElementModel {\n let questiontype: string = content[\"questiontype\"];\n let questionModel = null;\n switch (questiontype) {\n case \"YesNoSwitch\":\n questionModel = this.parseYesNoQuestion(content);\n break;\n case \"SingleChoice\":\n questionModel = this.parseSingleChoice(content);\n break;\n case \"MultipleChoice\":\n questionModel = this.parseMultipleChoice(content);\n break;\n case \"Slider\":\n questionModel = this.parseSlider(content);\n break;\n case \"QuestionTable\":\n questionModel = this.parseQuestionTable(content);\n break;\n case \"TextDate\":\n questionModel = this.parseTextDate(content);\n break;\n case \"TextString\":\n questionModel = this.parseTextString(content);\n break;\n case \"TextArea\":\n questionModel = this.parseTextArea(content);\n break;\n default:\n return null;\n }\n\n if (questionModel == null) {\n return null;\n }\n\n return questionModel;\n }\n\n /**\n * @method parseYesNoQuestion\n * @param content\n * @return QuestionYesNo\n *\n * parse response part into QuestionYesNoModel\n */\n private parseYesNoQuestion(content: string): QuestionYesNoModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n return new QuestionYesNoModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"]\n );\n }\n\n /**\n * @method parseSingleChoice\n * @param content\n * @return parseSingleChoiceModel\n *\n * parse response part into QuestionSingleChoiceModel\n */\n private parseSingleChoice(content: string): QuestionSingleChoiceModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n let options: Array = [];\n if (content[\"answers\"] != null) {\n for (let answer of content[\"answers\"]) {\n options.push(answer);\n }\n }\n\n return new QuestionSingleChoiceModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"],\n content[\"answers\"],\n content[\"values\"]\n );\n }\n\n /**\n * @method parseMultipleChoice\n * @param content\n * @return parseMultipleChoiceModel\n *\n * parse response part into QuestionMultipleChoiceModel\n */\n private parseMultipleChoice(content: string): QuestionMultipleChoiceModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n let options: Array = [];\n if (content[\"answers\"] != null) {\n for (let answer of content[\"answers\"]) {\n options.push(answer);\n }\n }\n\n return new QuestionMultipleChoiceModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"],\n content[\"answers\"],\n content[\"values\"]\n );\n }\n\n /**\n * @method parseSlider\n * @param content\n * @return parseSliderModel\n *\n * parse response part into QuestionSliderModel\n */\n private parseSlider(content: string): QuestionSliderModel {\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n let leftLabel: string = \"No left label\";\n let rightLabel: string = \"No right label\";\n if (content[\"answers\"] != null) {\n leftLabel = content[\"answers\"][0][\"label\"];\n rightLabel = content[\"answers\"][1][\"label\"];\n }\n\n return new QuestionSliderModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"],\n leftLabel,\n rightLabel,\n content[\"values\"][\"min\"],\n content[\"values\"][\"max\"],\n content[\"values\"][\"step\"],\n content[\"values\"][\"start\"]\n );\n }\n\n /**\n * @method parseQuestionTable\n * @param content\n * @return parseQuestionTableModel\n *\n * parse response part into QuestionTableModel\n */\n private parseQuestionTable(content: string): QuestionTableModel {\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n return new QuestionTableModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"],\n content[\"answers\"],\n content[\"values\"][\"min\"],\n content[\"values\"][\"max\"]\n );\n }\n\n /**\n * @method parseTextDate\n * @param content\n * @return parseTextDateModel\n *\n * parse response part into QuestionTextDateModel\n */\n private parseTextDate(content: string): QuestionDateModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n let type = \"date\";\n if (content[\"values\"] != null) {\n type = content[\"values\"][0];\n }\n\n return new QuestionDateModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"],\n type\n );\n }\n\n /**\n * @method parseTextString\n * @param content\n * @return parseTextStringModel\n *\n * parse response part into QuestionTextStringModel\n */\n private parseTextString(content: string): QuestionTextStringModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n return new QuestionTextStringModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"]\n );\n }\n\n /**\n * @method parseTextArea\n * @param content\n * @return parseTextAreaModel\n *\n * parse response part into QuestionTextAreaModel\n */\n private parseTextArea(content: string): QuestionTextAreaModel {\n //initialise new model with content provided\n let required: boolean = false;\n if (content[\"required\"] == 1) {\n required = true;\n }\n\n return new QuestionTextAreaModel(\n null,\n content[\"question\"],\n required,\n content[\"label\"]\n );\n }\n\n private parsePage(content: any): PageModel {\n let color;\n try {\n color = content[\"color\"];\n } catch {\n color = \"\";\n }\n\n let condition;\n try {\n condition = content[\"condition\"] === null ? \"\" : content[\"condition\"];\n } catch {\n condition = \"\";\n }\n\n let progressbar_text;\n try {\n progressbar_text =\n content[\"progressbar_text\"] === \"\" ? null : content[\"progressbar_text\"];\n } catch {\n progressbar_text = null;\n }\n\n return new PageModel(null, color, condition, progressbar_text);\n }\n\n private parseSpace(content: any): SpaceModel {\n let size;\n try {\n size = parseInt(content[\"attributes\"][\"elements\"][\"size\"]);\n } catch {\n size = 1;\n }\n\n return new SpaceModel(null, size);\n }\n\n private parseBlock(content: string): BlockModel {\n let typeJson = content[\"type\"];\n let type: BlockType;\n switch (typeJson) {\n case \"none\":\n type = BlockType.NONE;\n break;\n case \"details\":\n type = BlockType.DETAILS;\n break;\n case \"conditional\":\n type = BlockType.CONDITIONAL;\n break;\n case \"both\":\n type = BlockType.BOTH;\n break;\n }\n let text = content[\"text\"];\n let condition = content[\"condition\"][\"ifBlock\"];\n try {\n let repeat = content[\"condition\"][\"thenBlock\"][\"repeat\"];\n return new BlockModel(null, text, type, condition, repeat);\n } catch (e) {\n this.alertService.showError(\n \"ERROR.ERROR\",\n \"ERROR.ERROR_COULD_NOT_LOAD_LESSON_OLD_MODEL\"\n );\n }\n }\n\n public parseThreads(threadJSON: object, type: string): Array {\n let newMessagesNumber = 0;\n let newFeedbackNumber = 0;\n let threadsArr = threadJSON[\"body\"].data;\n let result = [];\n console.log(threadsArr);\n for (let index in threadsArr) {\n let json = {\n id: threadsArr[index].id,\n attributes: threadsArr[index].attributes,\n includedUsers: threadsArr[index].relationships.participants.data,\n includedMessages: threadsArr[index].relationships?.messages?.data\n ? threadsArr[index].relationships?.messages?.data\n : [],\n };\n let thread = this.parseThread(json);\n result.push(thread);\n\n if (!thread.read) {\n if (type == \"messages\") {\n newMessagesNumber++;\n } else if (type == \"feedback\") {\n newFeedbackNumber++;\n }\n }\n }\n\n if (type == \"messages\") {\n this.newMessages = newMessagesNumber;\n } else {\n this.newFeedback = newFeedbackNumber;\n }\n\n let threadsSorted = this.helperService.sortThreadsByNewestDate(result);\n return threadsSorted;\n }\n\n public parseThread(threadJSON: object): Thread {\n let attributes = threadJSON[\"attributes\"];\n let id = threadJSON[\"id\"];\n let includedUsers = threadJSON[\"includedUsers\"];\n let includedMessages = threadJSON[\"includedMessages\"];\n\n if (threadJSON[\"body\"]) {\n attributes = threadJSON[\"body\"].data.attributes;\n id = threadJSON[\"body\"].data.id;\n includedUsers = threadJSON[\"body\"].data.relationships.participants.data;\n includedMessages = threadJSON[\"body\"].data.relationships?.messages?.data\n ? threadJSON[\"body\"].data.relationships.messages.data\n : [];\n }\n\n let messages = [];\n for (let messageIndex in includedMessages) {\n let messageId = includedMessages[messageIndex].id;\n let message = includedMessages[messageIndex].attributes;\n let messageAuthorName = this.getAuthorName(\n includedMessages[messageIndex].relationships.author.data\n );\n messages.push(\n new Message(\n messageId,\n includedMessages[messageIndex].relationships.author?.data?.id,\n messageAuthorName,\n message.body,\n message.created_at\n )\n );\n }\n let participants = [];\n let subjectText = \"\";\n for (let participantIndex in includedUsers) {\n let participantId = includedUsers[participantIndex].id;\n let name = this.getAuthorName(includedUsers[participantIndex]);\n participants.push({\n id: participantId,\n name: name,\n });\n //for chat thread: subjectText is name of participants\n if (subjectText != \"\") {\n subjectText += \", \";\n }\n subjectText += name;\n }\n\n // Set picture of thread to picture of last sender\n let authorId = 1;\n if (messages.length > 0) {\n authorId = messages[messages.length - 1].authorId;\n }\n let picture = this.helperService.getUserPicture(authorId);\n\n //when requesting a thread it is set to read & unread messages = 0; if feedback it is set to the correct value from progress below\n let read = true;\n let unreadMessages = 0;\n if (\n (!attributes.answersheet_id ||\n (attributes.answersheet_id &&\n !attributes.intervention_instance_progress\n .questionnaire_feedback_required)) &&\n attributes.unread\n ) {\n read = !attributes.unread.is_unread;\n unreadMessages = attributes.unread.messages;\n }\n\n //for feedback thread: subjectText is name of lesson; progress.feedback_required read attribute used for (un)read messages\n if (attributes.answersheet_id) {\n subjectText =\n attributes.intervention_instance_progress.questionnaire_name;\n if (\n attributes.intervention_instance_progress\n .questionnaire_feedback_required\n ) {\n read =\n attributes.intervention_instance_progress.questionnaire_feedback_read;\n }\n //if instance canceled\n if (\n attributes.intervention_instance_progress.questionnaire_feedback_read ==\n null\n ) {\n read = !attributes.unread.is_unread;\n }\n }\n\n let thread = new Thread(\n id,\n subjectText,\n attributes.answersheet_id,\n attributes.intervention_instances_id,\n attributes.intervention_instance_progress.questionnaire_id,\n attributes.intervention_instance_progress.questionnaire_feedback_required,\n read,\n attributes.created_at,\n unreadMessages,\n messages,\n participants,\n picture\n );\n\n return thread;\n }\n\n private getAuthorName(authorJSON: object): string {\n if (!!authorJSON) {\n let name = authorJSON[\"attributes\"].name;\n if (authorJSON[\"id\"] == this.localStorage.getUserId()) {\n name = this.translationService.instant(\"CHAT_FEEDBACK.ME\");\n } else if (\n authorJSON[\"attributes\"].firstname &&\n authorJSON[\"attributes\"].lastname\n ) {\n name =\n authorJSON[\"attributes\"].firstname +\n \" \" +\n authorJSON[\"attributes\"].lastname;\n } else if (name === \"\") {\n name = this.translationService.instant(\"CHAT_FEEDBACK.UNKNOWN\");\n }\n return name;\n } else {\n return this.translationService.instant(\"CHAT_FEEDBACK.UNKNOWN\");\n }\n }\n\n public parseAnnouncements(annArrJSON: object): Array {\n let annArr = annArrJSON[\"body\"].data;\n let result = [];\n for (let index in annArr) {\n let attributesJSON = annArr[index].attributes;\n result.push(\n new Announcement(\n annArr[index].id,\n attributesJSON.type,\n attributesJSON.title,\n attributesJSON.message\n )\n );\n }\n return result;\n }\n\n public parseSkills(skillArrJSON: object): Array {\n let skillArr = skillArrJSON[\"body\"].data;\n let result = [];\n for (let index in skillArr) {\n let attributesJSON = skillArr[index].attributes;\n result.push(this.parseSkill(skillArr[index]));\n }\n return result;\n }\n\n public parseSkill(skillJSON: object): Skill {\n let attributes = skillJSON[\"attributes\"];\n let id = skillJSON[\"id\"];\n if (skillJSON[\"body\"]) {\n attributes = skillJSON[\"body\"].data.attributes;\n id = skillJSON[\"body\"].data.id;\n }\n let result = new Skill(\n id,\n attributes.intervention_id,\n attributes.title,\n attributes.color,\n attributes.icon,\n null,\n attributes.study_id\n );\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Platform } from '@ionic/angular';\nimport { Answer } from '../../models/Answer';\nimport { LocalStorageService } from '../local-storage/local-storage.service';\nimport { BACKEND_URL } from '../../../environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RequestProviderService {\n constructor(private http: HttpClient, private platform: Platform, private localStorage: LocalStorageService) {}\n\n getMyInstances() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0').append('pendingInvitation', 'false');\n return this.http.get(BACKEND_URL + '/api/v1/my/interventions/instances', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getInstance(instanceId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId, {\n headers,\n observe: 'response',\n });\n }\n\n getDiaryInstance(instanceId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage()).append('id', instanceId.toString());\n return this.http.get(BACKEND_URL + '/api/v1/my/diaries/instances?id=' + instanceId, {\n headers,\n observe: 'response',\n });\n }\n\n getAnswersheetsOfInstance(instanceId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/answersheets', {\n headers: headers,\n params,\n observe: 'response',\n });\n }\n\n getLessonsOfIntervention(interventionId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/interventions/' + interventionId + '/questionnaires', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getMyLessons() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/questionnaires', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getMyInterventions() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/my/interventions', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getIntervention(interventionId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/interventions/' + interventionId, {\n headers,\n observe: 'response',\n });\n }\n\n getInstanceReport(instanceId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage()).append('Content-Type', '*/*').append('Accept', '*/*');\n return this.http.get(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/report', {\n headers,\n observe: 'response',\n responseType: 'blob' as 'json',\n });\n }\n\n getAnswersheetReport(answersheetId: number, timezone: string) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage()).append('Content-Type', '*/*').append('Accept', '*/*');\n const params = new HttpParams().append('timezone', timezone);\n return this.http.get(BACKEND_URL + '/api/v1/answersheets/' + answersheetId + '/pdf/report', {\n headers,\n params,\n observe: 'response',\n responseType: 'blob' as 'json',\n });\n }\n\n getLessonDetails(lessonId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/questionnaires/' + lessonId, {\n headers: headers,\n observe: 'response',\n });\n }\n\n getLessonElements(lessonId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/questionnaires/' + lessonId + '/structure', {\n headers: headers,\n observe: 'response',\n });\n }\n\n getMediaComponent(url: string) {\n return this.http.get(url, {\n observe: 'response',\n responseType: 'blob',\n });\n }\n\n //generate an activity of opening a lesson\n setLessonOpened(instanceID: number, questionnaireID: number) {\n return this.http.post(\n BACKEND_URL + '/api/v1/interventions/instances/' + instanceID + '/questionnaires/' + questionnaireID + '/activities',\n {},\n {\n observe: 'response',\n }\n );\n }\n\n //generate an activity of opening a diary\n setDiaryOpened(diaryInstancId: number) {\n return this.http.post(\n BACKEND_URL + '/api/v1/diaries/instances/' + diaryInstancId + '/start',\n {},\n {\n observe: 'response',\n }\n );\n }\n\n //answersheet submitted, progress updated automatically\n submitAnswersheet(lessonId: number, instanceId: number, answers: Answer[], forDiary: boolean, buddies_id?: number) {\n let instanceKey = forDiary ? 'diary_instance_id' : 'intervention_instance_id';\n let headers = new HttpHeaders().append('Content-Type', 'application/json');\n \n let json = {\n data: {\n type: 'answersheets',\n attributes: {\n [instanceKey]: instanceId,\n locale: this.localStorage.getAppLanguage(),\n answers,\n collected_at: Math.round(new Date().getTime() / 1000),\n ...(buddies_id && { buddies_id }),\n client: {\n name: \"webapp\",\n device: !this.localStorage.getIsNativeApp() ? \"webapp\" : \"inapp\", // @todo put in real device\n os: this.platform.platforms(),\n },\n finished: true,\n version: \"2.0.0\"\n },\n },\n };\n\n return this.http.post(BACKEND_URL + '/api/v1/questionnaires/' + lessonId + '/answersheets', json, {\n headers: headers,\n observe: 'response',\n });\n }\n\n getAnswersheet(answersheetId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/answersheets/' + answersheetId, {\n headers: headers,\n observe: 'response',\n });\n }\n\n getMyDiaryInstances() {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n let params = new HttpParams().append('limit', '0').append('pendingInvitation', 'false');\n return this.http.get(BACKEND_URL + '/api/v1/my/diaries/instances', {\n headers: headers,\n params: params,\n observe: 'response',\n });\n }\n\n getUnlockedDiariesOfInstance(instanceId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n let params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/unlocked/diaries', {\n headers: headers,\n params: params,\n observe: 'response',\n });\n }\n\n unlockConditionalQuestionnaire(instanceId: number, sourceQuestionnaire: number, questionnaires: Array) {\n return new Promise((resolve, reject) => {\n let headers = new HttpHeaders();\n this.http.patch(\n BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/condition/unlock',\n {\n data: {\n type: 'intervention_instance',\n attributes: {\n questionnaire_id: sourceQuestionnaire,\n progress: {\n unlock_questionnaires: questionnaires,\n },\n },\n },\n },\n {\n headers: headers,\n observe: 'response',\n }\n )\n .subscribe(\n (response) => {\n resolve(response);\n },\n (error) => reject(error)\n );\n });\n }\n\n getConditionalLessonsToUnlock(instanceId: number, lessonId: number) {\n return this.http.get(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/questionnaires/' + lessonId + '/unlock', {\n observe: 'response',\n });\n }\n\n getDiaryDetails(diaryId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/diaries/' + diaryId, {\n headers: headers,\n observe: 'response',\n });\n }\n\n //do not change sort -id\n // it is used in diary page showUnlock case 2\n getAnswersheetsOfDiaryInstance(diaryInstanceId: number) {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n let params = new HttpParams().append('limit', '0').append('sort', '-id');\n return this.http.get(BACKEND_URL + '/api/v1/diaries/instances/' + diaryInstanceId + '/answersheets', {\n headers: headers,\n params: params,\n observe: 'response',\n });\n }\n\n //returns userid of buddy & id of buddy instance, if answersheet is created for the diary which is used for the buddy feature\n //meaning current diary instance id is the same as diary_instance_id in buddy diary_instance_ids array for this user\n getBuddyFeatureIds(currentUserId: number, instanceID: number): Promise {\n return new Promise((resolve, reject) => {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n this.http\n .get(BACKEND_URL + '/api/v1/my/buddies', {\n headers,\n observe: 'response',\n })\n .subscribe(\n (responseData) => {\n if (!responseData.body['data'].length) {\n reject('User has no buddy');\n return;\n }\n\n console.log(currentUserId)\n console.log(instanceID)\n console.log(responseData.body['data'])\n\n for(var entry of responseData.body['data']){\n //find entry for this diary instance\n for(var instance of entry.attributes.diary_instances_ids){\n console.log(instance)\n if(Number(instance.diary_instance_id) === Number(instanceID)){\n console.log(entry.attributes.buddies_ids)\n let buddyUserIds = entry.attributes.buddies_ids.filter(id => Number(id) != Number(currentUserId));\n console.log(buddyUserIds)\n if(buddyUserIds.length === 1){\n console.log(buddyUserIds[0])\n resolve({ userIdOfBuddy: Number(buddyUserIds[0]), buddyInstanceId: Number(entry.id) });\n }\n }\n }\n }\n resolve(null);\n },\n (error) => reject(error)\n );\n });\n }\n\n async getBuddyActivities(buddyInstanceId: number, userIdOfBuddy: number): Promise<{ dailyTaskDone: boolean; dailyTaskDoneBuddy: boolean; reminded: boolean; remindedBuddy: boolean }> {\n let currentDate = new Date().toISOString().slice(0,10) + \" 00:00:00\";\n console.log(currentDate)\n return new Promise(async (resolve, reject) => {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n const params = new HttpParams().append('limit', '0');\n this.http\n .get(BACKEND_URL + '/api/v1/my/buddies/' + buddyInstanceId + '/activities?created_at>' + currentDate, {\n headers,\n params,\n observe: 'response',\n })\n .subscribe(\n (responseData) => {\n if (!responseData.body['data'].length) {\n reject();\n return;\n }\n\n let myEntry = responseData.body['data'].filter((activity) => activity.attributes.user_id === this.localStorage.getUserId())[0];\n console.log(\"my id: \" + this.localStorage.getUserId() + \", my entry:\")\n console.log(myEntry)\n\n let buddyEntry = responseData.body['data'].filter((activity) => activity.attributes.user_id === userIdOfBuddy)[0];\n console.log(\"buddy id: \" + userIdOfBuddy + \", buddy entry:\")\n console.log(buddyEntry)\n\n let result = {\n dailyTaskDone: true, // the user has just completed the task\n reminded: (myEntry.attributes.daily_reminder_timestamps != null), // check if user has sent reminder email\n dailyTaskDoneBuddy: (buddyEntry != undefined ? (buddyEntry.attributes.daily_task_timestamps != null) : false), // check if buddy has completed the task\n remindedBuddy: (buddyEntry != undefined ? (buddyEntry.attributes.daily_reminder_timestamps != null) : false) // check if buddy has sent reminder email\n }\n\n console.log(result)\n resolve(result);\n },\n (error) => reject(error)\n );\n });\n }\n\n // function for send the reminder mail to the buddy\n sendBuddyReminder(userIdOfBuddy: number) {\n console.log(userIdOfBuddy)\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.post(BACKEND_URL + '/api/v1/my/buddies/' + userIdOfBuddy + '/remind', {\n headers,\n observe: 'response',\n });\n }\n\n getMySkills() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/my/skills', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getSkill(skillId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/skills/' + skillId, {\n headers,\n observe: 'response',\n });\n }\n\n getSkillsOfIntervention(interventionId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/interventions/' + interventionId + '/skills', {\n headers,\n observe: 'response',\n });\n }\n\n getSkillDescription(skillId: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/skills/' + skillId + '/elements', {\n headers,\n observe: 'response',\n });\n }\n\n getMyActivities() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('sort', '-id').append('limit', '0');\n // .append('action', 'QUESTIONNAIRE_STARTED')\n return this.http.get(BACKEND_URL + '/api/v1/my/activities', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getMyMessages() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('include', 'messages,participants').append('answersheetID', 'false').append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/messages/threads', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n getMessageThread(threadID: number) {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('include', 'messages,participants');\n return this.http.get(BACKEND_URL + '/api/v1/messages/threads/' + threadID, {\n headers,\n params,\n observe: 'response',\n });\n }\n\n sendMessage(message: string, threadID: number) {\n return this.http.post(\n BACKEND_URL + '/api/v1/messages/threads/' + threadID + '/messages',\n {\n data: {\n type: 'messages/messages',\n attributes: {\n body: message,\n },\n },\n },\n {\n observe: 'response',\n }\n );\n }\n\n getMyFeedback() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const params = new HttpParams().append('include', 'messages,participants').append('answersheetID', 'true').append('limit', '0');\n return this.http.get(BACKEND_URL + '/api/v1/messages/threads', {\n headers,\n params,\n observe: 'response',\n });\n }\n\n setFeedbackRead(instanceId: number, progressJSON: object) {\n let headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.patch(BACKEND_URL + '/api/v1/interventions/instances/' + instanceId + '/progress', progressJSON, {\n headers: headers,\n observe: 'response',\n });\n }\n\n getMyInvitations() {\n const headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n return this.http.get(BACKEND_URL + '/api/v1/my/invitations', {\n headers,\n observe: 'response',\n });\n }\n\n acceptInvitation(invitationToken: string) {\n return this.http.post(\n BACKEND_URL + '/api/v1/studies/invitation',\n {\n data: {\n type: 'users',\n attributes: {\n code: invitationToken,\n },\n },\n },\n {\n observe: 'response',\n }\n );\n }\n\n getMyProfile() {\n return this.http.get(BACKEND_URL + '/api/v1/my/profile', {\n observe: 'response',\n });\n }\n\n updateProfile(attributes: object) {\n return this.http.patch(\n BACKEND_URL + '/api/v1/my/profile',\n {\n data: {\n type: 'users',\n attributes: attributes,\n },\n },\n {\n observe: 'response',\n }\n );\n }\n\n changePassword(currentPassword: string, password: string, confirmPassword: string) {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.patch(\n BACKEND_URL + '/api/v1/my/profile/password',\n {\n data: {\n type: 'users',\n attributes: {\n current_password: currentPassword,\n password: password,\n password_confirmation: confirmPassword,\n },\n },\n },\n {\n headers,\n observe: 'response',\n }\n );\n }\n\n // Sends a reset password instructions email for the user.\n forgotPassword(email: string) {\n const body = {\n data: {\n type: 'users',\n attributes: {\n email: email,\n },\n },\n };\n return this.http.post(BACKEND_URL + '/api/v1/auth/password/reset/instructions', body, {\n observe: 'response',\n });\n }\n\n requestDeleteAccount(password: string, pseudonymized: boolean) {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.post(\n BACKEND_URL + '/api/v1/my/account/delete/request',\n {\n data: {\n type: 'users',\n attributes: {\n pseudonymized: pseudonymized,\n password: password,\n },\n },\n },\n {\n headers,\n observe: 'response',\n }\n );\n }\n\n getDeleteAccountRequest() {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.get(BACKEND_URL + '/api/v1/my/account/delete/request', {\n headers,\n observe: 'response',\n });\n }\n\n cancelDeleteAccountRequest() {\n return this.http.delete(BACKEND_URL + '/api/v1/my/account/delete/request', {\n observe: 'response',\n });\n }\n\n getAnnouncements() {\n let headers = new HttpHeaders().append('accept-language', this.localStorage.getAppLanguage());\n const currentTime = Math.round(new Date().getTime() / 1000);\n return this.http.get(BACKEND_URL + '/api/v1/announcements?client=app&sort=-start&start<' + currentTime + '&end>' + currentTime, {\n headers: headers,\n observe: 'response',\n });\n }\n\n login(credentials: { email: string; password: string }) {\n return this.http.post(\n BACKEND_URL + '/api/v1/auth/login',\n {\n data: {\n type: 'users',\n attributes: {\n email: credentials.email,\n password: credentials.password,\n },\n },\n },\n {\n observe: 'response',\n withCredentials: true,\n }\n );\n }\n\n refreshToken() {\n return new Promise((resolve, reject) => {\n this.http\n .post(\n BACKEND_URL + '/api/v1/auth/refresh',\n {},\n {\n observe: 'response',\n }\n )\n .subscribe(\n (response) => {\n resolve(response);\n },\n (error) => {\n reject(error);\n }\n );\n });\n }\n\n logout() {\n const headers = new HttpHeaders().append('Authorization', 'Bearer ' + this.localStorage.getToken());\n return this.http.delete(BACKEND_URL + '/api/v1/auth/logout', {\n headers,\n observe: 'response',\n });\n }\n\n // Send server firebase token to pinpoint the device and send notifications\n registerDeviceToken(token: string) {\n const headers = new HttpHeaders().append('Content-Type', 'application/json');\n return this.http.post(\n BACKEND_URL + '/api/v1/messages/devicetokens',\n {\n data: {\n type: 'messages/devicetokens',\n attributes: {\n firebase_token: token,\n },\n },\n },\n {\n headers,\n observe: 'response',\n }\n );\n }\n\n deleteDeviceToken(id: number) {\n return this.http.delete(BACKEND_URL + '/api/v1/messages/devicetokens/' + id, {\n observe: 'response',\n });\n }\n}\n","import {Injectable} from '@angular/core';\nimport {NavController} from '@ionic/angular';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http';\nimport {BehaviorSubject, from, Observable, Subject, throwError} from 'rxjs';\nimport {catchError, filter, finalize, switchMap, take, takeUntil} from 'rxjs/operators';\nimport {RequestProviderService} from '../request-provider/request-provider.service';\nimport {AlertService} from \"../alert/alert.service\";\nimport {LocalStorageService} from \"../local-storage/local-storage.service\";\nimport {ParserService} from \"../parser/parser.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenInterceptorService implements HttpInterceptor {\n private refreshTokenInProgress = false;\n private refreshTokenSubject: BehaviorSubject = new BehaviorSubject(null);\n private cancelPendingRequests$ = new Subject()\n\n constructor(\n private navCtrl: NavController,\n private requestProvider: RequestProviderService,\n private alertService: AlertService,\n private localStorage: LocalStorageService,\n private parserService: ParserService,\n ) {\n }\n\n /**\n * @method addAuthToken\n * @param request The current request to the server.\n * @return HttpRequest Containing the added authorization\n *\n * Adds the authorization header to the request using the Token and returns the new request.\n */\n private static addAuthToken(request: HttpRequest): HttpRequest {\n return request.clone({setHeaders: {Authorization: 'Bearer ' + localStorage.getItem('token')}\n // withCredentials: true\n });\n }\n\n public cancelPendingRequests() {\n this.cancelPendingRequests$.next(null)\n }\n\n private onCancelPendingRequests() {\n return this.cancelPendingRequests$.asObservable()\n }\n\n /**\n * @method intercept\n *\n * Gets called before every http request.\n */\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n // If outside of certain requests, just add the auth token to the request.\n if (!(request.url.includes('/auth/login') || request.url.includes('/assets/i18n/'))) { //|| request.url.includes('/auth/register')\n request = TokenInterceptorService.addAuthToken(request);\n }\n\n return next.handle(request).pipe(takeUntil(this.onCancelPendingRequests()), catchError((error: HttpErrorResponse) => {\n if (error instanceof HttpErrorResponse) {\n const errorStatus: number = error.status;\n let errorMessage: string = \"\";\n if(errorStatus != 0){\n errorMessage = JSON.stringify(error.error.errors[0].detail);\n }\n // Token expired\n if ((errorStatus === 401) && (errorMessage === '\\\"Token has expired\\\"')) {\n if (this.refreshTokenInProgress) {\n // If token is currently refreshing, wait until refreshToken$ has a non-null value & continue with request if it is\n return this.refreshTokenSubject.pipe(\n filter(result => result != null),\n take(1),\n switchMap(() => next.handle(TokenInterceptorService.addAuthToken(request))));\n } else {\n this.refreshTokenInProgress = true;\n // Set the refreshToken$ to null to discontinue new requests and make them wait\n this.refreshTokenSubject.next(null);\n return from(this.refreshToken()).pipe(switchMap((token) => {\n // Refresh token is completed -> Set the refreshToken to that token and handle request\n this.refreshTokenSubject.next(token);\n return next.handle(TokenInterceptorService.addAuthToken(request));\n }), catchError((err) => {\n return throwError(error);\n }), finalize(() => {\n this.refreshTokenInProgress = false;\n }));\n }\n } else if((errorStatus === 401 && errorMessage === '\\\"Wrong number of segments\\\"') ||\n (errorStatus === 400 && errorMessage === '\\\"The provided token has expired. Re-login to get a new token.\\\"')) { // Token blacklisted\n this.refreshTokenInProgress = false;\n this.forceLogout();\n this.navCtrl.navigateRoot('/login', {animated: true, animationDirection: 'forward'}); //use this to reset root so that no data of previously logged in user is still there\n } else {\n return throwError(error);\n }\n } else {\n return throwError(error);\n }\n }));\n }\n\n public async forceLogout() {\n this.parserService.newMessages = 0;\n this.parserService.newFeedback = 0;\n this.localStorage.removeToken();\n this.localStorage.removeUserEmail();\n this.localStorage.removeLocalUser();\n this.localStorage.removeUserId();\n try {\n await this.alertService.dismissAllToasts();\n this.alertService.dismissLoading();\n } catch (e) {}\n }\n\n private refreshToken() {\n return this.requestProvider.refreshToken().then((response) => {\n if (response instanceof HttpResponse && response.status === 200) {\n const token = response.body.data.attributes.token;\n this.localStorage.setToken(token);\n return token;\n }\n }).catch((error) => {\n this.alertService.showError('ERROR.ERROR', 'ERROR.ERROR_TOKEN_REFRESH');\n });\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n};\n\nexport const firebaseConfig = {\n apiKey: 'AIzaSyA-UTzMnaiVVfc9M6wJJZgC1REHc3z-yz4',\n authDomain: 'aas2-b8c15.firebaseapp.com',\n databaseURL: 'https://aas2-b8c15.firebaseio.com',\n projectId: 'aas2-b8c15',\n storageBucket: 'aas2-b8c15.appspot.com',\n messagingSenderId: '403595521371',\n appId: '1:403595521371:web:925745d4f935d1b4'\n};\n\n// export const BACKEND_URL = 'https://intervention.api.aas2.klips.ifp.uni-ulm.de';\nexport const BACKEND_URL = 'https://api.esano-trainings.de';\nexport const BACKEND_URL_MEDIA = BACKEND_URL + \"/uploads/studies\";\nexport const SUPPORT_MAIL = 'support@esano-trainings.de';\nexport const FEATURES = [];\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch();\n","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t83750,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-accordion_2_entry_js\"\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t90733,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js\"\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t20985,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-alert_entry_js\"\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t93899,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_framework-delegate-c3305a28_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-app_8_entry_js\"\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t5121,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js\"\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t52960,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-back-button_entry_js\"\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t45473,\n\t\t\"node_modules_ionic_core_dist_esm_ion-backdrop_entry_js\"\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t57951,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-breadcrumb_2_entry_js\"\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t19787,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-button_2_entry_js\"\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t66165,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-card_5_entry_js\"\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t69569,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-checkbox_entry_js\"\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t35119,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-chip_entry_js\"\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t90799,\n\t\t\"node_modules_ionic_core_dist_esm_ion-col_3_entry_js\"\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t16519,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_data-caf38df0_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime-button_entry_js\"\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t68918,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_data-caf38df0_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js\"\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t94028,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-fab_3_entry_js\"\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t98107,\n\t\t\"node_modules_ionic_core_dist_esm_ion-img_entry_js\"\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t72178,\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js\"\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t20123,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-input_entry_js\"\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t18706,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js\"\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t12099,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item_8_entry_js\"\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t84868,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-loading_entry_js\"\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t54377,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-menu_3_entry_js\"\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t15678,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_framework-delegate-c3305a28_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-modal_entry_js\"\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t16735,\n\t\t\"default-node_modules_ionic_core_dist_esm_framework-delegate-c3305a28_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-nav_2_entry_js\"\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t42322,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-column-internal_entry_js\"\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t57754,\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-internal_entry_js\"\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t87686,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_framework-delegate-c3305a28_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-popover_entry_js\"\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t48555,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js\"\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t30568,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-radio_2_entry_js\"\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t6231,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-range_entry_js\"\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t45772,\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js\"\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t14977,\n\t\t\"default-node_modules_ionic_core_dist_esm_index-e6d1a8be_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js\"\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t42886,\n\t\t\"node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js\"\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t54990,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-route_4_entry_js\"\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t13810,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-searchbar_entry_js\"\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t2446,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-segment_2_entry_js\"\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t47619,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-select_3_entry_js\"\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t28393,\n\t\t\"node_modules_ionic_core_dist_esm_ion-slide_2_entry_js\"\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t56281,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-spinner_entry_js\"\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t35932,\n\t\t\"node_modules_ionic_core_dist_esm_ion-split-pane_entry_js\"\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t57970,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js\"\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t80298,\n\t\t\"default-node_modules_ionic_core_dist_esm_framework-delegate-c3305a28_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab_2_entry_js\"\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t71006,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-text_entry_js\"\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t74783,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-textarea_entry_js\"\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t62749,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toast_entry_js\"\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t55404,\n\t\t\"default-node_modules_ionic_core_dist_esm_theme-7670341c_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toggle_entry_js\"\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t39043,\n\t\t\"node_modules_ionic_core_dist_esm_ion-virtual-scroll_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\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 Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 50863;\nmodule.exports = webpackAsyncContext;","/* (ignored) */"],"names":["PreloadAllModules","RouterModule","AuthGuard","WebAppGuard","SkillFeatureGuard","routes","path","loadChildren","then","m","LandingPageModule","canActivate","LoginPageModule","ForgotPasswordPageModule","HomePageModule","InterventionOverviewPageModule","LessonOverviewPageModule","LessonPageModule","DiaryOverviewPageModule","DiaryPageModule","ThreadsPageModule","ChatPageModule","InvitationsPageModule","SettingsPageModule","ImprintPageModule","PrivacyPageModule","SecurityPageModule","SkillOverviewPageModule","SkillPageModule","ProgressPageModule","redirectTo","pathMatch","AppRoutingModule","forRoot","preloadingStrategy","imports","exports","EventEmitter","MenuController","ModalController","Platform","SplashScreen","StatusBar","Router","filter","TranslateService","NavigationEnd","TechnicalSupportComponent","AlertService","ParserService","LocalStorageService","i0","ctx_r10","AppComponent","platform","splashScreen","statusBar","router","menuCtrl","alertService","translateService","modalController","parserService","localStorage","sideMenu","initializeApp","registerNoMenuPages","events","pipe","event","subscribe","previousUrl","url","document","body","classList","toggle","setDefaultLang","getAppLanguage","ready","is","styleDefault","hide","width","smallScreen","resize","navigate","title","icon","id","noMenu","getIsNativeApp","includes","urlAfterRedirects","enable","stopPropagation","routeEmitter","emit","navigateByUrl","close","showDiaries","showProgress","create","component","cssClass","modal","present","selectors","outputs","decls","vars","consts","template","ctx","$event","BrowserModule","RouteReuseStrategy","IonicModule","IonicRouteStrategy","TranslateModule","TranslateLoader","TranslateHttpLoader","File","HTTP_INTERCEPTORS","HttpClient","HttpClientModule","CommonModule","ServiceWorkerModule","AutosizeModule","IonicStorageModule","FontAwesomeModule","BrowserAnimationsModule","Ng2FlatpickrModule","FCM","ComponentsModule","FirebaseService","HelperService","RequestProviderService","TokenInterceptorService","environment","HttpLoaderFactory","http","AppModule","bootstrap","provide","useClass","multi","swipeBackEnabled","loader","useFactory","deps","register","enabled","production","declarations","i1","i2","i3","i4","map","catchError","throwError","ChatInformationComponent","ctx_r4","message_r7","ChatComponent","helperService","requestProvider","setTimeout","chatContentRef","scrollToBottom","myUserId","getUserId","heightSub","fullSize","height","sendMessage","newMsg","thread","result","error","response","sentMessage","showError","componentProps","participants","message","size","authorId","viewQuery","FormsModule","MatMenuModule","MatButtonModule","MatIconModule","MatExpansionModule","SingleChoice","Slider","QuestionTable","TextArea","Date_","TextString","Space","YesNo","Line","MultipleChoice","Headline","Media","Block","Text_","HeaderComponent","DeleteAccountComponent","FeedbackComponent","DirectivesModule","BuddyPopupComponent","UnlockPopupComponent","TextProgressBar","Element","ElementRef","confetti","ctx_r7","dialogData","dailyTaskDone","dailyTaskDoneBuddy","fireConfetti","dismiss","disableButton","sendBuddyReminder","buddyInstanceId","reminded","justReminded","duration","animationEnd","Date","now","defaults","startVelocity","spread","ticks","zIndex","canvas","confettiCanvasRef","nativeElement","interval","setInterval","timeLeft","clearInterval","randomInRange","min","max","Math","random","particleCount","Object","assign","origin","x","y","inputs","users","HttpResponse","requestDeleteAccount","password","usePseudonymized","__awaiter","status","presentToast","JSON","stringify","NavParams","HttpErrorResponse","Thread","message_r3","navParams","get","lessonFeedbackRequired","read","progressJSON","lessonId","answersheetId","setFeedbackRead","assignedInstanceID","getNewMessages","newFeedback","readFeedback","getMessageThread","parseThread","handleErrorGetMessages","SUPPORT_MAIL","window","location","href","supportMail","instant","faAngleDoubleDown","ctx_r18","i_r14","alertController","choosenOffers","Array","offers","length","fill","self","getElementById","addEventListener","e","target","scrollTop","showTopBorder","showBottomBorder","clientHeight","scrollHeight","userScrolled","screen","style","display","i","selectedLesson","push","unlockMultiple","undefined","onCloseDialog","getChoosenQuestionnaires","showChoice","unlockServer","unlockIds","hasAlreadyUnlockedOffers","alreadyUnlockedServer","isDiary","alreadyUnlockedDetails","BlockType","ctx_r11","evaluationService","require","model","hideElements","type","NONE","hideDetails","BOTH","isDynamicLoop","repeat","setRepetition","lesson","answers","isConditional","evaluateBlock","getAnswer","conditionTrue","evaluateCondition","condition","_answers","from","v","k","CONDITIONAL","DETAILS","loopIndex","features","ElementModel","ctx_r5","ctx_r6","ctx_r8","ctx_r9","ctx_r14","resolvable","attr","attrResolved","resolvedOptions","entry","evaluateReferences","labelList","element","constructor","name","init","Element_","faFilePowerpoint","faFileWord","faFileExcel","faFilePdf","MediaType","isExcel","faIcon","isWord","isPdf","isPowerpoint","hostVars","hostBindings","Question","German","locale","en","de","onChange","selectedDates","emitAnswer","dateFormat","show24hrs","dateOptions","altFormat","enableTime","time_24hr","noCalendar","defaultHour","defaultMinute","clickOpens","isDisabled","onClose","position","answer","currentValue","substr","initDate","console","log","removeAnswerRepetition","value","loading","answ","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","toISOString","insertAnswer","inserted","Renderer2","ctx_r0","renderer","injectStyle","selectedOptionChanged","indexOfOption","values","findIndex","val","selectedAnswerUnresolved","options","toString","oldOptions","optionsResolved","parse","setStyle","selectRef","shadowRoot","childNodes","TypeError","ctx_r2","manyPoints","scaleRangeRight","start","scaleRangeLeft","ctx_r3","questionTexts","question","currentVal","maxVal","minVal","hostAttrs","yesTranslated","noTranslated","TextType","IMPORTANT","TIP","INFO","SUCCESS","text","split","NavController","BACKEND_URL","ctx_r16","ctx_r19","ctx_r21","ctx_r23","ctx_r25","ctx_r29","ctx_r31","ctx_r33","navCtrl","tokenInterceptorService","getTheme","documentElement","setProperty","getBackground","ev","language","use","loadedActivities","infiniteScroll","activityLog","wait","appendItems","number","originalLength","time","Promise","resolve","selectedLanguage","setAppLanguage","cancelPendingRequests","changeLanguageEmitter","getDeviceTokenId","deleteDeviceToken","logoutRequest","removeDeviceTokenId","logout","removeToken","removeUserEmail","removeLocalUser","removeUserId","newMessages","showAnnouncements","selectedAnnouncement","navigateRoot","animated","animationDirection","refreshToken","setToken","data","attributes","token","catch","back","saveEmitter","save","answersChanged","confirmBack","backEmitter","pxFontSize","pxProgressBarHeight","progressBackground","pbStyle","progressBarRef","brightenHexColor","ScrollbarThemeDirective","elRef","saveRef","stylesheetBlue","stylesheet","styleElmt","querySelector","append","barStyle","createElement","appendChild","ActivatedRouteSnapshot","RouterStateSnapshot","UrlTree","of","next","state","getToken","factory","providedIn","FEATURES","Activity","action","created_at","Announcement","Answersheet","instanceID","diaryInstanceID","collected_at","version","Diary","diaryId","description","picture","studyId","DiaryInstance","diaryID","lessonOfDiary","interventionInstanceId","Instance","intervention_id","intervention_type","ecoach_id","patient_id","configuration","progress","intervention_title","intervention_description","intervention_picture","study_id","Intervention","gamification","smallLayout","Invitation","expiresAt","invitationToken","studyTitle","Lesson","finished","defaultColor","unlock_diaries","questions_required","skills","Message","authorName","createdAt","Skill","color","subject","unreadMessages","messages","User","firstname","lastname","settings","BlockModel","elementType","QuestionTypes","isApplication","media","APPLICATION_DOC","APPLICATION_DOCX","APPLICATION_PPT","APPLICATION_PPTX","APPLICATION_ODT","APPLICATION_PDF","isAudio","AUDIO_MPEG","AUDIO_WAV","AUDIO_M4A","isImage","IMAGE_PNG","IMAGE_JPEG","IMAGE_GIF","IMAGE_SVG","isVideo","VIDEO_MP4","HeadlineModel","headline","_headlineResolved","sanitizer","bypassSecurityTrustHtml","LineModel","MediaModel","webUri","localUri","subtitle","filePath","fileName","banner","platformIsAndroid","PageModel","progessbar_text","progressbar_text","QuestionModel","QuestionDateModel","required","label","QuestionMultipleChoiceModel","QuestionSingleChoiceModel","QuestionSliderModel","labelLeft","labelRight","stepWidth","QuestionTableModel","answerTexts","QuestionTextAreaModel","QuestionTextStringModel","QuestionYesNoModel","SpaceModel","TextModel","positon","_textResolved","AlertController","LoadingController","ToastController","loadingController","toastController","backdropDismiss","translucent","buttons","role","handler","toast","errorText","header","subHeader","alert","errorDetails","infoText","button1","button2","callbackButton1","callbackButton2","fcm","registerDeviceToken","tokenId","headers","reverse","join","indexOf","setDeviceTokenId","onNotification","showAlertMessage","msg","route","onTokenRefresh","CryptoJS","BACKEND_URL_MEDIA","currentUrl","unformattedDate","date","weekday","day","month","year","timeOptions","hour","minute","dateString","toLocaleDateString","toLocaleTimeString","userId","instanceState","details","threads","sort","n1","n2","key","AES","encrypt","bytes","decrypt","enc","Utf8","percent","r","parseInt","g","b","bcrypt","Storage","nativeStorage","setItem","getItem","removeItem","string","String","email","salt","genSaltSync","hashedPassword","hashSync","pw","theme","background","instanceId","page","userEmail","getUserEmail","encryptedData","reject","set","successful","decryptedData","remove","exception","currentPage","totalPages","savedDate","DomSanitizer","file","translationService","userJSON","user","activityArrJSON","activityArr","index","attributesJSON","activityText","replace","invitationArrJSON","invitationArr","timestamp","Number","expires_at","uri","study_title","invitations","interventionArrJSON","interventionsArr","parseIntervention","interventionJSON","unlock_multiple_conditionals","small_layout","instanceArrJSON","interventions","instanceArr","parseInstance","instancesWithSkills","instance","current_state","intervention","find","skills_order","instanceJSON","intervention_media","lessonJSON","lessonArr","parseLesson","page_color","startsWith","getPicture","is_filled_out","diary_id","diaryInstanceArrJSON","isAllInstances","diaryInstanceArr","parseDiaryInstance","diaryInstanceJSON","diary_title","diary_description","diary_picture","diary_questionnaire_id","intervention_instance_id","diaryJSON","diary","questionnaire_id","answersheetArrJSON","answersheetArr","parseAnswersheet","answersheetJSON","diary_instance_id","elementJSON","parsedResponse","elements","elementtype","questionType","translations","parsedElement","parseHeadline","parseText","parseMedia","parseQuestion","parsePage","parseSpace","parseBlock","filtered","p","block","spliced","splice","lastIndexOf","content","parsedType","HIGHLIGHT","TABLE","parser","DOMParser","htmlDoc","parseFromString","imgs","getElementsByTagName","img","mimeType","NOT_SUPPORTED","currentIndexOfChar","indexOfLastChar","questiontype","questionModel","parseYesNoQuestion","parseSingleChoice","parseMultipleChoice","parseSlider","parseQuestionTable","parseTextDate","parseTextString","parseTextArea","leftLabel","rightLabel","typeJson","threadJSON","newMessagesNumber","newFeedbackNumber","threadsArr","json","includedUsers","relationships","includedMessages","_a","_b","_c","_d","threadsSorted","sortThreadsByNewestDate","messageIndex","messageId","messageAuthorName","getAuthorName","author","subjectText","participantIndex","participantId","getUserPicture","answersheet_id","intervention_instance_progress","questionnaire_feedback_required","unread","is_unread","questionnaire_name","questionnaire_feedback_read","intervention_instances_id","authorJSON","annArrJSON","annArr","skillArrJSON","skillArr","parseSkill","skillJSON","HttpHeaders","HttpParams","params","observe","interventionId","responseType","timezone","questionnaireID","post","diaryInstancId","forDiary","buddies_id","instanceKey","round","getTime","client","device","os","platforms","sourceQuestionnaire","questionnaires","patch","unlock_questionnaires","diaryInstanceId","currentUserId","responseData","diary_instances_ids","buddies_ids","buddyUserIds","userIdOfBuddy","currentDate","slice","myEntry","activity","user_id","buddyEntry","daily_reminder_timestamps","daily_task_timestamps","remindedBuddy","skillId","threadID","code","currentPassword","confirmPassword","current_password","password_confirmation","pseudonymized","delete","currentTime","credentials","withCredentials","firebase_token","HttpEvent","HttpHandler","HttpRequest","BehaviorSubject","Subject","finalize","switchMap","take","takeUntil","cancelPendingRequests$","asObservable","request","addAuthToken","handle","onCancelPendingRequests","errorStatus","errorMessage","errors","detail","refreshTokenInProgress","refreshTokenSubject","err","forceLogout","dismissAllToasts","dismissLoading","clone","setHeaders","Authorization","firebaseConfig","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","enableProdMode","__NgCli_bootstrap_1","bootstrapModule"],"sourceRoot":"webpack:///"}