@esfaenza/admin-module 13.1.0-beta7 → 13.1.2

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 (43) hide show
  1. package/README.md +1 -24
  2. package/esm2020/lib/admin-module.module.mjs +13 -15
  3. package/esm2020/lib/components/audits/adm_audits.component.mjs +19 -25
  4. package/esm2020/lib/components/enqueues/adm_enq.component.mjs +19 -18
  5. package/esm2020/lib/components/logs/adm_logs.component.mjs +12 -9
  6. package/esm2020/lib/components/metrics/metrics_search.component.mjs +18 -15
  7. package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +2 -2
  8. package/esm2020/lib/components/profiler/adm_profiler.component.mjs +20 -20
  9. package/esm2020/lib/components/topact/topact_search.component.mjs +18 -16
  10. package/esm2020/lib/components/workers/adm_wrk.component.mjs +16 -15
  11. package/esm2020/lib/models/components/AuditsView.mjs +1 -1
  12. package/esm2020/lib/models/components/LocksView.mjs +1 -1
  13. package/esm2020/lib/models/components/ProfilerDataNode.mjs +3 -3
  14. package/esm2020/lib/models/components/ProfilerDataNodesView.mjs +1 -1
  15. package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
  16. package/esm2020/lib/models/components/TopActivity.mjs +1 -1
  17. package/esm2020/lib/tokens.mjs +2 -1
  18. package/fesm2015/esfaenza-admin-module.mjs +658 -751
  19. package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
  20. package/fesm2020/esfaenza-admin-module.mjs +609 -698
  21. package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
  22. package/lib/admin-module.module.d.ts +23 -16
  23. package/lib/components/audits/adm_audits.component.d.ts +4 -2
  24. package/lib/components/enqueues/adm_enq.component.d.ts +5 -4
  25. package/lib/components/logs/adm_logs.component.d.ts +3 -1
  26. package/lib/components/metrics/metrics_search.component.d.ts +8 -4
  27. package/lib/components/profiler/adm_profiler.component.d.ts +5 -4
  28. package/lib/components/topact/topact_search.component.d.ts +8 -4
  29. package/lib/components/workers/adm_wrk.component.d.ts +5 -3
  30. package/lib/models/components/AuditsView.d.ts +1 -1
  31. package/lib/models/components/ProfilerDataNodesView.d.ts +1 -1
  32. package/lib/models/components/TopActivitiesDataView.d.ts +1 -1
  33. package/lib/models/components/TopActivity.d.ts +3 -1
  34. package/lib/tokens.d.ts +1 -0
  35. package/package.json +10 -2
  36. package/esm2020/lib/components/index.mjs +0 -14
  37. package/esm2020/lib/models/components/Lock.loc.mjs +0 -13
  38. package/esm2020/lib/models/components/Lock.mjs +0 -48
  39. package/esm2020/lib/models/index.mjs +0 -22
  40. package/lib/components/index.d.ts +0 -13
  41. package/lib/models/components/Lock.d.ts +0 -12
  42. package/lib/models/components/Lock.loc.d.ts +0 -42
  43. package/lib/models/index.d.ts +0 -21
@@ -8,6 +8,7 @@ import * as i7 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
+ import { MatDayjsDateModule } from '@esfaenza/material-dayjs-adapter';
11
12
  import { MatInputModule } from '@angular/material/input';
12
13
  import { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';
13
14
  import * as i11 from 'ngx-bootstrap/modal';
@@ -20,51 +21,76 @@ import { AppSearch, EsTableOperationDefinition, EsTableModule } from '@esfaenza/
20
21
  import * as i8 from '@esfaenza/forms-and-validations';
21
22
  import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
22
23
  import * as i9$1 from '@esfaenza/es-charts';
23
- import { LineChartData, LineSerie, DateValue, Limit, EsChartsModule } from '@esfaenza/es-charts';
24
+ import { LineSerie, DateValue, LineChartData, Limit, EsChartsModule } from '@esfaenza/es-charts';
24
25
  import { EsGertrudeModule } from '@esfaenza/gertrude';
25
26
  import * as i2 from '@esfaenza/localizations';
26
27
  import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
27
28
  import { ContextMenuModule } from '@esfaenza/ngx-contextmenu';
28
- import { __decorate, __awaiter } from 'tslib';
29
- import { autoserialize, autoserializeAs } from 'cerialize';
30
- import * as i1 from '@esfaenza/extensions';
31
- import { Export } from '@esfaenza/extensions';
29
+ import { __awaiter, __decorate } from 'tslib';
32
30
  import * as i3 from '@esfaenza/preferences';
33
31
  import * as i6 from '@esfaenza/httpservice';
34
- import { map } from 'rxjs/operators';
35
32
  import { HttpParams } from '@angular/common/http';
36
- import { MAT_DATE_FORMATS, DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
37
- import { MAT_DAYJS_DATE_FORMATS, DayJsDateAdapter } from '@esfaenza/material-dayjs-adapter';
33
+ import * as i1 from '@esfaenza/extensions';
34
+ import { Export } from '@esfaenza/extensions';
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 () {
70
96
  return [{ type: undefined, decorators: [{
@@ -73,39 +99,105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
73
99
  }] }];
74
100
  } });
75
101
 
76
- class AdmTopActivitieLoc extends LocalizationService {
77
- constructor(LOC_LOCALE) {
78
- super(LOC_LOCALE);
79
- super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
80
- super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
81
- super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
82
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
83
- super.set("en->it", "Top Activities", ["Attivita' Principali"]);
84
- super.set("en->it", "Node Description", ["Descrizione Nodo"]);
85
- super.set("en->it", "Node", ["Nodo"]);
86
- super.set("en->it", "Activity", ["Attivita'"]);
87
- super.set("en->it", "Limit", ["Limite"]);
88
- super.set("en->it", "Node Type", ["Tipo Nodo"]);
89
- super.set("en->it", "User", ["Utente"]);
90
- super.set("en->it", "Tenant", ["Tenant"]);
91
- super.set("en->it", "Process", ["Processo"]);
92
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
93
- super.set("en->it", "second/s", ["secondo/i"]);
94
- super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
95
- super.set("en->it", "CPUs", ["CPU"]);
102
+ class BaseModuleCommunicationsConsumer {
103
+ }
104
+
105
+ class AdmAuditsComponent {
106
+ constructor(lc, localStorage, _state, http, route, location, backend, mod) {
107
+ this.lc = lc;
108
+ this.localStorage = localStorage;
109
+ this._state = _state;
110
+ this.http = http;
111
+ this.route = route;
112
+ this.location = location;
113
+ this.backend = backend;
114
+ this.mod = mod;
115
+ this.searchView = new AuditsView();
116
+ this.Actions = [];
117
+ this.HttpMethods = [];
118
+ this.searchInProgress = false;
119
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
120
+ this.HttpMethods = [
121
+ { id: "GET", description: "GET" },
122
+ { id: "POST", description: "POST" },
123
+ { id: "PUT", description: "PUT" },
124
+ { id: "PATCH", description: "PATCH" },
125
+ { id: "DELETE", description: "DELETE" }
126
+ ];
127
+ this.Actions = [
128
+ { id: "C", description: this.lc.loc("REST Call") },
129
+ { id: "U", description: this.lc.loc("Update") },
130
+ { id: "D", description: this.lc.loc("Delete") }
131
+ ];
132
+ }
133
+ ngOnInit() {
134
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
135
+ }
136
+ ngOnDestroy() {
137
+ if (this.storageSub)
138
+ this.storageSub.unsubscribe();
139
+ }
140
+ Init(ignoreStorage) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ let item = yield this.localStorage.getItem("HotAudittato").toPromise();
143
+ if (!ignoreStorage && item) {
144
+ this.init(item);
145
+ }
146
+ else {
147
+ this.init(null);
148
+ this.location.replaceState(`/pages/${this.mod}/serveraudits`);
149
+ this.route.snapshot.queryParams = [];
150
+ yield this.localStorage.removeItem("HotAudittato").toPromise();
151
+ }
152
+ });
153
+ }
154
+ init(HotPotato) {
155
+ //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
156
+ //Altirmenti genero il modello nuovo normalmente
157
+ if (HotPotato) {
158
+ this.searchView = HotPotato;
159
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
160
+ }
161
+ else {
162
+ this.searchView = new AuditsView();
163
+ this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
164
+ this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
165
+ this.sendSearch();
166
+ }
167
+ }
168
+ sendSearch(resetPage = true) {
169
+ this.searchInProgress = true;
170
+ if (resetPage)
171
+ this.searchView.page = 1;
172
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
173
+ }
174
+ POSTGetProcesses(url, data) {
175
+ this.http.post(url, data).subscribe(t => {
176
+ this.searchView = t;
177
+ this.searchInProgress = false;
178
+ this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
179
+ });
96
180
  }
