@esfaenza/admin-module 13.1.0-beta9 → 13.1.3

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 (54) hide show
  1. package/README.md +1 -24
  2. package/esm2020/lib/admin-module-messages.mjs +8 -0
  3. package/esm2020/lib/admin-module.comms.service.mjs +30 -0
  4. package/esm2020/lib/admin-module.module.mjs +29 -34
  5. package/esm2020/lib/components/audits/adm_audits.component.mjs +24 -20
  6. package/esm2020/lib/components/enqueues/adm_enq.component.mjs +28 -26
  7. package/esm2020/lib/components/logs/adm_logs.component.loc.mjs +19 -0
  8. package/esm2020/lib/components/logs/adm_logs.component.mjs +21 -12
  9. package/esm2020/lib/components/metrics/metrics_search.component.mjs +27 -23
  10. package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +2 -2
  11. package/esm2020/lib/components/profiler/adm_profiler.component.mjs +28 -27
  12. package/esm2020/lib/components/topact/topact_search.component.mjs +27 -25
  13. package/esm2020/lib/components/workers/adm_wrk.component.mjs +27 -25
  14. package/esm2020/lib/models/components/AuditsView.mjs +1 -1
  15. package/esm2020/lib/models/components/LocksView.mjs +1 -1
  16. package/esm2020/lib/models/components/ProfilerDataNode.mjs +3 -3
  17. package/esm2020/lib/models/components/ProfilerDataNodesView.mjs +1 -1
  18. package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
  19. package/esm2020/lib/models/components/TopActivity.mjs +1 -1
  20. package/esm2020/lib/models/shared/Locale.mjs +1 -1
  21. package/esm2020/lib/tokens.mjs +2 -1
  22. package/esm2020/public-api.mjs +2 -2
  23. package/fesm2015/esfaenza-admin-module.mjs +686 -732
  24. package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
  25. package/fesm2020/esfaenza-admin-module.mjs +716 -760
  26. package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
  27. package/lib/admin-module-messages.d.ts +6 -0
  28. package/lib/admin-module.comms.service.d.ts +10 -0
  29. package/lib/admin-module.module.d.ts +11 -2
  30. package/lib/components/audits/adm_audits.component.d.ts +6 -4
  31. package/lib/components/enqueues/adm_enq.component.d.ts +6 -6
  32. package/lib/components/logs/adm_logs.component.d.ts +5 -3
  33. package/lib/components/logs/adm_logs.component.loc.d.ts +7 -0
  34. package/lib/components/metrics/metrics_search.component.d.ts +9 -6
  35. package/lib/components/profiler/adm_profiler.component.d.ts +6 -6
  36. package/lib/components/topact/topact_search.component.d.ts +9 -6
  37. package/lib/components/workers/adm_wrk.component.d.ts +7 -6
  38. package/lib/models/components/AuditsView.d.ts +1 -1
  39. package/lib/models/components/ProfilerDataNodesView.d.ts +1 -1
  40. package/lib/models/components/TopActivitiesDataView.d.ts +1 -1
  41. package/lib/models/components/TopActivity.d.ts +3 -1
  42. package/lib/tokens.d.ts +1 -0
  43. package/package.json +11 -2
  44. package/public-api.d.ts +1 -1
  45. package/esm2020/lib/communications/base/BaseModuleCommunicationsConsumer.mjs +0 -3
  46. package/esm2020/lib/components/index.mjs +0 -14
  47. package/esm2020/lib/models/components/Lock.loc.mjs +0 -13
  48. package/esm2020/lib/models/components/Lock.mjs +0 -48
  49. package/esm2020/lib/models/index.mjs +0 -22
  50. package/lib/communications/base/BaseModuleCommunicationsConsumer.d.ts +0 -3
  51. package/lib/components/index.d.ts +0 -13
  52. package/lib/models/components/Lock.d.ts +0 -12
  53. package/lib/models/components/Lock.loc.d.ts +0 -42
  54. package/lib/models/index.d.ts +0 -21
@@ -1,107 +1,195 @@
1
- import * as i4 from '@angular/common';
1
+ import * as i4$1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
- import * as i10 from '@angular/forms';
3
+ import * as i9 from '@angular/forms';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import * as i0 from '@angular/core';
6
- import { InjectionToken, Injectable, Inject, Component, ViewChild, LOCALE_ID, NgModule } from '@angular/core';
7
- import * as i7 from '@angular/router';
6
+ import { InjectionToken, Injectable, Inject, Component, ViewChild, NgModule } from '@angular/core';
7
+ import * as i5 from '@angular/router';
8
8
  import { RouterModule } from '@angular/router';
9
9
  import { MatIconModule } from '@angular/material/icon';
10
10
  import { MatDatepickerModule } from '@angular/material/datepicker';
11
11
  import { MatDayjsDateModule } from '@esfaenza/material-dayjs-adapter';
12
12
  import { MatInputModule } from '@angular/material/input';
13
- import { MAT_DATE_LOCALE, MAT_DATE_FORMATS } from '@angular/material/core';
14
13
  import { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';
15
- import * as i11 from 'ngx-bootstrap/modal';
14
+ import * as i10 from 'ngx-bootstrap/modal';
16
15
  import { ModalModule } from 'ngx-bootstrap/modal';
17
16
  import { CsvModule } from '@ctrl/ngx-csv';
18
17
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
19
18
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
20
- import * as i9 from '@esfaenza/es-table';
19
+ import * as i8 from '@esfaenza/es-table';
21
20
  import { AppSearch, EsTableOperationDefinition, EsTableModule } from '@esfaenza/es-table';
22
- import * as i8 from '@esfaenza/forms-and-validations';
21
+ import * as i7 from '@esfaenza/forms-and-validations';
23
22
  import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
24
- import * as i9$1 from '@esfaenza/es-charts';
25
- import { LineChartData, LineSerie, DateValue, Limit, EsChartsModule } from '@esfaenza/es-charts';
23
+ import * as i8$1 from '@esfaenza/es-charts';
24
+ import { LineSerie, DateValue, LineChartData, Limit, EsChartsModule } from '@esfaenza/es-charts';
26
25
  import { EsGertrudeModule } from '@esfaenza/gertrude';
27
26
  import * as i2 from '@esfaenza/localizations';
28
27
  import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
29
28
  import { ContextMenuModule } from '@esfaenza/ngx-contextmenu';
30
- import { __decorate } from 'tslib';
31
- import { autoserialize, autoserializeAs } from 'cerialize';
32
29
  import * as i1 from '@esfaenza/extensions';
33
- import { Export } from '@esfaenza/extensions';
30
+ import { InboundMessageTypes, Export } from '@esfaenza/extensions';
34
31
  import * as i3 from '@esfaenza/preferences';
35
- import * as i6 from '@esfaenza/httpservice';
36
- import { map } from 'rxjs/operators';
32
+ import * as i4 from '@esfaenza/httpservice';
37
33
  import { HttpParams } from '@angular/common/http';
34
+ import { __decorate } from 'tslib';
35
+ import { autoserialize } from 'cerialize';
36
+ import { map } from 'rxjs/operators';
37
+
38
+ class AuditsView extends AppSearch {
39
+ constructor() {
40
+ super();
41
+ this.filteraction = '';
42
+ this.filterhttp = '';
43
+ }
44
+ }
45
+
46
+ const Repository = {
47
+ GET_Adm_ChangeProcessConsumerGroup: "/api/Adm/ChangeProcessConsumerGroup",
48
+ GET_Adm_ClearAllCaches: "/api/Adm/ClearAllCaches",
49
+ GET_Adm_GetConsumerGroups: "/api/Adm/GetConsumerGroups#cache",
50
+ GET_Adm_GetInfos: "/api/Adm/GetInfos",
51
+ GET_Adm_GetMetrics: "/api/Adm/GetMetrics",
52
+ POST_Adm_GetMetrics: "/api/Adm/GetMetrics",
53
+ POST_Adm_GetProfilerDataNodes: "/api/Adm/GetProfilerDataNodes",
54
+ POST_Adm_GetServerAudits: "/api/Adm/GetServerAudits",
55
+ POST_Adm_GetServerLocks: "/api/Adm/GetServerLocks",
56
+ GET_Adm_GetServerLogs: "/api/Adm/GetServerLogs",
57
+ POST_Adm_GetServerWorkers: "/api/Adm/GetServerWorkers",
58
+ POST_Adm_GetTopActivities: "/api/Adm/GetTopActivities",
59
+ GET_Adm_GetWorkerStatus: "/api/Adm/GetWorkerStatus",
60
+ GET_Adm_InvalidateServerSideCache: "/api/Adm/InvalidateServerSideCache",
61
+ GET_Adm_KillProcess: "/api/Adm/KillProcess",
62
+ GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
63
+ GET_Adm_StartWorker: "/api/Adm/StartWorker",
64
+ GET_Adm_StopWorker: "/api/Adm/StopWorker"
65
+ };
38
66
 
39
67
  const ADM_LOCALE = new InjectionToken('ADM_LOCALE');
40
- const ADM_BACKEND_URL = new InjectionToken('ADM_BACKEND_URL');
68
+ const ADM_BACKEND_URL = new InjectionToken('ADM_BACKEND_URL');
69
+ const ADM_MODULE_PATH = new InjectionToken('ADM_MODULE_PATH');
41
70
 
42
- class AdmProfilerComponentLoc extends LocalizationService {
71
+ class AdmAuditLoc extends LocalizationService {
43
72
  constructor(LOC_LOCALE) {
44
73
  super(LOC_LOCALE);
45
- super.set("en->it", "Profiler Search", ["Ricerca dati Profiler"]);
46
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
47
- super.set("en->it", "ID", ["ID"]);
48
- super.set("en->it", "Description", ["Descrizione"]);
49
- super.set("en->it", "Calls", ["Chiamate"]);
50
- super.set("en->it", "Time", ["Tempo"]);
51
- super.set("en->it", "Peak Time", ["Tempo Max"]);
52
- super.set("en->it", "Min. Time", ["Tempo Min"]);
53
- super.set("en->it", "Avg. Time", ["Tempo Medio"]);
54
- super.set("en->it", "Specific Time", ["Tempo Specifico"]);
55
- super.set("en->it", "Percentage", ["Percentuale"]);
56
- super.set("en->it", "Calls for Period", ["Chiamate Periodo"]);
57
- super.set("en->it", "Time for Period", ["Tempo Periodo"]);
58
- super.set("en->it", "Peak Time for Period", ["Tempo Max Periodo"]);
59
- super.set("en->it", "Min. Time for Period", ["Tempo Min Periodo"]);
60
- super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
61
- super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
62
- super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
74
+ super.set("en->it", "Search Application Audits", ["Ricerca Audit Applicativi"]);
75
+ super.set("en->it", "User", ["Utente"]);
76
+ super.set("en->it", "REST Call", ["Chiamata REST"]);
77
+ super.set("en->it", "Update", ["Aggiornamento"]);
78
+ super.set("en->it", "Route", ["Route"]);
79
+ super.set("en->it", "Action", ["Azione"]);
80
+ super.set("en->it", "HTTP Method", ["Metodo HTTP"]);
81
+ super.set("en->it", "Arguments", ["Argomenti"]);
82
+ super.set("en->it", "Object ID", ["ID Oggetto"]);
83
+ super.set("en->it", "Object Type", ["Tipo Oggetto"]);
84
+ super.set("en->it", "Object Data", ["Dati Oggetto"]);
85
+ super.set("en->it", "Loading Application Audits", ["Carico gli Audit dell'Applicazione"]);
86
+ super.set("en->it", "Date", ["Data"]);
87
+ super.set("en->it", "HTTP Response", ["Risposta HTTP"]);
88
+ super.set("en->it", "Application Error Code", ["Codice Errore Applicativo"]);
63
89
  }
64
90
  }
65
- AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
66
- AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc });
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
91
+ AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
92
+ AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, decorators: [{
68
94
  type: Injectable
69
95
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
70
96
  type: Inject,
71
97
  args: [ADM_LOCALE]
72
98
  }] }]; } });
