1(self.webpackChunkapp=self.webpackChunkapp||[]).push([[6488],{96488:(T,P,t)=>{"use strict";t.r(P),t.d(P,{SettingsPageModule:()=>D});var m=t(31635),a=t(17705),p=t(60177),z=t(89417),M=t(35933),O=t(43559),l=t(10467);var R=t(55283),V=t.n(R),K=t(45312),o=t(21192),u=t(72491),C=t(17521);class W{}class w{}class G{}class j{}var F,U=t(25220),H=t(50252),B=t(57400),s=t(86225);let k=((F=class{constructor(e,n){this.file=e,this.fileService=n}getFilesFromEntry(e){var n=this;return(0,l.A)(function*(){let i=yield n.fileService.listFiles(e,"");return i?i.filter(g=>1==g.isFile):[]})()}getFileSize(e){return(0,l.A)(function*(){var n,i;let r;try{r=yield new Promise((c,f)=>{1==e.isFile&&e.getMetadata(d=>c(d),d=>f(d))})}catch(c){var g;s.K.Debug("\u{1f680} ~ CacheStorageService ~ getFileSize ~ error:",null!==(g=null==c?void 0:c.message)&&void 0!==g?g:c)}return null!==(n=null===(i=r)||void 0===i?void 0:i.size)&&void 0!==n?n:0})()}getTotalFolderSize(e){var n=this;return(0,l.A)(function*(){let i=0;try{for(let r of e)i+=(yield n.getFileSize(r))}catch(r){s.K.Fehler("\u{1f680} ~ CacheStorageService ~ getTotalFolderSize ~ error:",r)}return s.K.Debug("\u{1f680} ~ CacheStorageService ~ getTotalFolderSize ~ totalSize:",i),i})()}getTotalAppSize(){var e=this;return(0,l.A)(function*(){let n=0;try{let i=[e.file.dataDirectory,e.file.cacheDirectory,e.file.applicationDirectory,e.file.applicationStorageDirectory];for(let r of i){let g=yield e.getFilesFromEntry(r);n+=(yield e.getTotalFolderSize(g))}}catch(i){s.K.Fehler("\u{1f680} ~ CacheStorageService ~ getTotalAppSize ~ error:",i)}return s.K.Debug("\u{1f680} ~ CacheStorageService ~ getTotalAppSize ~ totalSize:",n),n})()}}).ctorParameters=()=>[{type:H.Z},{type:B.E}],F);k=(0,m.Cg)([(0,a._qm)({providedIn:"root"})],k);var y,Y=t(87952),J=t(51051),Q=t(28874),X=t(78746),$=t(7141),q=t(94228),_=t(82014),ee=t(11069),ne=t(88189),ie=t(83915),te=t(32653);let A=((y=class{constructor(e,n,i,r,g,c,f,d,v,b,S,E,ae,se,ce,ge,de){var N,x,L;this.cdRef=e,this.menuCtrl=n,this.fabService=i,this.languageService=r,this.loadingService=g,this.alertService=c,this.hubFactory=f,this.toast=d,this.helper=v,this.helperLogin=b,this.alert=S,this.cacheStorage=E,this.calendarSyncService=ae,this.oAuth=se,this.permissionHelper=ce,this.storageService=ge,this.fileService=de,this.ExpiryValue=u.j0.Tage30,this.MemArr=K.c.MemArr,this.StorageCapacityTotal="",this.StorageCapacityUsed="",this.offlineDataLastSync="",this.hasCalendarPermission=!1,this.hasFilesystemPermission=!1,this.hasNotificationPermission=!1,this.permission=new j,this.hasPermissionPushNotification=!1,this.hasPermissionCalenderSync=!1,this.useCalendarDisplayName=!o.Z.isIOS,this.setCalenderSyncSettingInProgress=!1,this.isMobile=o.Z.isMobile,this.isDev=!o.Z.isProduction,this.messageBody="OS: "+(null===(N=o.Z.deviceInfo)||void 0===N?void 0:N.operatingSystem)+" "+(null===(x=o.Z.deviceInfo)||void 0===x?void 0:x.osVersion)+",\nID: "+(null===(L=o.Z.deviceInfo)||void 0===L?void 0:L.manufacturer)+" "+o.Z.deviceId,this.testobjsmall={num:1},this.testobjbig={num:1,boo:!0,str:"hi"},this.testobj={num:1,boo:!0},this.preventExtendedLogAlert=!0}ngOnInit(){}ionViewWillEnter(){var e=this;return(0,l.A)(function*(){yield e.loadData()})()}loadData(){var e=this;return(0,l.A)(function*(){try{var n;yield e.loadingService.showLoader(),yield e.menuCtrl.close(),e.language=yield e.languageService.getLanguage(),e.EMail=yield(yield e.hubFactory.personService()).GetEMail(),o.Z.isMobile&&(yield e.getDevicePermissionsValues()),e.permission=yield(yield e.hubFactory.permissionService()).getSettingsPermission(),null!==(n=e.permission)&&void 0!==n&&n.HasPushNotification&&(yield e.getNotificationPreferences()),e.ToggleKalendersynchronisierung&&(e.ToggleKalendersynchronisierung.checked=yield e.calendarSyncService.isEnabled()),e.ToggleOfflinemodusActive&&(e.ToggleOfflinemodusActive.checked=o.Z.OfflinemodusActive),e.offlineDataLastSync=yield e.hubFactory.offlineCache.getStringLastSync(),yield e.loadEventLog(),e.loadStorageSizes(),e.cdRef.detectChanges()}catch(i){s.K.Fehler("\u{1f680} ~ SettingsPage ~ loadData ~ err:",i)}finally{yield e.loadingService.dismiss()}})()}getNotificationPreferences(){var e=this;return(0,l.A)(function*(){try{var n,i,r,g,c,f,d,v,b,S;if(e.NotificationPreference=yield(yield e.hubFactory.fcmService()).GetPreferences(),e.ToggleFerieneingabe)e.ToggleFerieneingabe.checked=null===(n=e.NotificationPreference)||void 0===n?void 0:n.Ferien;if(e.ToggleNeueNachricht)e.ToggleNeueNachricht.checked=null===(i=e.NotificationPreference)||void 0===i?void 0:i.Nachricht;if(e.ToggleNeuerDienstabtausch)e.ToggleNeuerDienstabtausch.checked=null===(r=e.NotificationPreference)||void 0===r?void 0:r.Abtausch;if(e.ToggleUmdisponierung)e.ToggleUmdisponierung.checked=null===(g=e.NotificationPreference)||void 0===g?void 0:g.Umdisponierung;if(e.ToggleInfopoint)e.ToggleInfopoint.checked=null===(c=e.NotificationPreference)||void 0===c?void 0:c.Infopoint;if(e.ToggleInformationen)e.ToggleInformationen.checked=null===(f=e.NotificationPreference)||void 0===f?void 0:f.Informationen;if(e.ToggleAnmeldungen)e.ToggleAnmeldungen.checked=null===(d=e.NotificationPreference)||void 0===d?void 0:d.Anmeldungen;if(e.ToggleWeckrufe)e.ToggleWeckrufe.checked=null===(v=e.NotificationPreference)||void 0===v?void 0:v.Weckrufe;if(e.ToggleFahrauftrag)e.ToggleFahrauftrag.checked=null===(b=e.NotificationPreference)||void 0===b?void 0:b.Fahrauftrag;if(e.ToggleBetriebsStoerungen)e.ToggleBetriebsStoerungen.checked=null===(S=e.NotificationPreference)||void 0===S?void 0:S.BetriebsStoerung}catch(E){s.K.Fehler("\u{1f680} ~ SettingsPage ~ setToggles ~ err:",E)}})()}setNotificationPreferences(){var e=this;return(0,l.A)(function*(){let n=new G;e.ToggleNeueNachricht&&(n.Nachricht=e.ToggleNeueNachricht.checked),e.ToggleFerieneingabe&&(n.Ferien=e.ToggleFerieneingabe.checked),e.ToggleNeuerDienstabtausch&&(n.Abtausch=e.ToggleNeuerDienstabtausch.checked),e.ToggleUmdisponierung&&(n.Umdisponierung=e.ToggleUmdisponierung.checked),e.ToggleInfopoint&&(n.Infopoint=e.ToggleInfopoint.checked),e.ToggleInformationen&&(n.Informationen=e.ToggleInformationen.checked),e.ToggleAnmeldungen&&(n.Anmeldungen=e.ToggleAnmeldungen.checked),e.ToggleWeckrufe&&(n.Weckrufe=e.ToggleWeckrufe.checked),e.ToggleFahrauftrag&&(n.Fahrauftrag=e.ToggleFahrauftrag.checked),e.ToggleBetriebsStoerungen&&(n.BetriebsStoerung=e.ToggleBetriebsStoerungen.checked),yield(yield e.hubFactory.fcmService()).SavePreferences(n)})()}getStateColor(e){return e?"background-color: green;":"background-color: firebrick;"}getDevicePermissionsValues(){var e=this;return(0,l.A)(function*(){o.Z.isMobile&&(e.hasCalendarPermission=yield e.permissionHelper.hasCalenderPermission(),e.hasFilesystemPermission=yield e.permissionHelper.hasStoragePermission(),e.hasNotificationPermission=yield e.permissionHelper.hasNotificationPermission()),e.cdRef.detectChanges()})()}requestNotificationPermission(){var e=this;return(0,l.A)(function*(){o.Z.isMobile&&(e.hasNotificationPermission=yield e.permissionHelper.requestNotificationPermission()),e.cdRef.detectChanges()})()}requestCalendarPermission(){var e=this;return(0,l.A)(function*(){o.Z.isMobile&&(e.hasCalendarPermission=yield e.permissionHelper.requestCalenderPermission()),e.cdRef.detectChanges()})()}requestFilesystemPermission(){var e=this;return(0,l.A)(function*(){o.Z.isMobile&&(e.hasFilesystemPermission=yield e.permissionHelper.hasStoragePermission()),e.cdRef.detectChanges()})()}showOfflinemodus(){return!!o.Z.isMobile&&o.Z.BackendVersion.isNewerOrEqual("2.0.0")}get isOfflinemodusActive(){return o.Z.OfflinemodusActive}updateOfflinemodusActive(){var e=this;return(0,l.A)(function*(){try{yield e.storageService.setValue(u.nu.CacheAvailable,e.ToggleOfflinemodusActive.checked.toString()),o.Z.OfflinemodusActive=e.ToggleOfflinemodusActive.checked,s.K.Debug("\u{1f680} ~ SettingsPage ~ updateOfflinemodusActive ~ OfflinemodusActive:",o.Z.OfflinemodusActive),e.cdRef.detectChanges()}catch(n){s.K.Fehler("\u{1f680} ~ SettingsPage ~ updateOfflinemodusActive ~ err:",n)}})()}loadStorageSizes(){var e=this;return(0,l.A)(function*(){if(o.Z.isMobile){var n;let i=null===(n=o.Z.deviceInfo)||void 0===n?void 0:n.realDiskTotal;e.StorageCapacityTotal=e.helper.formatBytes(i),s.K.Debug("\u{1f680} ~ SettingsPage ~ loadStorageSizes ~ StorageCapacityTotal:",e.StorageCapacityTotal);let r=yield e.cacheStorage.getTotalAppSize();e.StorageCapacityUsed=e.helper.formatBytes(r),s.K.Debug("\u{1f680} ~ SettingsPage ~ loadStorageSizes ~ StorageCapacityUsed:",e.StorageCapacityUsed),e.ExpiryValue=yield e.getDownloadExpiry(),e.cdRef.detectChanges()}})()}getDownloadExpiry(){var e=this;return(0,l.A)(function*(){let n=u.j0.Tage30,i=yield e.storageService.getValue(u.mG.DownloadExpiry);return i?n=Number(i):yield e.storageService.setValue(u.mG.DownloadExpiry,n),n})()}clearCache(){var e=this;return(0,l.A)(function*(){confirm(e.languageService.translate("msgCacheWirklichLeeren"))&&(yield e.hubFactory.offlineCache.clear().then(()=>{e.toast.presentSuccessToast(null,e.languageService.translate("msgCacheLeerenErfolg"))}))})()}clearFiles(){var e=this;return(0,l.A)(function*(){confirm(e.languageService.translate("msgFilesWirklichLoeschen"))&&((yield e.fileService.clearFiles())?e.toast.presentSuccessToast(null,e.languageService.translate("msgFilesLoesc
1henErfolg")):e.alertService.createErrorAlert(null,e.languageService.translate("msgFilesLoeschenFehler")))})()}showEMail(){return o.Z.BackendVersion.isNewerOrEqual("2.1.0")}changeEMail(e){var n=this;return(0,l.A)(function*(){try{let i=e.target.value;if(i!=n.EMail){let r=yield(yield n.hubFactory.personService()).SetEMail(i);r==C.C1.KeinFehler?n.EMail=i:r==C.C1.UngueltigesFormat?(n.alertService.createErrorAlert(n.languageService.translate("lblFehler"),n.languageService.translate("msgEmailFormatError")),n.emailInput.value=n.EMail):r==C.C1.SchonVergeben?(n.alertService.createErrorAlert(n.languageService.translate("lblFehler"),n.languageService.translate("msgEmailVergebenError")),n.emailInput.value=n.EMail):(n.alertService.createErrorAlert(n.languageService.translate("lblFehler"),n.languageService.translate("msgEmailUnknownError")),n.emailInput.value=n.EMail)}}catch(i){s.K.Fehler("\u{1f680} ~ SettingsPage ~ changeEMail ~ err:",i)}})()}changeLanguage(e){var n=this;return(0,l.A)(function*(){var i;null!=e&&null!==(i=e.target)&&void 0!==i&&i.value&&(n.language=e.target.value,yield n.languageService.setLanguage(n.language),yield(yield n.hubFactory.settingService()).reloadLanguage(n.language),yield(yield n.hubFactory.menuService()).loadMenu())})()}languageArray(){return K.c.langArray}setCalenderSyncSetting(e){var n=this;return(0,l.A)(function*(){var i;if(s.K.Debug("\u{1f680} ~ SettingsPage ~ setCalenderSyncSetting ~ KalenderSyncChecked:",null===(i=n.ToggleKalendersynchronisierung)||void 0===i?void 0:i.checked),!n.setCalenderSyncSettingInProgress){try{n.setCalenderSyncSettingInProgress=!0;let r=yield n.calendarSyncService.setEnable();s.K.Debug("\u{1f680} ~ SettingsPage ~ setCalenderSyncSetting ~ res",r),n.ToggleKalendersynchronisierung&&(n.ToggleKalendersynchronisierung.checked=r)}catch(r){s.K.Fehler("\u{1f680} ~ SettingsPage ~ setCalenderSyncSetting ~ err:",r)}finally{n.setCalenderSyncSettingInProgress=!1}n.cdRef.detectChanges()}})()}setFabPosition(e){var n=this;return(0,l.A)(function*(){let i=e.detail.value;yield n.fabService.setFabPosition(i)})()}openAbout(){this.helper.navigateTo("/about")}openFeedback(){this.helper.navigateTo("/feedback")}openDashboardSettings(){this.helper.navigateTo("/dashboard-settings")}openSichtbarkeitSettings(){this.helper.navigateTo("/sichtbarkeit-settings")}logout(){var e=this;return(0,l.A)(function*(n=!1){n&&(yield e.helperLogin.logoutAllDevices()),yield e.helperLogin.logout()}).apply(this,arguments)}signInWithAzure(){var e=this;return(0,l.A)(function*(){let n=yield e.helper.getPerson();if(n.AADLoginName&&n.AuthProviderID>=0){let r=yield e.hubFactory.alertService.createYesNoAlert(e.languageService.translate("lblAchtung"),e.languageService.translate("msgAccountVerknuepfungVorhanden"));if(r.isDenied||r.isDismissed)return}try{yield e.oAuth.loginWithAzure()}catch(r){var i;s.K.Fehler("\u{1f680} ~ SettingsPage ~ signInWithAzure ~ err:",null!==(i=null==r?void 0:r.message)&&void 0!==i?i:r)}})()}showFeedback(){return o.Z.BackendVersion.isNewerOrEqual("2.2.0")}sendPush(){var e=this;return(0,l.A)(function*(){let n=new W;n.badge=1,n.title="Test "+e.languageService.translate("lblNeueNachricht"),n.body=e.messageBody;let i=new w;i.PageID=u.Cj.Diensteinteilung,n.data=i,s.K.Debug("\u{1f680} ~ SettingsPage ~ sendPush ~ message:",JSON.stringify(n)),(yield e.hubFactory.fcmService()).SendPushNotification(n)})()}sendToast(){var e=this;return(0,l.A)(function*(){e.toast.presentSuccessToast("Test",e.messageBody)})()}testSendToServer(e){var n=this;return(0,l.A)(function*(){(yield n.hubFactory.settingService()).testSendToServer(e)})()}testGetFromServer(e){var n=this;return(0,l.A)(function*(){(yield n.hubFactory.settingService()).testGetFromServer(e)})()}showEreignisLog(){return!!o.Z.isMobile&&o.Z.BackendVersion.isNewerOrEqual("2.1.0")}toggleExtendedLog(){var e=this;return(0,l.A)(function*(){e.extendedLog.checked&&!e.preventExtendedLogAlert&&((yield e.alertService.createYesNoAlert(e.languageService.translate("ttlErweitertesLog"),e.languageService.translate("msgErweitertesLogAktivieren"))).isConfirmed||(e.extendedLog.checked=!1)),e.storageService.setValue(u.mG.ExtendedLog,String(e.extendedLog.checked))})()}loadEventLog(){var e=this;return(0,l.A)(function*(){var n;if(!o.Z.isMobile)return;let i=null!==(n=yield e.storageService.getValue(u.mG.ExtendedLog))&&void 0!==n?n:"false";e.extendedLog.checked="true"==i,e.preventExtendedLogAlert=!1})()}}).ctorParameters=()=>[{type:a.gRc},{type:M._t},{type:J.h},{type:q.g},{type:_.U},{type:U.u},{type:$.d},{type:te.f},{type:Q.N},{type:X.A},{type:U.u},{type:k},{type:Y.t},{type:ee.T},{type:ne.n},{type:ie.n},{type:B.E}],y.propDecorators={ToggleNeuerDienstabtausch:[{type:a.Uct,args:["lblNeuerDienstabtausch"]}],ToggleNeueNachricht:[{type:a.Uct,args:["lblNeueNachricht"]}],ToggleFerieneingabe:[{type:a.Uct,args:["lblFerieneingabe"]}],ToggleUmdisponierung:[{type:a.Uct,args:["lblUmdisponierung"]}],ToggleInfopoint:[{type:a.Uct,args:["lblInfopoint"]}],ToggleInformationen:[{type:a.Uct,args:["lblInformationen"]}],ToggleAnmeldungen:[{type:a.Uct,args:["lblAnmeldungen"]}],ToggleWeckrufe:[{type:a.Uct,args:["lblWeckrufe"]}],ToggleFahrauftrag:[{type:a.Uct,args:["lblFahrauftrag"]}],ToggleBetriebsStoerungen:[{type:a.Uct,args:["lblBetriebsStoerungen"]}],ToggleOfflinemodusActive:[{type:a.Uct,args:["ToggleOfflinemodusActive"]}],ToggleKalendersynchronisierung:[{type:a.Uct,args:["lblKalendersynchronisierung"]}],emailInput:[{type:a.Uct,args:["emailInput"]}],extendedLog:[{type:a.Uct,args:["extendedLog"]}]},y);A=(0,m.Cg)([(0,a.uAl)({selector:"app-settings",template:'<ion-header>\r\n <isg-header [Title]="\'lblEinstellungen\' | translate"></isg-header>\r\n</ion-header>\r\n\r\n<ion-content>\r\n <ion-list>\r\n <ion-item-divider color="light">\r\n <ion-icon name="language-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblSprache\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n <ion-item lines="full">\r\n <ion-select (ionChange)="this.changeLanguage($event)" [value]="this.language" okText="{{\'lblDone\' | translate}}"\r\n cancelText="{{\'lblAbbrechen\' | translate}}" label="{{\'lblSprache\' | translate}}">\r\n \x3c!-- * Attention: Don\'t add newlines on ion-select-options! --\x3e\r\n <ion-select-option [value]="item" *ngFor="let item of this.languageArray()">{{item | translate}}</ion-select-option>\r\n </ion-select>\r\n </ion-item>\r\n\r\n \x3c!-- PushNotifications --\x3e\r\n <div *ngIf="this.isMobile && this.permission?.HasPushNotification">\r\n <ion-item-divider color="light">\r\n <ion-icon name="notifications-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblPushBenachrichtigungen\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n\r\n <ion-item (click)="this.requestNotificationPermission()">\r\n <ion-label>{{\'lblBerechtigungen\' | translate}}: </ion-label>
1\r\n <span class="dot" slot="end" [style]="getStateColor(this.hasNotificationPermission)"></span>\r\n </ion-item>\r\n\r\n <ion-item *ngIf="this.permission?.PushAbtausch" lines="full">\r\n <ion-toggle #lblNeuerDienstabtausch (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblNeuerDienstabtausch\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushNachricht" lines="full">\r\n <ion-toggle #lblNeueNachricht (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblNeueNachricht\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushFPS" lines="full">\r\n <ion-toggle #lblFerieneingabe (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblFerieneingabe\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushUmdisponierung" lines="full">\r\n <ion-toggle #lblUmdisponierung (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblUmdisponierung\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushInfopoint" lines="full">\r\n <ion-toggle #lblInfopoint (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblInfopoint\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushInformationen" lines="full">\r\n <ion-toggle #lblInformationen (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblInformationen\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushAnmeldungen" lines="full">\r\n <ion-toggle #lblAnmeldungen (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblAnmeldungen\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushWeckrufe" lines="full">\r\n <ion-toggle #lblWeckrufe (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblWeckrufe\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushFahrauftrag" lines="full">\r\n <ion-toggle #lblFahrauftrag (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblFahrauftrag\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item *ngIf="this.permission?.PushInformationen" lines="full">\r\n <ion-toggle #lblBetriebsStoerungen (ionChange)="this.setNotificationPreferences()">\r\n {{\'lblNeueBetriebsSt\xf6rung\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n </div>\r\n\r\n \x3c!-- FAB Position --\x3e\r\n <ion-item-divider color="light">\r\n <ion-label>Hover Button</ion-label>\r\n </ion-item-divider>\r\n <ion-radio-group mode="md" #rbgFabPostion\r\n [value]="this.fabService.DefaultPosition ? this.fabService.DefaultPosition :\'center\'"\r\n (ionChange)="this.setFabPosition($event)">\r\n <ion-item lines="full">\r\n <ion-radio slot="start" value="center">\r\n {{\'lblMitte\' | translate}}\r\n </ion-radio>\r\n </ion-item>\r\n <ion-item lines="full">\r\n <ion-radio slot="start" value="end">\r\n {{\'lblRechts\' | translate}}\r\n </ion-radio>\r\n </ion-item>\r\n </ion-radio-group>\r\n\r\n \x3c!-- Kalendersynchronisierung --\x3e\r\n <div *ngIf="this.isMobile && this.permission?.HasKalenderSync">\r\n <ion-item-divider color="light">\r\n <ion-icon name="calendar-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblKalendersynchronisierung\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n\r\n <ion-item (click)="this.requestCalendarPermission()">\r\n <ion-label>{{\'lblKalenderberechtigung\' | translate}}: </ion-label>\r\n <span class="dot" slot="end" [style]="getStateColor(this.hasCalendarPermission)"></span>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-toggle #lblKalendersynchronisierung (ionChange)="this.setCalender
1SyncSetting($event)"\r\n [disabled]="!this.hasCalendarPermission || this.setCalenderSyncSettingInProgress || this.calendarSyncService.isSynchronising">\r\n {{\'lblKalendersynchronisierung\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n\r\n <ion-grid *ngIf="this.hasCalendarPermission && this.lblKalendersynchronisierung.checked">\r\n <ion-item>\r\n <ion-select #ddKalenderSyncInterval *ngIf="this.useCalendarDisplayName"\r\n okText="{{\'lblDone\' | translate}}" cancelText="{{\'lblAbbrechen\' | translate}}" multiple="false"\r\n (ionChange)="this.calendarSyncService.setSelectedCalendar($event.detail.value)"\r\n [disabled]="this.calendarSyncService.isSynchronising"\r\n [value]="this.calendarSyncService.SelectedCalendar"\r\n label="{{\'lblKalendersynchronisierungAuswahl\' | translate}}">\r\n \x3c!-- * Attention: Don\'t add newlines on ion-select-options! --\x3e\r\n <ion-select-option *ngFor="let item of this.calendarSyncService.Calenders" [value]="item[\'displayname\']">{{item[\'displayname\']}}</ion-select-option>\r\n </ion-select>\r\n <ion-select #ddKalenderSyncInterval *ngIf="!this.useCalendarDisplayName"\r\n okText="{{\'lblDone\' | translate}}" cancelText="{{\'lblAbbrechen\' | translate}}" multiple="false"\r\n (ionChange)="this.calendarSyncService.setSelectedCalendar($event.detail.value)"\r\n [disabled]="this.calendarSyncService.isSynchronising"\r\n [value]="this.calendarSyncService.SelectedCalendar"\r\n label="{{\'lblKalendersynchronisierungAuswahl\' | translate}}">\r\n \x3c!-- * Attention: Don\'t add newlines on ion-select-options! --\x3e\r\n <ion-select-option *ngFor="let item of this.calendarSyncService.Calenders" [value]="item[\'name\']">{{item[\'name\']}}</ion-select-option>\r\n </ion-select>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="this.calendarSyncService.loadAllCalendars()" [disabled]="this.calendarSyncService.isSynchronising">\r\n <ion-icon name="reload" slot="end"></ion-icon>\r\n <ion-label>{{\'lblKalendersynchronisierungNeuLaden\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="this.calendarSyncService.synchroniseEvents()" [disabled]="this.calendarSyncService.isSynchronising">\r\n <ion-icon name="sync" slot="end"></ion-icon>\r\n <ion-label>{{\'lblAlleSynchronisieren\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item>\r\n <ion-label>{{\'lblKalendersynchronisierungLastSync\' | translate}}</ion-label>\r\n <ion-label class="ion-text-end">{{this.calendarSyncService?.lastSyncTime}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="this.calendarSyncService.cleanup()" [disabled]="this.calendarSyncService.isSynchronising">\r\n <ion-icon name="brush" slot="end"></ion-icon>\r\n <ion-label>{{\'lblKalendersynchronisierungCleanup\' | translate}}</ion-label>\r\n </ion-item>\r\n </ion-grid>\r\n </div>\r\n\r\n <ion-item-divider color="light">\r\n <ion-icon name="person-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblBenutzer\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n <ion-item lines="full" *ngIf="this.showEMail()">\r\n <ion-input #emailInput type="email" inputmode="email" autocomplete="true"\r\n pattern="^[\\w\\+\\-\\.]+@[\\w\\-\\.]+\\.\\w{2,}$"\r\n (ionBlur)="this.changeEMail($event)" [value]="this.EMail"\r\n label="{{\'lblEMail\' | translate}}" labelPlacement="start"\r\n ngModel email></ion-input>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="logout(true)">\r\n <ion-label>{{\'lblAlleGeraeteAbmelden\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="openDashboardSettings()">\r\n <ion-label>{{\'lblDashboardSettings\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="openSichtbarkeitSettings()" *ngIf="this.permission?.IndividuelleSichtbarkeit">\r\n <ion-label>{{\'lblSichtbarkeitSettings\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="openAbout()">\r\n <ion-label>{{\'lblUeber\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="openFeedback()" *ngIf="this.show
1Feedback()">\r\n <ion-label>{{\'lblFeedbackEntwickler\' | translate}}</ion-label>\r\n </ion-item>\r\n\r\n \x3c!-- Azure AD --\x3e\r\n <span *ngIf="this.permission?.AnmeldemethodeAAD">\r\n\r\n <ion-item-divider color="light">\r\n <ion-label>Azure Active Directory</ion-label>\r\n </ion-item-divider>\r\n <ion-item button detail lines="full" (click)="this.signInWithAzure()">\r\n <ion-label>{{\'lblAccountVerknuepfung\' | translate}}</ion-label>\r\n </ion-item>\r\n\r\n </span>\r\n \x3c!-- End Azure AD --\x3e\r\n\r\n \x3c!-- Offline Modus --\x3e\r\n <div *ngIf="this.isMobile && this.showOfflinemodus()">\r\n <ion-item-divider color="light">\r\n <ion-icon name="cloud-offline-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblOfflinemodus\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n\r\n <ion-item *ngIf="this.isMobile" (click)="this.requestFilesystemPermission()">\r\n <ion-label>{{\'lblDateienBerechtigung\'| translate}}: </ion-label>\r\n <span class="dot" slot="end" [style]="getStateColor(this.hasFilesystemPermission)"></span>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-toggle #ToggleOfflinemodusActive (ionChange)="this.updateOfflinemodusActive()">\r\n {{\'lblOfflinemodusAktiv\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n\r\n <ion-item *ngIf="this.isOfflinemodusActive">\r\n <ion-label>{{\'lblKalendersynchronisierungLastSync\' | translate}}</ion-label>\r\n <ion-label class="ion-text-end">{{this.offlineDataLastSync}}</ion-label>\r\n </ion-item>\r\n\r\n <ion-item *ngIf="this.isOfflinemodusActive || this.hasFilesystemPermission">\r\n <ion-label>{{\'lblVerfuebarerSpeicher\' | translate}}</ion-label>\r\n <ion-label slot="end" class="ion-text-end" *ngIf="StorageCapacityTotal.length > 0">\r\n {{StorageCapacityTotal}}\r\n </ion-label>\r\n <app-skeleton-text-item *ngIf="StorageCapacityTotal.length <= 0" style="width: 100px;">\r\n </app-skeleton-text-item>\r\n </ion-item>\r\n <ion-item *ngIf="this.isOfflinemodusActive || this.hasFilesystemPermission">\r\n <ion-label>{{\'lblVerwendeterSpeicher\' | translate}}</ion-label>\r\n <ion-label slot="end" class="ion-text-end" *ngIf="StorageCapacityUsed.length > 0">\r\n {{StorageCapacityUsed}}\r\n </ion-label>\r\n <app-skeleton-text-item *ngIf="StorageCapacityUsed.length <= 0" style="width: 100px;">\r\n </app-skeleton-text-item>\r\n </ion-item>\r\n <ion-item *ngIf="this.isOfflinemodusActive || this.hasFilesystemPermission" button detail lines="full" (click)="this.clearCache()">\r\n <ion-label>{{\'lblCacheLeeren\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item *ngIf="this.isOfflinemodusActive || this.hasFilesystemPermission" button detail lines="full" (click)="this.clearFiles()">\r\n <ion-label>{{\'lblFilesLeeren\' | translate}}</ion-label>\r\n </ion-item>\r\n </div>\r\n\r\n \x3c!-- LogHandling --\x3e\r\n <span *ngIf="this.isMobile && this.showEreignisLog()">\r\n <ion-item-divider color="light">\r\n <ion-label>{{\'lblEreignissLog\'| translate}}</ion-label>\r\n </ion-item-divider>\r\n <ion-item lines="full">\r\n <app-skeleton-text-item [hidden]="!this.preventExtendedLogAlert"\r\n style="width: 100px; z-index: 100;"></app-skeleton-text-item>\r\n <ion-toggle #extendedLog (ionChange)="this.toggleExtendedLog()"\r\n [hidden]="this.preventExtendedLogAlert">\r\n {{\'lblErweitertesFehlerLog\' | translate}}\r\n </ion-toggle>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="this.helper.sendEventLog()">\r\n <ion-icon name="mail-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblEreignisJournalUebermitteln\' | translate}}</ion-label>\r\n </ion-item>\r\n </span>\r\n\r\n \x3c!-- Debug Funktionen --\x3e\r\n <div *ngIf="this.isDev">\r\n <ion-item-divider color="light">\r\n <ion-icon name="bug-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblDevelopment\' | translate}}</ion-label>\r\n </ion-item-divider>\r\n <ion-item button detail lines="full" (click)="this.sendPush()">\r\n <ion-icon name="send-outline" slot="end"></ion-icon>\r\n <ion-label>{{\'lblPushNotificationSenden\' | translate}}</ion-label>\r\n </ion-item>\r\n <ion-item button detail lines="full" (click)="this.sendToast()">\r\n <ion-icon name="chatbox-outline" slot="end"></ion-icon>\r\n <ion-label>Show Toast</ion-label>\r\n </ion-item>\r\n\r\n <ion-item-divider color="light">\r\n <ion-label>Breaking Changes</ion-label>\r\n </ion-item-divider>\r\n <ion-item lines="full">\r\n <div>\r\n <ion-label>Senden zum Server</ion-label>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testSendToServer(false)">Falscher Datentyp</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testSendToServer(this.testobjbig)">Mehr Info in Objekt</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testSendToServer(this.testobjsmall)">Weniger Info in Objekt</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testSendToServer(true)">Funktion nicht vorhanden</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testSendToServer(this.testobj)">Korrekt</ion-button>\r\n </div>\r\n </ion-item>\r\n <ion-item lines="full">\r\n <div>\r\n <ion-label>Erhalten vom Server</ion-label>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testGetFromServer(0)">
1Falscher Datentyp</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testGetFromServer(1)">Weniger Info in Objekt</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testGetFromServer(2)">Mehr Info in Objekt</ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="this.testGetFromServer(3)">Korrekt</ion-button>\r\n </div>\r\n </ion-item>\r\n </div>\r\n </ion-list>\r\n\r\n <ion-footer class="ion-padding">\r\n <ion-button *ngIf="this.isDev" class="infoSoftButton ion-margin-bottom" expand="block" color="danger" (click)="this.helper.factoryResetApp()">\r\n <ion-icon name="trash-outline" slot="start"></ion-icon>\r\n <ion-label>{{ \'lblApp\' | translate }} {{ \'lblZuruecksetzen\' | translate }}</ion-label>\r\n </ion-button>\r\n <ion-button class="infoSoftButton ion-margin-bottom" expand="block" (click)="this.helper.forceReloadApp(\'/\')">\r\n <ion-icon name="reload-outline" slot="start"></ion-icon>\r\n <ion-label>{{ \'lblApp\' | translate }} {{ \'lblNeuLaden\' | translate }}</ion-label>\r\n </ion-button>\r\n <ion-button class="infoSoftButton" expand="block" (click)="logout()">\r\n <ion-icon name="log-out-outline" slot="start"></ion-icon>\r\n <ion-label>{{\'lblAbmelden\' | translate}}</ion-label>\r\n </ion-button>\r\n </ion-footer>\r\n</ion-content>\r\n',styles:[V()]})],A);const re=[{path:"",component:A}];let I=class{};I=(0,m.Cg)([(0,a.UQu)({imports:[O.iI.forChild(re)],exports:[O.iI]})],I);var le=t(1775),oe=t(73955);let D=class{};D=(0,m.Cg)([(0,a.UQu)({imports:[p.MD,z.YN,M.bv,I,le.G,oe.h],declarations:[A]})],D)},55283:(T,P,t)=>{var m=t(8564),p=t(98557)(m);p.push([T.id,"ion-label[slot=end] {\n flex: unset;\n}\n\n.dot {\n height: 10px;\n width: 10px;\n background-color: #bbb;\n border-radius: 50%;\n display: inline-block;\n}",""]),T.exports=p.toString()}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.