97
181
  }
98
- AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
99
- AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
101
- type: Injectable
182
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
183
+ 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: 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", "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: 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.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation"] }, { type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }], pipes: { "localize": i2.LocalizePipe, "loc_date": i2.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
185
+ type: Component,
186
+ 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>" }]
102
187
  }], ctorParameters: function () {
103
- return [{ type: undefined, decorators: [{
188
+ return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
104
189
  type: Inject,
105
- args: [ADM_LOCALE]
190
+ args: [ADM_BACKEND_URL]
191
+ }] }, { type: undefined, decorators: [{
192
+ type: Inject,
193
+ args: [ADM_MODULE_PATH]
106
194
  }] }];
107
195
  } });
108
196
 
197
+ class ProcessesView extends AppSearch {
198
+ constructor() { super(); }
199
+ }
200
+
109
201
  class AdmWrkLoc extends LocalizationService {
110
202
  constructor(LOC_LOCALE) {
111
203
  super(LOC_LOCALE);
@@ -132,609 +224,16 @@ class AdmWrkLoc extends LocalizationService {
132
224
  AdmWrkLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
133
225
  AdmWrkLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc });
134
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkLoc, decorators: [{
135
- type: Injectable
136
- }], ctorParameters: function () {
137
- return [{ type: undefined, decorators: [{
138
- type: Inject,
139
- args: [ADM_LOCALE]
140
- }] }];
141
- } });
142
-
143
- class AdmAuditLoc extends LocalizationService {
144
- constructor(LOC_LOCALE) {
145
- super(LOC_LOCALE);
146
- super.set("en->it", "Search Application Audits", ["Ricerca Audit Applicativi"]);
147
- super.set("en->it", "User", ["Utente"]);
148
- super.set("en->it", "REST Call", ["Chiamata REST"]);
149
- super.set("en->it", "Update", ["Aggiornamento"]);
150
- super.set("en->it", "Route", ["Route"]);
151
- super.set("en->it", "Action", ["Azione"]);
152
- super.set("en->it", "HTTP Method", ["Metodo HTTP"]);
153
- super.set("en->it", "Arguments", ["Argomenti"]);
154
- super.set("en->it", "Object ID", ["ID Oggetto"]);
155
- super.set("en->it", "Object Type", ["Tipo Oggetto"]);
156
- super.set("en->it", "Object Data", ["Dati Oggetto"]);
157
- super.set("en->it", "Loading Application Audits", ["Carico gli Audit dell'Applicazione"]);
158
- super.set("en->it", "Date", ["Data"]);
159
- super.set("en->it", "HTTP Response", ["Risposta HTTP"]);
160
- super.set("en->it", "Application Error Code", ["Codice Errore Applicativo"]);
161
- }
162
- }
163
- AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
164
- AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc });
165
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, decorators: [{
166
- type: Injectable
167
- }], ctorParameters: function () {
168
- return [{ type: undefined, decorators: [{
169
- type: Inject,
170
- args: [ADM_LOCALE]
171
- }] }];
172
- } });
173
-
174
- class AdmEnqLoc extends LocalizationService {
175
- constructor(LOC_LOCALE) {
176
- super(LOC_LOCALE);
177
- super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
178
- super.set("en->it", "Name", ["Nome"]);
179
- super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
180
- super.set("en->it", "Global", ["Globale"]);
181
- }
182
- }
183
- AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
184
- AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
186
- type: Injectable
187
- }], ctorParameters: function () {
188
- return [{ type: undefined, decorators: [{
189
- type: Inject,
190
- args: [ADM_LOCALE]
191
- }] }];
192
- } });
193
-
194
- class AdmMetricsLoc extends LocalizationService {
195
- constructor(LOC_LOCALE) {
196
- super(LOC_LOCALE);
197
- super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
198
- super.set("en->it", "Session ID", ["Cod. Sessione"]);
199
- super.set("en->it", "Session Serial", ["Seriale Sessione"]);
200
- super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
201
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
202
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
203
- super.set("en->it", "second/s", ["secondo/i"]);
204
- super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
205
- }
206
- }
207
- AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
208
- AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
210
- type: Injectable
211
- }], ctorParameters: function () {
212
- return [{ type: undefined, decorators: [{
213
- type: Inject,
214
- args: [ADM_LOCALE]
215
- }] }];
216
- } });
217
-
218
- class KeyValue {
219
- constructor(id, description) {
220
- this.id = id;
221
- this.description = description;
222
- }
223
- }
224
-
225
- const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
226
-
227
- const Repository = {
228
- GET_Adm_ChangeProcessConsumerGroup: "/api/Adm/ChangeProcessConsumerGroup",
229
- GET_Adm_ClearAllCaches: "/api/Adm/ClearAllCaches",
230
- GET_Adm_GetConsumerGroups: "/api/Adm/GetConsumerGroups#cache",
231
- GET_Adm_GetInfos: "/api/Adm/GetInfos",
232
- GET_Adm_GetMetrics: "/api/Adm/GetMetrics",
233
- POST_Adm_GetMetrics: "/api/Adm/GetMetrics",
234
- POST_Adm_GetProfilerDataNodes: "/api/Adm/GetProfilerDataNodes",
235
- POST_Adm_GetServerAudits: "/api/Adm/GetServerAudits",
236
- POST_Adm_GetServerLocks: "/api/Adm/GetServerLocks",
237
- GET_Adm_GetServerLogs: "/api/Adm/GetServerLogs",
238
- POST_Adm_GetServerWorkers: "/api/Adm/GetServerWorkers",
239
- POST_Adm_GetTopActivities: "/api/Adm/GetTopActivities",
240
- GET_Adm_GetWorkerStatus: "/api/Adm/GetWorkerStatus",
241
- GET_Adm_InvalidateServerSideCache: "/api/Adm/InvalidateServerSideCache",
242
- GET_Adm_KillProcess: "/api/Adm/KillProcess",
243
- GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
244
- GET_Adm_StartWorker: "/api/Adm/StartWorker",
245
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
246
- };
247
-
248
- const Lock_loc = {
249
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
250
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
251
- 'Hold Mode': { 'en-US': "Hold Mode", 'it-IT': "Modalità Hold" },
252
- 'Request Mode': { 'en-US': "Request Mode", 'it-IT': "Modalità Richiesta" },
253
- 'Parameter 1': { 'en-US': "Parameter 1", 'it-IT': "Parametro 1" },
254
- 'Parameter 2': { 'en-US': "Parameter 2", 'it-IT': "Parametro 2" },
255
- 'Tenant Level Lock': { 'en-US': "Tenant Level Lock", 'it-IT': "Lock a livello Tenant" },
256
- 'Tenant': { 'en-US': "Tenant", 'it-IT': "Tenant" },
257
- 'Grant Time': { 'en-US': "Grant Time", 'it-IT': "Istante Concessione" },
258
- 'Blocked on SID': { 'en-US': "Blocked on SID", 'it-IT': "Bloccato su SID" }
259
- };
260
-
261
- const ProfilerDataNode_loc = {
262
- 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
263
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
264
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
265
- 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
266
- 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
267
- 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
268
- 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
269
- 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
270
- 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
271
- 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
272
- 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
273
- 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
274
- 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
275
- 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
276
- 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
277
- 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
278
- 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
279
- };
280
-
281
- class ProcessesView extends AppSearch {
282
- constructor() { super(); }
283
- }
284
-
285
- class ProfilerDataNode {
286
- }
287
- __decorate([
288
- Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
289
- autoserialize
290
- ], ProfilerDataNode.prototype, "parentid", void 0);
291
- __decorate([
292
- Export(20, ProfilerDataNode_loc["ID"][Locale]),
293
- autoserialize
294
- ], ProfilerDataNode.prototype, "id", void 0);
295
- __decorate([
296
- Export(30, ProfilerDataNode_loc["Description"][Locale]),
297
- autoserialize
298
- ], ProfilerDataNode.prototype, "description", void 0);
299
- __decorate([
300
- Export(40, ProfilerDataNode_loc["Calls"][Locale]),
301
- autoserialize
302
- ], ProfilerDataNode.prototype, "calls", void 0);
303
- __decorate([
304
- Export(50, ProfilerDataNode_loc["Time"][Locale]),
305
- autoserialize
306
- ], ProfilerDataNode.prototype, "time", void 0);
307
- __decorate([
308
- Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
309
- autoserialize
310
- ], ProfilerDataNode.prototype, "peaktime", void 0);
311
- __decorate([
312
- Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
313
- autoserialize
314
- ], ProfilerDataNode.prototype, "mintime", void 0);
315
- __decorate([
316
- Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
317
- autoserialize
318
- ], ProfilerDataNode.prototype, "avgtime", void 0);
319
- __decorate([
320
- Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
321
- autoserialize
322
- ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
323
- __decorate([
324
- Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
325
- autoserialize
326
- ], ProfilerDataNode.prototype, "percentage", void 0);
327
- __decorate([
328
- Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
329
- autoserialize
330
- ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
331
- __decorate([
332
- Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
333
- autoserialize
334
- ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
335
- __decorate([
336
- Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
337
- autoserialize
338
- ], ProfilerDataNode.prototype, "snappeaktime", void 0);
339
- __decorate([
340
- Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
341
- autoserialize
342
- ], ProfilerDataNode.prototype, "snapmintime", void 0);
343
- __decorate([
344
- Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
345
- autoserialize
346
- ], ProfilerDataNode.prototype, "snapavgtime", void 0);
347
- __decorate([
348
- Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
349
- autoserialize
350
- ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
351
- __decorate([
352
- Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
353
- autoserialize
354
- ], ProfilerDataNode.prototype, "snappercentage", void 0);
355
-
356
- class ProfilerDataNodesView extends AppSearch {
357
- constructor() { super(); }
358
- }
359
-
360
- class TopNode {
361
- }
362
-
363
- class TopSession {
364
- }
365
-
366
- class ActiveSession {
367
- }
368
-
369
- class TopActivity {
370
- }
371
-
372
- class TopActivitiesDataView extends AppSearch {
373
- constructor() { super(); }
374
- }
375
-
376
- class Audit {
377
- }
378
-
379
- class AuditsView extends AppSearch {
380
- constructor() {
381
- super();
382
- this.filteraction = '';
383
- this.filterhttp = '';
384
- }
385
- }
386
-
387
- class Lock {
388
- }
389
- __decorate([
390
- Export(10, Lock_loc["ID"][Locale]),
391
- autoserialize
392
- ], Lock.prototype, "id", void 0);
393
- __decorate([
394
- Export(20, Lock_loc["Description"][Locale]),
395
- autoserialize
396
- ], Lock.prototype, "description", void 0);
397
- __decorate([
398
- Export(30, Lock_loc["Hold Mode"][Locale]),
399
- autoserialize
400
- ], Lock.prototype, "holdmode", void 0);
401
- __decorate([
402
- Export(40, Lock_loc["Request Mode"][Locale]),
403
- autoserialize
404
- ], Lock.prototype, "requestmode", void 0);
405
- __decorate([
406
- Export(50, Lock_loc["Parameter 1"][Locale]),
407
- autoserialize
408
- ], Lock.prototype, "p1", void 0);
409
- __decorate([
410
- Export(60, Lock_loc["Parameter 2"][Locale]),
411
- autoserialize
412
- ], Lock.prototype, "p2", void 0);
413
- __decorate([
414
- Export(70, Lock_loc["Tenant Level Lock"][Locale]),
415
- autoserialize
416
- ], Lock.prototype, "tenantlock", void 0);
417
- __decorate([
418
- Export(80, Lock_loc["Tenant"][Locale]),
419
- autoserialize
420
- ], Lock.prototype, "tenant", void 0);
421
- __decorate([
422
- Export(90, Lock_loc["Blocked on SID"][Locale]),
423
- autoserialize
424
- ], Lock.prototype, "blockedon", void 0);
425
- __decorate([
426
- Export(100, Lock_loc["Grant Time"][Locale], "DD/MM/YYYY HH:mm:ss"),
427
- autoserializeAs(Date)
428
- ], Lock.prototype, "granttime", void 0);
429
-
430
- class LocksView extends AppSearch {
431
- constructor() { super(); }
432
- }
433
-
434
- class DirectorInfos {
435
- }
436
-
437
- class MetricsView extends AppSearch {
438
- constructor() { super(); }
439
- }
440
-
441
- class MetricChart extends LineChartData {
442
- }
443
-
444
- class Metric {
445
- }
446
-
447
- class BaseModuleCommunicationsConsumer {
448
- }
449
-
450
- class AdmProfilerComponent {
451
- constructor(expExts, lc, localStorage, location, _state, http, route, backend) {
452
- this.expExts = expExts;
453
- this.lc = lc;
454
- this.localStorage = localStorage;
455
- this.location = location;
456
- this._state = _state;
457
- this.http = http;
458
- this.route = route;
459
- this.backend = backend;
460
- this.searchView = new ProfilerDataNodesView();
461
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
462
- }
463
- ngOnInit() {
464
- this.storageSub = this.route.queryParams.subscribe(params => {
465
- this.Init(params["ignoreStorage"]);
466
- });
467
- }
468
- Init(ignoreStore) {
469
- this.doInit(ignoreStore);
470
- }
471
- doInit(ignoreStorage) {
472
- return __awaiter(this, void 0, void 0, function* () {
473
- let item = yield this.localStorage.getItem("HotSearchProfilato").toPromise();
474
- if (!ignoreStorage && item) {
475
- this.init(item);
476
- }
477
- else {
478
- this.init(null);
479
- this.location.replaceState("/pages/adm/profiler");
480
- this.route.snapshot.queryParams = [];
481
- yield this.localStorage.removeItem("HotSearchProfilato").toPromise();
482
- }
483
- });
484
- }
485
- init(HotPotato) {
486
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
487
- //Altirmenti genero il modello nuovo normalmente
488
- if (HotPotato) {
489
- this.searchView = HotPotato;
490
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
491
- }
492
- else {
493
- this.searchView = new ProfilerDataNodesView();
494
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
495
- setTimeout(() => this.sendSearch());
496
- }
497
- }
498
- ngOnDestroy() {
499
- if (this.storageSub)
500
- this.storageSub.unsubscribe();
501
- }
502
- sendSearch(resetPage = true) {
503
- this.searchView.searchinprogress = true;
504
- if (resetPage)
505
- this.searchView.page = 1;
506
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
507
- }
508
- POSTGetItems(url, data) {
509
- this.http.post(url, data).subscribe(t => {
510
- this.searchView = t;
511
- this.searchView.searchinprogress = false;
512
- this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
513
- });
514
- }
515
- prepareExport(dataCallBack) {
516
- var view = JSON.parse(JSON.stringify(this.searchView));
517
- view.page = 1;
518
- view.itemsperpageoverride = 9999999;
519
- this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
520
- let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
521
- dataCallBack(items);
522
- });
523
- }
524
- }
525
- 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 });
526
- AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmProfilerComponent, selector: "adm_profiler", providers: [
527
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
528
- ], 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 } });
529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
530
- type: Component,
531
- args: [{ selector: "adm_profiler", providers: [
532
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
533
- ], 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>" }]
534
- }], ctorParameters: function () {
535
- return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
536
- type: Inject,
537
- args: [ADM_BACKEND_URL]
538
- }] }];
539
- } });
540
-
541
- class AdmLogsComponent {
542
- constructor(_state, http, route, backend) {
543
- this._state = _state;
544
- this.http = http;
545
- this.route = route;
546
- this.backend = backend;
547
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
548
- }
549
- ngOnInit() {
550
- this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
551
- }
552
- }
553
- 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 });
554
- 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"] }] });
555
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
556
- type: Component,
557
- 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>" }]
558
- }], ctorParameters: function () {
559
- return [{ type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
560
- type: Inject,
561
- args: [ADM_BACKEND_URL]
562
- }] }];
563
- } });
564
-
565
- class AdmTopActivitiesComponent {
566
- constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
567
- this.dateExts = dateExts;
568
- this.lc = lc;
569
- this.localStorage = localStorage;
570
- this.location = location;
571
- this._state = _state;
572
- this.http = http;
573
- this.route = route;
574
- this.backend = backend;
575
- this.searchView = new TopActivitiesDataView();
576
- this.autoUpdate = false;
577
- this.seconds = "5";
578
- this.seriesPropertiesMapping = {};
579
- this.propertiesSeriesMapping = {
580
- ["cputime"]: "CPU",
581
- ["waittime"]: "Wait",
582
- ["scripttime"]: "Scripting",
583
- ["dbtime"]: "DB",
584
- ["nettime"]: "Network",
585
- ["throttletime"]: "Throttling",
586
- ["sleeptime"]: "Sleep",
587
- ["iotime"]: "IO"
588
- };
589
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
590
- }
591
- ngOnInit() {
592
- this.storageSub = this.route.queryParams.subscribe(params => {
593
- this.Init(params["ignoreStorage"]);
594
- });
595
- }
596
- Init(ignoreStore) {
597
- this.doInit(ignoreStore);
598
- }
599
- doInit(ignoreStorage) {
600
- return __awaiter(this, void 0, void 0, function* () {
601
- let item = yield this.localStorage.getItem("HotSearchTopAct").toPromise();
602
- if (!ignoreStorage && item) {
603
- this.init(item);
604
- }
605
- else {
606
- this.init(null);
607
- this.location.replaceState("/pages/adm/topact");
608
- this.route.snapshot.queryParams = [];
609
- yield this.localStorage.removeItem("HotSearchTopAct").toPromise();
610
- }
611
- });
612
- }
613
- init(HotPotato) {
614
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
615
- //Altirmenti genero il modello nuovo normalmente
616
- if (HotPotato) {
617
- this.searchView = HotPotato;
618
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
619
- }
620
- else {
621
- this.searchView = new TopActivitiesDataView();
622
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
623
- setTimeout(() => this.sendSearch());
624
- }
625
- }
626
- ngOnDestroy() {
627
- if (this.storageSub)
628
- this.storageSub.unsubscribe();
629
- }
630
- sendSearch(resetPage = true, update = false, searchViewOverride = null) {
631
- this.searchView.searchinprogress = true;
632
- if (resetPage)
633
- this.searchView.page = 1;
634
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
635
- }
636
- POSTGetItems(url, data, update) {
637
- this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
638
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
639
- if (!update) {
640
- this.searchView = t;
641
- this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
642
- }
643
- var dirinfos = yield this.getDirectorInfos();
644
- this.searchView.searchinprogress = false;
645
- this.reviewBindings(update, t, dirinfos);
646
- }));
647
- }
648
- getDirectorInfos() {
649
- return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
650
- }
651
- reviewBindings(update, searchViewOverride, dirInfos) {
652
- let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
653
- this.TopNodes = reference.topnodes;
654
- this.TopSessions = reference.topsessions;
655
- this.DirInfos = dirInfos;
656
- if (!reference.actsessions || reference.actsessions.length == 0) {
657
- this.TopActiveSessions = null;
658
- return;
659
- }
660
- let series = [];
661
- let props = Object.keys(reference.actsessions[0]);
662
- for (let i = 0; i < props.length; i++) {
663
- if (props[i] != 'sampletime') {
664
- let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
665
- series.push(s);
666
- this.seriesPropertiesMapping[props[i]] = s;
667
- }
668
- }
669
- for (let i = 0; i < reference.actsessions.length; i++) {
670
- let itemref = reference.actsessions[i];
671
- let theD = new Date(itemref.sampletime);
672
- for (let i = 0; i < props.length; i++)
673
- if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
674
- this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
675
- }
676
- if (update && this.ChartInstance) {
677
- let data = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
678
- if (series.some(t => t.values.length > 0)) {
679
- this.ChartInstance.addData(data);
680
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
681
- }
682
- }
683
- else {
684
- this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
685
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
686
- }
687
- }
688
- autoUpdateChanged() {
689
- if (!/^[1-9]\d*$/.test(this.seconds))
690
- this.seconds = '10';
691
- const secondsInMs = parseInt(this.seconds, null) * 1000;
692
- if (this.autoUpdate) {
693
- this.sendSearch(false, true);
694
- this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
695
- }
696
- else
697
- clearInterval(this.updateTimer);
698
- }
699
- dataSelectionChanged(event) {
700
- this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
701
- this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
702
- var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
703
- pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
704
- pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
705
- this.sendSearch(true, true, pseudoSearchView);
706
- }
707
- onChartLoaded(chart) {
708
- this.ChartInstance = chart;
709
- chart.Chart.events.on("ready", () => {
710
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
711
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
712
- setTimeout(() => {
713
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
714
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
715
- // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
716
- }, 500);
717
- });
718
- }
719
- }
720
- 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 });
721
- AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
722
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
723
- ], 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 } });
724
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
725
- type: Component,
726
- args: [{ selector: "topact_search", providers: [
727
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
728
- ], 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>" }]
227
+ type: Injectable
729
228
  }], ctorParameters: function () {
730
- return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
229
+ return [{ type: undefined, decorators: [{
731
230
  type: Inject,
732
- args: [ADM_BACKEND_URL]
231
+ args: [ADM_LOCALE]
733
232
  }] }];
734
233
  } });