73
99
 
74
- class AdmTopActivitieLoc extends LocalizationService {
75
- constructor(LOC_LOCALE) {
76
- super(LOC_LOCALE);
77
- super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
78
- super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
79
- super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
80
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
81
- super.set("en->it", "Top Activities", ["Attivita' Principali"]);
82
- super.set("en->it", "Node Description", ["Descrizione Nodo"]);
83
- super.set("en->it", "Node", ["Nodo"]);
84
- super.set("en->it", "Activity", ["Attivita'"]);
85
- super.set("en->it", "Limit", ["Limite"]);
86
- super.set("en->it", "Node Type", ["Tipo Nodo"]);
87
- super.set("en->it", "User", ["Utente"]);
88
- super.set("en->it", "Tenant", ["Tenant"]);
89
- super.set("en->it", "Process", ["Processo"]);
90
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
91
- super.set("en->it", "second/s", ["secondo/i"]);
92
- super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
93
- super.set("en->it", "CPUs", ["CPU"]);
100
+ // Angular
101
+ class AdmAuditsComponent {
102
+ constructor(lc, intercom, localStorage, http, route, location, backend, mod) {
103
+ this.lc = lc;
104
+ this.intercom = intercom;
105
+ this.localStorage = localStorage;
106
+ this.http = http;
107
+ this.route = route;
108
+ this.location = location;
109
+ this.backend = backend;
110
+ this.mod = mod;
111
+ this.searchView = new AuditsView();
112
+ this.Actions = [];
113
+ this.HttpMethods = [];
114
+ this.searchInProgress = false;
115
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
116
+ this.HttpMethods = [
117
+ { id: "GET", description: "GET" },
118
+ { id: "POST", description: "POST" },
119
+ { id: "PUT", description: "PUT" },
120
+ { id: "PATCH", description: "PATCH" },
121
+ { id: "DELETE", description: "DELETE" }
122
+ ];
123
+ this.Actions = [
124
+ { id: "C", description: this.lc.loc("REST Call") },
125
+ { id: "U", description: this.lc.loc("Update") },
126
+ { id: "D", description: this.lc.loc("Delete") }
127
+ ];
128
+ }
129
+ ngOnInit() {
130
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
131
+ }
132
+ ngOnDestroy() {
133
+ if (this.storageSub)
134
+ this.storageSub.unsubscribe();
135
+ }
136
+ async Init(ignoreStorage) {
137
+ let item = await this.localStorage.getItem("HotAudittato").toPromise();
138
+ if (!ignoreStorage && item) {
139
+ this.init(item);
140
+ }
141
+ else {
142
+ this.init(null);
143
+ this.location.replaceState(`/pages/${this.mod}/serveraudits`);
144
+ this.route.snapshot.queryParams = [];
145
+ await this.localStorage.removeItem("HotAudittato").toPromise();
146
+ }
147
+ }
148
+ init(HotPotato) {
149
+ //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
150
+ //Altirmenti genero il modello nuovo normalmente
151
+ if (HotPotato) {
152
+ this.searchView = HotPotato;
153
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
154
+ }
155
+ else {
156
+ this.searchView = new AuditsView();
157
+ this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
158
+ this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
159
+ this.sendSearch();
160
+ }
161
+ }
162
+ sendSearch(resetPage = true) {
163
+ this.searchInProgress = true;
164
+ if (resetPage)
165
+ this.searchView.page = 1;
166
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
167
+ }
168
+ POSTGetProcesses(url, data) {
169
+ this.http.post(url, data).subscribe(t => {
170
+ this.searchView = t;
171
+ this.searchInProgress = false;
172
+ this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
173
+ });
94
174
  }
95
175
  }
96
- AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
97
- AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
99
- type: Injectable
100
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
176
+ AdmAuditsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, deps: [{ token: i2.LocalizationService }, { token: i1.InterComService }, { token: i3.PreferencesService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: i4$1.Location }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
177
+ AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'Timestamp'\">{{'Date' | localize : lc}}</span>\r\n <span *th=\"'User'\">{{'User' | localize : lc}}</span>\r\n <span *th=\"'Action'\">{{'Action' | localize : lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'HTTP Method' | localize : lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Arguments' | localize : lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'HTTP Response' | localize : lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Application Error Code' | localize : lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Object Type' | localize : lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'Object ID' | localize : lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Object Data' | localize : lc}}</span>\r\n \r\n <strong *td=\"'Timestamp'; let pro\">{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let pro\">{{pro.user}}</span>\r\n <span *td=\"'Action'; let pro\">{{pro.action}}</span>\r\n <span *td=\"'HttpMethod'; let pro\">{{pro.httpmethod}}</span>\r\n <span *td=\"'Route'; let pro\">{{pro.route}}</span>\r\n <span *td=\"'Args'; let pro\">{{pro.args}}</span>\r\n <span *td=\"'HttpResponse'; let pro\">{{pro.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let pro\">{{pro.mdmerrorcode}}</span>\r\n <span *td=\"'ObjectType'; let pro\">{{pro.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let pro\">{{pro.objectid}}</span>\r\n <span *td=\"'ObjectData'; let pro\">{{pro.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation"] }, { type: i8.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }], pipes: { "localize": i2.LocalizePipe, "loc_date": i2.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
179
+ type: Component,
180
+ args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [MultipleOrderingDirectives]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'Timestamp'\">{{'Date' | localize : lc}}</span>\r\n <span *th=\"'User'\">{{'User' | localize : lc}}</span>\r\n <span *th=\"'Action'\">{{'Action' | localize : lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'HTTP Method' | localize : lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Arguments' | localize : lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'HTTP Response' | localize : lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Application Error Code' | localize : lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Object Type' | localize : lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'Object ID' | localize : lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Object Data' | localize : lc}}</span>\r\n \r\n <strong *td=\"'Timestamp'; let pro\">{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let pro\">{{pro.user}}</span>\r\n <span *td=\"'Action'; let pro\">{{pro.action}}</span>\r\n <span *td=\"'HttpMethod'; let pro\">{{pro.httpmethod}}</span>\r\n <span *td=\"'Route'; let pro\">{{pro.route}}</span>\r\n <span *td=\"'Args'; let pro\">{{pro.args}}</span>\r\n <span *td=\"'HttpResponse'; let pro\">{{pro.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let pro\">{{pro.mdmerrorcode}}</span>\r\n <span *td=\"'ObjectType'; let pro\">{{pro.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let pro\">{{pro.objectid}}</span>\r\n <span *td=\"'ObjectData'; let pro\">{{pro.objectdata}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
181
+ }], ctorParameters: function () { return [{ type: i2.LocalizationService }, { type: i1.InterComService }, { type: i3.PreferencesService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: i4$1.Location }, { type: undefined, decorators: [{
101
182
  type: Inject,
102
- args: [ADM_LOCALE]
183
+ args: [ADM_BACKEND_URL]
184
+ }] }, { type: undefined, decorators: [{
185
+ type: Inject,
186
+ args: [ADM_MODULE_PATH]
103
187
  }] }]; } });
104
188
 
