{"version":3,"sources":["../../src/providers/firebase/firebaseAuthProvider.ts","../../src/pages/login/login.ts","../../node_modules/@angular/core/@angular lazy","../../src lazy","../../src/environments/environment.ts","../../src/pages/login/login.module.ts","../../src/providers/datacheck/dataCheckProvider.ts","../../src/providers/image/imageProvider.ts","../../src/pages/admin/adminService.ts","../../package.json","../../src/pages/admin/adminUtil.ts","../../src/app/main.ts","../../src/app/app.module.ts","../../node_modules/moment/locale ^/.//.*$","../../src/app/app.component.ts","../../src/providers/firebase/firebaseProvider.ts"],"names":[],"mappings":"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AAE,EAAE,EAAE;wBAC7J,EAAE,YAAY,EAAE,qEAAqE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE;qBAClL;iBACF,CAAC;gBACM,uEAAiB,CAAC,aAAa,CAAC,+EAAW,CAAC,QAAQ,CAAC;gBACrD,gFAAqB;gBACrB,wFAAyB;gBACzB,kEAAU;gBACV,iEAAY;gBACZ,6EAAe,CAAC,OAAO,CAAC;oBACpB,MAAM,EAAE;wBACJ,OAAO,EAAE,6EAAe;wBACxB,UAAU,EAAE,iBAAiB;wBAC7B,IAAI,EAAE,CAAC,4DAAI,CAAC;qBACf;iBACJ,CAAC;gBACF,2EAAe;aAClB;YACD,SAAS,EAAE,CAAC,+DAAQ,CAAC;YACrB,eAAe,EAAE;gBACb,6DAAK;gBACL,sEAAS;aACZ;YACD,SAAS,EAAE;gBACP,2EAAS;gBACT,iFAAY;gBACZ,oEAAM;gBACN,EAAC,OAAO,EAAE,mEAAY,EAAE,QAAQ,EAAE,wEAAiB,EAAC;gBACpD,gFAAqB;gBACrB,uEAAiB;gBACjB,+FAAgB;gBAChB,uGAAoB;gBACpB,sFAAa;gBACb,kGAAiB;gBACjB,kEAAQ;gBACR,gFAAY;gBACZ,0EAAS;aACZ;SACJ,CAAC;OACW,SAAS,CACrB;IAAD,gBAAC;CAAA;AADqB;;;;;;;;ACtGtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wB;;;;;;;;;;;;;;;;;;;;;;;;AC9RmD;AACP;AACO;AACM;AACL;AAE4B;AAKhF;IAQI,eACI,QAAkB,EAClB,SAAoB,EACpB,YAA0B,EAClB,SAA2B,EAC3B,oBAA0C;QALtD,iBA4CC;QAxCW,cAAS,GAAT,SAAS,CAAkB;QAC3B,yBAAoB,GAApB,oBAAoB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","file":"main.js","sourcesContent":["import {Injectable} from '@angular/core';\nimport 'rxjs/add/operator/map';\nimport * as firebase from 'firebase';\nimport {BehaviorSubject, Observable} from \"rxjs\";\nimport {AngularFireAuth} from \"angularfire2/auth\";\nimport {FirebaseProvider} from \"./firebaseProvider\";\nimport {Doctor} from \"../../models/doctor/doctor.interface\";\nimport {forkJoin} from \"rxjs/observable/forkJoin\";\nimport {of} from \"rxjs/observable/of\";\nimport {catchError} from \"rxjs/operators\";\nimport {Patient} from \"../../models/patient/patient.interface\";\n\n@Injectable()\nexport class FirebaseAuthProvider {\n private authState: Observable;\n private currentUserSubject = new BehaviorSubject(null);\n private currentUser: firebase.User = null;\n private selectedPatient: Patient = null;\n private currentDoctor: Doctor = null;\n private currentAdmin = false;\n\n constructor(\n private afAuth: AngularFireAuth,\n private firebaseProvider: FirebaseProvider\n ) {\n this.authState = this.afAuth.authState;\n this.listenForAuthStatusEvents();\n }\n\n getCurrentUserSubject() {\n return this.currentUserSubject;\n }\n\n /**\n * Returns true, if the current user is successfully authenticated,\n * false otherwise\n */\n isAuthenticated(): boolean {\n //console.debug(\"CHECK AUTH: \", this.currentUser);\n if (this.currentUser !== null) {\n //console.debug(\"CHECK AUTH UID: \", this.currentUser.uid);\n }\n\n return this.currentUser !== null;\n }\n\n /**\n * Returns true, if the current user is a doctor,\n * false otherwise\n */\n isDoctor(): boolean {\n return this.currentDoctor !== null;\n }\n\n /**\n * Returns true, if the current user is an admin,\n * false otherwise\n */\n isAdmin(): boolean {\n return this.currentAdmin;\n }\n\n /**\n * Returns the current authenticated user\n */\n getCurrentUser(): firebase.User {\n return this.currentUser;\n }\n\n /**\n * Returns the currently selected patient (from doctor page)\n */\n getSelectedPatient(): Patient {\n return this.selectedPatient;\n }\n\n setSelectedPatient(patient: Patient) {\n this.selectedPatient = patient;\n }\n\n /**\n * Logout user\n */\n logout(): firebase.Promise {\n return this.afAuth.auth.signOut();\n }\n\n /**\n * Listen for firebase auth status changes and update internal infos accordingly\n */\n private listenForAuthStatusEvents() {\n this.authState.subscribe(user => {\n console.debug(\"Auth state has changed: \", user !== null ? user.uid : null);\n\n if (user) {\n // get all relevant infos in parallel, afterwards switch user\n let doctor$ = this.firebaseProvider.getDoctorForUID(user.uid).pipe(catchError(error => {\n return of(null);\n }));\n let admin$ = this.firebaseProvider.getAllAdminUsers();\n\n forkJoin(doctor$, admin$).subscribe(([doctor, adminUsers]) => {\n this.currentDoctor = doctor;\n this.currentAdmin = adminUsers.indexOf(user.uid) >= 0;\n\n //console.debug(\"User is doctor\", this.currentDoctor !== null);\n //console.debug(\"User is admin\", this.currentAdmin);\n\n this.currentUser = user;\n this.currentUserSubject.next(user);\n }, error => {\n console.debug(\"Error\", error);\n });\n\n } else {\n this.currentUser = null;\n this.selectedPatient = null;\n this.currentAdmin = false;\n this.currentDoctor = null;\n\n this.currentUserSubject.next(null);\n }\n },\n err => {\n console.warn(\"Could not get auth state\", err);\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/providers/firebase/firebaseAuthProvider.ts","import {Component} from '@angular/core';\nimport {IonicPage, NavController, NavParams, ToastController} from 'ionic-angular';\nimport {AngularFireAuth} from 'angularfire2/auth';\nimport {environment} from '../../environments/environment';\n\nconst {version: appVersion} = require('../../../package.json');\n\n/**\n * Generated class for the LoginPage page.\n *\n * See http://ionicframework.com/docs/components/#navigation for more info\n * on Ionic pages and navigation.\n */\n@IonicPage()\n@Component({\n selector: 'page-login',\n templateUrl: 'login.html',\n\n})\nexport class LoginPage {\n public version: string = appVersion;\n public env: string = environment.name;\n\n logoClickCount = 0;\n\n loginData = {\n email: '',\n password: ''\n };\n\n testLogin = !environment.production; // only for development purpose\n\n authErrorMap = new Map();\n\n constructor(public navCtrl: NavController,\n public navParams: NavParams,\n private afAuth: AngularFireAuth,\n private toastCtrl: ToastController) {\n\n //this.authErrorMap = new Map([[\"\", 'foo'], [\"\", 'bar']]);\n this.authErrorMap.set(\"auth/invalid-email\", \"Die E-Mail-Adresse ist schlecht formatiert.\"); //The email address is badly formatted.\n this.authErrorMap.set(\"auth/user-not-found\", \"Es gibt keinen Benutzerdatensatz, der dieser Kennung entspricht. Der Benutzer wurde möglicherweise gelöscht.\"); //There is no user record corresponding to this identifier. The user may have been deleted.\n this.authErrorMap.set(\"auth/wrong-password\", \"Das Passwort ist ungültig oder der Benutzer hat kein Passwort.\"); //The password is invalid or the user does not have a password.\n this.authErrorMap.set(\"auth/invalid-user-token\", \"Der Berechtigungsnachweis des Benutzers ist nicht mehr gültig. Der Benutzer muss sich erneut anmelden.\"); //The user's credential is no longer valid. The user must sign in again.\n this.authErrorMap.set(\"auth/internal-error\", \"Ein interner Fehler ist aufgetreten.\"); //An internal error has occurred.\n this.authErrorMap.set(\"auth/invalid-auth-event\", \"Ein interner Fehler ist aufgetreten.\"); //An internal error has occurred.\n this.authErrorMap.set(\"auth/no-auth-event\", \"Ein interner Fehler ist aufgetreten.\"); //An internal error has occurred.\n this.authErrorMap.set(\"auth/user-disabled\", \"Das Benutzerkonto wurde von einem Administrator deaktiviert.\"); //The user account has been disabled by an administrator.\n this.authErrorMap.set(\"auth/too-many-requests\", \"Wir haben alle Anfragen von diesem Gerät aufgrund ungewöhnlicher Aktivitäten blockiert. Versuchen Sie es später noch einmal.\"); //We have blocked all requests from this device due to unusual activity. Try again later.\n this.authErrorMap.set(\"auth/network-request-failed\", \"Es kann zur Zeit keine Internetverbindung hergestellt werden.\");\n }\n\n login() {\n // Login Code here\n this.afAuth.auth.signInWithEmailAndPassword(this.loginData.email, this.loginData.password)\n .then(auth => {\n if (!auth.emailVerified) {\n this.toastCtrl.create({\n message: \"Bitte verifiziere deine E-Mail-Adresse!\",\n duration: 3000,\n position: \"top\"\n }).present();\n\n } else {\n this.toastCtrl.create({\n message: \"Willkommen mein Freund!\",\n duration: 3000,\n position: \"top\"\n }).present();\n }\n })\n .catch((err: firebase.FirebaseError) => {\n let preparedMsg = this.authErrorMap.get(err.code);\n if (!preparedMsg) {\n preparedMsg = err.message;\n }\n this.toastCtrl.create({\n //message: err.code + \"__=__\" + err.name + \"::\" + err.message,\n message: preparedMsg,\n duration: 3000,\n position: \"top\"\n }).present();\n });\n }\n\n getLocalizedErrorMsg(code) {\n\n }\n\n\n loginTest(email, pw) {\n this.loginData.email = email;\n this.loginData.password = pw;\n this.login();\n }\n\n navigateToSignupPage() {\n this.navCtrl.push('SignUpPage', {email: this.loginData.email});\n }\n\n sendPasswordResetMail() {\n if (!this.loginData.email) {\n this.toastCtrl.create(\n {\n message: \"Bitte Emailadresse angeben\",\n duration: 3000,\n position: \"top\"\n }\n ).present();\n\n } else {\n this.afAuth.auth.sendPasswordResetEmail(this.loginData.email).then(() => {\n this.toastCtrl.create(\n {\n message: \"E-Mail versendet\",\n duration: 3000,\n position: \"top\"\n }\n ).present();\n });\n }\n }\n\n logoClick() {\n this.logoClickCount++;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/login/login.ts","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncatched exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 186;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@angular/core/@angular lazy\n// module id = 186\n// module chunks = 21","var map = {\n\t\"../pages/admin/admin.module\": [\n\t\t860,\n\t\t7\n\t],\n\t\"../pages/alerts/alerts.module\": [\n\t\t861,\n\t\t20\n\t],\n\t\"../pages/config/config.module\": [\n\t\t862,\n\t\t1\n\t],\n\t\"../pages/data-list/data-list.module\": [\n\t\t863,\n\t\t19\n\t],\n\t\"../pages/data-pdf/data-pdf.module\": [\n\t\t864,\n\t\t3\n\t],\n\t\"../pages/data/data.module\": [\n\t\t865,\n\t\t11\n\t],\n\t\"../pages/doctor/doctor.module\": [\n\t\t859,\n\t\t2\n\t],\n\t\"../pages/dummy/dummy.module\": [\n\t\t866,\n\t\t12\n\t],\n\t\"../pages/handwechsel-modal/handwechsel-modal.module\": [\n\t\t867,\n\t\t10\n\t],\n\t\"../pages/help-doctor/help-doctor.module\": [\n\t\t868,\n\t\t18\n\t],\n\t\"../pages/help/help.module\": [\n\t\t869,\n\t\t17\n\t],\n\t\"../pages/info/info.module\": [\n\t\t870,\n\t\t6\n\t],\n\t\"../pages/login/login.module\": [\n\t\t481\n\t],\n\t\"../pages/overview/overview.module\": [\n\t\t871,\n\t\t4\n\t],\n\t\"../pages/pdf-modal/pdf-modal.module\": [\n\t\t872,\n\t\t9\n\t],\n\t\"../pages/pressurehistory/pressurehistory.module\": [\n\t\t873,\n\t\t5\n\t],\n\t\"../pages/regime-modal/regime-modal.module\": [\n\t\t874,\n\t\t8\n\t],\n\t\"../pages/sign-up/sign-up.module\": [\n\t\t875,\n\t\t16\n\t],\n\t\"../pages/tab/tab.module\": [\n\t\t876,\n\t\t0\n\t],\n\t\"../pages/tou/tou.module\": [\n\t\t877,\n\t\t15\n\t],\n\t\"../pages/ufhistory/ufhistory.module\": [\n\t\t878,\n\t\t14\n\t],\n\t\"../pages/weighthistory/weighthistory.module\": [\n\t\t879,\n\t\t13\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tvar ids = map[req];\n\tif(!ids)\n\t\treturn Promise.reject(new Error(\"Cannot find module '\" + req + \"'.\"));\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(ids[0]);\n\t});\n};\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 229;\nmodule.exports = webpackAsyncContext;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src lazy\n// module id = 229\n// module chunks = 21","export const environment = {\n name: \"Production\",\n production: true,\n // Initialize Firebase\n firebase: {\n apiKey: 'AIzaSyA82wZtzibww1O3hJvFesGSwmVzFVIl94o',\n authDomain: 'kpark-757a7.firebaseapp.com',\n databaseURL: 'https://de-sharpmind-nh-prod.firebaseio.com/',\n projectId: 'kpark-757a7',\n storageBucket: 'de-sharpmind-nh-prod',\n messagingSenderId: '903768140396'\n }\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/environments/environment.ts","import { NgModule } from '@angular/core';\nimport { IonicPageModule } from 'ionic-angular';\nimport { LoginPage } from './login';\n\n@NgModule({\n declarations: [\n LoginPage,\n ],\n imports: [\n IonicPageModule.forChild(LoginPage),\n ],\n exports: [\n LoginPage\n ]\n})\nexport class LoginPageModule {}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/login/login.module.ts","import {Injectable} from '@angular/core';\nimport {Config} from \"../../models/config/config.interface\";\nimport {Entry} from \"../../models/entry/entry.interface\";\nimport moment from \"moment\";\n\n//const entryToday = 0;\n\n@Injectable()\nexport class DataCheckProvider {\n\n private entryDirty: boolean;\n\n deviceTypeList = [{ key:'home-choice-pro', value:'Home Choice Pro'}, {key:'sleep-safe-now', value:'Sleep Safe Now'}, {key:'sleep-safe-harmony', value:'Sleep Safe Harmony' }];\n\n //due to #6999 (adding of additional dialysat fliuid, key's are handleded a bit differently, we now show the value in the pdf with name (bicavera or balance))\n // var name dialysatBicaVera was changed to dialysatFluidList\n //public dialysatBicaVera = [{ key:1.5, value:'BicaVera 1,5%'}, {key:2.3, value:'BicaVera 2,3%'}, {key:4.25, value:'BicaVera 4,25%' }];\n public dialysatFluidList = [\n { key:1.5, value:'BicaVera 1,5%'}, {key:2.3, value:'BicaVera 2,3%'}, {key:4.25, value:'BicaVera 4,25%' },\n { key:5, value:'balance 1,5% / 1,25 mmol'}, {key:6, value:'balance 2,3% / 1,25 mmol'}, {key:7, value:'balance 4,25% / 1,25 mmol' },\n { key:8, value:'balance 1,5% / 1,75 mmol'}, {key:9, value:'balance 2,3% / 1,75 mmol'}, {key:10, value:'balance 4,25% / 1,75 mmol' },\n { key:11, value:'PHYSIONEAL40 1,36%/13,6'}, {key:12, value:'PHYSIONEAL40 2,27%/22,7'}, {key:13, value:'PHYSIONEAL40 3,86%/38,6' },\n { key:14, value:'PHYSIONEAL Nutrineal'}, {key:15, value:'PHYSIONEAL Extraneal'}, {key:16, value:'PHYSIONEAL35 1,36%/13,6' },\n { key:17, value:'PHYSIONEAL35 2,27%/22,7'}, {key:18, value:'PHYSIONEAL35 3,86%/38,6'}\n\n ];\n\n public gesamtablaufJeden = [ { key:1, value:'1.'}, { key:2, value:'2.'} ,{ key:3, value:'3.'},\n { key:4, value:'4.'}, { key:5, value:'5.'} ,{ key:6, value:'6.'},\n { key:7, value:'7.'}, { key:8, value:'8.'} ,{ key:9, value:'9.'},\n ];\n\n\n constructor() {\n }\n\n isPatientConfigComplete(conf: Config): boolean {\n //console.log(\"#### config.obergrenzeGewicht=====\" + conf.obergrenzeGewicht);\n return !(this.isValueInvalid(conf.obergrenzeGewicht) ||\n this.isValueInvalid(conf.untergrenzeGewicht) ||\n this.isValueInvalid(conf.obergrenzeSystole) ||\n this.isValueInvalid(conf.untergrenzeSystole) ||\n this.isValueInvalid(conf.obergrenzeDiastole) ||\n this.isValueInvalid(conf.untergrenzeDiastole) ||\n /*#6720: commenting out\n this.isValueInvalid(conf.obergrenzeMAD) ||\n this.isValueInvalid(conf.untergrenzeMAD) ||\n */\n this.isValueInvalid(conf.obergrenzeTemperatur) ||\n this.isValueInvalid(conf.untergrenzeTemperatur) ||\n /*conf.limitAdditiveESS === undefined || (typeof conf.limitAdditiveESS != 'number') ||\n conf.limitSingleESS === undefined || (typeof conf.limitSingleESS != 'number') ||*/\n this.isInvalidEES(conf.limitAdditiveESS) ||\n this.isInvalidEES(conf.limitSingleESS) ||\n conf.nachname === undefined || conf.nachname == \"\" ||\n conf.vorname === undefined || conf.vorname == \"\" ||\n conf.geburtstag === undefined);\n }\n\n isValueInvalid(varItem) {\n return varItem === undefined || varItem == 0 || (typeof varItem != 'number');\n }\n\n isInvalidEES(varItem) {\n if (varItem && (typeof varItem == 'string')) {\n let s1 = varItem + \"\";\n s1 = s1.trim();\n if (s1.length > 0) {\n //console.log(\"AAAAA BBBBB CCCCCCC\");\n varItem = parseInt(s1.trim());\n //console.log(\"varItem is a---->\" + typeof varItem);\n }\n }\n\n return varItem === undefined || varItem == 0 || (typeof varItem != 'number');\n }\n\n\n createConfigErrorAlertMessage(conf: Config, isConfigPage: boolean): string {\n\n //console.log(\"in DataCheckProvider.createConfigErrorAlertMessage()-> config.obergrenzeGewicht=====\" + conf.obergrenzeGewicht);\n\n let errorStr = \"

Bevor Du mit der Datenerfassung beginnst, erfasse bitte persönliche Daten und Wertebereiche in den Einstellungen.

\";\n if (isConfigPage) {\n errorStr = \"

Bevor Du mit der Datenerfassung beginnst, erfasse bitte persönliche Daten und Wertebereiche.

\";\n }\n\n errorStr = errorStr + \"
    \";\n\n if (conf.nachname === undefined || conf.nachname.trim().length == 0) {\n errorStr = errorStr + \"
  • Nachname
  • \";\n }\n if (conf.vorname === undefined || conf.vorname.trim().length == 0) {\n errorStr = errorStr + \"
  • Vorname
  • \";\n }\n if (conf.geburtstag === undefined) {\n errorStr = errorStr + \"
  • Geburtstag
  • \";\n }\n if (this.isInvalidEES(conf.limitAdditiveESS)) {\n errorStr = errorStr + \"
  • Limit additive ESS
  • \";\n }\n if (this.isInvalidEES(conf.limitSingleESS)) {\n errorStr = errorStr + \"
  • Limit einzelne ESS
  • \";\n }\n if (this.isValueInvalid(conf.untergrenzeGewicht)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Gewichtszuwachs (Untergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.obergrenzeGewicht)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Gewichtszuwachs (Obergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.obergrenzeSystole)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Systole (Obergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.untergrenzeSystole)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Systole (Untergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.untergrenzeDiastole)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Diastole (Untergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.obergrenzeDiastole)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Diastole (Obergrenze)
  • \";\n }\n /*\n // #6720: commenting out\n if (this.isValueInvalid(conf.untergrenzeMAD)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. MAD (Untergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.obergrenzeMAD)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. MAD (Obergrenze)
  • \";\n }\n */\n if (this.isValueInvalid(conf.obergrenzeTemperatur)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Temperatur (Obergrenze)
  • \";\n }\n if (this.isValueInvalid(conf.untergrenzeTemperatur)) {\n errorStr = errorStr + \"
  • Zielbereich tägl. Temperatur (Untergrenze)
  • \";\n }\n\n errorStr = errorStr + \"
\";\n\n return errorStr;\n }\n\n createNoConfigErrorAlertMessage(): string {\n return \"

Bevor Du mit der Datenerfassung beginnst, erfasse bitte persönliche Daten und Wertebereiche in den Einstellungen.

\";\n }\n\n getFullNameOfPatient(conf: Config): string {\n let vorName = conf.vorname;\n let nachName = conf.nachname\n if (!vorName) vorName = \"\";\n if (!nachName) nachName = \"\";\n\n let fullname = vorName + \" \" + nachName;\n\n return fullname.trim();\n }\n\n getPatientBirthdate(conf: Config): string {\n let bDate = \"\";\n if (conf.geburtstag) {\n bDate = conf.geburtstag + \"\";\n }\n return bDate.trim();\n }\n\n getEntryDirty():boolean {\n return this.entryDirty;\n }\n\n setEntryDirty(iBoolVal) {\n this.entryDirty = iBoolVal;\n }\n\n //#6782: to iso local (https://stackoverflow.com/questions/49330139/date-toisostring-but-local-time-instead-of-utc)\n public static toISOLocal(d) {\n const z = n => ('0' + n).slice(-2);\n let off = d.getTimezoneOffset();\n const sign = off < 0 ? '+' : '-';\n off = Math.abs(off);\n return new Date(d.getTime() - (d.getTimezoneOffset() * 60000)).toISOString().slice(0, -1) + sign + z(off / 60 | 0) + ':' + z(off % 60);\n }\n\n //alertGewicht always have to be measured dynamically from current day and prev day.\n //if no data for prev day, then NO alertGewicht will be calculated.\n //alertGewicht is the delta value from a day and the day before.\n //#6800\n getAlertGewicht(iEntry:Entry, entries: Entry[]): boolean {\n let alertGewicht = false;\n if (entries.length > 1) {\n let iDateShortSort = iEntry.referenzDatumShortSort;\n let prevDateShortSort = this.getRequiredRefDateShortSort(iDateShortSort, 1); //#6770\n\n // following will give problem for 1st March (20210301) ---> 20210301 -1 = 20210300 (is not 28th Feb)\n //let prevDateShortShort = iEntry.referenzDatumShortSort-1;\n\n let idx = entries.findIndex(item => item.referenzDatumShortSort == iDateShortSort);\n let idxPrev = entries.findIndex(item => item.referenzDatumShortSort == prevDateShortSort);\n\n if (idx >=0 && idxPrev >=0) {\n let prevEntry = entries[idxPrev];\n alertGewicht = this.getAlertGewichtByPrevEntry(iEntry, prevEntry);\n }\n }\n return alertGewicht;\n }\n\n //#6770\n // following will give problem for 1st March (20210301) ---> 20210301 -1 = 20210300 (is not 28th Feb)\n //let prevDateShortShort = iEntry.referenzDatumShortSort-1;\n public getRequiredRefDateShortSort(refDateShortSort: number, diffDays:number):number {\n let diffDateMoment = moment(refDateShortSort+\"\", 'YYYYMMDD').subtract(diffDays, 'days');\n let diffDateShortSortStr = diffDateMoment.format('YYYYMMDD');\n let diffDateShortSort = Number(diffDateShortSortStr);\n\n return diffDateShortSort;\n }\n\n getAlertGewichtByPrevEntry(iEntry:Entry, prevEntry:Entry): boolean {\n let alertGewicht = false;\n if (iEntry && prevEntry) {\n let currentWeight = iEntry.gewicht;\n let prevWeight = prevEntry.gewicht;\n if (currentWeight && prevWeight) {\n let deltaVortag = currentWeight - prevWeight;\n if (deltaVortag < iEntry.historischeUntergrenzeGewicht || deltaVortag > iEntry.historischeObergrenzeGewicht ) {\n alertGewicht = true;\n }\n }\n }\n return alertGewicht;\n }\n\n getDeltaGewichtVorTag(iEntry:Entry, entries: Entry[]): number {\n let deltaGewicht = this.getDeltaGewichtByDays(iEntry, entries, 1);\n return deltaGewicht;\n }\n\n getDeltaGewichtByDays(iEntry:Entry, entries: Entry[], diffDays:number): number {\n let deltaGewicht = 0;\n if (entries.length > 1) {\n let iDateShortShort = iEntry.referenzDatumShortSort;\n\n // following will give problem for 1st March (20210301) ---> 20210301 -1 = 20210300 (is not 28th Feb)\n // let diffDateShortShort = iEntry.referenzDatumShortSort - diffDays;\n let diffDateShortShort = this.getRequiredRefDateShortSort(iDateShortShort, diffDays) ;\n\n let idx = entries.findIndex(item => item.referenzDatumShortSort == iDateShortShort);\n let idxDiff = entries.findIndex(item => item.referenzDatumShortSort == diffDateShortShort);\n\n if (idx >=0 && idxDiff>=0) {\n let prevEntry = entries[idxDiff];\n let currentWeight = iEntry.gewicht;\n let prevWeight = prevEntry.gewicht;\n if (currentWeight && prevWeight) {\n deltaGewicht = currentWeight - prevWeight;\n }\n }\n }\n return deltaGewicht;\n }\n\n getAlertGewichtFromTwoWeights(currentWeight:number, prevDayWeight:number, historischeUntergrenzeGewicht,historischeObergrenzeGewicht ): boolean {\n let alertGewicht = false;\n if (currentWeight && prevDayWeight) {\n //console.log(`AAAAAA currentWeight=${currentWeight} and prevDayWeight=${prevDayWeight}`);\n let deltaVortag = currentWeight - prevDayWeight;\n if ((deltaVortag < historischeUntergrenzeGewicht) || (deltaVortag > historischeObergrenzeGewicht)) {\n alertGewicht = true;\n }\n }\n return alertGewicht;\n }\n // for a given date, check if weight was given\n wasWeightRecorded (entries: Entry[], dateShortShort):boolean {\n let hasWeightEntry = false;\n let idx = entries.findIndex(item => item.referenzDatumShortSort == dateShortShort);\n if (idx >= 0) {\n let iEntry = entries[idx];\n let iWeight = iEntry.gewicht;\n if (iWeight && iWeight >= 0) {\n hasWeightEntry = true;\n }\n }\n return hasWeightEntry;\n }\n\n /*******************************info and statistics methods ***************************************************/\n\n //Note: entries is a array where latest entry is at index 0.\n // we get this array from firebase sorted by 'sortierDatum'\n\n /**\n * Return the current value for a given property\n * Returns null if no value could be found for given day\n */\n public static getValue(entries: Entry[], day: number, propertyString: string): number {\n return (entries[day]) ? entries[day][propertyString] || null : null;\n }\n\n /**\n * Return the delta compared to actual value for a given property\n */\n public static getDelta(entries: Entry[], day: number, propertyString: string): number {\n // get current value\n let today = 0;\n return this.getDeltaBetween2Days(entries, today, day, propertyString);\n\n }\n\n /**\n * Return the delta of a given properties between day1 and day2\n */\n public static getDeltaBetween2Days(entries: Entry[], day1: number, day2: number, propertyString: string): number {\n // get current value\n const current = DataCheckProvider.getValue(entries, day1, propertyString);\n const comparedWith = DataCheckProvider.getValue(entries, day2, propertyString);\n\n if (!current || !comparedWith) {\n // no delta possible\n return null;\n }\n\n return current - comparedWith;\n }\n\n /**\n * Return the delta compared to actual value for a given property\n */\n public static getDeltaWarning(entries: Entry[], day: number, propertyString: string): boolean {\n // get current value\n const delta = DataCheckProvider.getDelta(entries, day, propertyString);\n\n return delta === null;\n }\n\n /**\n * Return the delta compared to actual value for a given property\n * deltaGewicht must be compared with historischeUntergrenzeGewicht and historischeObergrenzeGewicht\n */\n public static getDeltaWarningGewicht(entries: Entry[], day: number, propertyString: string): boolean {\n if (day == 0) {\n return false;\n }\n return DataCheckProvider.getDeltaWarningGewichtBetweenTwoDays(entries, 0, day, propertyString );\n }\n\n public static getDeltaWarningGewichtBetweenTwoDays(entries: Entry[], dayIdx1:number, dayIdx2: number, propertyString: string): boolean {\n if (dayIdx2 == 0 || dayIdx1 == dayIdx2) {\n return false;\n }\n // get current value\n const delta = DataCheckProvider.getDeltaBetween2Days(entries, dayIdx1, dayIdx2, propertyString);\n\n let historischeUntergrenzeGewicht = DataCheckProvider.getValue(entries, dayIdx1, \"historischeUntergrenzeGewicht\"); // weight lower limit\n let historischeObergrenzeGewicht = DataCheckProvider.getValue(entries, dayIdx1, \"historischeObergrenzeGewicht\"); // weight upper limit\n\n if (historischeUntergrenzeGewicht && historischeObergrenzeGewicht) {\n let totalLowerLimitWeight = historischeUntergrenzeGewicht * (dayIdx2 -dayIdx1); // total lower weight limit\n let totalUpperLimitWeight = historischeObergrenzeGewicht * (dayIdx2 -dayIdx1); // total upper weight limit\n\n return ((delta != null && (delta < totalLowerLimitWeight || delta > totalUpperLimitWeight)) ? true: false);\n }\n\n return false;\n }\n\n /**\n * Get average for given property and time frame\n */\n public static getAverage(entries: Entry[], day: number, propertyString: string): number {\n const validEntries = entries\n .slice(0, day + 1)\n .map(e => +e[propertyString])\n .filter(n => n !== null)\n .filter(n => !isNaN(n))\n .filter(n => n !== 0)\n ;\n\n if (validEntries.length == 0) return null;\n\n const sum = validEntries.reduce((a, b) => a + b);\n const numberOfElements = validEntries.length;\n\n if (numberOfElements === 0) return null;\n return sum / numberOfElements;\n }\n\n /**\n * Get average for given property and between a timeFrame (dayIdx1 and dayIdx2)\n */\n public static getAverageBetween2Days(entries: Entry[], dayIdx1: number, dayIdx2: number, propertyString: string): number {\n const validEntries = entries\n .slice(dayIdx1, dayIdx2 + 1)\n .map(e => +e[propertyString])\n .filter(n => n !== null)\n .filter(n => !isNaN(n))\n .filter(n => n !== 0)\n ;\n\n if (validEntries.length == 0) return null;\n\n const sum = validEntries.reduce((a, b) => a + b);\n const numberOfElements = validEntries.length;\n\n if (numberOfElements === 0) return null;\n return sum / numberOfElements;\n }\n\n /**\n * return warning = true if we have missing data\n */\n public static getAverageWarning(entries: Entry[], day: number, propertyString: string): boolean {\n const numberOfElements = entries\n .slice(0, day + 1)\n .map(e => e[propertyString] as number)\n .filter(n => n != null)\n .filter(n => !isNaN(n))\n .filter(n => n !== 0)\n .length;\n return (numberOfElements !== day + 1);\n }\n\n /**\n * Get delta average for given property and time frame\n */\n public static getDeltaAverage(entries: Entry[], day: number, propertyString: string): number {\n // find the oldest values starting from index to 0 (\"backwards\")\n let delta = null;\n for (var i = day; i > 0; i--) {\n delta = DataCheckProvider.getDelta(entries, i, propertyString);\n if (delta !== null) break;\n }\n\n if (delta === null) {\n return null;\n }\n\n return delta / day;\n }\n\n /**\n * Get delta average for given property and between dayIdx1 and dayIdx2\n */\n public static getDeltaAverageBetween2Days(entries: Entry[], dayIdx1: number, dayIdx2: number, propertyString: string): number {\n\n if (dayIdx1 > dayIdx2 || dayIdx1== dayIdx2) {\n return null;\n }\n\n // find the oldest values starting from dayIdx2 to dayIdx1 (\"backwards\")\n let delta = null;\n for (var i = dayIdx2; i > dayIdx1; i--) {\n delta = DataCheckProvider.getDeltaBetween2Days(entries, dayIdx1, i , propertyString);\n if (delta !== null) break;\n }\n\n if (delta === null) {\n return null;\n }\n\n return delta / (dayIdx2 - dayIdx1);\n }\n\n /**\n * return warning = true if we have missing data\n */\n public static getDeltaAverageWarning(entries: Entry[], day: number, propertyString: string): boolean {\n return DataCheckProvider.getDelta(entries, day, propertyString) === null;\n }\n\n /**\n * This generates an array with arraySize (default is 30) entries.\n * Fill entries into the array so that the current entry is index 0.\n * If there is no entry for a given day, then it is null.\n * If value exists for today - this value has index 0\n * If value does not exist for today, but for yesterday - this value has index 0\n */\n public static generateTimeEntryArray(entries: Entry[], arraySize: number = 30): Entry[] {\n // sanity check\n if (entries.length == 0) return [];\n\n const timeEntries: Entry[] = [];\n\n // 30 entries\n //timeEntries.fill(null, 0, 30)\n timeEntries.fill(null, 0, arraySize)\n\n const sortedArray = DataCheckProvider.sortEntries(entries);\n sortedArray.forEach(entry => {\n const referenzDateMoment = moment(entry.referenzDatum.toString());\n const index = moment().startOf('day').diff(referenzDateMoment.startOf('day'), 'day');\n\n if (index <= arraySize) timeEntries[index] = entry;\n });\n\n return timeEntries;\n }\n\n /**\n * Sort entries by sortierdatum ,either ascending (default) or descending\n * @param entries the entries to sort\n * @param ascending up or down sorting\n */\n private static sortEntries(entries: Entry[], ascending: boolean = true): Entry[] {\n const sortedEntries = entries.sort((a, b) => a.sortierDatum > b.sortierDatum ? 1 : a.sortierDatum > b.sortierDatum ? -1 : 0);\n if (!ascending) sortedEntries.reverse();\n return sortedEntries\n }\n\n /********************************************************************************************/\n\n //#6773, #6917, #6918\n public static getUltrafiltrationWithHandwechsels(ultrafiltration: number, handwechsels):number {\n\n if (!ultrafiltration && !handwechsels) {\n return null;\n }\n\n let ultrafiltrationWithHandwechsels = 0;\n if (ultrafiltration) {\n ultrafiltrationWithHandwechsels = ultrafiltration;\n }\n\n if (handwechsels && handwechsels.length > 0 ) {\n handwechsels.forEach(handwechselItem => {\n //handwechselItem\n let itemHanwehselnInput = handwechselItem.inlet_volume;\n let itemHanwehselnOutput = handwechselItem.outlet_volume;\n if (itemHanwehselnInput && itemHanwehselnOutput) {\n let itemUltrafiltration = Number(itemHanwehselnOutput) - Number(itemHanwehselnInput);\n ultrafiltrationWithHandwechsels = Number(ultrafiltrationWithHandwechsels) + Number(itemUltrafiltration) ;\n }\n });\n }\n return ultrafiltrationWithHandwechsels;\n }\n\n /******************* #6920***************************/\n\n public static calculateTimeDiff(startTime:String, endTime:String): string {\n\n let hourMinStr = \"\";\n\n let startHour = Number(startTime.substring(0, 2));\n let startMinute = Number(startTime.substring(3));\n let endHour = Number(endTime.substring(0, 2));\n let endMinute = Number(endTime.substring(3));\n\n let startDate = new Date();\n startDate.setHours(startHour);\n startDate.setMinutes(startMinute);\n startDate.setSeconds(0);\n //console.log(\"startDate:\",startDate);\n\n let endDate = new Date();\n endDate.setHours(endHour);\n endDate.setMinutes(endMinute);\n endDate.setSeconds(0);\n //console.log(\"endDate:\",endDate);\n\n if ((startHour > endHour) || ( (startHour === endHour) && (startMinute > endMinute) ) ) {\n endDate = this.addDays(endDate, 1);\n //console.log(\"next day endDate:\",endDate);\n }\n\n let diffInMilliSeconds = Math.abs(endDate.getTime() - startDate.getTime()); //milli sec\n\n let minutes = Math.abs(diffInMilliSeconds / (1000 * 60)); // in minutes\n //console.log (\"diff in minutes=\" + minutes);\n\n let min = Math.abs(minutes % 60);\n //console.log (\"MIN RESULTS= \" + Math.trunc(min));\n var hour = Math.abs((minutes-min)/60);\n let minTruncated = Math.trunc(min);\n\n if (hour > 0) {\n hourMinStr = hourMinStr + hour + \" std\";\n }\n\n if (minTruncated > 0) {\n hourMinStr = hourMinStr + \" \" + minTruncated + \" min\";\n }\n return hourMinStr;\n }\n\n // https://stackoverflow.com/questions/563406/add-days-to-javascript-date\n public static addDays(date, days) {\n var result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n }\n\n /****************************************************/\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/providers/datacheck/dataCheckProvider.ts","import {Injectable} from '@angular/core';\nimport 'rxjs/add/operator/map';\nimport * as firebase from 'firebase';\nimport {Subject} from \"rxjs\";\nimport UploadTask = firebase.storage.UploadTask;\n\n@Injectable()\nexport class ImageProvider {\n\n constructor() {\n }\n\n profilePics = new Map>();\n\n public generateUUID(): string {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' +\n s4() + '-' + s4() + s4() + s4();\n }\n\n /**\n * Store a profile image for a user\n * @param file the picture file\n * @param userId the user id\n */\n uploadProfileImage(file: any, userId: string): UploadTask {\n let storageRef = firebase.storage().ref(`/images/${userId}/profile.jpg`);\n return storageRef.put(file);\n }\n\n /**\n * Remove users profile image\n * @param userId the user id\n */\n removeProfileImage(userId: string): firebase.Promise {\n let storageRef = firebase.storage().ref(`/images/${userId}/profile.jpg`);\n return storageRef.delete()\n }\n\n uploadImage(image: string, userId: string): any {\n let storageRef = firebase.storage().ref();\n let imageName = this.generateUUID();\n let imageRef = storageRef.child(`${userId}/${imageName}.jpg`);\n imageRef.putString(image, 'data_url');\n return imageName;\n }\n\n getProfileImageURL(uid: string,\n success = null,\n failure = null): any {\n let storageRef = firebase.storage().ref();\n\n storageRef.child(`/images/${uid}/profile.jpg`).getDownloadURL().then(\n function (url) {\n //console.log(\"Got download url: \" + url);\n if (success) success(url);\n },\n function (error) {\n //console.log(\"Error getting download url: \" + error.message);\n if (failure) failure();\n }\n );\n }\n\n getImage(userId: string, imageId: string): any {\n let storageRef = firebase.storage().ref();\n let imageRef = storageRef.child(`${userId}/${imageId}.jpg`);\n let bla = imageRef.getDownloadURL().then(data => {\n //console.log(data.toString());\n });\n return bla.toString();\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/providers/image/imageProvider.ts","import {Injectable} from \"@angular/core\";\nimport {FirebaseProvider} from \"../../providers/firebase/firebaseProvider\";\nimport {Center} from \"../../models/center/center.interface\";\nimport {Doctor} from \"../../models/doctor/doctor.interface\";\nimport {BehaviorSubject, Observable, Subject} from \"rxjs\";\nimport {Patient} from \"../../models/patient/patient.interface\";\nimport {Entry} from \"../../models/entry/entry.interface\";\n\n@Injectable()\nexport class AdminService {\n\n private centerList = new BehaviorSubject([]);\n private doctorList = new BehaviorSubject([]);\n private patientList = new BehaviorSubject([]);\n\n constructor(private firebaseProvider: FirebaseProvider) {\n\n }\n\n getCenters(): Subject {\n return this.centerList;\n }\n\n fetchCenters() {\n this.firebaseProvider.getCenters().subscribe((cList) => {\n //console.log(\"in adminService.getCenterList() ---> cList length: \" + cList.length);\n this.centerList.next(cList);\n\n }, error => console.log(\"ERROR:\" + error));\n }\n\n getDoctors(): Subject {\n return this.doctorList;\n }\n\n fetchDoctors() {\n this.firebaseProvider.getDoctors().subscribe((dList) => {\n //console.log(\"in adminService.getDoctorLIst() ---> cList length: \" + dList.length);\n this.doctorList.next(dList);\n });\n }\n\n getPatients(): Subject {\n return this.patientList;\n }\n\n fetchPatients() {\n this.firebaseProvider.getPatients().subscribe((pList) => {\n //console.log(\"in adminService.fetchPatients() ---> pList length: \" + pList.length);\n this.patientList.next(pList);\n });\n }\n\n deleteCenter(center: Center): Observable {\n return this.firebaseProvider.deleteCenter(center);\n }\n\n updateCenter(center: Center): Observable {\n return this.firebaseProvider.updateCenter(center);\n }\n\n updateDoctor(doctor: Doctor): Observable {\n return this.firebaseProvider.updateDoctor(doctor);\n }\n\n getEntriesForPatient(patient: Patient, numberOfDays: number): Observable {\n return this.firebaseProvider.getEntries(patient[\"$key\"], numberOfDays);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/admin/adminService.ts","module.exports = {\"name\":\"nephrohero\",\"version\":\"1.14.8\",\"author\":\"Ionic Framework\",\"homepage\":\"http://ionicframework.com/\",\"private\":true,\"scripts\":{\"clean\":\"rm -rf www platforms plugins\",\"build\":\"ionic-app-scripts build\",\"build-test\":\"./setBuildEnv.sh test; ionic-app-scripts build\",\"build-staging\":\"./setBuildEnv.sh staging; ionic-app-scripts build\",\"build-prod\":\"./setBuildEnv.sh prod; ionic-app-scripts build\",\"build-android-test\":\"./setBuildEnv.sh test; GIT_BRANCH=dev ./build-android.sh\",\"build-android-staging\":\"./setBuildEnv.sh staging; GIT_BRANCH=staging ./build-android.sh\",\"build-android-prod\":\"./setBuildEnv.sh prod; GIT_BRANCH=master ./build-android.sh\",\"lint\":\"ionic-app-scripts lint\",\"ionic:build\":\"ionic-app-scripts build\",\"ionic:serve\":\"ionic-app-scripts serve\"},\"dependencies\":{\"@angular/common\":\"^4.4.7\",\"@angular/compiler\":\"^4.4.7\",\"@angular/compiler-cli\":\"^4.4.7\",\"@angular/core\":\"^4.4.7\",\"@angular/forms\":\"^4.4.7\",\"@angular/http\":\"^4.4.7\",\"@angular/platform-browser\":\"^4.4.7\",\"@angular/platform-browser-dynamic\":\"^4.4.7\",\"@ionic-native/camera\":\"^3.14.0\",\"@ionic-native/core\":\"^3.14.0\",\"@ionic-native/splash-screen\":\"^3.14.0\",\"@ionic-native/sqlite\":\"^4.1.0\",\"@ionic-native/status-bar\":\"^3.14.0\",\"@ionic/storage\":\"2.2.0\",\"@ngx-translate/core\":\"^8.0.0\",\"@ngx-translate/http-loader\":\"^0.1.0\",\"@swimlane/ngx-datatable\":\"^16.0.3\",\"angularfire2\":\"^4.0.0-rc.2\",\"broser\":\"^1.2.0\",\"cordova-android\":\"^8.1.0\",\"cordova-browser\":\"6.0.0\",\"cordova-ios\":\"^5.1.1\",\"cordova-plugin-camera\":\"^2.4.1\",\"cordova-plugin-camera-preview\":\"^0.9.0\",\"cordova-plugin-compat\":\"^1.1.0\",\"cordova-plugin-console\":\"^1.0.5\",\"cordova-plugin-device\":\"^1.1.4\",\"cordova-plugin-file\":\"^4.3.3\",\"cordova-plugin-splashscreen\":\"^4.0.3\",\"cordova-plugin-statusbar\":\"^2.2.2\",\"cordova-plugin-whitelist\":\"^1.3.1\",\"cordova-sqlite-storage\":\"^5.0.0\",\"cordova.plugins.diagnostic\":\"^3.6.5\",\"css-animator\":\"^2.1.1\",\"firebase\":\"^3.9.0\",\"html2canvas\":\"^1.0.0-rc.7\",\"ionic-angular\":\"^3.9.9\",\"ionic-plugin-keyboard\":\"^2.2.1\",\"ionicons\":\"3.0.0\",\"jspdf\":\"^2.3.0\",\"moment\":\"^2.24.0\",\"ngx-avatar\":\"^3.7.0\",\"promise-polyfill\":\"6.0.2\",\"rxjs\":\"^5.4.3\",\"sw-toolbox\":\"3.6.0\",\"web\":\"0.0.2\",\"zone.js\":\"0.8.12\"},\"devDependencies\":{\"@ionic/app-scripts\":\"^3.0.0\",\"@ionic/cli-plugin-cordova\":\"1.6.2\",\"@ionic/cli-plugin-ionic-angular\":\"1.4.1\",\"firebase-tools\":\"^7.13.0\",\"ionic\":\"5.4.16\",\"typescript\":\"4.0.5\"},\"description\":\"An Ionic project\",\"cordova\":{\"plugins\":{\"cordova-plugin-camera\":{\"CAMERA_USAGE_DESCRIPTION\":\" \",\"PHOTOLIBRARY_USAGE_DESCRIPTION\":\" \"},\"cordova-plugin-camera-preview\":{},\"cordova-plugin-file\":{},\"cordova-plugin-splashscreen\":{},\"cordova-plugin-console\":{},\"cordova-plugin-device\":{},\"cordova-plugin-statusbar\":{},\"cordova-plugin-whitelist\":{},\"ionic-plugin-keyboard\":{},\"cordova.plugins.diagnostic\":{},\"cordova-sqlite-storage\":{}},\"config\":{\"ionic_sass\":\"./config/sass.config.js\",\"ionic_copy\":\"./config/copy.config.js\"},\"platforms\":[\"windows\",\"browser\",\"ios\",\"android\"]}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./package.json\n// module id = 529\n// module chunks = 21","import {Injectable} from \"@angular/core\";\nimport {ToastController} from \"ionic-angular\";\n\n@Injectable()\nexport class AdminUtil {\n\n constructor(private toastCtrl: ToastController,\n ) {\n }\n\n showEmptyDataNotAllowedForFlds(fldNames) {\n // empty regime --> show toast\n let fldNamesStr = \"\";\n for (let aFldName of fldNames) {\n if (fldNamesStr.length == 0) {\n fldNamesStr = aFldName;\n } else {\n fldNamesStr = fldNamesStr + \", \" + aFldName;\n }\n }\n\n this.toastCtrl.create({\n message: fldNamesStr + ' kann nicht leer sein!',\n duration: 2000,\n position: 'top'\n }).present();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/admin/adminUtil.ts","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app.module';\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/main.ts","import {BrowserModule} from '@angular/platform-browser';\nimport {ErrorHandler, NgModule} from '@angular/core';\nimport {IonicApp, IonicErrorHandler, IonicModule} from 'ionic-angular';\nimport {SplashScreen} from '@ionic-native/splash-screen';\nimport {StatusBar} from '@ionic-native/status-bar';\nimport {Camera} from '@ionic-native/camera';\nimport {AngularFireModule} from 'angularfire2';\nimport {AngularFireAuthModule} from 'angularfire2/auth';\nimport {AngularFireDatabaseModule} from 'angularfire2/database';\nimport {MyApp} from './app.component';\nimport {ImageProvider} from '../providers/image/imageProvider';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\nimport {Http, HttpModule} from '@angular/http';\nimport {AvatarModule} from 'ngx-avatar';\n\nimport {environment} from '../environments/environment';\nimport {DatePipe} from '@angular/common'\nimport {FirebaseProvider} from \"../providers/firebase/firebaseProvider\";\nimport {DataCheckProvider} from \"../providers/datacheck/dataCheckProvider\";\n\nimport {AdminService} from \"../pages/admin/adminService\";\nimport {AdminUtil} from \"../pages/admin/adminUtil\";\nimport {FirebaseAuthProvider} from \"../providers/firebase/firebaseAuthProvider\";\nimport {LoginPage} from \"../pages/login/login\";\nimport {LoginPageModule} from \"../pages/login/login.module\";\n\n\n// The translate loader needs to know where to load i18n files\n// in Ionic's static asset pipeline.\nexport function HttpLoaderFactory(http: Http) {\n return new TranslateHttpLoader(http, './assets/i18n/', '.json');\n}\n\n@NgModule({\n declarations: [\n MyApp\n ],\n imports: [\n BrowserModule,\n IonicModule.forRoot(MyApp),\n AngularFireModule.initializeApp(environment.firebase),\n AngularFireAuthModule,\n AngularFireDatabaseModule,\n HttpModule,\n AvatarModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [Http]\n }\n }),\n LoginPageModule\n ],\n bootstrap: [IonicApp],\n entryComponents: [\n MyApp,\n LoginPage\n ],\n providers: [\n StatusBar,\n SplashScreen,\n Camera,\n {provide: ErrorHandler, useClass: IonicErrorHandler},\n AngularFireAuthModule,\n AngularFireModule,\n FirebaseProvider,\n FirebaseAuthProvider,\n ImageProvider,\n DataCheckProvider,\n DatePipe,\n AdminService,\n AdminUtil\n ]\n})\nexport class AppModule {\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.module.ts","var map = {\n\t\"./af\": 342,\n\t\"./af.js\": 342,\n\t\"./ar\": 343,\n\t\"./ar-dz\": 344,\n\t\"./ar-dz.js\": 344,\n\t\"./ar-kw\": 345,\n\t\"./ar-kw.js\": 345,\n\t\"./ar-ly\": 346,\n\t\"./ar-ly.js\": 346,\n\t\"./ar-ma\": 347,\n\t\"./ar-ma.js\": 347,\n\t\"./ar-sa\": 348,\n\t\"./ar-sa.js\": 348,\n\t\"./ar-tn\": 349,\n\t\"./ar-tn.js\": 349,\n\t\"./ar.js\": 343,\n\t\"./az\": 350,\n\t\"./az.js\": 350,\n\t\"./be\": 351,\n\t\"./be.js\": 351,\n\t\"./bg\": 352,\n\t\"./bg.js\": 352,\n\t\"./bm\": 353,\n\t\"./bm.js\": 353,\n\t\"./bn\": 354,\n\t\"./bn-bd\": 355,\n\t\"./bn-bd.js\": 355,\n\t\"./bn.js\": 354,\n\t\"./bo\": 356,\n\t\"./bo.js\": 356,\n\t\"./br\": 357,\n\t\"./br.js\": 357,\n\t\"./bs\": 358,\n\t\"./bs.js\": 358,\n\t\"./ca\": 359,\n\t\"./ca.js\": 359,\n\t\"./cs\": 360,\n\t\"./cs.js\": 360,\n\t\"./cv\": 361,\n\t\"./cv.js\": 361,\n\t\"./cy\": 362,\n\t\"./cy.js\": 362,\n\t\"./da\": 363,\n\t\"./da.js\": 363,\n\t\"./de\": 364,\n\t\"./de-at\": 365,\n\t\"./de-at.js\": 365,\n\t\"./de-ch\": 366,\n\t\"./de-ch.js\": 366,\n\t\"./de.js\": 364,\n\t\"./dv\": 367,\n\t\"./dv.js\": 367,\n\t\"./el\": 368,\n\t\"./el.js\": 368,\n\t\"./en-au\": 369,\n\t\"./en-au.js\": 369,\n\t\"./en-ca\": 370,\n\t\"./en-ca.js\": 370,\n\t\"./en-gb\": 371,\n\t\"./en-gb.js\": 371,\n\t\"./en-ie\": 372,\n\t\"./en-ie.js\": 372,\n\t\"./en-il\": 373,\n\t\"./en-il.js\": 373,\n\t\"./en-in\": 374,\n\t\"./en-in.js\": 374,\n\t\"./en-nz\": 375,\n\t\"./en-nz.js\": 375,\n\t\"./en-sg\": 376,\n\t\"./en-sg.js\": 376,\n\t\"./eo\": 377,\n\t\"./eo.js\": 377,\n\t\"./es\": 378,\n\t\"./es-do\": 379,\n\t\"./es-do.js\": 379,\n\t\"./es-mx\": 380,\n\t\"./es-mx.js\": 380,\n\t\"./es-us\": 381,\n\t\"./es-us.js\": 381,\n\t\"./es.js\": 378,\n\t\"./et\": 382,\n\t\"./et.js\": 382,\n\t\"./eu\": 383,\n\t\"./eu.js\": 383,\n\t\"./fa\": 384,\n\t\"./fa.js\": 384,\n\t\"./fi\": 385,\n\t\"./fi.js\": 385,\n\t\"./fil\": 386,\n\t\"./fil.js\": 386,\n\t\"./fo\": 387,\n\t\"./fo.js\": 387,\n\t\"./fr\": 388,\n\t\"./fr-ca\": 389,\n\t\"./fr-ca.js\": 389,\n\t\"./fr-ch\": 390,\n\t\"./fr-ch.js\": 390,\n\t\"./fr.js\": 388,\n\t\"./fy\": 391,\n\t\"./fy.js\": 391,\n\t\"./ga\": 392,\n\t\"./ga.js\": 392,\n\t\"./gd\": 393,\n\t\"./gd.js\": 393,\n\t\"./gl\": 394,\n\t\"./gl.js\": 394,\n\t\"./gom-deva\": 395,\n\t\"./gom-deva.js\": 395,\n\t\"./gom-latn\": 396,\n\t\"./gom-latn.js\": 396,\n\t\"./gu\": 397,\n\t\"./gu.js\": 397,\n\t\"./he\": 398,\n\t\"./he.js\": 398,\n\t\"./hi\": 399,\n\t\"./hi.js\": 399,\n\t\"./hr\": 400,\n\t\"./hr.js\": 400,\n\t\"./hu\": 401,\n\t\"./hu.js\": 401,\n\t\"./hy-am\": 402,\n\t\"./hy-am.js\": 402,\n\t\"./id\": 403,\n\t\"./id.js\": 403,\n\t\"./is\": 404,\n\t\"./is.js\": 404,\n\t\"./it\": 405,\n\t\"./it-ch\": 406,\n\t\"./it-ch.js\": 406,\n\t\"./it.js\": 405,\n\t\"./ja\": 407,\n\t\"./ja.js\": 407,\n\t\"./jv\": 408,\n\t\"./jv.js\": 408,\n\t\"./ka\": 409,\n\t\"./ka.js\": 409,\n\t\"./kk\": 410,\n\t\"./kk.js\": 410,\n\t\"./km\": 411,\n\t\"./km.js\": 411,\n\t\"./kn\": 412,\n\t\"./kn.js\": 412,\n\t\"./ko\": 413,\n\t\"./ko.js\": 413,\n\t\"./ku\": 414,\n\t\"./ku.js\": 414,\n\t\"./ky\": 415,\n\t\"./ky.js\": 415,\n\t\"./lb\": 416,\n\t\"./lb.js\": 416,\n\t\"./lo\": 417,\n\t\"./lo.js\": 417,\n\t\"./lt\": 418,\n\t\"./lt.js\": 418,\n\t\"./lv\": 419,\n\t\"./lv.js\": 419,\n\t\"./me\": 420,\n\t\"./me.js\": 420,\n\t\"./mi\": 421,\n\t\"./mi.js\": 421,\n\t\"./mk\": 422,\n\t\"./mk.js\": 422,\n\t\"./ml\": 423,\n\t\"./ml.js\": 423,\n\t\"./mn\": 424,\n\t\"./mn.js\": 424,\n\t\"./mr\": 425,\n\t\"./mr.js\": 425,\n\t\"./ms\": 426,\n\t\"./ms-my\": 427,\n\t\"./ms-my.js\": 427,\n\t\"./ms.js\": 426,\n\t\"./mt\": 428,\n\t\"./mt.js\": 428,\n\t\"./my\": 429,\n\t\"./my.js\": 429,\n\t\"./nb\": 430,\n\t\"./nb.js\": 430,\n\t\"./ne\": 431,\n\t\"./ne.js\": 431,\n\t\"./nl\": 432,\n\t\"./nl-be\": 433,\n\t\"./nl-be.js\": 433,\n\t\"./nl.js\": 432,\n\t\"./nn\": 434,\n\t\"./nn.js\": 434,\n\t\"./oc-lnc\": 435,\n\t\"./oc-lnc.js\": 435,\n\t\"./pa-in\": 436,\n\t\"./pa-in.js\": 436,\n\t\"./pl\": 437,\n\t\"./pl.js\": 437,\n\t\"./pt\": 438,\n\t\"./pt-br\": 439,\n\t\"./pt-br.js\": 439,\n\t\"./pt.js\": 438,\n\t\"./ro\": 440,\n\t\"./ro.js\": 440,\n\t\"./ru\": 441,\n\t\"./ru.js\": 441,\n\t\"./sd\": 442,\n\t\"./sd.js\": 442,\n\t\"./se\": 443,\n\t\"./se.js\": 443,\n\t\"./si\": 444,\n\t\"./si.js\": 444,\n\t\"./sk\": 445,\n\t\"./sk.js\": 445,\n\t\"./sl\": 446,\n\t\"./sl.js\": 446,\n\t\"./sq\": 447,\n\t\"./sq.js\": 447,\n\t\"./sr\": 448,\n\t\"./sr-cyrl\": 449,\n\t\"./sr-cyrl.js\": 449,\n\t\"./sr.js\": 448,\n\t\"./ss\": 450,\n\t\"./ss.js\": 450,\n\t\"./sv\": 451,\n\t\"./sv.js\": 451,\n\t\"./sw\": 452,\n\t\"./sw.js\": 452,\n\t\"./ta\": 453,\n\t\"./ta.js\": 453,\n\t\"./te\": 454,\n\t\"./te.js\": 454,\n\t\"./tet\": 455,\n\t\"./tet.js\": 455,\n\t\"./tg\": 456,\n\t\"./tg.js\": 456,\n\t\"./th\": 457,\n\t\"./th.js\": 457,\n\t\"./tk\": 458,\n\t\"./tk.js\": 458,\n\t\"./tl-ph\": 459,\n\t\"./tl-ph.js\": 459,\n\t\"./tlh\": 460,\n\t\"./tlh.js\": 460,\n\t\"./tr\": 461,\n\t\"./tr.js\": 461,\n\t\"./tzl\": 462,\n\t\"./tzl.js\": 462,\n\t\"./tzm\": 463,\n\t\"./tzm-latn\": 464,\n\t\"./tzm-latn.js\": 464,\n\t\"./tzm.js\": 463,\n\t\"./ug-cn\": 465,\n\t\"./ug-cn.js\": 465,\n\t\"./uk\": 466,\n\t\"./uk.js\": 466,\n\t\"./ur\": 467,\n\t\"./ur.js\": 467,\n\t\"./uz\": 468,\n\t\"./uz-latn\": 469,\n\t\"./uz-latn.js\": 469,\n\t\"./uz.js\": 468,\n\t\"./vi\": 470,\n\t\"./vi.js\": 470,\n\t\"./x-pseudo\": 471,\n\t\"./x-pseudo.js\": 471,\n\t\"./yo\": 472,\n\t\"./yo.js\": 472,\n\t\"./zh-cn\": 473,\n\t\"./zh-cn.js\": 473,\n\t\"./zh-hk\": 474,\n\t\"./zh-hk.js\": 474,\n\t\"./zh-mo\": 475,\n\t\"./zh-mo.js\": 475,\n\t\"./zh-tw\": 476,\n\t\"./zh-tw.js\": 476\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 833;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/locale ^\\.\\/.*$\n// module id = 833\n// module chunks = 21","import {Component, ViewChild} from '@angular/core';\nimport {Nav, Platform} from 'ionic-angular';\nimport {StatusBar} from '@ionic-native/status-bar';\nimport {SplashScreen} from '@ionic-native/splash-screen';\nimport {TranslateService} from '@ngx-translate/core'\nimport {Subscription} from \"rxjs\";\nimport {FirebaseAuthProvider} from \"../providers/firebase/firebaseAuthProvider\";\n\n@Component({\n templateUrl: 'app.html'\n})\nexport class MyApp {\n rootPage: string = \"LoginPage\";\n loggedInUser;\n\n @ViewChild(Nav) nav;\n\n subscriptions = Array(); // to keep track of all the firebase subscriptions\n\n constructor(\n platform: Platform,\n statusBar: StatusBar,\n splashScreen: SplashScreen,\n private translate: TranslateService,\n private firebaseAuthProvider: FirebaseAuthProvider) {\n\n //console.group(\"In constructor of app.component.ts\");\n console.debug(\"auth: \", this.firebaseAuthProvider.isAuthenticated());\n console.debug(\"current user: \", this.firebaseAuthProvider.getCurrentUser());\n if (this.firebaseAuthProvider.getCurrentUser()) {\n console.log(\"email verified: \", this.firebaseAuthProvider.getCurrentUser().emailVerified);\n }\n console.groupEnd();\n\n // wait for auth change\n\n this.firebaseAuthProvider.getCurrentUserSubject().subscribe(user => {\n if (!this.firebaseAuthProvider.isAuthenticated() || !this.firebaseAuthProvider.getCurrentUser().emailVerified) {\n console.log(\"Not authenticated or email not verified\");\n this.rootPage = \"LoginPage\";\n return;\n }\n\n if (this.firebaseAuthProvider.isDoctor()) {\n console.debug('User role: doctor');\n this.rootPage = \"DoctorPage\";\n } else {\n console.debug('User role: patient');\n this.rootPage = \"TabPage\";\n }\n\n console.debug((\"ROOT page: \" + this.rootPage));\n\n });\n\n\n this.initTranslate();\n platform.ready().then(() => {\n // Okay, so the platform is ready and our plugins are available.\n // Here you can do any higher level native things you might need.\n statusBar.styleDefault();\n splashScreen.hide();\n });\n }\n\n // observables beenden bei Seitenwechsel\n ionViewWillLeave() {\n console.log(\"In ionViewWillLeave() of app.component.ts---->unsubscribe from all the subscriptions\");\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n })\n }\n\n initTranslate() {\n // Set the default language for translation strings, and the current language.\n this.translate.setDefaultLang('de');\n\n if (this.translate.getBrowserLang() !== undefined) {\n this.translate.use(this.translate.getBrowserLang());\n } else {\n this.translate.use('de'); // Set your language here\n }\n\n /* this.translate.get(['BACK_BUTTON_TEXT']).subscribe(values => {\n this.config.set('ios', 'backButtonText', values.BACK_BUTTON_TEXT);\n }); */\n }\n\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/app/app.component.ts","import {Injectable} from '@angular/core';\nimport 'rxjs/add/operator/map';\nimport * as firebase from 'firebase';\nimport {Doctor} from \"../../models/doctor/doctor.interface\";\nimport {BehaviorSubject, Observable, Subject} from \"rxjs\";\nimport {Center} from \"../../models/center/center.interface\";\nimport {Patient} from \"../../models/patient/patient.interface\";\nimport {forkJoin} from \"rxjs/observable/forkJoin\";\nimport {DatePipe} from '@angular/common'\nimport {Entry} from \"../../models/entry/entry.interface\";\nimport {Config} from \"../../models/config/config.interface\";\nimport {AngularFireDatabase} from \"angularfire2/database\";\nimport {from} from \"rxjs/observable/from\";\nimport {Regime} from \"../../models/regime/regime.interface\";\nimport {CenterShort} from \"../../models/center/centerShort.interface\";\n\n@Injectable()\nexport class FirebaseProvider {\n\n private internetConnection = new BehaviorSubject(false); // true is your initial value\n iConnection$ = this.internetConnection.asObservable();\n\n constructor(private database: AngularFireDatabase,\n ) {\n this.initFirebaseConnectionListener();\n }\n\n /**\n * Return a doctor subject for a given uid\n */\n getDoctorForUID(uid: string): Subject {\n let docSubject = new Subject();\n\n let doctorRef = firebase.database().ref('/doctors/' + uid);\n\n // fetch the doc\n let doc = {} as Doctor;\n doctorRef.once('value').then(function (doctorSnapshot) {\n if (!doctorSnapshot.exists()) {\n // no such doc\n docSubject.error('No such doctor with UID: ' + uid);\n } else {\n // create doc object\n let doctorVal = doctorSnapshot.val();\n doc.center = doctorVal.center;\n doc.displayName = doctorVal.displayName;\n\n docSubject.next(doc);\n docSubject.complete();\n }\n }, (e) => {\n console.log(\"Error while fetching doc data: \" + JSON.stringify(e));\n });\n\n return docSubject;\n }\n\n\n /**\n * Returns a center fully populated with patients\n */\n getCenter(centerKey: string): Subject
{\n let centerSubject = new Subject
();\n\n let centerRef = firebase.database().ref('/centers/' + centerKey);\n\n // fetch the center\n let center = {} as Center;\n centerRef.once('value').then(function (centerSnapshot) {\n if (!centerSnapshot.exists()) {\n // no such center\n centerSubject.next(null);\n centerSubject.complete();\n } else {\n // create center object\n let centerVal = centerSnapshot.val();\n //console.log(\"center val: \" + JSON.stringify(centerVal));\n\n center.name = centerVal.name;\n center.address = centerVal.address;\n center.patients = [];\n\n // build list of observables\n\n //console.log(\"Build observables: \" + JSON.stringify(centerVal.patients));\n if (centerVal.patients) {\n const patientListObservers = Object.getOwnPropertyNames(centerVal.patients).map(patientId =>\n this.getPatient(patientId).first().timeout(10 * 1000)\n );\n\n\n // wait until we got all patients (all observables succeeded)\n forkJoin(patientListObservers).first().timeout(30 * 1000).subscribe(function (patientList) {\n // only use non null patients\n center.patients = patientList.filter(p => p != null);\n centerSubject.next(center);\n centerSubject.complete();\n }.bind(this), (error => {\n console.log(\"Error: \" + JSON.stringify(error));\n centerSubject.next(null);\n centerSubject.complete();\n }\n )\n );\n } else {\n centerSubject.next(center);\n centerSubject.complete();\n\n }\n }\n }.bind(this));\n\n return centerSubject;\n }\n\n // get the center without the patients\n getCenterShort(centerKey: string): Subject {\n let centerShortSubject = new Subject();\n\n let centerRef = firebase.database().ref('/centers/' + centerKey);\n\n // fetch the center\n let center = {} as CenterShort;\n centerRef.once('value').then(function (centerSnapshot) {\n if (!centerSnapshot.exists()) {\n // no such center\n centerShortSubject.next(null);\n centerShortSubject.complete();\n } else {\n // create center object\n let centerVal = centerSnapshot.val();\n //console.log(\"center val: \" + JSON.stringify(centerVal));\n\n center.name = centerVal.name;\n center.address = centerVal.address;\n center.kostenstelle = centerVal.kostenstelle;\n centerShortSubject.next(center);\n centerShortSubject.complete();\n }\n }.bind(this));\n\n return centerShortSubject;\n }\n\n\n /**\n * Get patient for uid\n */\n getPatient(patientUID): Subject {\n let patientSubject = new Subject();\n\n let configRef = firebase.database().ref('/config/' + patientUID);\n configRef.once('value').then(configSnapshot => {\n if (!configSnapshot.exists()) {\n // no such center\n patientSubject.next(null);\n patientSubject.complete();\n } else {\n\n // create patient object\n let configVal = configSnapshot.val();\n\n let patient = {} as Patient;\n\n patient.center = configVal.center;\n patient.patientId = patientUID;\n patient.nachname = configVal['nachname'];\n patient.vorname = configVal['vorname'];\n patient.geburtstagOrg = configVal['geburtstag']; // its a date object\n let birthDate = new DatePipe(\"de\").transform(configVal['geburtstag'], 'dd.MM.yyyy');\n patient.geburtstag = birthDate;\n patient.fullname = patient.vorname + \" \" + patient.nachname;\n patient.dialysetyp = configVal.dialysetyp;\n patient.dialyseSeit = configVal.dialyseSeit;\n\n patientSubject.next(patient)\n\n }\n }, e => {\n console.log(\"Error: \" + JSON.stringify(e));\n patientSubject.next(null);\n patientSubject.complete();\n });\n\n return patientSubject;\n }\n\n /**\n * Get list of entries for patient in one go and returns an observable of Entry[]\n * @param patientUID - the patient uid\n * @param count - the number of entries to be returned, sorted by sortierDatum\n */\n getEntries(patientUID, count = 2): Observable {\n //console.log(\"in firebaseProvider.getEntries() for patient: \" + patientUID);\n\n let entryRef = firebase.database().ref('/entry/' + patientUID);\n return from(entryRef.orderByChild(\"sortierDatum\").once(\"value\")).map(entriesSnapshot => {\n let entries: Entry[] = [];\n\n entriesSnapshot.forEach(entrySnapshot => {\n // create entry object\n let entry = entrySnapshot.val() as Entry;\n\n entry['$key'] = entrySnapshot.key;\n entry['$exists'] = entrySnapshot.exists();\n\n entries.push(entry);\n\n // fix entries - TODO - finish, move to somewhere else\n entries.forEach(e => {\n e.gewicht = e.gewicht * 1 || null;\n e.groesse = e.groesse * 1 || null;\n e.koerperTemperatur = e.koerperTemperatur * 1 || null;\n e.pulsfrequenz = e.pulsfrequenz * 1 || null;\n e.pulsfrequenz2 = e.pulsfrequenz2 * 1 || null;\n e.pulsfrequenz3 = e.pulsfrequenz3 * 1 || null;\n e.diastolischerBlutdruck = e.diastolischerBlutdruck * 1 || null;\n e.diastolischerBlutdruck2 = e.diastolischerBlutdruck2 * 1 || null;\n e.diastolischerBlutdruck3 = e.diastolischerBlutdruck3 * 1 || null;\n e.systolischerBlutdruck = e.systolischerBlutdruck * 1 || null;\n e.systolischerBlutdruck2 = e.systolischerBlutdruck2 * 1 || null;\n e.systolischerBlutdruck3 = e.systolischerBlutdruck3 * 1 || null;\n e.MAD = e.MAD * 1 || null;\n e.MAD2 = e.MAD2 * 1 || null;\n e.MAD3 = e.MAD3 * 1 || null;\n e.ultrafiltration = e.ultrafiltration * 1 || null;\n\n //console.log(\"ENTRY\", e);\n })\n\n // we stop (return true) if we already found $count entries\n return (entries.length > count);\n });\n\n // console.log(`getEntries(limit=${count}): Found ${entries.length} entries for patient: ${patientUID}`);\n\n return entries;\n }\n );\n }\n\n deleteEntry(patientUID, entry: Entry): Observable {\n return from(this.database.object('/entry/' + patientUID + '/' + entry['$key']).remove());\n }\n\n\n private initFirebaseConnectionListener() {\n var connectedRef = firebase.database().ref(\".info/connected\");\n connectedRef.on(\"value\", snap => {\n if (snap.val() === true) {\n this.internetConnection.next(true);\n console.log(\"internet connected\");\n } else {\n this.internetConnection.next(false);\n console.log(\"internet not connected\");\n }\n });\n }\n\n getPatientConfig(patientUid: string): Subject {\n let configSubject = new Subject();\n let configRef = firebase.database().ref('/config/' + patientUid);\n // fetch patient config\n configRef.once('value').then(function (configSnapshot) {\n if (!configSnapshot.exists()) {\n // no such doc\n configSubject.error('in firebaseProviders, method: getPatientConfig: No such patient config for UID: ' + patientUid);\n } else {\n configSubject.next(configSnapshot.val());\n configSubject.complete();\n }\n }, (e) => {\n console.error(\"Error while fetching config data: \" + JSON.stringify(e));\n });\n\n return configSubject;\n }\n\n\n getCenters(): Subject {\n //console.log(\"in firebaseProviders.getCenters...\");\n let centerListSubject = new Subject();\n\n let centers = [];\n\n let centerRef = firebase.database().ref('/centers/').orderByChild('name');\n centerRef.once(\"value\", centerSnapshot => {\n centerSnapshot.forEach(childSnapshot => {\n //console.log(\"GETTING CENTER--->\" + JSON.stringify(childSnapshot.val()));\n // create center object\n let center = childSnapshot.val() as Center;\n center['$key'] = childSnapshot.key;\n center['$exists'] = childSnapshot.exists();\n\n centers.push(center);\n return false;\n });\n\n centerListSubject.next(centers);\n centerListSubject.complete();\n }, e => centerListSubject.complete()\n );\n\n return centerListSubject;\n }\n\n getPatients(): Subject {\n //console.log(\"in firebaseProviders.getPatients....\");\n let patientListSubject = new Subject();\n\n let patients = [];\n\n let patientRef = firebase.database().ref('/config/').orderByChild('nachname');\n patientRef.once(\"value\", patientSnapshot => {\n patientSnapshot.forEach(childSnapshot => {\n // create the doctor object\n //console.log(\"Doctor--->\" + JSON.stringify(childSnapshot.val()));\n let patient = childSnapshot.val() as Patient;\n patient['$key'] = childSnapshot.key;\n patient['$exists'] = childSnapshot.exists();\n\n patients.push(patient);\n return false\n });\n\n patientListSubject.next(patients);\n patientListSubject.complete();\n }, e => patientListSubject.complete()\n );\n\n return patientListSubject;\n }\n\n\n getDoctors(): Subject {\n //console.log(\"in firebaseProviders.getDoctors....\");\n let doctorListSubject = new Subject();\n\n let doctors = [];\n\n let doctorRef = firebase.database().ref('/doctors/').orderByChild('displayName');\n doctorRef.once(\"value\", doctorSnapshot => {\n doctorSnapshot.forEach(childSnapshot => {\n // create the doctor object\n //console.log(\"Doctor--->\" + JSON.stringify(childSnapshot.val()));\n let doctor = childSnapshot.val() as Doctor;\n doctor['$key'] = childSnapshot.key;\n doctor['$exists'] = childSnapshot.exists();\n\n doctors.push(doctor);\n return false\n });\n\n doctorListSubject.next(doctors);\n doctorListSubject.complete();\n }, e => doctorListSubject.complete()\n );\n\n return doctorListSubject;\n }\n\n updateCenter(center: Center): Observable {\n let path = '/centers/' + center[\"$key\"];\n //console.log(\"step 1-->in FB updateCenter path\" + path);\n\n delete center[\"$key\"];\n delete center[\"$exists\"];\n //console.log(\"in FB updateCenter path\" + path);\n return from(this.database.object(path).update(center));\n }\n\n deleteCenter(center: Center): Observable {\n return from(this.database.object('/centers/' + center[\"$key\"]).remove());\n }\n\n updateDoctor(doctor: Doctor): Observable {\n let path = '/doctors/' + doctor[\"$key\"];\n //debugger;\n delete doctor[\"$key\"];\n delete doctor[\"$exists\"];\n\n return from(this.database.object(path).update(doctor));\n }\n\n getPatientsForCenter(centerKey: string): Subject {\n let patientListSubject = new Subject();\n let patients = [];\n let pRef = firebase.database().ref('/config/').orderByChild(\"center\").equalTo(centerKey);\n pRef.once(\"value\", configs => {\n configs.forEach(config => {\n\n let patient = config.val() as Patient;\n //console.log(\"CONFIG found for \"+ centerKey + \" ===>\" + JSON.stringify(patient));\n //console.log(\"CONFIG found for \" + centerKey + \" ===>\" + patient.vorname + \" \" + patient.nachname);\n\n patients.push(patient);\n return false;\n });\n patientListSubject.next();\n patientListSubject.complete();\n }, e => patientListSubject.complete()\n );\n\n return patientListSubject;\n }\n\n /**\n * return all admin users key in a string array.\n */\n getAllAdminUsers(): Subject {\n //console.log(\"in firebaseProviders.getAllAdmin....\");\n let adminUserListSubject = new Subject();\n\n let adminUsers = [];\n\n let adminUserRef = firebase.database().ref('/admin/');\n adminUserRef.once(\"value\", allAdminUsersSnapshot => {\n allAdminUsersSnapshot.forEach(oneUserSnapshot => {\n // create the adminUser object\n //console.log(\"admin--->\" + JSON.stringify(oneUserSnapshot.val()));\n adminUsers.push(oneUserSnapshot.key);\n return false;\n });\n adminUserListSubject.next(adminUsers);\n adminUserListSubject.complete();\n }, e => adminUserListSubject.complete()\n );\n\n return adminUserListSubject;\n }\n\n getPatientEntry(patientId: string, entryKey: string): Subject {\n let entrySubject = new Subject();\n let entryRef = firebase.database().ref('/entry/' + patientId + '/' + entryKey);\n // fetch patient config\n entryRef.once('value').then(function (entrySnapshot) {\n if (!entrySnapshot.exists()) {\n // no such doc\n entrySubject.error('in firebaseProviders, method: getEntryByKey: No such patient config for UID: ' + patientId);\n } else {\n let dataObj = entrySnapshot.val();\n dataObj['$key'] = entrySnapshot.key;\n dataObj['$exists'] = entrySnapshot.exists();\n entrySubject.next(dataObj);\n entrySubject.complete();\n }\n }, (e) => {\n console.error(\"Error while fetching config data: \" + JSON.stringify(e));\n });\n\n return entrySubject;\n }\n\n getPatientEntryByCriteria(patientId: string, colName: string, colVal) {\n //console.log(`getPatientEntryByCriteria: patientId=${patientId}, colName=${colName}, colVal=${colVal}`);\n let entrySubject = new Subject();\n let entryRef = firebase.database().ref('/entry/' + patientId);\n\n entryRef.orderByChild(colName).equalTo(colVal).once('value').then(function (entrySnapshot) {\n if (!entrySnapshot.exists()) {\n // no such doc\n entrySubject.error(`in firebaseProviders, method: getPatientEntryByCriteria: No data found for col:${colName}, value:${colVal}for patientId:${patientId} `);\n } else {\n //https://stackoverflow.com/questions/58822552/retrieving-data-from-firebase-in-angular-based-on-a-value\n //let iEntry = entrySnapshot[Object.keys(entrySnapshot)[0]]; //look at the above link for data retrieval\n //let iWeight = iEntry.gewicht;\n\n let dataObj = entrySnapshot.val();\n entrySubject.next(dataObj);\n entrySubject.complete();\n }\n }, (e) => {\n console.error(\"Error while fetching data in getPatientEntryByCriteria data: \" + JSON.stringify(e));\n });\n return entrySubject;\n }\n\n // this method will return a list with given criteria\n getPatientEntriesByColumnValue(patientUID, columnName: string, colVal): Observable {\n //https://stackoverflow.com/questions/41088059/query-firebase-with-angularfire2-query-getting-only-one-object\n //console.log(`in firebaseProvider.getEntryByColumnValue() for patient:${patientUID} AND refDateShortShort: ${refDateShortShort}`);\n let entryRef = firebase.database().ref('/entry/' + patientUID);\n return from(\n this.database.list(entryRef, {\n query: {\n orderByChild: columnName,\n equalTo: colVal,\n limitToFirst: 1,\n }\n })\n );\n }\n\n updateEntry(patientId: string, entryObj: Entry): Observable {\n let path = '/entry/' + patientId + \"/\" + entryObj[\"$key\"];\n //console.log(\"in FB updateEntry path\" + path);\n //console.log(\"in FB updateRegime edited regime: \" + editedRegimeObj[\"name\"] );\n delete entryObj[\"$key\"];\n delete entryObj[\"$exists\"];\n return from(this.database.object(path).update(entryObj));\n }\n\n addEntry(patientId, entryObj: Entry) {\n let path = '/entry/' + patientId;\n //debugger;\n delete entryObj[\"$key\"];\n delete entryObj[\"$exists\"];\n this.database.list(path).push(entryObj);\n //console.log(\"ADDED a new entry:\" + entryObj);\n }\n\n updateConfig(patientId, config: Config): Observable {\n let path = '/config/' + patientId + \"/\";\n //console.log(\"in FB updateCenter path\" + path);\n\n delete config[\"$key\"];\n delete config[\"$exists\"];\n\n return from(this.database.object(path).update(config));\n }\n\n updateRegime(patientId, editedRegimeObj): Observable {\n let path = '/config/' + patientId + \"/regime/\" + editedRegimeObj[\"$key\"];\n //console.log(\"in FB updateRegime path\" + path);\n //console.log(\"in FB updateRegime edited regime: \" + editedRegimeObj[\"name\"] );\n delete editedRegimeObj[\"$key\"];\n delete editedRegimeObj[\"$exists\"];\n return from(this.database.object(path).update(editedRegimeObj));\n }\n\n addRegime(patientId, regime: Regime) {\n let path = '/config/' + patientId + \"/regime/\";\n //debugger;\n delete regime[\"$key\"];\n delete regime[\"$exists\"];\n this.database.list(path).push(regime);\n //console.log(\"ADDED a new regime:\" + regime);\n }\n\n addRegime2(patientId, regime: Regime):Observable {\n let path = '/config/' + patientId + \"/regime/\";\n //debugger;\n delete regime[\"$key\"];\n delete regime[\"$exists\"];\n return from(this.database.list(path).push(regime));\n }\n\n // get all the regimes for a patient\n getRegimes(patientId): Subject {\n let regimeListSubject = new Subject();\n let regimes = [];\n let pathToPatientRegime = '/config/' + patientId + '/regime';\n let regimeRef = firebase.database().ref(pathToPatientRegime); //.orderByChild('name')\n\n regimeRef.once(\"value\", regimeListSnapshot => {\n regimeListSnapshot.forEach(childSnapshot => {\n //console.log(\"GETTING REGIME for a Patient--->\" + JSON.stringify(childSnapshot.val()));\n // create regime object\n let regime = childSnapshot.val() as Regime;\n regime['$key'] = childSnapshot.key;\n regime['$exists'] = childSnapshot.exists();\n\n regimes.push(regime);\n return false;\n });\n\n regimeListSubject.next(regimes);\n regimeListSubject.complete();\n }, e => regimeListSubject.complete()\n );\n return regimeListSubject;\n }\n\n // get the regime by key and patientid\n getRegimeByKey(patientId, regimeKey): Subject {\n let regimeSubject = new Subject();\n let pathToPatientRegime = '/config/' + patientId + '/regime/' + regimeKey;\n let regimeRef = firebase.database().ref(pathToPatientRegime);\n\n regimeRef.once('value').then(regimeSnapshot => {\n if (!regimeSnapshot.exists()) {\n // no such regime\n regimeSubject.error(`in firebaseProviders, method: getRegimeByKey: No such patient regime for regimeKey:${regimeKey} ` );\n } else {\n let dataObj = regimeSnapshot.val();\n dataObj['$key'] = regimeSnapshot.key;\n dataObj['$exists'] = regimeSnapshot.exists();\n regimeSubject.next(dataObj);\n regimeSubject.complete();\n }\n }, e => {\n console.error(\"Error while fetching Regime By Key : \" + JSON.stringify(e));\n });\n\n return regimeSubject;\n }\n\n // check if a regime is in use by a patient entry\n checkIfRegimeInUse(patientId, regimeKey): Subject {\n let entrySubject = new Subject();\n let pathToPatientEntry = '/entry/' + patientId ;\n let iRef = firebase.database().ref(pathToPatientEntry);\n iRef.orderByChild(\"regime\").equalTo(regimeKey).once(\"value\", entrySnapshot =>{\n if (!entrySnapshot.exists()) {\n // no such regime\n entrySubject.error(`in firebaseProviders, method: getRegimeByKey: No such patient regime for regimeKey:${regimeKey} ` );\n } else {\n let dataObj = entrySnapshot.val();\n dataObj['$key'] = entrySnapshot.key;\n dataObj['$exists'] = entrySnapshot.exists();\n entrySubject.next(dataObj);\n entrySubject.complete();\n }\n }, e => {\n console.error(\"Error while fetching Regime By Key : \" + JSON.stringify(e));\n });\n return entrySubject;\n }\n\n savePatientToCenter(patientId, centerList, center) {\n //console.log(\"In firebaseProvider.savePatientToCenter()\");\n //go thru the center list to remove the patient from the old center\n centerList.forEach((center) => {\n //console.log(\"In savePatientToCenter() looping thru the center list to find the patient\");\n this.database.object('/centers/' + center.centerKey + '/patients/' + patientId).remove();\n });\n\n // only add new entry if a center is picked\n if (center) {\n //now add the patient to the selected center\n this.database.object('/centers/' + center + '/patients/' + patientId).set(patientId);\n //console.log(\"patient is set to the selected center\");\n }\n }\n\n getKostenstelleFromCenter(centerKey) {\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/providers/firebase/firebaseProvider.ts"],"sourceRoot":""}