735
234
 
736
235
  class AdmWrkComponent {
737
- constructor(utiExts, msgExts, lc, localStorage, _state, http, route, location, backend) {
236
+ constructor(utiExts, msgExts, lc, localStorage, _state, http, route, location, backend, mod) {
738
237
  this.utiExts = utiExts;
739
238
  this.msgExts = msgExts;
740
239
  this.lc = lc;
@@ -744,6 +243,7 @@ class AdmWrkComponent {
744
243
  this.route = route;
745
244
  this.location = location;
746
245
  this.backend = backend;
246
+ this.mod = mod;
747
247
  this.searchView = new ProcessesView();
748
248
  this.DynamicOps = [];
749
249
  this.valueToShow = "";
@@ -751,7 +251,7 @@ class AdmWrkComponent {
751
251
  this.newCg = "";
752
252
  this.CGs = [];
753
253
  this.CgDictionariesLoaded = false;
754
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
254
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
755
255
  this.DynamicOps = [
756
256
  new EsTableOperationDefinition("trace_on", this.lc.loc("Activate Process Tracing"), "fa fa-circle text-danger", "", "trace_enabled", "N"),
757
257
  new EsTableOperationDefinition("trace_off", this.lc.loc("Deactivate Process Tracing"), "fa fa-circle text-success", "", "trace_enabled", "Y"),
@@ -776,23 +276,20 @@ class AdmWrkComponent {
776
276
  }
777
277
  else {
778
278
  this.init(null);
779
- this.location.replaceState("/pages/adm/serverworkers");
279
+ this.location.replaceState(`/pages/${this.mod}/serverworkers`);
780
280
  this.route.snapshot.queryParams = [];
781
281
  yield this.localStorage.removeItem("HotProcessato").toPromise();
782
282
  }
783
283
  });
784
284
  }
785
285
  init(HotPotato) {
786
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
787
- //Altirmenti genero il modello nuovo normalmente
788
286
  if (HotPotato) {
789
287
  this.searchView = HotPotato;
790
288
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerWorkers"], this.searchView);
791
289
  }
792
290
  else {
793
291
  this.searchView = new ProcessesView();
794
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
795
- setTimeout(() => this.sendSearch());
292
+ this.sendSearch();
796
293
  }
797
294
  }
798
295
  sendSearch(resetPage = true) {
@@ -876,8 +373,8 @@ class AdmWrkComponent {
876
373
  return true;
877
374
  }
878
375
  }
879
- 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 });
880
- 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 }] });
376
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
377
+ 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", "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: 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 }] });
881
378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkComponent, decorators: [{
882
379
  type: Component,
883
380
  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>" }]
@@ -885,6 +382,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
885
382
  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: [{
886
383
  type: Inject,
887
384
  args: [ADM_BACKEND_URL]
385
+ }] }, { type: undefined, decorators: [{
386
+ type: Inject,
387
+ args: [ADM_MODULE_PATH]
888
388
  }] }];