189
+ class ProcessesView extends AppSearch {
190
+ constructor() { super(); }
191
+ }
192
+
105
193
  class AdmWrkLoc extends LocalizationService {
106
194
  constructor(LOC_LOCALE) {
107
195
  super(LOC_LOCALE);
@@ -128,601 +216,25 @@ class AdmWrkLoc extends LocalizationService {
128
216
  AdmWrkLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
129
217
  AdmWrkLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc });
130
218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc, decorators: [{
131
- type: Injectable
132
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
133
- type: Inject,
134
- args: [ADM_LOCALE]
135
- }] }]; } });
136
-
137
- class AdmAuditLoc extends LocalizationService {
138
- constructor(LOC_LOCALE) {
139
- super(LOC_LOCALE);
140
- super.set("en->it", "Search Application Audits", ["Ricerca Audit Applicativi"]);
141
- super.set("en->it", "User", ["Utente"]);
142
- super.set("en->it", "REST Call", ["Chiamata REST"]);
143
- super.set("en->it", "Update", ["Aggiornamento"]);
144
- super.set("en->it", "Route", ["Route"]);
145
- super.set("en->it", "Action", ["Azione"]);
146
- super.set("en->it", "HTTP Method", ["Metodo HTTP"]);
147
- super.set("en->it", "Arguments", ["Argomenti"]);
148
- super.set("en->it", "Object ID", ["ID Oggetto"]);
149
- super.set("en->it", "Object Type", ["Tipo Oggetto"]);
150
- super.set("en->it", "Object Data", ["Dati Oggetto"]);
151
- super.set("en->it", "Loading Application Audits", ["Carico gli Audit dell'Applicazione"]);
152
- super.set("en->it", "Date", ["Data"]);
153
- super.set("en->it", "HTTP Response", ["Risposta HTTP"]);
154
- super.set("en->it", "Application Error Code", ["Codice Errore Applicativo"]);
155
- }
156
- }
157
- AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
158
- AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, decorators: [{
160
- type: Injectable
161
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
162
- type: Inject,
163
- args: [ADM_LOCALE]
164
- }] }]; } });
165
-
166
- class AdmEnqLoc extends LocalizationService {
167
- constructor(LOC_LOCALE) {
168
- super(LOC_LOCALE);
169
- super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
170
- super.set("en->it", "Name", ["Nome"]);
171
- super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
172
- super.set("en->it", "Global", ["Globale"]);
173
- }
174
- }
175
- AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
176
- AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
178
- type: Injectable
179
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
180
- type: Inject,
181
- args: [ADM_LOCALE]
182
- }] }]; } });
183
-
184
- class AdmMetricsLoc extends LocalizationService {
185
- constructor(LOC_LOCALE) {
186
- super(LOC_LOCALE);
187
- super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
188
- super.set("en->it", "Session ID", ["Cod. Sessione"]);
189
- super.set("en->it", "Session Serial", ["Seriale Sessione"]);
190
- super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
191
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
192
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
193
- super.set("en->it", "second/s", ["secondo/i"]);
194
- super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
195
- }
196
- }
197
- AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
198
- AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
200
- type: Injectable
201
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
202
- type: Inject,
203
- args: [ADM_LOCALE]
204
- }] }]; } });
205
-
206
- class KeyValue {
207
- constructor(id, description) {
208
- this.id = id;
209
- this.description = description;
210
- }
211
- }
212
-
213
- const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
214
-
215
- const Repository = {
216
- GET_Adm_ChangeProcessConsumerGroup: "/api/Adm/ChangeProcessConsumerGroup",
217
- GET_Adm_ClearAllCaches: "/api/Adm/ClearAllCaches",
218
- GET_Adm_GetConsumerGroups: "/api/Adm/GetConsumerGroups#cache",
219
- GET_Adm_GetInfos: "/api/Adm/GetInfos",
220
- GET_Adm_GetMetrics: "/api/Adm/GetMetrics",
221
- POST_Adm_GetMetrics: "/api/Adm/GetMetrics",
222
- POST_Adm_GetProfilerDataNodes: "/api/Adm/GetProfilerDataNodes",
223
- POST_Adm_GetServerAudits: "/api/Adm/GetServerAudits",
224
- POST_Adm_GetServerLocks: "/api/Adm/GetServerLocks",
225
- GET_Adm_GetServerLogs: "/api/Adm/GetServerLogs",
226
- POST_Adm_GetServerWorkers: "/api/Adm/GetServerWorkers",
227
- POST_Adm_GetTopActivities: "/api/Adm/GetTopActivities",
228
- GET_Adm_GetWorkerStatus: "/api/Adm/GetWorkerStatus",
229
- GET_Adm_InvalidateServerSideCache: "/api/Adm/InvalidateServerSideCache",
230
- GET_Adm_KillProcess: "/api/Adm/KillProcess",
231
- GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
232
- GET_Adm_StartWorker: "/api/Adm/StartWorker",
233
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
234
- };
235
-
236
- const Lock_loc = {
237
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
238
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
239
- 'Hold Mode': { 'en-US': "Hold Mode", 'it-IT': "Modalità Hold" },
240
- 'Request Mode': { 'en-US': "Request Mode", 'it-IT': "Modalità Richiesta" },
241
- 'Parameter 1': { 'en-US': "Parameter 1", 'it-IT': "Parametro 1" },
242
- 'Parameter 2': { 'en-US': "Parameter 2", 'it-IT': "Parametro 2" },
243
- 'Tenant Level Lock': { 'en-US': "Tenant Level Lock", 'it-IT': "Lock a livello Tenant" },
244
- 'Tenant': { 'en-US': "Tenant", 'it-IT': "Tenant" },
245
- 'Grant Time': { 'en-US': "Grant Time", 'it-IT': "Istante Concessione" },
246
- 'Blocked on SID': { 'en-US': "Blocked on SID", 'it-IT': "Bloccato su SID" }
247
- };
248
-
249
- const ProfilerDataNode_loc = {
250
- 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
251
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
252
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
253
- 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
254
- 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
255
- 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
256
- 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
257
- 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
258
- 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
259
- 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
260
- 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
261
- 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
262
- 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
263
- 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
264
- 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
265
- 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
266
- 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
267
- };
268
-
269
- class ProcessesView extends AppSearch {
270
- constructor() { super(); }
271
- }
272
-
273
- class ProfilerDataNode {
274
- }
275
- __decorate([
276
- Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
277
- autoserialize
278
- ], ProfilerDataNode.prototype, "parentid", void 0);
279
- __decorate([
280
- Export(20, ProfilerDataNode_loc["ID"][Locale]),
281
- autoserialize
282
- ], ProfilerDataNode.prototype, "id", void 0);
283
- __decorate([
284
- Export(30, ProfilerDataNode_loc["Description"][Locale]),
285
- autoserialize
286
- ], ProfilerDataNode.prototype, "description", void 0);
287
- __decorate([
288
- Export(40, ProfilerDataNode_loc["Calls"][Locale]),
289
- autoserialize
290
- ], ProfilerDataNode.prototype, "calls", void 0);
291
- __decorate([
292
- Export(50, ProfilerDataNode_loc["Time"][Locale]),
293
- autoserialize
294
- ], ProfilerDataNode.prototype, "time", void 0);
295
- __decorate([
296
- Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
297
- autoserialize
298
- ], ProfilerDataNode.prototype, "peaktime", void 0);
299
- __decorate([
300
- Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
301
- autoserialize
302
- ], ProfilerDataNode.prototype, "mintime", void 0);
303
- __decorate([
304
- Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
305
- autoserialize
306
- ], ProfilerDataNode.prototype, "avgtime", void 0);
307
- __decorate([
308
- Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
309
- autoserialize
310
- ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
311
- __decorate([
312
- Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
313
- autoserialize
314
- ], ProfilerDataNode.prototype, "percentage", void 0);
315
- __decorate([
316
- Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
317
- autoserialize
318
- ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
319
- __decorate([
320
- Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
321
- autoserialize
322
- ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
323
- __decorate([
324
- Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
325
- autoserialize
326
- ], ProfilerDataNode.prototype, "snappeaktime", void 0);
327
- __decorate([
328
- Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
329
- autoserialize
330
- ], ProfilerDataNode.prototype, "snapmintime", void 0);
331
- __decorate([
332
- Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
333
- autoserialize
334
- ], ProfilerDataNode.prototype, "snapavgtime", void 0);
335
- __decorate([
336
- Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
337
- autoserialize
338
- ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
339
- __decorate([
340
- Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
341
- autoserialize
342
- ], ProfilerDataNode.prototype, "snappercentage", void 0);
343
-
344
- class ProfilerDataNodesView extends AppSearch {
345
- constructor() { super(); }
346
- }
347
-
348
- class TopNode {
349
- }
350
-
351
- class TopSession {
352
- }
353
-
354
- class ActiveSession {
355
- }
356
-
357
- class TopActivity {
358
- }
359
-
360
- class TopActivitiesDataView extends AppSearch {
361
- constructor() { super(); }
362
- }
363
-
364
- class Audit {
365
- }
366
-
367
- class AuditsView extends AppSearch {
368
- constructor() {
369
- super();
370
- this.filteraction = '';
371
- this.filterhttp = '';
372
- }
373
- }
374
-
375
- class Lock {
376
- }
377
- __decorate([
378
- Export(10, Lock_loc["ID"][Locale]),
379
- autoserialize
380
- ], Lock.prototype, "id", void 0);
381
- __decorate([
382
- Export(20, Lock_loc["Description"][Locale]),
383
- autoserialize
384
- ], Lock.prototype, "description", void 0);
385
- __decorate([
386
- Export(30, Lock_loc["Hold Mode"][Locale]),
387
- autoserialize
388
- ], Lock.prototype, "holdmode", void 0);
389
- __decorate([
390
- Export(40, Lock_loc["Request Mode"][Locale]),
391
- autoserialize
392
- ], Lock.prototype, "requestmode", void 0);
393
- __decorate([
394
- Export(50, Lock_loc["Parameter 1"][Locale]),
395
- autoserialize
396
- ], Lock.prototype, "p1", void 0);
397
- __decorate([
398
- Export(60, Lock_loc["Parameter 2"][Locale]),
399
- autoserialize
400
- ], Lock.prototype, "p2", void 0);
401
- __decorate([
402
- Export(70, Lock_loc["Tenant Level Lock"][Locale]),
403
- autoserialize
404
- ], Lock.prototype, "tenantlock", void 0);
405
- __decorate([
406
- Export(80, Lock_loc["Tenant"][Locale]),
407
- autoserialize
408
- ], Lock.prototype, "tenant", void 0);
409
- __decorate([
410
- Export(90, Lock_loc["Blocked on SID"][Locale]),
411
- autoserialize
412
- ], Lock.prototype, "blockedon", void 0);
413
- __decorate([
414
- Export(100, Lock_loc["Grant Time"][Locale], "DD/MM/YYYY HH:mm:ss"),
415
- autoserializeAs(Date)
416
- ], Lock.prototype, "granttime", void 0);
417
-
418
- class LocksView extends AppSearch {
419
- constructor() { super(); }
420
- }
421
-
422
- class DirectorInfos {
423
- }
424
-
425
- class MetricsView extends AppSearch {
426
- constructor() { super(); }
427
- }
428
-
429
- class MetricChart extends LineChartData {
430
- }
431
-
432
- class Metric {
433
- }
434
-
435
- class BaseModuleCommunicationsConsumer {
436
- }
437
-
438
- class AdmProfilerComponent {
439
- constructor(expExts, lc, localStorage, location, _state, http, route, backend) {
440
- this.expExts = expExts;
441
- this.lc = lc;
442
- this.localStorage = localStorage;
443
- this.location = location;
444
- this._state = _state;
445
- this.http = http;
446
- this.route = route;
447
- this.backend = backend;
448
- this.searchView = new ProfilerDataNodesView();
449
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
450
- }
451
- ngOnInit() {
452
- this.storageSub = this.route.queryParams.subscribe(params => {
453
- this.Init(params["ignoreStorage"]);
454
- });
455
- }
456
- Init(ignoreStore) {
457
- this.doInit(ignoreStore);
458
- }
459
- async doInit(ignoreStorage) {
460
- let item = await this.localStorage.getItem("HotSearchProfilato").toPromise();
461
- if (!ignoreStorage && item) {
462
- this.init(item);
463
- }
464
- else {
465
- this.init(null);
466
- this.location.replaceState("/pages/adm/profiler");
467
- this.route.snapshot.queryParams = [];
468
- await this.localStorage.removeItem("HotSearchProfilato").toPromise();
469
- }
470
- }
471
- init(HotPotato) {
472
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
473
- //Altirmenti genero il modello nuovo normalmente
474
- if (HotPotato) {
475
- this.searchView = HotPotato;
476
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
477
- }
478
- else {
479
- this.searchView = new ProfilerDataNodesView();
480
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
481
- setTimeout(() => this.sendSearch());
482
- }
483
- }
484
- ngOnDestroy() {
485
- if (this.storageSub)
486
- this.storageSub.unsubscribe();
487
- }
488
- sendSearch(resetPage = true) {
489
- this.searchView.searchinprogress = true;
490
- if (resetPage)
491
- this.searchView.page = 1;
492
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
493
- }
494
- POSTGetItems(url, data) {
495
- this.http.post(url, data).subscribe(t => {
496
- this.searchView = t;
497
- this.searchView.searchinprogress = false;
498
- this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
499
- });
500
- }
501
- prepareExport(dataCallBack) {
502
- var view = JSON.parse(JSON.stringify(this.searchView));
503
- view.page = 1;
504
- view.itemsperpageoverride = 9999999;
505
- this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
506
- let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
507
- dataCallBack(items);
508
- });
509
- }
510
- }
511
- AdmProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, deps: [{ token: i1.ExportService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4.Location }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
512
- AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmProfilerComponent, selector: "adm_profiler", providers: [
513
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
514
- ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Profiler Search' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [UseCustomCells]=\"true\" [ParentKey]=\"'parentid'\" [OwnKey]=\"'id'\" [StartsExpanded]=\"false\"\r\n [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\" [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"1\" class=\"app-nowrap\">{{'ID' | localize : lc}}</th>\r\n <th es-th=\"2\" class=\"app-nowrap\">{{'Description' | localize : lc}}</th>\r\n <th es-th=\"3\" class=\"app-nowrap\">{{'Calls' | localize : lc}}</th>\r\n <th es-th=\"4\" class=\"app-nowrap\">{{'Time' | localize : lc}}</th>\r\n <th es-th=\"5\" class=\"app-nowrap\">{{'Peak Time' | localize : lc}}</th>\r\n <th es-th=\"6\" class=\"app-nowrap\">{{'Min. Time' | localize : lc}}</th>\r\n <th es-th=\"7\" class=\"app-nowrap\">{{'Avg. Time' | localize : lc}}</th>\r\n <th es-th=\"8\" class=\"app-nowrap\">{{'Specific Time' | localize : lc}}</th>\r\n <th es-th=\"9\" class=\"app-nowrap\">{{'Percentage' | localize : lc}}</th>\r\n <th es-th=\"10\" class=\"app-nowrap\">{{'Calls for Period' | localize : lc}}</th>\r\n <th es-th=\"11\" class=\"app-nowrap\">{{'Time for Period' | localize : lc}}</th>\r\n <th es-th=\"12\" class=\"app-nowrap\">{{'Peak Time for Period' | localize : lc}}</th>\r\n <th es-th=\"13\" class=\"app-nowrap\">{{'Min. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"14\" class=\"app-nowrap\">{{'Avg. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"15\" class=\"app-nowrap\">{{'Specific Time for Period' | localize : lc}}</th>\r\n <th es-th=\"16\" class=\"app-nowrap\">{{'Percentage for Period' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td es-td=\"1\" class=\"app-nowrap\">{{item.id}}</td>\r\n <td es-td=\"2\" class=\"app-nowrap\"><span title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\"}}</span></td>\r\n <td es-td=\"3\" class=\"app-nowrap\">{{item.calls}}</td>\r\n <td es-td=\"4\" class=\"app-nowrap\">{{item.time}}</td>\r\n <td es-td=\"5\" class=\"app-nowrap\">{{item.peaktime}}</td>\r\n <td es-td=\"6\" class=\"app-nowrap\">{{item.mintime}}</td>\r\n <td es-td=\"7\" class=\"app-nowrap\">{{item.avgtime}}</td>\r\n <td es-td=\"8\" class=\"app-nowrap\">{{item.timewithoutchildren}}</td>\r\n <td es-td=\"9\" class=\"app-nowrap\">{{item.percentage}}</td>\r\n <td es-td=\"10\" class=\"app-nowrap\">{{item.snapdeltacalls}}</td>\r\n <td es-td=\"11\" class=\"app-nowrap\">{{item.snapdeltatime}}</td>\r\n <td es-td=\"12\" class=\"app-nowrap\">{{item.snappeaktime}}</td>\r\n <td es-td=\"13\" class=\"app-nowrap\">{{item.snapmintime}}</td>\r\n <td es-td=\"14\" class=\"app-nowrap\">{{item.snapavgtime}}</td>\r\n <td es-td=\"15\" class=\"app-nowrap\">{{item.snaptimewithoutchildren}}</td>\r\n <td es-td=\"16\" class=\"app-nowrap\">{{item.snappercentage}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i2.LocalizePipe } });
515
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
516
- type: Component,
517
- args: [{ selector: "adm_profiler", providers: [
518
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
519
- ], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Profiler Search' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [UseCustomCells]=\"true\" [ParentKey]=\"'parentid'\" [OwnKey]=\"'id'\" [StartsExpanded]=\"false\"\r\n [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\" [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"1\" class=\"app-nowrap\">{{'ID' | localize : lc}}</th>\r\n <th es-th=\"2\" class=\"app-nowrap\">{{'Description' | localize : lc}}</th>\r\n <th es-th=\"3\" class=\"app-nowrap\">{{'Calls' | localize : lc}}</th>\r\n <th es-th=\"4\" class=\"app-nowrap\">{{'Time' | localize : lc}}</th>\r\n <th es-th=\"5\" class=\"app-nowrap\">{{'Peak Time' | localize : lc}}</th>\r\n <th es-th=\"6\" class=\"app-nowrap\">{{'Min. Time' | localize : lc}}</th>\r\n <th es-th=\"7\" class=\"app-nowrap\">{{'Avg. Time' | localize : lc}}</th>\r\n <th es-th=\"8\" class=\"app-nowrap\">{{'Specific Time' | localize : lc}}</th>\r\n <th es-th=\"9\" class=\"app-nowrap\">{{'Percentage' | localize : lc}}</th>\r\n <th es-th=\"10\" class=\"app-nowrap\">{{'Calls for Period' | localize : lc}}</th>\r\n <th es-th=\"11\" class=\"app-nowrap\">{{'Time for Period' | localize : lc}}</th>\r\n <th es-th=\"12\" class=\"app-nowrap\">{{'Peak Time for Period' | localize : lc}}</th>\r\n <th es-th=\"13\" class=\"app-nowrap\">{{'Min. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"14\" class=\"app-nowrap\">{{'Avg. Time for Period' | localize : lc}}</th>\r\n <th es-th=\"15\" class=\"app-nowrap\">{{'Specific Time for Period' | localize : lc}}</th>\r\n <th es-th=\"16\" class=\"app-nowrap\">{{'Percentage for Period' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-item>\r\n <td es-td=\"1\" class=\"app-nowrap\">{{item.id}}</td>\r\n <td es-td=\"2\" class=\"app-nowrap\"><span title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\"}}</span></td>\r\n <td es-td=\"3\" class=\"app-nowrap\">{{item.calls}}</td>\r\n <td es-td=\"4\" class=\"app-nowrap\">{{item.time}}</td>\r\n <td es-td=\"5\" class=\"app-nowrap\">{{item.peaktime}}</td>\r\n <td es-td=\"6\" class=\"app-nowrap\">{{item.mintime}}</td>\r\n <td es-td=\"7\" class=\"app-nowrap\">{{item.avgtime}}</td>\r\n <td es-td=\"8\" class=\"app-nowrap\">{{item.timewithoutchildren}}</td>\r\n <td es-td=\"9\" class=\"app-nowrap\">{{item.percentage}}</td>\r\n <td es-td=\"10\" class=\"app-nowrap\">{{item.snapdeltacalls}}</td>\r\n <td es-td=\"11\" class=\"app-nowrap\">{{item.snapdeltatime}}</td>\r\n <td es-td=\"12\" class=\"app-nowrap\">{{item.snappeaktime}}</td>\r\n <td es-td=\"13\" class=\"app-nowrap\">{{item.snapmintime}}</td>\r\n <td es-td=\"14\" class=\"app-nowrap\">{{item.snapavgtime}}</td>\r\n <td es-td=\"15\" class=\"app-nowrap\">{{item.snaptimewithoutchildren}}</td>\r\n <td es-td=\"16\" class=\"app-nowrap\">{{item.snappercentage}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
520
- }], ctorParameters: function () { return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
521
- type: Inject,
522
- args: [ADM_BACKEND_URL]
523
- }] }]; } });
524
-
525
- class AdmLogsComponent {
526
- constructor(_state, http, route, backend) {
527
- this._state = _state;
528
- this.http = http;
529
- this.route = route;
530
- this.backend = backend;
531
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
532
- }
533
- ngOnInit() {
534
- this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
535
- }
536
- }
537
- AdmLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, deps: [{ token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
538
- AdmLogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmLogsComponent, selector: "adm_logs", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>", directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
540
- type: Component,
541
- args: [{ selector: "adm_logs", template: "<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>" }]
542
- }], ctorParameters: function () { return [{ type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
543
- type: Inject,
544
- args: [ADM_BACKEND_URL]
545
- }] }]; } });
546
-
547
- class AdmTopActivitiesComponent {
548
- constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
549
- this.dateExts = dateExts;
550
- this.lc = lc;
551
- this.localStorage = localStorage;
552
- this.location = location;
553
- this._state = _state;
554
- this.http = http;
555
- this.route = route;
556
- this.backend = backend;
557
- this.searchView = new TopActivitiesDataView();
558
- this.autoUpdate = false;
559
- this.seconds = "5";
560
- this.seriesPropertiesMapping = {};
561
- this.propertiesSeriesMapping = {
562
- ["cputime"]: "CPU",
563
- ["waittime"]: "Wait",
564
- ["scripttime"]: "Scripting",
565
- ["dbtime"]: "DB",
566
- ["nettime"]: "Network",
567
- ["throttletime"]: "Throttling",
568
- ["sleeptime"]: "Sleep",
569
- ["iotime"]: "IO"
570
- };
571
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
572
- }
573
- ngOnInit() {
574
- this.storageSub = this.route.queryParams.subscribe(params => {
575
- this.Init(params["ignoreStorage"]);
576
- });
577
- }
578
- Init(ignoreStore) {
579
- this.doInit(ignoreStore);
580
- }
581
- async doInit(ignoreStorage) {
582
- let item = await this.localStorage.getItem("HotSearchTopAct").toPromise();
583
- if (!ignoreStorage && item) {
584
- this.init(item);
585
- }
586
- else {
587
- this.init(null);
588
- this.location.replaceState("/pages/adm/topact");
589
- this.route.snapshot.queryParams = [];
590
- await this.localStorage.removeItem("HotSearchTopAct").toPromise();
591
- }
592
- }
593
- init(HotPotato) {
594
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
595
- //Altirmenti genero il modello nuovo normalmente
596
- if (HotPotato) {
597
- this.searchView = HotPotato;
598
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
599
- }
600
- else {
601
- this.searchView = new TopActivitiesDataView();
602
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
603
- setTimeout(() => this.sendSearch());
604
- }
605
- }
606
- ngOnDestroy() {
607
- if (this.storageSub)
608
- this.storageSub.unsubscribe();
609
- }
610
- sendSearch(resetPage = true, update = false, searchViewOverride = null) {
611
- this.searchView.searchinprogress = true;
612
- if (resetPage)
613
- this.searchView.page = 1;
614
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride ?? this.searchView, update);
615
- }
616
- POSTGetItems(url, data, update) {
617
- this.http.post(url, data).subscribe(async (t) => {
618
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
619
- if (!update) {
620
- this.searchView = t;
621
- this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
622
- }
623
- var dirinfos = await this.getDirectorInfos();
624
- this.searchView.searchinprogress = false;
625
- this.reviewBindings(update, t, dirinfos);
626
- });
627
- }
628
- getDirectorInfos() {
629
- return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
630
- }
631
- reviewBindings(update, searchViewOverride, dirInfos) {
632
- let reference = (searchViewOverride ?? this.searchView).items[0];
633
- this.TopNodes = reference.topnodes;
634
- this.TopSessions = reference.topsessions;
635
- this.DirInfos = dirInfos;
636
- if (!reference.actsessions || reference.actsessions.length == 0) {
637
- this.TopActiveSessions = null;
638
- return;
639
- }
640
- let series = [];
641
- let props = Object.keys(reference.actsessions[0]);
642
- for (let i = 0; i < props.length; i++) {
643
- if (props[i] != 'sampletime') {
644
- let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
645
- series.push(s);
646
- this.seriesPropertiesMapping[props[i]] = s;
647
- }
648
- }
649
- for (let i = 0; i < reference.actsessions.length; i++) {
650
- let itemref = reference.actsessions[i];
651
- let theD = new Date(itemref.sampletime);
652
- for (let i = 0; i < props.length; i++)
653
- if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
654
- this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
655
- }
656
- if (update && this.ChartInstance) {
657
- let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc("Maximum Threads")));
658
- if (series.some(t => t.values.length > 0)) {
659
- this.ChartInstance.addData(data);
660
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
661
- }
662
- }
663
- else {
664
- this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc("Maximum Threads")));
665
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
666
- }
667
- }
668
- autoUpdateChanged() {
669
- if (!/^[1-9]\d*$/.test(this.seconds))
670
- this.seconds = '10';
671
- const secondsInMs = parseInt(this.seconds, null) * 1000;
672
- if (this.autoUpdate) {
673
- this.sendSearch(false, true);
674
- this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
675
- }
676
- else
677
- clearInterval(this.updateTimer);
678
- }
679
- dataSelectionChanged(event) {
680
- this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
681
- this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
682
- var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
683
- pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
684
- pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
685
- this.sendSearch(true, true, pseudoSearchView);
686
- }
687
- onChartLoaded(chart) {
688
- this.ChartInstance = chart;
689
- chart.Chart.events.on("ready", () => {
690
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
691
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
692
- setTimeout(() => {
693
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
694
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
695
- // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
696
- }, 500);
697
- });
698
- }
699
- }
700
- AdmTopActivitiesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, deps: [{ token: i1.DateService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4.Location }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
701
- AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
702
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
703
- ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { type: i9$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill"] }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i10.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }], pipes: { "localize": i2.LocalizePipe, "number": i4.DecimalPipe } });
704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
705
- type: Component,
706
- args: [{ selector: "topact_search", providers: [
707
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
708
- ], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
709
- }], ctorParameters: function () { return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
219
+ type: Injectable
220
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
710
221
  type: Inject,
711
- args: [ADM_BACKEND_URL]
222
+ args: [ADM_LOCALE]
712
223
  }] }]; } });
