ionic-logging-viewer 13.0.0 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +2 -1
  2. package/esm2020/ionic-logging-viewer.mjs +5 -0
  3. package/esm2020/lib/logging-viewer/logging-viewer.component.mjs +119 -0
  4. package/esm2020/lib/logging-viewer-filter.service.mjs +64 -0
  5. package/esm2020/lib/logging-viewer-levels/logging-viewer-levels.component.mjs +71 -0
  6. package/{esm2015/lib/logging-viewer-modal/logging-viewer-modal-properties.model.js → esm2020/lib/logging-viewer-modal/logging-viewer-modal-properties.model.mjs} +0 -0
  7. package/esm2020/lib/logging-viewer-modal/logging-viewer-modal.component.mjs +141 -0
  8. package/esm2020/lib/logging-viewer-search/logging-viewer-search.component.mjs +73 -0
  9. package/{esm2015/lib/logging-viewer-translation.model.js → esm2020/lib/logging-viewer-translation.model.mjs} +0 -0
  10. package/esm2020/lib/logging-viewer.module.mjs +55 -0
  11. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  12. package/fesm2015/ionic-logging-viewer.mjs +500 -0
  13. package/fesm2015/ionic-logging-viewer.mjs.map +1 -0
  14. package/fesm2020/ionic-logging-viewer.mjs +495 -0
  15. package/fesm2020/ionic-logging-viewer.mjs.map +1 -0
  16. package/ionic-logging-viewer.d.ts +1 -1
  17. package/lib/logging-viewer/logging-viewer.component.d.ts +3 -0
  18. package/lib/logging-viewer-filter.service.d.ts +3 -0
  19. package/lib/logging-viewer-levels/logging-viewer-levels.component.d.ts +3 -0
  20. package/lib/logging-viewer-modal/logging-viewer-modal.component.d.ts +3 -0
  21. package/lib/logging-viewer-search/logging-viewer-search.component.d.ts +3 -0
  22. package/lib/logging-viewer.module.d.ts +11 -0
  23. package/package.json +24 -12
  24. package/bundles/ionic-logging-viewer.umd.js +0 -883
  25. package/bundles/ionic-logging-viewer.umd.js.map +0 -1
  26. package/esm2015/ionic-logging-viewer.js +0 -6
  27. package/esm2015/lib/logging-viewer/logging-viewer.component.js +0 -121
  28. package/esm2015/lib/logging-viewer-filter.service.js +0 -62
  29. package/esm2015/lib/logging-viewer-levels/logging-viewer-levels.component.js +0 -70
  30. package/esm2015/lib/logging-viewer-modal/logging-viewer-modal.component.js +0 -144
  31. package/esm2015/lib/logging-viewer-search/logging-viewer-search.component.js +0 -74
  32. package/esm2015/lib/logging-viewer.module.js +0 -37
  33. package/fesm2015/ionic-logging-viewer.js +0 -500
  34. package/fesm2015/ionic-logging-viewer.js.map +0 -1
  35. package/ionic-logging-viewer.metadata.json +0 -1