889
389
  }, propDecorators: { cgFrom: [{
890
390
  type: ViewChild,
@@ -894,105 +394,460 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
894
394
  args: ["dlgChangeCg"]
895
395
  }] } });
896
396
 
897
- class AdmAuditsComponent {
898
- constructor(lc, localStorage, _state, http, route, location, backend) {
397
+ const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
398
+
399
+ const ProfilerDataNode_loc = {
400
+ 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
401
+ 'ID': { 'en-US': "ID", 'it-IT': "ID" },
402
+ 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
403
+ 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
404
+ 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
405
+ 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
406
+ 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
407
+ 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
408
+ 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
409
+ 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
410
+ 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
411
+ 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
412
+ 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
413
+ 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
414
+ 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
415
+ 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
416
+ 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
417
+ };
418
+
419
+ class ProfilerDataNode {
420
+ }
421
+ __decorate([
422
+ Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
423
+ autoserialize
424
+ ], ProfilerDataNode.prototype, "parentid", void 0);
425
+ __decorate([
426
+ Export(20, ProfilerDataNode_loc["ID"][Locale]),
427
+ autoserialize
428
+ ], ProfilerDataNode.prototype, "id", void 0);
429
+ __decorate([
430
+ Export(30, ProfilerDataNode_loc["Description"][Locale]),
431
+ autoserialize
432
+ ], ProfilerDataNode.prototype, "description", void 0);
433
+ __decorate([
434
+ Export(40, ProfilerDataNode_loc["Calls"][Locale]),
435
+ autoserialize
436
+ ], ProfilerDataNode.prototype, "calls", void 0);
437
+ __decorate([
438
+ Export(50, ProfilerDataNode_loc["Time"][Locale]),
439
+ autoserialize
440
+ ], ProfilerDataNode.prototype, "time", void 0);
441
+ __decorate([
442
+ Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
443
+ autoserialize
444
+ ], ProfilerDataNode.prototype, "peaktime", void 0);
445
+ __decorate([
446
+ Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
447
+ autoserialize
448
+ ], ProfilerDataNode.prototype, "mintime", void 0);
449
+ __decorate([
450
+ Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
451
+ autoserialize
452
+ ], ProfilerDataNode.prototype, "avgtime", void 0);
453
+ __decorate([
454
+ Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
455
+ autoserialize
456
+ ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
457
+ __decorate([
458
+ Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
459
+ autoserialize
460
+ ], ProfilerDataNode.prototype, "percentage", void 0);
461
+ __decorate([
462
+ Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
463
+ autoserialize
464
+ ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
465
+ __decorate([
466
+ Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
467
+ autoserialize
468
+ ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
469
+ __decorate([
470
+ Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
471
+ autoserialize
472
+ ], ProfilerDataNode.prototype, "snappeaktime", void 0);
473
+ __decorate([
474
+ Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
475
+ autoserialize
476
+ ], ProfilerDataNode.prototype, "snapmintime", void 0);
477
+ __decorate([
478
+ Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
479
+ autoserialize
480
+ ], ProfilerDataNode.prototype, "snapavgtime", void 0);
481
+ __decorate([
482
+ Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
483
+ autoserialize
484
+ ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
485
+ __decorate([
486
+ Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
487
+ autoserialize
488
+ ], ProfilerDataNode.prototype, "snappercentage", void 0);
489
+
490
+ class ProfilerDataNodesView extends AppSearch {
491
+ constructor() { super(); }
492
+ }
493
+
494
+ class AdmProfilerComponentLoc extends LocalizationService {
495
+ constructor(LOC_LOCALE) {
496
+ super(LOC_LOCALE);
497
+ super.set("en->it", "Server Profiler", ["Profiler del Server"]);
498
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
499
+ super.set("en->it", "ID", ["ID"]);
500
+ super.set("en->it", "Description", ["Descrizione"]);
501
+ super.set("en->it", "Calls", ["Chiamate"]);
502
+ super.set("en->it", "Time", ["Tempo"]);
503
+ super.set("en->it", "Peak Time", ["Tempo Max"]);
504
+ super.set("en->it", "Min. Time", ["Tempo Min"]);
505
+ super.set("en->it", "Avg. Time", ["Tempo Medio"]);
506
+ super.set("en->it", "Specific Time", ["Tempo Specifico"]);
507
+ super.set("en->it", "Percentage", ["Percentuale"]);
508
+ super.set("en->it", "Calls for Period", ["Chiamate Periodo"]);
509
+ super.set("en->it", "Time for Period", ["Tempo Periodo"]);
510
+ super.set("en->it", "Peak Time for Period", ["Tempo Max Periodo"]);
511
+ super.set("en->it", "Min. Time for Period", ["Tempo Min Periodo"]);
512
+ super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
513
+ super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
514
+ super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
515
+ }
516
+ }
517
+ AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
518
+ AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc });
519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
520
+ type: Injectable
521
+ }], ctorParameters: function () {
522
+ return [{ type: undefined, decorators: [{
523
+ type: Inject,
524
+ args: [ADM_LOCALE]
525
+ }] }];
526
+ } });
527
+
528
+ class AdmProfilerComponent {
529
+ constructor(expExts, lc, localStorage, location, _state, http, route, backend, mod) {
530
+ this.expExts = expExts;
531
+ this.lc = lc;
532
+ this.localStorage = localStorage;
533
+ this.location = location;
534
+ this._state = _state;
535
+ this.http = http;
536
+ this.route = route;
537
+ this.backend = backend;
538
+ this.mod = mod;
539
+ this.searchView = new ProfilerDataNodesView();
540
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
541
+ }
542
+ ngOnInit() {
543
+ this.storageSub = this.route.queryParams.subscribe(params => {
544
+ this.Init(params["ignoreStorage"]);
545
+ });
546
+ }
547
+ Init(ignoreStore) {
548
+ this.doInit(ignoreStore);
549
+ }
550
+ doInit(ignoreStorage) {
551
+ return __awaiter(this, void 0, void 0, function* () {
552
+ let item = yield this.localStorage.getItem("HotSearchProfilato").toPromise();
553
+ if (!ignoreStorage && item) {
554
+ this.init(item);
555
+ }
556
+ else {
557
+ this.init(null);
558
+ this.location.replaceState(`/pages/${this.mod}/profiler`);
559
+ this.route.snapshot.queryParams = [];
560
+ yield this.localStorage.removeItem("HotSearchProfilato").toPromise();
561
+ }
562
+ });
563
+ }
564
+ init(HotPotato) {
565
+ if (HotPotato) {
566
+ this.searchView = HotPotato;
567
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
568
+ }
569
+ else {
570
+ this.searchView = new ProfilerDataNodesView();
571
+ this.sendSearch();
572
+ }
573
+ }
574
+ ngOnDestroy() {
575
+ if (this.storageSub)
576
+ this.storageSub.unsubscribe();
577
+ }
578
+ sendSearch(resetPage = true) {
579
+ this.searchView.searchinprogress = true;
580
+ if (resetPage)
581
+ this.searchView.page = 1;
582
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
583
+ }
584
+ POSTGetItems(url, data) {
585
+ this.http.post(url, data).subscribe(t => {
586
+ this.searchView = t;
587
+ this.searchView.searchinprogress = false;
588
+ this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
589
+ });
590
+ }
591
+ prepareExport(dataCallBack) {
592
+ var view = JSON.parse(JSON.stringify(this.searchView));
593
+ view.page = 1;
594
+ view.itemsperpageoverride = 9999999;
595
+ this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
596
+ let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
597
+ dataCallBack(items);
598
+ });
599
+ }
600
+ }
601
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
602
+ 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: i8.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i9.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: 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.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation"] }, { type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdIf", "tdClass"] }], pipes: { "localize": i2.LocalizePipe } });
603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
604
+ type: Component,
605
+ 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>" }]
606
+ }], ctorParameters: function () {
607
+ return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
608
+ type: Inject,
609
+ args: [ADM_BACKEND_URL]
610
+ }] }, { type: undefined, decorators: [{
611
+ type: Inject,
612
+ args: [ADM_MODULE_PATH]
613
+ }] }];
614
+ } });
615
+
616
+ class TopActivitiesDataView extends AppSearch {
617
+ constructor() { super(); }
618
+ }
619
+
620
+ class AdmTopActivitieLoc extends LocalizationService {
621
+ constructor(LOC_LOCALE) {
622
+ super(LOC_LOCALE);
623
+ super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
624
+ super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
625
+ super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
626
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
627
+ super.set("en->it", "Top Activities", ["Attivita' Principali"]);
628
+ super.set("en->it", "Node Description", ["Descrizione Nodo"]);
629
+ super.set("en->it", "Node", ["Nodo"]);
630
+ super.set("en->it", "Activity", ["Attivita'"]);
631
+ super.set("en->it", "Limit", ["Limite"]);
632
+ super.set("en->it", "Node Type", ["Tipo Nodo"]);
633
+ super.set("en->it", "User", ["Utente"]);
634
+ super.set("en->it", "Tenant", ["Tenant"]);
635
+ super.set("en->it", "Process", ["Processo"]);
636
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
637
+ super.set("en->it", "second/s", ["secondo/i"]);
638
+ super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
639
+ super.set("en->it", "CPUs", ["CPU"]);
640
+ }
641
+ }
642
+ AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
643
+ AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
644
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
645
+ type: Injectable
646
+ }], ctorParameters: function () {
647
+ return [{ type: undefined, decorators: [{
648
+ type: Inject,
649
+ args: [ADM_LOCALE]
650
+ }] }];
651
+ } });
652
+
653
+ class AdmTopActivitiesComponent {
654
+ constructor(dateExts, lc, localStorage, location, _state, http, route, backend, mod) {
655
+ this.dateExts = dateExts;
899
656
  this.lc = lc;
900
657
  this.localStorage = localStorage;
658
+ this.location = location;
901
659
  this._state = _state;
902
660
  this.http = http;
903
661
  this.route = route;
904
- this.location = location;
905
662
  this.backend = backend;
906
- this.searchView = new AuditsView();
907
- this.Actions = [];
908
- this.HttpMethods = [];
909
- this.searchInProgress = false;
910
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
911
- this.HttpMethods = [
912
- { id: "GET", description: "GET" },
913
- { id: "POST", description: "POST" },
914
- { id: "PUT", description: "PUT" },
915
- { id: "PATCH", description: "PATCH" },
916
- { id: "DELETE", description: "DELETE" }
917
- ];
918
- this.Actions = [
919
- { id: "C", description: this.lc.loc("REST Call") },
920
- { id: "U", description: this.lc.loc("Update") },
921
- { id: "D", description: this.lc.loc("Delete") }
922
- ];
663
+ this.mod = mod;
664
+ this.searchView = new TopActivitiesDataView();
665
+ this.autoUpdate = false;
666
+ this.seconds = "5";
667
+ this.seriesPropertiesMapping = {};
668
+ this.propertiesSeriesMapping = {
669
+ ["cputime"]: "CPU",
670
+ ["waittime"]: "Wait",
671
+ ["scripttime"]: "Scripting",
672
+ ["dbtime"]: "DB",
673
+ ["nettime"]: "Network",
674
+ ["throttletime"]: "Throttling",
675
+ ["sleeptime"]: "Sleep",
676
+ ["iotime"]: "IO"
677
+ };
678
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
923
679
  }
924
680
  ngOnInit() {
925
681
  this.storageSub = this.route.queryParams.subscribe(params => {
926
682
  this.Init(params["ignoreStorage"]);
927
683
  });
928
684
  }
929
- ngOnDestroy() {
930
- if (this.storageSub)
931
- this.storageSub.unsubscribe();
685
+ Init(ignoreStore) {
686
+ this.doInit(ignoreStore);
932
687
  }
933
- Init(ignoreStorage) {
688
+ doInit(ignoreStorage) {
934
689
  return __awaiter(this, void 0, void 0, function* () {
935
- let item = yield this.localStorage.getItem("HotAudittato").toPromise();
690
+ let item = yield this.localStorage.getItem("HotSearchTopAct").toPromise();
936
691
  if (!ignoreStorage && item) {
937
692
  this.init(item);
938
693
  }
939
694
  else {
940
695
  this.init(null);
941
- this.location.replaceState("/pages/adm/serveraudits");
696
+ this.location.replaceState(`/pages/${this.mod}/topact`);
942
697
  this.route.snapshot.queryParams = [];
943
- yield this.localStorage.removeItem("HotAudittato").toPromise();
698
+ yield this.localStorage.removeItem("HotSearchTopAct").toPromise();
944
699
  }
945
700
  });
946
701
  }
947
702
  init(HotPotato) {
948
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
949
- //Altirmenti genero il modello nuovo normalmente
950
703
  if (HotPotato) {
951
704
  this.searchView = HotPotato;
952
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
705
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
953
706
  }
954
707
  else {
955
- this.searchView = new AuditsView();
956
- this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
957
- this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
958
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
959
- setTimeout(() => this.sendSearch());
708
+ this.searchView = new TopActivitiesDataView();
709
+ this.sendSearch();
960
710
  }
961
711
  }
962
- sendSearch(resetPage = true) {
963
- this.searchInProgress = true;
712
+ ngOnDestroy() {
713
+ if (this.storageSub)
714
+ this.storageSub.unsubscribe();
715
+ }
716
+ sendSearch(resetPage = true, update = false, searchViewOverride = null) {
717
+ this.searchView.searchinprogress = true;
964
718
  if (resetPage)
965
719
  this.searchView.page = 1;
966
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
720
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
967
721
  }
968
- POSTGetProcesses(url, data) {
969
- this.http.post(url, data).subscribe(t => {
970
- this.searchView = t;
971
- this.searchInProgress = false;
972
- this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
722
+ POSTGetItems(url, data, update) {
723
+ this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
724
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
725
+ if (!update) {
726
+ this.searchView = t;
727
+ this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
728
+ }
729
+ var dirinfos = yield this.getDirectorInfos();
730
+ this.searchView.searchinprogress = false;
731
+ this.reviewBindings(update, t, dirinfos);
732
+ }));
733
+ }
734
+ getDirectorInfos() {
735
+ return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
736
+ }
737
+ reviewBindings(update, searchViewOverride, dirInfos) {
738
+ let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
739
+ this.TopNodes = reference.topnodes;
740
+ this.TopSessions = reference.topsessions;
741
+ this.DirInfos = dirInfos;
742
+ if (!reference.actsessions || reference.actsessions.length == 0) {
743
+ this.TopActiveSessions = null;
744
+ return;
745
+ }
746
+ let series = [];
747
+ let props = Object.keys(reference.actsessions[0]);
748
+ for (let i = 0; i < props.length; i++) {
749
+ if (props[i] != 'sampletime') {
750
+ let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
751
+ series.push(s);
752
+ this.seriesPropertiesMapping[props[i]] = s;
753
+ }
754
+ }
755
+ for (let i = 0; i < reference.actsessions.length; i++) {
756
+ let itemref = reference.actsessions[i];
757
+ let theD = new Date(itemref.sampletime);
758
+ for (let i = 0; i < props.length; i++)
759
+ if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
760
+ this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
761
+ }
762
+ if (update && this.ChartInstance) {
763
+ let data = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
764
+ if (series.some(t => t.values.length > 0)) {
765
+ this.ChartInstance.addData(data);
766
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
767
+ }
768
+ }
769
+ else {
770
+ this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
771
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
772
+ }
773
+ }
774
+ autoUpdateChanged() {
775
+ if (!/^[1-9]\d*$/.test(this.seconds))
776
+ this.seconds = '10';
777
+ const secondsInMs = parseInt(this.seconds, null) * 1000;
778
+ if (this.autoUpdate) {
779
+ this.sendSearch(false, true);
780
+ this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
781
+ }
782
+ else
783
+ clearInterval(this.updateTimer);
784
+ }
785
+ dataSelectionChanged(event) {
786
+ this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
787
+ this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
788
+ var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
789
+ pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
790
+ pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
791
+ this.sendSearch(true, true, pseudoSearchView);
792
+ }
793
+ onChartLoaded(chart) {
794
+ this.ChartInstance = chart;
795
+ chart.Chart.events.on("ready", () => {
796
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
797
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
798
+ setTimeout(() => {
799
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
800
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
801
+ // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
802
+ }, 500);
973
803
  });
974
804
  }
975
805
  }
976
- 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 });
977
- AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", providers: [
978
- { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS },
979
- { provide: DateAdapter, useClass: DayJsDateAdapter, deps: [MAT_DATE_LOCALE] }
980
- ], 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 }] });
981
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
806
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
807
+ AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
808
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
809
+ ], 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", "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.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 } });
810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
982
811
  type: Component,