713
224
 
714
225
  // Angular
715
226
  class AdmWrkComponent {
716
- constructor(utiExts, msgExts, lc, localStorage, _state, http, route, location, backend) {
227
+ constructor(utiExts, msgExts, lc, localStorage, intercom, http, route, location, backend, mod) {
717
228
  this.utiExts = utiExts;
718
229
  this.msgExts = msgExts;
719
230
  this.lc = lc;
720
231
  this.localStorage = localStorage;
721
- this._state = _state;
232
+ this.intercom = intercom;
722
233
  this.http = http;
723
234
  this.route = route;
724
235
  this.location = location;
725
236
  this.backend = backend;
237
+ this.mod = mod;
726
238
  this.searchView = new ProcessesView();
727
239
  this.DynamicOps = [];
728
240
  this.valueToShow = "";
@@ -730,7 +242,7 @@ class AdmWrkComponent {
730
242
  this.newCg = "";
731
243
  this.CGs = [];
732
244
  this.CgDictionariesLoaded = false;
733
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
245
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
734
246
  this.DynamicOps = [
735
247
  new EsTableOperationDefinition("trace_on", this.lc.loc("Activate Process Tracing"), "fa fa-circle text-danger", "", "trace_enabled", "N"),
736
248
  new EsTableOperationDefinition("trace_off", this.lc.loc("Deactivate Process Tracing"), "fa fa-circle text-success", "", "trace_enabled", "Y"),
@@ -754,22 +266,19 @@ class AdmWrkComponent {
754
266
  }
755
267
  else {
756
268
  this.init(null);
757
- this.location.replaceState("/pages/adm/serverworkers");
269
+ this.location.replaceState(`/pages/${this.mod}/serverworkers`);
758
270
  this.route.snapshot.queryParams = [];
759
271
  await this.localStorage.removeItem("HotProcessato").toPromise();
760
272
  }
761
273
  }
762
274
  init(HotPotato) {
763
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
764
- //Altirmenti genero il modello nuovo normalmente
765
275
  if (HotPotato) {
766
276
  this.searchView = HotPotato;
767
277
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerWorkers"], this.searchView);
768
278
  }
769
279
  else {
770
280
  this.searchView = new ProcessesView();
771
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
772
- setTimeout(() => this.sendSearch());
281
+ this.sendSearch();
773
282
  }
774
283
  }
775
284
  sendSearch(resetPage = true) {
@@ -853,14 +362,17 @@ class AdmWrkComponent {
853
362
  return true;
854
363
  }
855
364
  }
856
- AdmWrkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkComponent, deps: [{ token: i1.UtilityService }, { token: i1.MessageService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: i4.Location }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
857
- AdmWrkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmWrkComponent, selector: "adm_wrk", viewQueries: [{ propertyName: "cgFrom", first: true, predicate: ["cgFrom"], descendants: true }, { propertyName: "dlgChangeCg", first: true, predicate: ["dlgChangeCg"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Processes' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'State' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Processes' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Back' | localize : lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">{{'Change Consumer Group' | localize : lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'New Consumer Group' | localize : lc\" [(ngModel)]=\"newCg\" name=\"newcg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Close' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Confirm' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i8.FormCheckboxComponent, selector: "form-checkbox" }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }, { type: i8.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }, { type: i11.ModalDirective, selector: "[bsModal]", inputs: ["config", "closeInterceptor"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["bs-modal"] }, { type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "localize": i2.LocalizePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }] });
365
+ AdmWrkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkComponent, deps: [{ token: i1.UtilityService }, { token: i1.MessageService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i1.InterComService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: i4$1.Location }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
366
+ AdmWrkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmWrkComponent, selector: "adm_wrk", viewQueries: [{ propertyName: "cgFrom", first: true, predicate: ["cgFrom"], descendants: true }, { propertyName: "dlgChangeCg", first: true, predicate: ["dlgChangeCg"], descendants: true }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Processes' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'State' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Processes' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Back' | localize : lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">{{'Change Consumer Group' | localize : lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'New Consumer Group' | localize : lc\" [(ngModel)]=\"newCg\" name=\"newcg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Close' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Confirm' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormCheckboxComponent, selector: "form-checkbox" }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }, { type: i7.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }, { type: i10.ModalDirective, selector: "[bsModal]", inputs: ["config", "closeInterceptor"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["bs-modal"] }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "localize": i2.LocalizePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }] });
858
367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkComponent, decorators: [{
859
368
  type: Component,
860
369
  args: [{ selector: "adm_wrk", viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Processes' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtertenant\" name=\"filterTenant\" [Placeholder]=\"'Tenant' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filterUser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [Placeholder]=\"'State' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Processes' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n <span class=\"app-nowrap\" *td=\"'full_wait_stack'; let value\">\r\n <span class=\"fa fa-list app-pointer\" (click)=\"valueToShow = value; dlgValue.show();\"></span>&nbsp;\r\n {{value.length > 70 ? value.substr(0, 67) + '...' : value}}\r\n </span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\">\r\n <button class=\"btn btn-secondary pull-left\" type=\"button\" (click)=\"back()\">{{'Back' | localize : lc}}</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div bsModal #dlgChangeCg=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">{{'Change Consumer Group' | localize : lc}}</h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgChangeCg.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <form novalidate #cgFrom=\"ngForm\" (ngSubmit)=\"cgFrom.valid && doChangeCg() && dlgChangeCg.hide()\">\r\n <div class=\"modal-body\">\r\n <form-select [Label]=\"'New Consumer Group' | localize : lc\" [(ngModel)]=\"newCg\" name=\"newcg\" [Source]=\"CGs\" required [Last]=\"true\"></form-select>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-5\" (click)=\"dlgChangeCg.hide()\">{{'Close' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Confirm' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<div bsModal #dlgValue=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-xl\" app-draggable=\".modal-header\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title pull-left\">\r\n Full Wait Stack\r\n </h5>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgValue.hide()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body app-padidng-bottom-20 app-padding-top-20\">\r\n <span class=\"app-wrap\">\r\n {{valueToShow}}\r\n </span>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgValue.hide()\">Chiudi</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
861
- }], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i1.MessageService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
370
+ }], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i1.MessageService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i1.InterComService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: i4$1.Location }, { type: undefined, decorators: [{
862
371
  type: Inject,
863
372
  args: [ADM_BACKEND_URL]
373
+ }] }, { type: undefined, decorators: [{
374
+ type: Inject,
375
+ args: [ADM_MODULE_PATH]
864
376
  }] }]; }, propDecorators: { cgFrom: [{
865
377
  type: ViewChild,
866
378
  args: ["cgFrom"]
@@ -869,110 +381,463 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
869
381
  args: ["dlgChangeCg"]
870
382
  }] } });
871
383
 
872
- class AdmAuditsComponent {
873
- constructor(lc, localStorage, _state, http, route, location, backend) {
384
+ const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
385
+
386
+ const ProfilerDataNode_loc = {
387
+ 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
388
+ 'ID': { 'en-US': "ID", 'it-IT': "ID" },
389
+ 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
390
+ 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
391
+ 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
392
+ 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
393
+ 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
394
+ 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
395
+ 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
396
+ 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
397
+ 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
398
+ 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
399
+ 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
400
+ 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
401
+ 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
402
+ 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
403
+ 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
404
+ };
405
+
406
+ class ProfilerDataNode {
407
+ }
408
+ __decorate([
409
+ Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
410
+ autoserialize
411
+ ], ProfilerDataNode.prototype, "parentid", void 0);
412
+ __decorate([
413
+ Export(20, ProfilerDataNode_loc["ID"][Locale]),
414
+ autoserialize
415
+ ], ProfilerDataNode.prototype, "id", void 0);
416
+ __decorate([
417
+ Export(30, ProfilerDataNode_loc["Description"][Locale]),
418
+ autoserialize
419
+ ], ProfilerDataNode.prototype, "description", void 0);
420
+ __decorate([
421
+ Export(40, ProfilerDataNode_loc["Calls"][Locale]),
422
+ autoserialize
423
+ ], ProfilerDataNode.prototype, "calls", void 0);
424
+ __decorate([
425
+ Export(50, ProfilerDataNode_loc["Time"][Locale]),
426
+ autoserialize
427
+ ], ProfilerDataNode.prototype, "time", void 0);
428
+ __decorate([
429
+ Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
430
+ autoserialize
431
+ ], ProfilerDataNode.prototype, "peaktime", void 0);
432
+ __decorate([
433
+ Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
434
+ autoserialize
435
+ ], ProfilerDataNode.prototype, "mintime", void 0);
436
+ __decorate([
437
+ Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
438
+ autoserialize
439
+ ], ProfilerDataNode.prototype, "avgtime", void 0);
440
+ __decorate([
441
+ Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
442
+ autoserialize
443
+ ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
444
+ __decorate([
445
+ Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
446
+ autoserialize
447
+ ], ProfilerDataNode.prototype, "percentage", void 0);
448
+ __decorate([
449
+ Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
450
+ autoserialize
451
+ ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
452
+ __decorate([
453
+ Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
454
+ autoserialize
455
+ ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
456
+ __decorate([
457
+ Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
458
+ autoserialize
459
+ ], ProfilerDataNode.prototype, "snappeaktime", void 0);
460
+ __decorate([
461
+ Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
462
+ autoserialize
463
+ ], ProfilerDataNode.prototype, "snapmintime", void 0);
464
+ __decorate([
465
+ Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
466
+ autoserialize
467
+ ], ProfilerDataNode.prototype, "snapavgtime", void 0);
468
+ __decorate([
469
+ Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
470
+ autoserialize
471
+ ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
472
+ __decorate([
473
+ Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
474
+ autoserialize
475
+ ], ProfilerDataNode.prototype, "snappercentage", void 0);
476
+
477
+ class ProfilerDataNodesView extends AppSearch {
478
+ constructor() { super(); }
479
+ }
480
+
481
+ class AdmProfilerComponentLoc extends LocalizationService {
482
+ constructor(LOC_LOCALE) {
483
+ super(LOC_LOCALE);
484
+ super.set("en->it", "Server Profiler", ["Profiler del Server"]);
485
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
486
+ super.set("en->it", "ID", ["ID"]);
487
+ super.set("en->it", "Description", ["Descrizione"]);
488
+ super.set("en->it", "Calls", ["Chiamate"]);
489
+ super.set("en->it", "Time", ["Tempo"]);
490
+ super.set("en->it", "Peak Time", ["Tempo Max"]);
491
+ super.set("en->it", "Min. Time", ["Tempo Min"]);
492
+ super.set("en->it", "Avg. Time", ["Tempo Medio"]);
493
+ super.set("en->it", "Specific Time", ["Tempo Specifico"]);
494
+ super.set("en->it", "Percentage", ["Percentuale"]);
495
+ super.set("en->it", "Calls for Period", ["Chiamate Periodo"]);
496
+ super.set("en->it", "Time for Period", ["Tempo Periodo"]);
497
+ super.set("en->it", "Peak Time for Period", ["Tempo Max Periodo"]);
498
+ super.set("en->it", "Min. Time for Period", ["Tempo Min Periodo"]);
499
+ super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
500
+ super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
501
+ super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
502
+ }
503
+ }
504
+ AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
505
+ AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc });
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
507
+ type: Injectable
508
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
509
+ type: Inject,
510
+ args: [ADM_LOCALE]
511
+ }] }]; } });
512
+
513
+ // Angular
514
+ class AdmProfilerComponent {
515
+ constructor(expExts, lc, localStorage, location, intercom, http, route, backend, mod) {
516
+ this.expExts = expExts;
874
517
  this.lc = lc;
875
518
  this.localStorage = localStorage;
876
- this._state = _state;
519
+ this.location = location;
520
+ this.intercom = intercom;
877
521
  this.http = http;
878
522
  this.route = route;
879
- this.location = location;
880
523
  this.backend = backend;
881
- this.searchView = new AuditsView();
882
- this.Actions = [];
883
- this.HttpMethods = [];
884
- this.searchInProgress = false;
885
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
886
- this.HttpMethods = [
887
- { id: "GET", description: "GET" },
888
- { id: "POST", description: "POST" },
889
- { id: "PUT", description: "PUT" },
890
- { id: "PATCH", description: "PATCH" },
891
- { id: "DELETE", description: "DELETE" }
892
- ];
893
- this.Actions = [
894
- { id: "C", description: this.lc.loc("REST Call") },
895
- { id: "U", description: this.lc.loc("Update") },
896
- { id: "D", description: this.lc.loc("Delete") }
897
- ];
524
+ this.mod = mod;
525
+ this.searchView = new ProfilerDataNodesView();
526
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
527
+ }
528
+ ngOnInit() {
529
+ this.storageSub = this.route.queryParams.subscribe(params => {
530
+ this.Init(params["ignoreStorage"]);
531
+ });
532
+ }
533
+ Init(ignoreStore) {
534
+ this.doInit(ignoreStore);
535
+ }
536
+ async doInit(ignoreStorage) {
537
+ let item = await this.localStorage.getItem("HotSearchProfilato").toPromise();
538
+ if (!ignoreStorage && item) {
539
+ this.init(item);
540
+ }
541
+ else {
542
+ this.init(null);
543
+ this.location.replaceState(`/pages/${this.mod}/profiler`);
544
+ this.route.snapshot.queryParams = [];
545
+ await this.localStorage.removeItem("HotSearchProfilato").toPromise();
546
+ }
547
+ }
548
+ init(HotPotato) {
549
+ if (HotPotato) {
550
+ this.searchView = HotPotato;
551
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
552
+ }
553
+ else {
554
+ this.searchView = new ProfilerDataNodesView();
555
+ this.sendSearch();
556
+ }
557
+ }
558
+ ngOnDestroy() {
559
+ if (this.storageSub)
560
+ this.storageSub.unsubscribe();
561
+ }
562
+ sendSearch(resetPage = true) {
563
+ this.searchView.searchinprogress = true;
564
+ if (resetPage)
565
+ this.searchView.page = 1;
566
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
567
+ }
568
+ POSTGetItems(url, data) {
569
+ this.http.post(url, data).subscribe(t => {
570
+ this.searchView = t;
571
+ this.searchView.searchinprogress = false;
572
+ this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
573
+ });
574
+ }
575
+ prepareExport(dataCallBack) {
576
+ var view = JSON.parse(JSON.stringify(this.searchView));
577
+ view.page = 1;
578
+ view.itemsperpageoverride = 9999999;
579
+ this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
580
+ let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
581
+ dataCallBack(items);
582
+ });
583
+ }
584
+ }
585
+ AdmProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, deps: [{ token: i1.ExportService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4$1.Location }, { token: i1.InterComService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
586
+ AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmProfilerComponent, selector: "adm_profiler", providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Server Profiler' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Description' | localize : lc}}</span>\r\n <span *th=\"'3'\">{{'Calls' | localize : lc}}</span>\r\n <span *th=\"'4'\">{{'Time' | localize : lc}}</span>\r\n <span *th=\"'5'\">{{'Peak Time' | localize : lc}}</span>\r\n <span *th=\"'6'\">{{'Min. Time' | localize : lc}}</span>\r\n <span *th=\"'7'\">{{'Avg. Time' | localize : lc}}</span>\r\n <span *th=\"'8'\">{{'Specific Time' | localize : lc}}</span>\r\n <span *th=\"'9'\">{{'Percentage' | localize : lc}}</span>\r\n <span *th=\"'10'\">{{'Calls for Period' | localize : lc}}</span>\r\n <span *th=\"'11'\">{{'Time for Period' | localize : lc}}</span>\r\n <span *th=\"'12'\">{{'Peak Time for Period' | localize : lc}}</span>\r\n <span *th=\"'13'\">{{'Min. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'14'\">{{'Avg. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'15'\">{{'Specific Time for Period' | localize : lc}}</span>\r\n <span *th=\"'16'\">{{'Percentage for Period' | localize : lc}}</span>\r\n\r\n <span *td=\"'1'; let item\">{{item.id}}</span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren}}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation"] }, { type: i8.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }], pipes: { "localize": i2.LocalizePipe } });
587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
588
+ type: Component,
589
+ args: [{ selector: "adm_profiler", providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Server Profiler' | localize : lc}}</span>&nbsp;\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Description' | localize : lc}}</span>\r\n <span *th=\"'3'\">{{'Calls' | localize : lc}}</span>\r\n <span *th=\"'4'\">{{'Time' | localize : lc}}</span>\r\n <span *th=\"'5'\">{{'Peak Time' | localize : lc}}</span>\r\n <span *th=\"'6'\">{{'Min. Time' | localize : lc}}</span>\r\n <span *th=\"'7'\">{{'Avg. Time' | localize : lc}}</span>\r\n <span *th=\"'8'\">{{'Specific Time' | localize : lc}}</span>\r\n <span *th=\"'9'\">{{'Percentage' | localize : lc}}</span>\r\n <span *th=\"'10'\">{{'Calls for Period' | localize : lc}}</span>\r\n <span *th=\"'11'\">{{'Time for Period' | localize : lc}}</span>\r\n <span *th=\"'12'\">{{'Peak Time for Period' | localize : lc}}</span>\r\n <span *th=\"'13'\">{{'Min. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'14'\">{{'Avg. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'15'\">{{'Specific Time for Period' | localize : lc}}</span>\r\n <span *th=\"'16'\">{{'Percentage for Period' | localize : lc}}</span>\r\n\r\n <span *td=\"'1'; let item\">{{item.id}}</span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren}}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
590
+ }], ctorParameters: function () { return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4$1.Location }, { type: i1.InterComService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: undefined, decorators: [{
591
+ type: Inject,
592
+ args: [ADM_BACKEND_URL]
593
+ }] }, { type: undefined, decorators: [{
594
+ type: Inject,
595
+ args: [ADM_MODULE_PATH]
596
+ }] }]; } });
597
+
598
+ class TopActivitiesDataView extends AppSearch {
599
+ constructor() { super(); }
600
+ }
601
+
602
+ class AdmTopActivitieLoc extends LocalizationService {
603
+ constructor(LOC_LOCALE) {
604
+ super(LOC_LOCALE);
605
+ super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
606
+ super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
607
+ super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
608
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
609
+ super.set("en->it", "Top Activities", ["Attivita' Principali"]);
610
+ super.set("en->it", "Node Description", ["Descrizione Nodo"]);
611
+ super.set("en->it", "Node", ["Nodo"]);
612
+ super.set("en->it", "Activity", ["Attivita'"]);
613
+ super.set("en->it", "Limit", ["Limite"]);
614
+ super.set("en->it", "Node Type", ["Tipo Nodo"]);
615
+ super.set("en->it", "User", ["Utente"]);
616
+ super.set("en->it", "Tenant", ["Tenant"]);
617
+ super.set("en->it", "Process", ["Processo"]);
618
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
619
+ super.set("en->it", "second/s", ["secondo/i"]);
620
+ super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
621
+ super.set("en->it", "CPUs", ["CPU"]);
622
+ }
623
+ }
624
+ AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
625
+ AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
627
+ type: Injectable
628
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
629
+ type: Inject,
630
+ args: [ADM_LOCALE]
631
+ }] }]; } });
632
+
633
+ // Angular
634
+ class AdmTopActivitiesComponent {
635
+ constructor(dateExts, lc, localStorage, location, intercom, http, route, backend, mod) {
636
+ this.dateExts = dateExts;
637
+ this.lc = lc;
638
+ this.localStorage = localStorage;
639
+ this.location = location;
640
+ this.intercom = intercom;
641
+ this.http = http;
642
+ this.route = route;
643
+ this.backend = backend;
644
+ this.mod = mod;
645
+ this.searchView = new TopActivitiesDataView();
646
+ this.autoUpdate = false;
647
+ this.seconds = "5";
648
+ this.seriesPropertiesMapping = {};
649
+ this.propertiesSeriesMapping = {
650
+ ["cputime"]: "CPU",
651
+ ["waittime"]: "Wait",
652
+ ["scripttime"]: "Scripting",
653
+ ["dbtime"]: "DB",
654
+ ["nettime"]: "Network",
655
+ ["throttletime"]: "Throttling",
656
+ ["sleeptime"]: "Sleep",
657
+ ["iotime"]: "IO"
658
+ };
659
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
898
660
  }
899
661
  ngOnInit() {
900
662
  this.storageSub = this.route.queryParams.subscribe(params => {
901
663
  this.Init(params["ignoreStorage"]);
902
664
  });
903
665
  }
904
- ngOnDestroy() {
905
- if (this.storageSub)
906
- this.storageSub.unsubscribe();
666
+ Init(ignoreStore) {
667
+ this.doInit(ignoreStore);
907
668
  }
908
- async Init(ignoreStorage) {
909
- let item = await this.localStorage.getItem("HotAudittato").toPromise();
669
+ async doInit(ignoreStorage) {
670
+ let item = await this.localStorage.getItem("HotSearchTopAct").toPromise();
910
671
  if (!ignoreStorage && item) {
911
672
  this.init(item);
912
673
  }
913
674
  else {
914
675
  this.init(null);
915
- this.location.replaceState("/pages/adm/serveraudits");
676
+ this.location.replaceState(`/pages/${this.mod}/topact`);
916
677
  this.route.snapshot.queryParams = [];
917
- await this.localStorage.removeItem("HotAudittato").toPromise();
678
+ await this.localStorage.removeItem("HotSearchTopAct").toPromise();
918
679
  }
919
680
  }
920
681
  init(HotPotato) {
921
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
922
- //Altirmenti genero il modello nuovo normalmente
923
682
  if (HotPotato) {
924
683
  this.searchView = HotPotato;
925
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
684
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
926
685
  }
927
686
  else {
928
- this.searchView = new AuditsView();
929
- this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
930
- this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
931
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
932
- setTimeout(() => this.sendSearch());
687
+ this.searchView = new TopActivitiesDataView();
688
+ this.sendSearch();
933
689
  }
934
690
  }
935
- sendSearch(resetPage = true) {
936
- this.searchInProgress = true;
691
+ ngOnDestroy() {
692
+ if (this.storageSub)
693
+ this.storageSub.unsubscribe();
694
+ }
695
+ sendSearch(resetPage = true, update = false, searchViewOverride = null) {
696
+ this.searchView.searchinprogress = true;
937
697
  if (resetPage)
938
698
  this.searchView.page = 1;
939
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
699
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride ?? this.searchView, update);
940
700
  }
941
- POSTGetProcesses(url, data) {
942
- this.http.post(url, data).subscribe(t => {
943
- this.searchView = t;
944
- this.searchInProgress = false;
945
- this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
701
+ POSTGetItems(url, data, update) {
702
+ this.http.post(url, data).subscribe(async (t) => {
703
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
704
+ if (!update) {
705
+ this.searchView = t;
706
+ this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
707
+ }
708
+ var dirinfos = await this.getDirectorInfos();
709
+ this.searchView.searchinprogress = false;
710
+ this.reviewBindings(update, t, dirinfos);
711
+ });
712
+ }
713
+ getDirectorInfos() {
714
+ return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
715
+ }
716
+ reviewBindings(update, searchViewOverride, dirInfos) {
717
+ let reference = (searchViewOverride ?? this.searchView).items[0];
718
+ this.TopNodes = reference.topnodes;
719
+ this.TopSessions = reference.topsessions;
720
+ this.DirInfos = dirInfos;
721
+ if (!reference.actsessions || reference.actsessions.length == 0) {
722
+ this.TopActiveSessions = null;
723
+ return;
724
+ }
725
+ let series = [];
726
+ let props = Object.keys(reference.actsessions[0]);
727
+ for (let i = 0; i < props.length; i++) {
728
+ if (props[i] != 'sampletime') {
729
+ let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
730
+ series.push(s);
731
+ this.seriesPropertiesMapping[props[i]] = s;
732
+ }
733
+ }
734
+ for (let i = 0; i < reference.actsessions.length; i++) {
735
+ let itemref = reference.actsessions[i];
736
+ let theD = new Date(itemref.sampletime);
737
+ for (let i = 0; i < props.length; i++)
738
+ if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
739
+ this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
740
+ }
741
+ if (update && this.ChartInstance) {
742
+ let data = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc("Maximum Threads")));
743
+ if (series.some(t => t.values.length > 0)) {
744
+ this.ChartInstance.addData(data);
745
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
746
+ }
747
+ }
748
+ else {
749
+ this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos?.threads, this.lc.loc("Maximum Threads")));
750
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
751
+ }
752
+ }
753
+ autoUpdateChanged() {
754
+ if (!/^[1-9]\d*$/.test(this.seconds))
755
+ this.seconds = '10';
756
+ const secondsInMs = parseInt(this.seconds, null) * 1000;
757
+ if (this.autoUpdate) {
758
+ this.sendSearch(false, true);
759
+ this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
760
+ }
761
+ else
762
+ clearInterval(this.updateTimer);
763
+ }
764
+ dataSelectionChanged(event) {
765
+ this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
766
+ this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
767
+ var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
768
+ pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
769
+ pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
770
+ this.sendSearch(true, true, pseudoSearchView);
771
+ }
772
+ onChartLoaded(chart) {
773
+ this.ChartInstance = chart;
774
+ chart.Chart.events.on("ready", () => {
775
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
776
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
777
+ setTimeout(() => {
778
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
779
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
780
+ // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
781
+ }, 500);
946
782
  });
947
783
  }
948
784
  }
949
- AdmAuditsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, deps: [{ token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: i4.Location }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
950
- AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i8.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i8.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i2.LocalizePipe, "loc_date": i2.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
951
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
785
+ AdmTopActivitiesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, deps: [{ token: i1.DateService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4$1.Location }, { token: i1.InterComService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
786
+ AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
787
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
788
+ ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { type: i8$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill"] }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }], pipes: { "localize": i2.LocalizePipe, "number": i4$1.DecimalPipe } });
789
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
952
790
  type: Component,
953
- args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
954
- }], ctorParameters: function () { return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
791
+ args: [{ selector: "topact_search", providers: [
792
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
793
+ ], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span>&nbsp;\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 app-relative\">\r\n <form role=\"form\">\r\n <div class=\"row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
794
+ }], ctorParameters: function () { return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4$1.Location }, { type: i1.InterComService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: undefined, decorators: [{
955
795
  type: Inject,
956
796
  args: [ADM_BACKEND_URL]
797
+ }] }, { type: undefined, decorators: [{
798
+ type: Inject,
799
+ args: [ADM_MODULE_PATH]
800
+ }] }]; } });
801
+
802
+ class LocksView extends AppSearch {
803
+ constructor() { super(); }
804
+ }
805
+
806
+ class AdmEnqLoc extends LocalizationService {
807
+ constructor(LOC_LOCALE) {
808
+ super(LOC_LOCALE);
809
+ super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
810
+ super.set("en->it", "Name", ["Nome"]);
811
+ super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
812
+ super.set("en->it", "Global", ["Globale"]);
813
+ }
814
+ }
815
+ AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
816
+ AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
818
+ type: Injectable
819
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
820
+ type: Inject,
821
+ args: [ADM_LOCALE]
957
822
  }] }]; } });