@@ -1,74 +0,0 @@
1
- import { Component, Input } from "@angular/core";
2
- import { LoggingService } from "ionic-logging-service";
3
- import { LoggingViewerFilterService } from "../logging-viewer-filter.service";
4
- /**
5
- * Component for displaying the search bar for filtering the current logs.
6
- *
7
- * The component can be embedded in any web page using:
8
- *
9
- * <ionic-logging-viewer-search placeholder="Search"></ionic-logging-viewer-search>
10
- */
11
- export class LoggingViewerSearchComponent {
12
- /**
13
- * Creates a new instance of the component.
14
- */
15
- constructor(loggingService, loggingViewerFilterService) {
16
- this.loggingViewerFilterService = loggingViewerFilterService;
17
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Search.Component");
18
- const methodName = "ctor";
19
- this.logger.entry(methodName);
20
- this.logger.exit(methodName);
21
- }
22
- /**
23
- * Initialize the component.
24
- *
25
- * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html).
26
- */
27
- ngOnInit() {
28
- const methodName = "ngOnInit";
29
- this.logger.entry(methodName);
30
- if (!this.placeholder) {
31
- this.placeholder = "Search";
32
- }
33
- this.search = this.loggingViewerFilterService.search;
34
- // subscribe to loggingViewerFilterService.filterChanged event, to refresh,
35
- // when someone else modifies the search value
36
- this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
37
- this.search = this.loggingViewerFilterService.search;
38
- });
39
- this.logger.exit(methodName);
40
- }
41
- /**
42
- * Clean up.
43
- */
44
- ngOnDestroy() {
45
- const methodName = "ngOnDestroy";
46
- this.logger.entry(methodName);
47
- this.filterChangedSubscription.unsubscribe();
48
- this.logger.exit(methodName);
49
- }
50
- /**
51
- * Callback when the search value was changed in the UI.
52
- */
53
- onSearchChanged() {
54
- const methodName = "onSearchChanged";
55
- this.logger.entry(methodName, this.search);
56
- this.loggingViewerFilterService.search = this.search;
57
- this.logger.exit(methodName);
58
- }
59
- }
60
- LoggingViewerSearchComponent.decorators = [
61
- { type: Component, args: [{
62
- selector: "ionic-logging-viewer-search",
63
- template: "<ion-searchbar placeholder=\"{{placeholder}}\" [(ngModel)]=\"search\" (ionChange)=\"onSearchChanged()\"></ion-searchbar>",
64
- styles: ["ion-searchbar{padding-top:3px;padding-bottom:0}"]
65
- },] }
66
- ];
67
- LoggingViewerSearchComponent.ctorParameters = () => [
68
- { type: LoggingService },
69
- { type: LoggingViewerFilterService }
70
- ];
71
- LoggingViewerSearchComponent.propDecorators = {
72
- placeholder: [{ type: Input }]
73
- };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXItc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lvbmljLWxvZ2dpbmctdmlld2VyL3NyYy9saWIvbG9nZ2luZy12aWV3ZXItc2VhcmNoL2xvZ2dpbmctdmlld2VyLXNlYXJjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSXBFLE9BQU8sRUFBRSxjQUFjLEVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU5RTs7Ozs7O0dBTUc7QUFNSCxNQUFNLE9BQU8sNEJBQTRCO0lBZ0J4Qzs7T0FFRztJQUNILFlBQ0MsY0FBOEIsRUFDdEIsMEJBQXNEO1FBQXRELCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFFOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDaEYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUTtRQUNkLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztRQUVyRCwyRUFBMkU7UUFDM0UsOENBQThDO1FBQzlDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNqQixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTdDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDckIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7O1lBaEZELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsNkJBQTZCO2dCQUN2QyxvSUFBcUQ7O2FBRXJEOzs7WUFmUSxjQUFjO1lBRWQsMEJBQTBCOzs7MEJBbUJqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBMb2dnaW5nU2VydmljZSwgTG9nZ2VyIH0gZnJvbSBcImlvbmljLWxvZ2dpbmctc2VydmljZVwiO1xuXG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9sb2dnaW5nLXZpZXdlci1maWx0ZXIuc2VydmljZVwiO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZGlzcGxheWluZyB0aGUgc2VhcmNoIGJhciBmb3IgZmlsdGVyaW5nIHRoZSBjdXJyZW50IGxvZ3MuXG4gKlxuICogVGhlIGNvbXBvbmVudCBjYW4gYmUgZW1iZWRkZWQgaW4gYW55IHdlYiBwYWdlIHVzaW5nOlxuICpcbiAqICZsdDtpb25pYy1sb2dnaW5nLXZpZXdlci1zZWFyY2ggcGxhY2Vob2xkZXI9XCJTZWFyY2hcIj4mbHQ7L2lvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaD5cbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImlvbmljLWxvZ2dpbmctdmlld2VyLXNlYXJjaFwiLFxuXHR0ZW1wbGF0ZVVybDogXCIuL2xvZ2dpbmctdmlld2VyLXNlYXJjaC5jb21wb25lbnQuaHRtbFwiLFxuXHRzdHlsZVVybHM6IFtcIi4vbG9nZ2luZy12aWV3ZXItc2VhcmNoLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJTZWFyY2hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0LyoqXG5cdCAqIFBsYWNlaG9sZGVyIHRvIGJlIHNob3duIGluIHRoZSBlbXB0eSBzZWFyY2ggYmFyLlxuXHQgKi9cblx0QElucHV0KClcblx0cHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEN1cnJlbnQgc2VhcmNoIHZhbHVlLlxuXHQgKi9cblx0cHVibGljIHNlYXJjaDogc3RyaW5nO1xuXG5cdHByaXZhdGUgbG9nZ2VyOiBMb2dnZXI7XG5cdHByaXZhdGUgZmlsdGVyQ2hhbmdlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnQuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRsb2dnaW5nU2VydmljZTogTG9nZ2luZ1NlcnZpY2UsXG5cdFx0cHJpdmF0ZSBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZTogTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UpIHtcblxuXHRcdHRoaXMubG9nZ2VyID0gbG9nZ2luZ1NlcnZpY2UuZ2V0TG9nZ2VyKFwiSW9uaWMuTG9nZ2luZy5WaWV3ZXIuU2VhcmNoLkNvbXBvbmVudFwiKTtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJjdG9yXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudC5cblx0ICpcblx0ICogVGhpcyBpcyBkb25lIGJ5IHJlYWRpbmcgdGhlIGZpbHRlciBkYXRhIGZyb20gW0xvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlXShMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5odG1sKS5cblx0ICovXG5cdHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHRjb25zdCBtZXRob2ROYW1lID0gXCJuZ09uSW5pdFwiO1xuXHRcdHRoaXMubG9nZ2VyLmVudHJ5KG1ldGhvZE5hbWUpO1xuXG5cdFx0aWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XG5cdFx0XHR0aGlzLnBsYWNlaG9sZGVyID0gXCJTZWFyY2hcIjtcblx0XHR9XG5cdFx0dGhpcy5zZWFyY2ggPSB0aGlzLmxvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLnNlYXJjaDtcblxuXHRcdC8vIHN1YnNjcmliZSB0byBsb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5maWx0ZXJDaGFuZ2VkIGV2ZW50LCB0byByZWZyZXNoLFxuXHRcdC8vIHdoZW4gc29tZW9uZSBlbHNlIG1vZGlmaWVzIHRoZSBzZWFyY2ggdmFsdWVcblx0XHR0aGlzLmZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvZ2dpbmdWaWV3ZXJGaWx0ZXJTZXJ2aWNlLmZpbHRlckNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuc2VhcmNoID0gdGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5zZWFyY2g7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmxvZ2dlci5leGl0KG1ldGhvZE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFuIHVwLlxuXHQgKi9cblx0cHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGNvbnN0IG1ldGhvZE5hbWUgPSBcIm5nT25EZXN0cm95XCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSk7XG5cblx0XHR0aGlzLmZpbHRlckNoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgc2VhcmNoIHZhbHVlIHdhcyBjaGFuZ2VkIGluIHRoZSBVSS5cblx0ICovXG5cdHB1YmxpYyBvblNlYXJjaENoYW5nZWQoKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0aG9kTmFtZSA9IFwib25TZWFyY2hDaGFuZ2VkXCI7XG5cdFx0dGhpcy5sb2dnZXIuZW50cnkobWV0aG9kTmFtZSwgdGhpcy5zZWFyY2gpO1xuXG5cdFx0dGhpcy5sb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZS5zZWFyY2ggPSB0aGlzLnNlYXJjaDtcblxuXHRcdHRoaXMubG9nZ2VyLmV4aXQobWV0aG9kTmFtZSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,37 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { CommonModule } from "@angular/common";
3
- import { FormsModule } from "@angular/forms";
4
- import { IonicModule } from "@ionic/angular";
5
- import { LoggingViewerComponent } from "./logging-viewer/logging-viewer.component";
6
- import { LoggingViewerFilterService } from "./logging-viewer-filter.service";
7
- import { LoggingViewerLevelsComponent } from "./logging-viewer-levels/logging-viewer-levels.component";
8
- import { LoggingViewerSearchComponent } from "./logging-viewer-search/logging-viewer-search.component";
9
- import { LoggingViewerModalComponent } from "./logging-viewer-modal/logging-viewer-modal.component";
10
- export class LoggingViewerModule {
11
- }
12
- LoggingViewerModule.decorators = [
13
- { type: NgModule, args: [{
14
- imports: [
15
- CommonModule,
16
- FormsModule,
17
- IonicModule
18
- ],
19
- declarations: [
20
- LoggingViewerComponent,
21
- LoggingViewerSearchComponent,
22
- LoggingViewerLevelsComponent,
23
- LoggingViewerModalComponent
24
- ],
25
- entryComponents: [],
26
- exports: [
27
- LoggingViewerComponent,
28
- LoggingViewerSearchComponent,
29
- LoggingViewerLevelsComponent,
30
- LoggingViewerModalComponent
31
- ],
32
- providers: [
33
- LoggingViewerFilterService
34
- ]
35
- },] }
36
- ];
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy12aWV3ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW9uaWMtbG9nZ2luZy12aWV3ZXIvc3JjL2xpYi9sb2dnaW5nLXZpZXdlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQTBCcEcsTUFBTSxPQUFPLG1CQUFtQjs7O1lBeEIvQixRQUFRLFNBQUM7Z0JBQ1QsT0FBTyxFQUFFO29CQUNSLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxXQUFXO2lCQUNYO2dCQUNELFlBQVksRUFBRTtvQkFDYixzQkFBc0I7b0JBQ3RCLDRCQUE0QjtvQkFDNUIsNEJBQTRCO29CQUM1QiwyQkFBMkI7aUJBQzNCO2dCQUNELGVBQWUsRUFBRSxFQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1Isc0JBQXNCO29CQUN0Qiw0QkFBNEI7b0JBQzVCLDRCQUE0QjtvQkFDNUIsMkJBQTJCO2lCQUMzQjtnQkFDRCxTQUFTLEVBQUU7b0JBQ1YsMEJBQTBCO2lCQUMxQjthQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tIFwiQGlvbmljL2FuZ3VsYXJcIjtcblxuaW1wb3J0IHsgTG9nZ2luZ1ZpZXdlckNvbXBvbmVudCB9IGZyb20gXCIuL2xvZ2dpbmctdmlld2VyL2xvZ2dpbmctdmlld2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTG9nZ2luZ1ZpZXdlckZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi9sb2dnaW5nLXZpZXdlci1maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgTG9nZ2luZ1ZpZXdlckxldmVsc0NvbXBvbmVudCB9IGZyb20gXCIuL2xvZ2dpbmctdmlld2VyLWxldmVscy9sb2dnaW5nLXZpZXdlci1sZXZlbHMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBMb2dnaW5nVmlld2VyU2VhcmNoQ29tcG9uZW50IH0gZnJvbSBcIi4vbG9nZ2luZy12aWV3ZXItc2VhcmNoL2xvZ2dpbmctdmlld2VyLXNlYXJjaC5jb21wb25lbnRcIjtcbmltcG9ydCB7IExvZ2dpbmdWaWV3ZXJNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL2xvZ2dpbmctdmlld2VyLW1vZGFsL2xvZ2dpbmctdmlld2VyLW1vZGFsLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuXHRpbXBvcnRzOiBbXG5cdFx0Q29tbW9uTW9kdWxlLFxuXHRcdEZvcm1zTW9kdWxlLFxuXHRcdElvbmljTW9kdWxlXG5cdF0sXG5cdGRlY2xhcmF0aW9uczogW1xuXHRcdExvZ2dpbmdWaWV3ZXJDb21wb25lbnQsXG5cdFx0TG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudCxcblx0XHRMb2dnaW5nVmlld2VyTGV2ZWxzQ29tcG9uZW50LFxuXHRcdExvZ2dpbmdWaWV3ZXJNb2RhbENvbXBvbmVudFxuXHRdLFxuXHRlbnRyeUNvbXBvbmVudHM6IFtcblx0XSxcblx0ZXhwb3J0czogW1xuXHRcdExvZ2dpbmdWaWV3ZXJDb21wb25lbnQsXG5cdFx0TG9nZ2luZ1ZpZXdlclNlYXJjaENvbXBvbmVudCxcblx0XHRMb2dnaW5nVmlld2VyTGV2ZWxzQ29tcG9uZW50LFxuXHRcdExvZ2dpbmdWaWV3ZXJNb2RhbENvbXBvbmVudFxuXHRdLFxuXHRwcm92aWRlcnM6IFtcblx0XHRMb2dnaW5nVmlld2VyRmlsdGVyU2VydmljZVxuXHRdXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdWaWV3ZXJNb2R1bGUgeyB9XG4iXX0=
@@ -1,500 +0,0 @@
1
- import { EventEmitter, Injectable, Component, Input, NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { Platform, AlertController, ModalController, IonicModule } from '@ionic/angular';
5
- import { __awaiter } from 'tslib';
6
- import { LoggingService, LogLevelConverter } from 'ionic-logging-service';
7
-
8
- /**
9
- * Service for storing filter settings for logging viewer.
10
- */
11
- class LoggingViewerFilterService {
12
- /**
13
- * Creates a new instance of the service.
14
- *
15
- * @param loggingService needed for internal logging.
16
- */
17
- constructor(loggingService) {
18
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Filter.Service");
19
- const methodName = "ctor";
20
- this.logger.entry(methodName);
21
- this.levelValue = "DEBUG";
22
- this.searchValue = "";
23
- this.filterChanged = new EventEmitter();
24
- this.logger.exit(methodName);
25
- }
26
- /**
27
- * Gets the current log level.
28
- *
29
- * @return log level
30
- */
31
- get level() {
32
- return this.levelValue;
33
- }
34
- /**
35
- * Sets the new log level and emits a filterChanged event.
36
- *
37
- * @param value new slog level
38
- */
39
- set level(value) {
40
- this.levelValue = value;
41
- this.filterChanged.emit();
42
- }
43
- /**
44
- * Gets the current search value.
45
- *
46
- * @return search value
47
- */
48
- get search() {
49
- return this.searchValue;
50
- }
51
- /**
52
- * Sets the new search value and emits a filterChanged event.
53
- *
54
- * @param value new search value
55
- */
56
- set search(value) {
57
- this.searchValue = value;
58
- this.filterChanged.emit();
59
- }
60
- }
61
- LoggingViewerFilterService.decorators = [
62
- { type: Injectable }
63
- ];
64
- LoggingViewerFilterService.ctorParameters = () => [
65
- { type: LoggingService }
66
- ];
67
-
68
- /**
69
- * Component for displaying the current logs.
70
- *
71
- * The component can be embedded in any web page using:
72
- *
73
- * &lt;ionic-logging-viewer>&lt;/ionic-logging-viewer>
74
- */
75
- class LoggingViewerComponent {
76
- /**
77
- * Creates a new instance of the component.
78
- */
79
- constructor(loggingService, loggingViewerFilterService) {
80
- this.loggingService = loggingService;
81
- this.loggingViewerFilterService = loggingViewerFilterService;
82
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Component");
83
- const methodName = "ctor";
84
- this.logger.entry(methodName);
85
- this.logger.exit(methodName);
86
- }
87
- /**
88
- * Initialize the component.
89
- *
90
- * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html)
91
- * and the log messages from [LoggingService](../../../ionic-logging-service/typedoc/index.html).
92
- * If the localStorageKeys property is set, the messages are read from local storage.
93
- */
94
- ngOnInit() {
95
- const methodName = "ngOnInit";
96
- this.logger.entry(methodName);
97
- this.loadLogMessages();
98
- this.filterLogMessages();
99
- // subscribe to loggingService.logMessagesChanged event, to refresh, when new message is logged
100
- this.logMessagesChangedSubscription = this.loggingService.logMessagesChanged.subscribe(() => __awaiter(this, void 0, void 0, function* () {
101
- this.loadLogMessages();
102
- this.filterLogMessages();
103
- }));
104
- // subscribe to loggingViewerFilterService.filterChanged event, to refresh, when filter is modified
105
- this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
106
- this.filterLogMessages();
107
- });
108
- this.logger.exit(methodName);
109
- }
110
- /**
111
- * Clean up.
112
- */
113
- ngOnDestroy() {
114
- const methodName = "ngOnDestroy";
115
- this.logger.entry(methodName);
116
- this.logMessagesChangedSubscription.unsubscribe();
117
- this.filterChangedSubscription.unsubscribe();
118
- this.logger.exit(methodName);
119
- }
120
- /**
121
- * Filter the log messages.
122
- */
123
- filterLogMessages() {
124
- this.logMessagesForDisplay = this.logMessages.filter((message) => this.filterLogMessagesByLevel(message) && this.filterLogMessagesBySearch(message));
125
- }
126
- /**
127
- * Check if the log message's level fulfills the level condition.
128
- *
129
- * @param message the log message to check
130
- * @returns true if check was successful
131
- */
132
- filterLogMessagesByLevel(message) {
133
- const levelValue = this.loggingViewerFilterService.level;
134
- return LogLevelConverter.levelFromString(message.level) >= LogLevelConverter.levelFromString(levelValue);
135
- }
136
- /**
137
- * Check if the log message fulfills the search condition.
138
- *
139
- * The search value gets searched in:
140
- * - logger name
141
- * - method name
142
- * - message
143
- *
144
- * @param message the log message to check
145
- * @returns true if check was successful
146
- */
147
- filterLogMessagesBySearch(message) {
148
- const searchValue = new RegExp(this.loggingViewerFilterService.search, "i");
149
- return message.logger.search(searchValue) >= 0 ||
150
- message.methodName.search(searchValue) >= 0 ||
151
- message.message.join("|").search(searchValue) >= 0;
152
- }
153
- /**
154
- * Load the current log messages.
155
- * For unit test purposes mainly.
156
- */
157
- loadLogMessages() {
158
- if (this.localStorageKeys) {
159
- this.logMessages = [];
160
- for (const localStorageKey of this.localStorageKeys.split(",")) {
161
- this.logMessages = this.logMessages.concat(this.loggingService.getLogMessagesFromLocalStorage(localStorageKey));
162
- }
163
- this.logMessages = this.logMessages.sort((a, b) => a.timeStamp.getTime() - b.timeStamp.getTime());
164
- }
165
- else {
166
- this.logMessages = this.loggingService.getLogMessages();
167
- }
168
- }
169
- }
170
- LoggingViewerComponent.decorators = [
171
- { type: Component, args: [{
172
- selector: "ionic-logging-viewer",
173
- template: "<ion-list>\n\t<ion-item *ngFor=\"let logMessage of logMessagesForDisplay\">\n\t\t<ion-label>\n\t\t\t<p>{{ logMessage.timeStamp | date:'dd.MM.yyyy HH:mm:ss' }} {{ logMessage.level }}</p>\n\t\t\t<p>{{ logMessage.logger }}</p>\n\t\t\t<p>\n\t\t\t\t{{ logMessage.methodName }}\n\t\t\t\t<span *ngFor=\"let messagePart of logMessage.message\"> {{ messagePart }} </span>\n\t\t\t</p>\n\t\t</ion-label>\n\t</ion-item>\n</ion-list>",
174
- styles: [""]
175
- },] }
176
- ];
177
- LoggingViewerComponent.ctorParameters = () => [
178
- { type: LoggingService },
179
- { type: LoggingViewerFilterService }
180
- ];
181
- LoggingViewerComponent.propDecorators = {
182
- localStorageKeys: [{ type: Input }]
183
- };
184
-
185
- /**
186
- * Component for displaying the log levels for filtering the current logs.
187
- *
188
- * The component can be embedded in any web page using:
189
- *
190
- * &lt;ionic-logging-viewer-levels>&lt;/ionic-logging-viewer-levels>
191
- */
192
- class LoggingViewerLevelsComponent {
193
- /**
194
- * Creates a new instance of the component.
195
- */
196
- constructor(loggingService, loggingViewerFilterService) {
197
- this.loggingViewerFilterService = loggingViewerFilterService;
198
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Levels.Component");
199
- const methodName = "ctor";
200
- this.logger.entry(methodName);
201
- this.logLevels = [];
202
- this.logLevels.push("DEBUG", "INFO", "WARN", "ERROR");
203
- this.logger.exit(methodName);
204
- }
205
- /**
206
- * Initialize the component.
207
- *
208
- * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html).
209
- */
210
- ngOnInit() {
211
- const methodName = "ngOnInit";
212
- this.logger.entry(methodName);
213
- this.selectedLevel = this.loggingViewerFilterService.level;
214
- // subscribe to loggingViewerFilterService.filterChanged event, to refresh,
215
- // when someone else modifies the level
216
- this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
217
- this.selectedLevel = this.loggingViewerFilterService.level;
218
- });
219
- this.logger.exit(methodName);
220
- }
221
- /**
222
- * Clean up.
223
- */
224
- ngOnDestroy() {
225
- const methodName = "ngOnDestroy";
226
- this.logger.entry(methodName);
227
- this.filterChangedSubscription.unsubscribe();
228
- this.logger.exit(methodName);
229
- }
230
- /**
231
- * Callback when the level was changed in the UI.
232
- */
233
- onLevelChanged() {
234
- const methodName = "onLevelChanged";
235
- this.logger.entry(methodName, this.selectedLevel);
236
- this.loggingViewerFilterService.level = this.selectedLevel;
237
- this.logger.exit(methodName);
238
- }
239
- }
240
- LoggingViewerLevelsComponent.decorators = [
241
- { type: Component, args: [{
242
- selector: "ionic-logging-viewer-levels",
243
- template: "<ion-segment [(ngModel)]=\"selectedLevel\" (ionChange)=\"onLevelChanged()\">\n\t<ion-segment-button *ngFor=\"let logLevel of logLevels\" [value]=\"logLevel\">\n\t\t<ion-label>{{ logLevel }}</ion-label>\n\t</ion-segment-button>\n</ion-segment>",
244
- styles: [""]
245
- },] }
246
- ];
247
- LoggingViewerLevelsComponent.ctorParameters = () => [
248
- { type: LoggingService },
249
- { type: LoggingViewerFilterService }
250
- ];
251
-
252
- /**
253
- * Component for displaying the search bar for filtering the current logs.
254
- *
255
- * The component can be embedded in any web page using:
256
- *
257
- * &lt;ionic-logging-viewer-search placeholder="Search">&lt;/ionic-logging-viewer-search>
258
- */
259
- class LoggingViewerSearchComponent {
260
- /**
261
- * Creates a new instance of the component.
262
- */
263
- constructor(loggingService, loggingViewerFilterService) {
264
- this.loggingViewerFilterService = loggingViewerFilterService;
265
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Search.Component");
266
- const methodName = "ctor";
267
- this.logger.entry(methodName);
268
- this.logger.exit(methodName);
269
- }
270
- /**
271
- * Initialize the component.
272
- *
273
- * This is done by reading the filter data from [LoggingViewerFilterService](LoggingViewerFilterService.html).
274
- */
275
- ngOnInit() {
276
- const methodName = "ngOnInit";
277
- this.logger.entry(methodName);
278
- if (!this.placeholder) {
279
- this.placeholder = "Search";
280
- }
281
- this.search = this.loggingViewerFilterService.search;
282
- // subscribe to loggingViewerFilterService.filterChanged event, to refresh,
283
- // when someone else modifies the search value
284
- this.filterChangedSubscription = this.loggingViewerFilterService.filterChanged.subscribe(() => {
285
- this.search = this.loggingViewerFilterService.search;
286
- });
287
- this.logger.exit(methodName);
288
- }
289
- /**
290
- * Clean up.
291
- */
292
- ngOnDestroy() {
293
- const methodName = "ngOnDestroy";
294
- this.logger.entry(methodName);
295
- this.filterChangedSubscription.unsubscribe();
296
- this.logger.exit(methodName);
297
- }
298
- /**
299
- * Callback when the search value was changed in the UI.
300
- */
301
- onSearchChanged() {
302
- const methodName = "onSearchChanged";
303
- this.logger.entry(methodName, this.search);
304
- this.loggingViewerFilterService.search = this.search;
305
- this.logger.exit(methodName);
306
- }
307
- }
308
- LoggingViewerSearchComponent.decorators = [
309
- { type: Component, args: [{
310
- selector: "ionic-logging-viewer-search",
311
- template: "<ion-searchbar placeholder=\"{{placeholder}}\" [(ngModel)]=\"search\" (ionChange)=\"onSearchChanged()\"></ion-searchbar>",
312
- styles: ["ion-searchbar{padding-top:3px;padding-bottom:0}"]
313
- },] }
314
- ];
315
- LoggingViewerSearchComponent.ctorParameters = () => [
316
- { type: LoggingService },
317
- { type: LoggingViewerFilterService }
318
- ];
319
- LoggingViewerSearchComponent.propDecorators = {
320
- placeholder: [{ type: Input }]
321
- };
322
-
323
- /**
324
- * Ionic modal containing [LoggingViewerComponent](LoggingViewerComponent.html),
325
- * [LoggingViewerLevelsComponent](LoggingViewerLevelsComponent.html) and
326
- * [LoggingViewerSearchComponent](LoggingViewerSearchComponent.html).
327
- */
328
- class LoggingViewerModalComponent {
329
- /**
330
- * Creates a new instance of the component.
331
- */
332
- constructor(platform, alertController, modalController, loggingService) {
333
- this.alertController = alertController;
334
- this.modalController = modalController;
335
- this.loggingService = loggingService;
336
- this.logger = loggingService.getLogger("Ionic.Logging.Viewer.Modal.Component");
337
- const methodName = "ctor";
338
- this.logger.entry(methodName);
339
- this.isAndroid = platform.is("android");
340
- this.logger.exit(methodName);
341
- }
342
- /**
343
- * Initializes the LoggingViewerModalComponent.
344
- * It configures the supported translations.
345
- */
346
- ngOnInit() {
347
- // prepare translations
348
- this.translations = {};
349
- this.translations[LoggingViewerModalComponent.languageEn] = {
350
- cancel: "Cancel",
351
- confirmDelete: "Delete all log messages?",
352
- ok: "Ok",
353
- searchPlaceholder: "Search",
354
- title: "Logging",
355
- };
356
- this.translations[LoggingViewerModalComponent.languageDe] = {
357
- cancel: "Abbrechen",
358
- confirmDelete: "Alle Logs löschen?",
359
- ok: "Ok",
360
- searchPlaceholder: "Suchen",
361
- title: "Logging",
362
- };
363
- }
364
- /**
365
- * Eventhandler called by Ionic when the modal is opened.
366
- */
367
- ionViewDidEnter() {
368
- const methodName = "ionViewDidEnter";
369
- this.logger.entry(methodName);
370
- this.logger.exit(methodName);
371
- }
372
- /**
373
- * Eventhandler called when the cancel button is clicked.
374
- */
375
- onClose() {
376
- return __awaiter(this, void 0, void 0, function* () {
377
- const methodName = "onClose";
378
- this.logger.entry(methodName);
379
- yield this.modalController.dismiss();
380
- this.logger.exit(methodName);
381
- });
382
- }
383
- /**
384
- * Eventhandler called when the clear button is clicked.
385
- */
386
- onClearLogs() {
387
- return __awaiter(this, void 0, void 0, function* () {
388
- const methodName = "onClearLogs";
389
- this.logger.entry(methodName);
390
- const alert = yield this.alertController.create({
391
- header: this.getTranslation().confirmDelete,
392
- buttons: [
393
- {
394
- text: this.getTranslation().cancel,
395
- role: "cancel",
396
- cssClass: "secondary"
397
- },
398
- {
399
- text: this.getTranslation().ok,
400
- handler: () => {
401
- this.clearLogs();
402
- }
403
- },
404
- ]
405
- });
406
- yield alert.present();
407
- this.logger.exit(methodName);
408
- });
409
- }
410
- /**
411
- * Clear logs.
412
- */
413
- clearLogs() {
414
- if (this.localStorageKeys) {
415
- for (const localStorageKey of this.localStorageKeys.split(",")) {
416
- this.loggingService.removeLogMessagesFromLocalStorage(localStorageKey);
417
- }
418
- }
419
- else {
420
- this.loggingService.removeLogMessages();
421
- }
422
- }
423
- /**
424
- * Helper method returning the current translation:
425
- * - the property translation if defined
426
- * - the translation according property language if valid
427
- * - English translation, otherwise
428
- */
429
- getTranslation() {
430
- if (typeof this.translation !== "undefined") {
431
- return this.translation;
432
- }
433
- else if (typeof this.language !== "undefined" && typeof this.translations[this.language] === "object") {
434
- return this.translations[this.language];
435
- }
436
- else {
437
- return this.translations[LoggingViewerModalComponent.languageEn];
438
- }
439
- }
440
- }
441
- LoggingViewerModalComponent.languageEn = "en";
442
- LoggingViewerModalComponent.languageDe = "de";
443
- LoggingViewerModalComponent.decorators = [
444
- { type: Component, args: [{
445
- selector: "ionic-logging-viewer-modal",
446
- template: "<ion-header>\n\t<ion-toolbar color=primary>\n\t\t<ion-title>{{ getTranslation().title }}</ion-title>\n\t\t<ion-buttons slot=\"start\">\n\t\t\t<ion-button *ngIf=\"!isAndroid\" (click)=\"onClose()\">\n\t\t\t\t{{ getTranslation().cancel }}\n\t\t\t</ion-button>\n\t\t\t<ion-button *ngIf=\"isAndroid\" icon-only (click)=\"onClose()\">\n\t\t\t\t<ion-icon name=\"md-close\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-search [placeholder]=\"getTranslation().searchPlaceholder\"></ionic-logging-viewer-search>\n\t\t<ion-buttons slot=\"end\" *ngIf=\"allowClearLogs !== false\" class=\"clearLogs\">\n\t\t\t<ion-button (click)=\"onClearLogs()\">\n\t\t\t\t<ion-icon name=\"trash-outline\"></ion-icon>\n\t\t\t</ion-button>\n\t\t</ion-buttons>\n\t</ion-toolbar>\n\t<ion-toolbar>\n\t\t<ionic-logging-viewer-levels></ionic-logging-viewer-levels>\n\t</ion-toolbar>\n</ion-header>\n<ion-content>\n\t<ionic-logging-viewer [localStorageKeys]=\"localStorageKeys\"></ionic-logging-viewer>\n</ion-content>",
447
- styles: ["ionic-logging-viewer-levels{width:100%;padding-left:12px;padding-right:12px}.clearLogs{padding-top:3px}"]
448
- },] }
449
- ];
450
- LoggingViewerModalComponent.ctorParameters = () => [
451
- { type: Platform },
452
- { type: AlertController },
453
- { type: ModalController },
454
- { type: LoggingService }
455
- ];
456
- LoggingViewerModalComponent.propDecorators = {
457
- language: [{ type: Input }],
458
- translation: [{ type: Input }],
459
- localStorageKeys: [{ type: Input }],
460
- allowClearLogs: [{ type: Input }]
461
- };
462
-
463
- class LoggingViewerModule {
464
- }
465
- LoggingViewerModule.decorators = [
466
- { type: NgModule, args: [{
467
- imports: [
468
- CommonModule,
469
- FormsModule,
470
- IonicModule
471
- ],
472
- declarations: [
473
- LoggingViewerComponent,
474
- LoggingViewerSearchComponent,
475
- LoggingViewerLevelsComponent,
476
- LoggingViewerModalComponent
477
- ],
478
- entryComponents: [],
479
- exports: [
480
- LoggingViewerComponent,
481
- LoggingViewerSearchComponent,
482
- LoggingViewerLevelsComponent,
483
- LoggingViewerModalComponent
484
- ],
485
- providers: [
486
- LoggingViewerFilterService
487
- ]
488
- },] }
489
- ];
490
-
491
- /*
492
- * Public API Surface of ionic-logging-viewer
493
- */
494
-
495
- /**
496
- * Generated bundle index. Do not edit.
497
- */
498
-
499
- export { LoggingViewerComponent, LoggingViewerLevelsComponent, LoggingViewerModalComponent, LoggingViewerModule, LoggingViewerSearchComponent, LoggingViewerFilterService as ɵa };
500
- //# sourceMappingURL=ionic-logging-viewer.js.map