983
- args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], providers: [
984
- { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS },
985
- { provide: DateAdapter, useClass: DayJsDateAdapter, deps: [MAT_DATE_LOCALE] }
986
- ], 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>" }]
812
+ args: [{ selector: "topact_search", providers: [
813
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
814
+ ], 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>" }]
987
815
  }], ctorParameters: function () {
988
- return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
816
+ return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
989
817
  type: Inject,
990
818
  args: [ADM_BACKEND_URL]
819
+ }] }, { type: undefined, decorators: [{
820
+ type: Inject,
821
+ args: [ADM_MODULE_PATH]
822
+ }] }];
823
+ } });
824
+
825
+ class LocksView extends AppSearch {
826
+ constructor() { super(); }
827
+ }
828
+
829
+ class AdmEnqLoc extends LocalizationService {
830
+ constructor(LOC_LOCALE) {
831
+ super(LOC_LOCALE);
832
+ super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
833
+ super.set("en->it", "Name", ["Nome"]);
834
+ super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
835
+ super.set("en->it", "Global", ["Globale"]);
836
+ }
837
+ }
838
+ AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
839
+ AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
841
+ type: Injectable
842
+ }], ctorParameters: function () {
843
+ return [{ type: undefined, decorators: [{
844
+ type: Inject,
845
+ args: [ADM_LOCALE]
991
846
  }] }];
992
847
  } });