958
823
 
824
+ // Angular
959
825
  class AdmEnqComponent {
960
- constructor(lc, localStorage, expExts, _state, http, route, location, backend) {
826
+ constructor(lc, localStorage, expExts, intercom, http, route, location, backend, mod) {
961
827
  this.lc = lc;
962
828
  this.localStorage = localStorage;
963
829
  this.expExts = expExts;
964
- this._state = _state;
830
+ this.intercom = intercom;
965
831
  this.http = http;
966
832
  this.route = route;
967
833
  this.location = location;
968
834
  this.backend = backend;
835
+ this.mod = mod;
969
836
  this.locksView = new LocksView();
970
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
837
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
971
838
  }
972
839
  ngOnInit() {
973
- this.storageSub = this.route.queryParams.subscribe(params => {
974
- this.Init(params["ignoreStorage"]);
975
- });
840
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
976
841
  }
977
842
  ngOnDestroy() {
978
843
  if (this.storageSub)
@@ -985,22 +850,19 @@ class AdmEnqComponent {
985
850
  }
986
851
  else {
987
852
  this.init(null);
988
- this.location.replaceState("/pages/adm/serverenqueues");
853
+ this.location.replaceState(`/pages/${this.mod}/serverenqueues`);
989
854
  this.route.snapshot.queryParams = [];
990
855
  await this.localStorage.removeItem("HotEnqueue").toPromise();
991
856
  }
992
857
  }
993
858
  init(HotPotato) {
994
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
995
- //Altirmenti genero il modello nuovo normalmente
996
859
  if (HotPotato) {
997
860
  this.locksView = HotPotato;
998
861
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerLocks"], this.locksView);
999
862
  }
1000
863
  else {
1001
864
  this.locksView = new LocksView();
1002
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1003
- setTimeout(() => this.sendSearch());
865
+ this.sendSearch();
1004
866
  }
1005
867
  }
1006
868
  sendSearch(resetPage = true) {
@@ -1015,27 +877,64 @@ class AdmEnqComponent {
1015
877
  });
1016
878
  }
1017
879
  }
