import { Component , OnInit , Input } from "@angular/core" ; import { ModalController , Platform , AlertController } from "@ionic/angular" ; import { Logger , LoggingService } from "ionic-logging-service" ; import { LoggingViewerTranslation } from "../logging-viewer-translation.model" ; /**
 * Ionic modal containing [LoggingViewerComponent](LoggingViewerComponent.html),
 * [LoggingViewerLevelsComponent](LoggingViewerLevelsComponent.html) and
 * [LoggingViewerSearchComponent](LoggingViewerSearchComponent.html).
 */ @ Component ( { selector : "ionic-logging-viewer-modal" , templateUrl : "./logging-viewer-modal.component.html" , styleUrls : [ "./logging-viewer-modal.component.scss" ] } ) export class LoggingViewerModalComponent implements OnInit { private static languageEn = "en" ; private static languageDe = "de" ; /**
     * Language to be used for the modal.
     * Currently supported: en, de
     */ @ Input ( ) public language : string ; /**
     * Translation to be used for the modal.
     * If specified, the language is ignored.
     */ @ Input ( ) public translation : LoggingViewerTranslation ; /**
     * Comma-separated list of localStorageKeys. If set, the logs get loaded from localStorage instead of memory.
     */ @ Input ( ) public localStorageKeys : string ; /**
     * Flag showing a delete button, which removes all existing log messages.
     */ @ Input ( ) public allowClearLogs : boolean ; /**
     * Flag controlling which close button will be shown.
     */ public isAndroid : boolean ; private logger : Logger ; private translations : { [ language ] : LoggingViewerTranslation ; } ; /**
     * Creates a new instance of the component.
     */ constructor ( platform , private alertController , private modalController , private loggingService ) { this . logger = loggingService . getLogger ( "Ionic.Logging.Viewer.Modal.Component" ) ; const methodName = "ctor" ; this . logger . entry ( methodName ) ; this . isAndroid = platform . is ( "android" ) ; this . logger . exit ( methodName ) ; } /**
     * Initializes the LoggingViewerModalComponent.
     * It configures the supported translations.
     */ public ngOnInit ( ) { this . translations = { } ; this . translations [ LoggingViewerModalComponent . languageEn ] = { cancel : "Cancel" , confirmDelete : "Delete all log messages?" , ok : "Ok" , searchPlaceholder : "Search" , title : "Logging" , } ; this . translations [ LoggingViewerModalComponent . languageDe ] = { cancel : "Abbrechen" , confirmDelete : "Alle Logs löschen?" , ok : "Ok" , searchPlaceholder : "Suchen" , title : "Logging" , } ; } /**
     * Eventhandler called by Ionic when the modal is opened.
     */ public ionViewDidEnter ( ) { const methodName = "ionViewDidEnter" ; this . logger . entry ( methodName ) ; this . logger . exit ( methodName ) ; } /**
     * Eventhandler called when the cancel button is clicked.
     */ public async onClose ( ) { const methodName = "onClose" ; this . logger . entry ( methodName ) ; await this . modalController . dismiss ( ) ; this . logger . exit ( methodName ) ; } /**
     * Eventhandler called when the clear button is clicked.
     */ public async onClearLogs ( ) { const methodName = "onClearLogs" ; this . logger . entry ( methodName ) ; const alert = await this . alertController . create ( { header : this . getTranslation ( ) . confirmDelete , buttons : [ { text : this . getTranslation ( ) . cancel , role : "cancel" , cssClass : "secondary" } , { text : this . getTranslation ( ) . ok , handler : ( ) => { this . clearLogs ( ) ; } } , ] } ) ; await alert . present ( ) ; this . logger . exit ( methodName ) ; } /**
     * Clear logs.
     */ public clearLogs ( ) { if ( this . localStorageKeys ) { for ( const localStorageKey of this . localStorageKeys . split ( "," ) ) { this . loggingService . removeLogMessagesFromLocalStorage ( localStorageKey ) ; } } else { this . loggingService . removeLogMessages ( ) ; } } /**
     * Helper method returning the current translation:
     * - the property translation if defined
     * - the translation according property language if valid
     * - English translation, otherwise
     */ public getTranslation ( ) { if ( typeof this . translation !== "undefined" ) { return this . translation ; } else if ( typeof this . language !== "undefined" && typeof this . translations [ this . language ] === "object" ) { return this . translations [ this . language ] ; } else { return this . translations [ LoggingViewerModalComponent . languageEn ] ; } } }