993
848
 
994
849
  class AdmEnqComponent {
995
- constructor(lc, localStorage, expExts, _state, http, route, location, backend) {
850
+ constructor(lc, localStorage, expExts, _state, http, route, location, backend, mod) {
996
851
  this.lc = lc;
997
852
  this.localStorage = localStorage;
998
853
  this.expExts = expExts;
@@ -1001,13 +856,12 @@ class AdmEnqComponent {
1001
856
  this.route = route;
1002
857
  this.location = location;
1003
858
  this.backend = backend;
859
+ this.mod = mod;
1004
860
  this.locksView = new LocksView();
1005
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
861
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
1006
862
  }
1007
863
  ngOnInit() {
1008
- this.storageSub = this.route.queryParams.subscribe(params => {
1009
- this.Init(params["ignoreStorage"]);
1010
- });
864
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
1011
865
  }
1012
866
  ngOnDestroy() {
1013
867
  if (this.storageSub)
@@ -1021,23 +875,20 @@ class AdmEnqComponent {
1021
875
  }
1022
876
  else {
1023
877
  this.init(null);
1024
- this.location.replaceState("/pages/adm/serverenqueues");
878
+ this.location.replaceState(`/pages/${this.mod}/serverenqueues`);
1025
879
  this.route.snapshot.queryParams = [];
1026
880
  yield this.localStorage.removeItem("HotEnqueue").toPromise();
1027
881
  }
1028
882
  });
1029
883
  }
1030
884
  init(HotPotato) {
1031
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1032
- //Altirmenti genero il modello nuovo normalmente
1033
885
  if (HotPotato) {
1034
886
  this.locksView = HotPotato;
1035
887
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerLocks"], this.locksView);
1036
888
  }
1037
889
  else {
1038
890
  this.locksView = new LocksView();
1039
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1040
- setTimeout(() => this.sendSearch());
891
+ this.sendSearch();
1041
892
  }
1042
893
  }
1043
894
  sendSearch(resetPage = true) {
@@ -1052,8 +903,8 @@ class AdmEnqComponent {
1052
903
  });
1053
904
  }