1018
- AdmEnqComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqComponent, deps: [{ token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i1.ExportService }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: i4.Location }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
1019
- AdmEnqComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmEnqComponent, selector: "adm_enq", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Locks' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Name' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Loading Application Locks' | localize : lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i8.FormCheckboxComponent, selector: "form-checkbox" }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i2.LocalizePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }] });
880
+ AdmEnqComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqComponent, deps: [{ token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i1.ExportService }, { token: i1.InterComService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: i4$1.Location }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
881
+ AdmEnqComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmEnqComponent, selector: "adm_enq", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Locks' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Name' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Loading Application Locks' | localize : lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormCheckboxComponent, selector: "form-checkbox" }, { type: i8.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i2.LocalizePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }] });
1020
882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqComponent, decorators: [{
1021
883
  type: Component,
1022
884
  args: [{ selector: "adm_enq", viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Locks' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <form role=\"form\">\r\n <div class=\"col-md-12 row app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterlock\" name=\"filterlock\" [Placeholder]=\"'Name' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper app-padding-top-10\">\r\n <form-checkbox [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox>&nbsp;\r\n <span class=\"app-pointer\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Global' | localize : lc}}</span>\r\n </div>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!locksView\"><em>{{'Loading Application Locks' | localize : lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
1023
- }], ctorParameters: function () { return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i1.ExportService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
885
+ }], ctorParameters: function () { return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i1.ExportService }, { type: i1.InterComService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: i4$1.Location }, { type: undefined, decorators: [{
1024
886
  type: Inject,
1025
887
  args: [ADM_BACKEND_URL]
888
+ }] }, { type: undefined, decorators: [{
889
+ type: Inject,
890
+ args: [ADM_MODULE_PATH]
891
+ }] }]; } });
892
+
893
+ class KeyValue {
894
+ constructor(id, description) {
895
+ this.id = id;
896
+ this.description = description;
897
+ }
898
+ }
899
+
900
+ class MetricsView extends AppSearch {
901
+ constructor() { super(); }
902
+ }
903
+
904
+ class AdmMetricsLoc extends LocalizationService {
905
+ constructor(LOC_LOCALE) {
906
+ super(LOC_LOCALE);
907
+ super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
908
+ super.set("en->it", "Session ID", ["Cod. Sessione"]);
909
+ super.set("en->it", "Session Serial", ["Seriale Sessione"]);
910
+ super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
911
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
912
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
913
+ super.set("en->it", "second/s", ["secondo/i"]);
914
+ super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
915
+ }
916
+ }
917
+ AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
918
+ AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
920
+ type: Injectable
921
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
922
+ type: Inject,
923
+ args: [ADM_LOCALE]
1026
924
  }] }]; } });