1054
905
  }
1055
- 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 });
1056
- 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 }] });
906
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
907
+ 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", "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: 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 }] });
1057
908
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqComponent, decorators: [{
1058
909
  type: Component,
1059
910
  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>" }]
@@ -1061,11 +912,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1061
912
  return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i1.ExportService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
1062
913
  type: Inject,
1063
914
  args: [ADM_BACKEND_URL]
915
+ }] }, { type: undefined, decorators: [{
916
+ type: Inject,
917
+ args: [ADM_MODULE_PATH]
918
+ }] }];
919
+ } });
920
+
921
+ class KeyValue {
922
+ constructor(id, description) {
923
+ this.id = id;
924
+ this.description = description;
925
+ }
926
+ }
927
+
928
+ class MetricsView extends AppSearch {
929
+ constructor() { super(); }
930
+ }
931
+
932
+ class AdmMetricsLoc extends LocalizationService {
933
+ constructor(LOC_LOCALE) {
934
+ super(LOC_LOCALE);
935
+ super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
936
+ super.set("en->it", "Session ID", ["Cod. Sessione"]);
937
+ super.set("en->it", "Session Serial", ["Seriale Sessione"]);
938
+ super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
939
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
940
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
941
+ super.set("en->it", "second/s", ["secondo/i"]);
942
+ super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
943
+ }
944
+ }
945
+ AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
946
+ AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
948
+ type: Injectable
949
+ }], ctorParameters: function () {
950
+ return [{ type: undefined, decorators: [{
951
+ type: Inject,
952
+ args: [ADM_LOCALE]
1064
953
  }] }];
1065
954
  } });
1066
955
 
1067
956
  class AdmMetricsComponent {
1068
- constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
957
+ constructor(dateExts, lc, localStorage, location, _state, http, route, backend, mod) {
1069
958
  this.dateExts = dateExts;
1070
959
  this.lc = lc;
1071
960
  this.localStorage = localStorage;
@@ -1074,6 +963,7 @@ class AdmMetricsComponent {
1074
963
  this.http = http;
1075
964
  this.route = route;
1076
965
  this.backend = backend;
966
+ this.mod = mod;
1077
967
  this.MetricsChartCache = {};
1078
968
  this.searchView = new MetricsView();
1079
969
  this.autoUpdate = false;
@@ -1082,7 +972,7 @@ class AdmMetricsComponent {
1082
972
  this.selectedInstance = "";
1083
973
  this.instanceRequired = false;
1084
974
  this.metricsToShow = [];
1085
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
975
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
1086
976
  }
1087
977
  ngOnInit() {
1088
978
  this.storageSub = this.route.queryParams.subscribe(params => {
@@ -1111,23 +1001,20 @@ class AdmMetricsComponent {
1111
1001
  }
1112
1002
  else {
1113
1003
  this.init(null);
1114
- this.location.replaceState("/pages/adm/metrics");
1004
+ this.location.replaceState(`/pages/${this.mod}/metrics`);
1115
1005
  this.route.snapshot.queryParams = [];
1116
1006
  yield this.localStorage.removeItem("HotSearchMetrics").toPromise();
1117
1007
  }
1118
1008
  });
1119
1009
  }
1120
1010
  init(HotPotato) {
1121
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1122
- //Altirmenti genero il modello nuovo normalmente
1123
1011
  if (HotPotato) {
1124
1012
  this.searchView = HotPotato;
1125
1013
  this.POSTGetItems(this.backend + Repository["POST_Adm_GetMetrics"], this.searchView, false);
1126
1014
  }
1127
1015
  else {
1128
1016
  this.searchView = new MetricsView();
1129
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1130
- setTimeout(() => this.sendSearch());
1017
+ this.sendSearch();
1131
1018
  }
1132
1019
  this.dateChanged();
1133
1020
  }
@@ -1148,7 +1035,7 @@ class AdmMetricsComponent {
1148
1035
  POSTGetItems(url, data, update) {
1149
1036
  data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);
1150
1037
  this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
1151
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1038
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1152
1039
  if (!update) {
1153
1040
  this.selectedInstance = "";
1154
1041
  this.metricsToShow = [];
@@ -1205,7 +1092,7 @@ class AdmMetricsComponent {
1205
1092
  clearInterval(this.updateTimer);
1206
1093
  }
1207
1094
  }
1208
- 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 });
1095
+ 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 }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
1209
1096
  AdmMetricsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmMetricsComponent, selector: "metrics_search", providers: [
1210
1097
  { provide: LocalizationService, useClass: AdmMetricsLoc }
1211
1098
  ], 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 } });
@@ -1218,6 +1105,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1218
1105
  return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
1219
1106
  type: Inject,
1220
1107
  args: [ADM_BACKEND_URL]
1108
+ }] }, { type: undefined, decorators: [{
1109
+ type: Inject,
1110
+ args: [ADM_MODULE_PATH]
1111
+ }] }];
1112
+ } });
1113
+
1114
+ // Angular
1115
+ class AdmLogsComponent {
1116
+ constructor(_state, http, lc, route, backend) {
1117
+ this._state = _state;
1118
+ this.http = http;
1119
+ this.lc = lc;
1120
+ this.route = route;
1121
+ this.backend = backend;
1122
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
1123
+ }
1124
+ ngOnInit() {
1125
+ this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
1126
+ }
1127
+ }
1128
+ AdmLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, deps: [{ token: BaseModuleCommunicationsConsumer }, { token: i6.HTTPService }, { token: i2.LocalizationService }, { token: i7.ActivatedRoute }, { token: ADM_BACKEND_URL }], target: i0.ɵɵFactoryTarget.Component });
1129
+ 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"] }] });
1130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
1131
+ type: Component,
1132
+ 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>" }]
1133
+ }], ctorParameters: function () {
1134
+ return [{ type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i2.LocalizationService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
1135
+ type: Inject,
1136
+ args: [ADM_BACKEND_URL]
1221
1137
  }] }];
1222
1138
  } });
1223
1139
 
@@ -1241,6 +1157,7 @@ const MODULES = [
1241
1157
  FormsModule,
1242
1158
  // Material
1243
1159
  MatDatepickerModule,
1160
+ MatDayjsDateModule,
1244
1161
  MatIconModule,
1245
1162
  MatInputModule,
1246
1163
  // Bootstrap
@@ -1255,11 +1172,6 @@ const MODULES = [
1255
1172
  FormsAndValidationsModule,
1256
1173
  EsGertrudeModule,
1257
1174
  EsChartsModule,
1258
- EsTableModule,
1259
- FormsAndValidationsModule,
1260
- EsChartsModule,
1261
- FormsAndValidationsModule,
1262
- EsChartsModule,
1263
1175
  NgxMatDatetimePickerModule,
1264
1176
  RouterModule.forChild(routeConfig),
1265
1177
  ];
@@ -1287,6 +1199,7 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
1287
1199
  FormsModule,
1288
1200
  // Material
1289
1201
  MatDatepickerModule,
1202
+ MatDayjsDateModule,
1290
1203
  MatIconModule,
1291
1204
  MatInputModule,
1292
1205
  // Bootstrap
@@ -1301,20 +1214,14 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
1301
1214
  FormsAndValidationsModule,
1302
1215
  EsGertrudeModule,
1303
1216
  EsChartsModule,
1304
- EsTableModule,
1305
- FormsAndValidationsModule,
1306
- EsChartsModule,
1307
- FormsAndValidationsModule,
1308
- EsChartsModule,
1309
1217
  NgxMatDatetimePickerModule, i7.RouterModule
1310
1218
  ] });
1311
- AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, providers: [], imports: [[...MODULES]] });
1219
+ AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, imports: [[...MODULES]] });
1312
1220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, decorators: [{
1313
1221
  type: NgModule,
1314
1222
  args: [{
1315
1223
  imports: [...MODULES],
1316
- declarations: [...COMPONENTS],
1317
- providers: []
1224
+ declarations: [...COMPONENTS]
1318
1225
  }]
1319
1226
  }] });
1320
1227
 
@@ -1326,5 +1233,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1326
1233
  * Generated bundle index. Do not edit.
1327
1234
  */
1328
1235
 
1329
- export { ADM_BACKEND_URL, ADM_LOCALE, AdmModule, BaseModuleCommunicationsConsumer, routeConfig };
1236
+ export { ADM_BACKEND_URL, ADM_LOCALE, ADM_MODULE_PATH, AdmModule, BaseModuleCommunicationsConsumer, routeConfig };
1330
1237
  //# sourceMappingURL=esfaenza-admin-module.mjs.map