1027
925
 
1028
926
  // Angular
1029
927
  class AdmMetricsComponent {
1030
- constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
928
+ constructor(dateExts, lc, localStorage, location, intercom, http, route, backend, mod) {
1031
929
  this.dateExts = dateExts;
1032
930
  this.lc = lc;
1033
931
  this.localStorage = localStorage;
1034
932
  this.location = location;
1035
- this._state = _state;
933
+ this.intercom = intercom;
1036
934
  this.http = http;
1037
935
  this.route = route;
1038
936
  this.backend = backend;
937
+ this.mod = mod;
1039
938
  this.MetricsChartCache = {};
1040
939
  this.searchView = new MetricsView();
1041
940
  this.autoUpdate = false;
@@ -1044,7 +943,7 @@ class AdmMetricsComponent {
1044
943
  this.selectedInstance = "";
1045
944
  this.instanceRequired = false;
1046
945
  this.metricsToShow = [];
1047
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
946
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
1048
947
  }
1049
948
  ngOnInit() {
1050
949
  this.storageSub = this.route.queryParams.subscribe(params => {
@@ -1072,22 +971,19 @@ class AdmMetricsComponent {
1072
971
  }
1073
972
  else {
1074
973
  this.init(null);
1075
- this.location.replaceState("/pages/adm/metrics");
974
+ this.location.replaceState(`/pages/${this.mod}/metrics`);
1076
975
  this.route.snapshot.queryParams = [];
1077
976
  await this.localStorage.removeItem("HotSearchMetrics").toPromise();
1078
977
  }
1079
978
  }
1080
979
  init(HotPotato) {
1081
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1082
- //Altirmenti genero il modello nuovo normalmente
1083
980
  if (HotPotato) {
1084
981
  this.searchView = HotPotato;
1085
982
  this.POSTGetItems(this.backend + Repository["POST_Adm_GetMetrics"], this.searchView, false);
1086
983
  }
1087
984
  else {
1088
985
  this.searchView = new MetricsView();
1089
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1090
- setTimeout(() => this.sendSearch());
986
+ this.sendSearch();
1091
987
  }
1092
988
  this.dateChanged();
1093
989
  }
@@ -1108,7 +1004,7 @@ class AdmMetricsComponent {
1108
1004
  POSTGetItems(url, data, update) {
1109
1005
  data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);
1110
1006
  this.http.post(url, data).subscribe(async (t) => {
1111
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1007
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1112
1008
  if (!update) {
1113
1009
  this.selectedInstance = "";
1114
1010
  this.metricsToShow = [];
@@ -1165,20 +1061,95 @@ class AdmMetricsComponent {
1165
1061
  clearInterval(this.updateTimer);
1166
1062
  }
1167
1063
  }
1168
- AdmMetricsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsComponent, deps: [{ token: i1.DateService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4.Location }, { token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i7.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
1064
+ AdmMetricsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsComponent, deps: [{ token: i1.DateService }, { token: i2.LocalizationService }, { token: i3.PreferencesService }, { token: i4$1.Location }, { token: i1.InterComService }, { token: i4.HTTPService }, { token: i5.ActivatedRoute }, { token: ADM_BACKEND_URL }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
1169
1065
  AdmMetricsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmMetricsComponent, selector: "metrics_search", providers: [
1170
1066
  { provide: LocalizationService, useClass: AdmMetricsLoc }
1171
- ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'System Metrics' | localize : lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Session ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Session Serial' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filter Metrics...' | localize : lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Metrics Instance' | localize : lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { type: i8.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i8.FormMultiSelectComponent, selector: "form-multiselect", inputs: ["SelectLabel", "UseKeyValues"] }, { type: i8.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i9$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i10.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i10.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "localize": i2.LocalizePipe } });
1067
+ ], ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'System Metrics' | localize : lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Session ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Session Serial' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filter Metrics...' | localize : lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Metrics Instance' | localize : lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i7.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { type: i7.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i7.FormMultiSelectComponent, selector: "form-multiselect", inputs: ["SelectLabel", "UseKeyValues"] }, { type: i7.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i8$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill"] }], directives: [{ type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i9.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "localize": i2.LocalizePipe } });
1172
1068
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsComponent, decorators: [{
1173
1069
  type: Component,
1174
1070
  args: [{ selector: "metrics_search", providers: [
1175
1071
  { provide: LocalizationService, useClass: AdmMetricsLoc }
1176
1072
  ], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'System Metrics' | localize : lc}}\r\n </span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterfrom\" name=\"filterfrom\" [Placeholder]=\"'From' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\" (inputChange)=\"dateChanged();\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'Session ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterserial\" name=\"filterserial\" [Placeholder]=\"'Session Serial' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-12 app-filter-wrapper\">\r\n <form-multiselect [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtermetrics\" [IdField]=\"'name'\" [Display]=\"'{name}'\" name=\"filtermetrics\" [SelectLabel]=\"'Filter Metrics...' | localize : lc\" [Source]=\"Metrics\"></form-multiselect>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </form>\r\n <div class=\"app-col-12 app-margin-top-15\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Metrics Instance' | localize : lc\" [(ngModel)]=\"selectedInstance\" name=\"instance\" [Source]=\"Instances\" (inputChange)=\"instanceSelected()\" required></form-select>\r\n </div>\r\n <div *ngIf=\"searchView && metricsToShow && metricsToShow.length > 0\">\r\n <div class=\"col-md-12 app-padding-right-0 row app-margin-top-15\">\r\n <ng-container *ngFor=\"let metric of metricsToShow; let i = index\">\r\n <div class=\"col-md-4 app-no-padding app-simple-border\" *ngFor=\"let chart of metric.values; let z = index\">\r\n <div style=\"width: 100%; height: 260px\">\r\n <es-line-chart [XTitle]=\"chart.xtitle\"\r\n [YTitle]=\"chart.ytitle\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"chart\"\r\n [Animations]=\"true\"\r\n [Legend]=\"chart.legend\"\r\n name=\"metric_{{i}}_chart_{{z}}\"\r\n (chartLoaded)=\"linkChartToMetric(metric, chart, $event);\"\r\n [DataGroupingThreshold]=\"99999999\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </ng-container>\r\n \r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
1177
- }], ctorParameters: function () { return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
1073
+ }], ctorParameters: function () { return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4$1.Location }, { type: i1.InterComService }, { type: i4.HTTPService }, { type: i5.ActivatedRoute }, { type: undefined, decorators: [{
1074
+ type: Inject,
1075
+ args: [ADM_BACKEND_URL]
1076
+ }] }, { type: undefined, decorators: [{
1077
+ type: Inject,
1078
+ args: [ADM_MODULE_PATH]
1079
+ }] }]; } });
1080
+
1081
+ class AdmLogsLoc extends LocalizationService {
1082
+ constructor(LOC_LOCALE) {
1083
+ super(LOC_LOCALE);
1084
+ super.set("en->it", "Server Logs", ["Log del Server"]);
1085
+ }
1086
+ }
1087
+ AdmLogsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
1088
+ AdmLogsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsLoc });
1089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsLoc, decorators: [{
1090
+ type: Injectable
1091
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1092
+ type: Inject,
1093
+ args: [ADM_LOCALE]
1094
+ }] }]; } });
1095
+
1096
+ // Angular
1097
+ class AdmLogsComponent {
1098
+ constructor(intercom, http, lc, route, backend) {
1099
+ this.intercom = intercom;
1100
+ this.http = http;
1101
+ this.lc = lc;
1102
+ this.route = route;
1103
+ this.backend = backend;
1104
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
1105
+ }
1106
+ ngOnInit() {
1107
+ this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
1108
+ }
1109
+ }
1110
+ AdmLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, deps: [{ token: i1.InterComService }, { token: i4.HTTPService }, { token: i2.LocalizationService }, { token: i5.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
1111
+ AdmLogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmLogsComponent, selector: "adm_logs", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>", directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }] });
1112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
1113
+ type: Component,
1114
+ args: [{ selector: "adm_logs", viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12 bottom-15\">\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n </div>\r\n</div>" }]
1115
+ }], ctorParameters: function () { return [{ type: i1.InterComService }, { type: i4.HTTPService }, { type: i2.LocalizationService }, { type: i5.ActivatedRoute }, { type: undefined, decorators: [{
1178
1116
  type: Inject,
1179
1117
  args: [ADM_BACKEND_URL]
1180
1118
  }] }]; } });
1181
1119
 
1120
+ /** Chiave di questo modulo, da utilizzare per i messaggi */
1121
+ const MK_ADM = "EsAdminModule";
1122
+ /** Messaggi gestiti da questo modulo */
1123
+ var AdmMessageTypes;
1124
+ (function (AdmMessageTypes) {
1125
+ AdmMessageTypes[AdmMessageTypes["Message"] = 0] = "Message";
1126
+ })(AdmMessageTypes || (AdmMessageTypes = {}));
1127
+
1128
+ // Angular
1129
+ class AdminModuleCommService {
1130
+ constructor(intercom) {
1131
+ this.intercom = intercom;
1132
+ }
1133
+ register() {
1134
+ this.intercom.register(MK_ADM);
1135
+ this.intercom.outbounds[MK_ADM].subscribe((t) => { this.handleOutbound(t.type, t.message); });
1136
+ }
1137
+ handleOutbound(type, message) {
1138
+ switch (type) {
1139
+ case AdmMessageTypes.Message:
1140
+ {
1141
+ if (myconfig.DEBUG_MODE)
1142
+ console.log("@admin-module outbound message: " + message);
1143
+ }
1144
+ }
1145
+ }
1146
+ }
1147
+ AdminModuleCommService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdminModuleCommService, deps: [{ token: i1.InterComService }], target: i0.ɵɵFactoryTarget.Injectable });
1148
+ AdminModuleCommService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdminModuleCommService });
1149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdminModuleCommService, decorators: [{
1150
+ type: Injectable
1151
+ }], ctorParameters: function () { return [{ type: i1.InterComService }]; } });
1152
+
1182
1153
  // Angular
1183
1154
  const routeConfig = [
1184
1155
  {
@@ -1214,11 +1185,6 @@ const MODULES = [
1214
1185
  FormsAndValidationsModule,
1215
1186
  EsGertrudeModule,
1216
1187
  EsChartsModule,
1217
- EsTableModule,
1218
- FormsAndValidationsModule,
1219
- EsChartsModule,
1220
- FormsAndValidationsModule,
1221
- EsChartsModule,
1222
1188
  NgxMatDatetimePickerModule,
1223
1189
  RouterModule.forChild(routeConfig),
1224
1190
  ];
@@ -1231,19 +1197,14 @@ const COMPONENTS = [
1231
1197
  AdmEnqComponent,
1232
1198
  AdmMetricsComponent
1233
1199
  ];
1234
- //Il formato in Display è sempre quello italiano quindi mi faccio pochi problemi di localizzazione e imposto quello
1235
- const formats = {
1236
- parse: { dateInput: 'DD/MM/YYYY' },
1237
- display: {
1238
- dateInput: 'DD/MM/YYYY',
1239
- monthYearLabel: 'MM YYYY',
1240
- dateA11yLabel: 'DD/MM/YYYY',
1241
- monthYearA11yLabel: 'MM YYYY',
1242
- }
1243
- };
1244
1200
  class AdmModule {
1201
+ constructor(commService) {
1202
+ this.commService = commService;
1203
+ console.log("@esfaenza/admin-module: BOOTSTRAP");
1204
+ this.commService.register();
1205
+ }
1245
1206
  }
1246
- AdmModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1207
+ AdmModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, deps: [{ token: AdminModuleCommService }], target: i0.ɵɵFactoryTarget.NgModule });
1247
1208
  AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, declarations: [AdmWrkComponent,
1248
1209
  AdmProfilerComponent,
1249
1210
  AdmTopActivitiesComponent,
@@ -1271,16 +1232,11 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
1271
1232
  FormsAndValidationsModule,
1272
1233
  EsGertrudeModule,
1273
1234
  EsChartsModule,
1274
- EsTableModule,
1275
- FormsAndValidationsModule,
1276
- EsChartsModule,
1277
- FormsAndValidationsModule,
1278
- EsChartsModule,
1279
- NgxMatDatetimePickerModule, i7.RouterModule] });
1235
+ NgxMatDatetimePickerModule, i5.RouterModule] });
1280
1236
  AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, providers: [
1281
- { provide: LOCALE_ID, useValue: myconfig.SMALL_LOCALE },
1282
- { provide: MAT_DATE_LOCALE, useValue: myconfig.LOCALE },
1283
- { provide: MAT_DATE_FORMATS, useValue: formats }
1237
+ AdminModuleCommService,
1238
+ { provide: ADM_LOCALE, useValue: myconfig.LOCALE },
1239
+ { provide: ADM_BACKEND_URL, useValue: myconfig.BACKEND_URL },
1284
1240
  ], imports: [[...MODULES]] });
1285
1241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, decorators: [{
1286
1242
  type: NgModule,
@@ -1288,12 +1244,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1288
1244
  imports: [...MODULES],
1289
1245
  declarations: [...COMPONENTS],
1290
1246
  providers: [
1291
- { provide: LOCALE_ID, useValue: myconfig.SMALL_LOCALE },
1292
- { provide: MAT_DATE_LOCALE, useValue: myconfig.LOCALE },
1293
- { provide: MAT_DATE_FORMATS, useValue: formats }
1247
+ AdminModuleCommService,
1248
+ { provide: ADM_LOCALE, useValue: myconfig.LOCALE },
1249
+ { provide: ADM_BACKEND_URL, useValue: myconfig.BACKEND_URL },
1294
1250
  ]
1295
1251
  }]
1296
- }] });
1252
+ }], ctorParameters: function () { return [{ type: AdminModuleCommService }]; } });
1297
1253
 
1298
1254
  /*
1299
1255
  * Public API Surface of admin-module
@@ -1303,5 +1259,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1303
1259
  * Generated bundle index. Do not edit.
1304
1260
  */
1305
1261
 
1306
- export { ADM_BACKEND_URL, ADM_LOCALE, AdmModule, BaseModuleCommunicationsConsumer, routeConfig };
1262
+ export { ADM_BACKEND_URL, ADM_LOCALE, ADM_MODULE_PATH, AdmMessageTypes, AdmModule, MK_ADM, routeConfig };
1307
1263
  //# sourceMappingURL=esfaenza-admin-module.mjs.map