@esfaenza/admin-module 13.1.0-beta6 → 13.1.1

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 (41) 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 +11 -13
  4. package/esm2020/lib/components/enqueues/adm_enq.component.mjs +11 -14
  5. package/esm2020/lib/components/logs/adm_logs.component.mjs +12 -9
  6. package/esm2020/lib/components/metrics/metrics_search.component.mjs +10 -11
  7. package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +2 -2
  8. package/esm2020/lib/components/profiler/adm_profiler.component.mjs +12 -16
  9. package/esm2020/lib/components/topact/topact_search.component.mjs +10 -12
  10. package/esm2020/lib/components/workers/adm_wrk.component.mjs +8 -11
  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/fesm2015/esfaenza-admin-module.mjs +620 -730
  18. package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
  19. package/fesm2020/esfaenza-admin-module.mjs +613 -719
  20. package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
  21. package/lib/admin-module.module.d.ts +23 -16
  22. package/lib/components/audits/adm_audits.component.d.ts +2 -1
  23. package/lib/components/enqueues/adm_enq.component.d.ts +3 -3
  24. package/lib/components/logs/adm_logs.component.d.ts +3 -1
  25. package/lib/components/metrics/metrics_search.component.d.ts +6 -3
  26. package/lib/components/profiler/adm_profiler.component.d.ts +3 -3
  27. package/lib/components/topact/topact_search.component.d.ts +6 -3
  28. package/lib/components/workers/adm_wrk.component.d.ts +3 -2
  29. package/lib/models/components/AuditsView.d.ts +1 -1
  30. package/lib/models/components/ProfilerDataNodesView.d.ts +1 -1
  31. package/lib/models/components/TopActivitiesDataView.d.ts +1 -1
  32. package/lib/models/components/TopActivity.d.ts +3 -1
  33. package/package.json +10 -2
  34. package/esm2020/lib/components/index.mjs +0 -14
  35. package/esm2020/lib/models/components/Lock.loc.mjs +0 -13
  36. package/esm2020/lib/models/components/Lock.mjs +0 -48
  37. package/esm2020/lib/models/index.mjs +0 -22
  38. package/lib/components/index.d.ts +0 -13
  39. package/lib/models/components/Lock.d.ts +0 -12
  40. package/lib/models/components/Lock.loc.d.ts +0 -42
  41. 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,49 +21,75 @@ 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';
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
+ };
36
66
 
37
67
  const ADM_LOCALE = new InjectionToken('ADM_LOCALE');
38
68
  const ADM_BACKEND_URL = new InjectionToken('ADM_BACKEND_URL');
39
69
 
40
- class AdmProfilerComponentLoc extends LocalizationService {
70
+ class AdmAuditLoc extends LocalizationService {
41
71
  constructor(LOC_LOCALE) {
42
72
  super(LOC_LOCALE);
43
- super.set("en->it", "Profiler Search", ["Ricerca dati Profiler"]);
44
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
45
- super.set("en->it", "ID", ["ID"]);
46
- super.set("en->it", "Description", ["Descrizione"]);
47
- super.set("en->it", "Calls", ["Chiamate"]);
48
- super.set("en->it", "Time", ["Tempo"]);
49
- super.set("en->it", "Peak Time", ["Tempo Max"]);
50
- super.set("en->it", "Min. Time", ["Tempo Min"]);
51
- super.set("en->it", "Avg. Time", ["Tempo Medio"]);
52
- super.set("en->it", "Specific Time", ["Tempo Specifico"]);
53
- super.set("en->it", "Percentage", ["Percentuale"]);
54
- super.set("en->it", "Calls for Period", ["Chiamate Periodo"]);
55
- super.set("en->it", "Time for Period", ["Tempo Periodo"]);
56
- super.set("en->it", "Peak Time for Period", ["Tempo Max Periodo"]);
57
- super.set("en->it", "Min. Time for Period", ["Tempo Min Periodo"]);
58
- super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
59
- super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
60
- super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
73
+ super.set("en->it", "Search Application Audits", ["Ricerca Audit Applicativi"]);
74
+ super.set("en->it", "User", ["Utente"]);
75
+ super.set("en->it", "REST Call", ["Chiamata REST"]);
76
+ super.set("en->it", "Update", ["Aggiornamento"]);
77
+ super.set("en->it", "Route", ["Route"]);
78
+ super.set("en->it", "Action", ["Azione"]);
79
+ super.set("en->it", "HTTP Method", ["Metodo HTTP"]);
80
+ super.set("en->it", "Arguments", ["Argomenti"]);
81
+ super.set("en->it", "Object ID", ["ID Oggetto"]);
82
+ super.set("en->it", "Object Type", ["Tipo Oggetto"]);
83
+ super.set("en->it", "Object Data", ["Dati Oggetto"]);
84
+ super.set("en->it", "Loading Application Audits", ["Carico gli Audit dell'Applicazione"]);
85
+ super.set("en->it", "Date", ["Data"]);
86
+ super.set("en->it", "HTTP Response", ["Risposta HTTP"]);
87
+ super.set("en->it", "Application Error Code", ["Codice Errore Applicativo"]);
61
88
  }
62
89
  }
63
- AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
64
- AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
90
+ AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
91
+ AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, decorators: [{
66
93
  type: Injectable
67
94
  }], ctorParameters: function () {
68
95
  return [{ type: undefined, decorators: [{
@@ -71,39 +98,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
71
98
  }] }];
72
99
  } });
73
100
 
74
- class AdmTopActivitieLoc extends LocalizationService {
75
- constructor(LOC_LOCALE) {
76
- super(LOC_LOCALE);
77
- super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
78
- super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
79
- super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
80
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
81
- super.set("en->it", "Top Activities", ["Attivita' Principali"]);
82
- super.set("en->it", "Node Description", ["Descrizione Nodo"]);
83
- super.set("en->it", "Node", ["Nodo"]);
84
- super.set("en->it", "Activity", ["Attivita'"]);
85
- super.set("en->it", "Limit", ["Limite"]);
86
- super.set("en->it", "Node Type", ["Tipo Nodo"]);
87
- super.set("en->it", "User", ["Utente"]);
88
- super.set("en->it", "Tenant", ["Tenant"]);
89
- super.set("en->it", "Process", ["Processo"]);
90
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
91
- super.set("en->it", "second/s", ["secondo/i"]);
92
- super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
93
- super.set("en->it", "CPUs", ["CPU"]);
101
+ class BaseModuleCommunicationsConsumer {
102
+ }
103
+
104
+ class AdmAuditsComponent {
105
+ constructor(lc, localStorage, _state, http, route, location, backend) {
106
+ this.lc = lc;
107
+ this.localStorage = localStorage;
108
+ this._state = _state;
109
+ this.http = http;
110
+ this.route = route;
111
+ this.location = location;
112
+ this.backend = backend;
113
+ this.searchView = new AuditsView();
114
+ this.Actions = [];
115
+ this.HttpMethods = [];
116
+ this.searchInProgress = false;
117
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
118
+ this.HttpMethods = [
119
+ { id: "GET", description: "GET" },
120
+ { id: "POST", description: "POST" },
121
+ { id: "PUT", description: "PUT" },
122
+ { id: "PATCH", description: "PATCH" },
123
+ { id: "DELETE", description: "DELETE" }
124
+ ];
125
+ this.Actions = [
126
+ { id: "C", description: this.lc.loc("REST Call") },
127
+ { id: "U", description: this.lc.loc("Update") },
128
+ { id: "D", description: this.lc.loc("Delete") }
129
+ ];
130
+ }
131
+ ngOnInit() {
132
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
133
+ }
134
+ ngOnDestroy() {
135
+ if (this.storageSub)
136
+ this.storageSub.unsubscribe();
137
+ }
138
+ Init(ignoreStorage) {
139
+ return __awaiter(this, void 0, void 0, function* () {
140
+ let item = yield this.localStorage.getItem("HotAudittato").toPromise();
141
+ if (!ignoreStorage && item) {
142
+ this.init(item);
143
+ }
144
+ else {
145
+ this.init(null);
146
+ this.location.replaceState("/pages/adm/serveraudits");
147
+ this.route.snapshot.queryParams = [];
148
+ yield this.localStorage.removeItem("HotAudittato").toPromise();
149
+ }
150
+ });
151
+ }
152
+ init(HotPotato) {
153
+ //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
154
+ //Altirmenti genero il modello nuovo normalmente
155
+ if (HotPotato) {
156
+ this.searchView = HotPotato;
157
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
158
+ }
159
+ else {
160
+ this.searchView = new AuditsView();
161
+ this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
162
+ this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
163
+ this.sendSearch();
164
+ }
165
+ }
166
+ sendSearch(resetPage = true) {
167
+ this.searchInProgress = true;
168
+ if (resetPage)
169
+ this.searchView.page = 1;
170
+ this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
171
+ }
172
+ POSTGetProcesses(url, data) {
173
+ this.http.post(url, data).subscribe(t => {
174
+ this.searchView = t;
175
+ this.searchInProgress = false;
176
+ this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
177
+ });
94
178
  }
95
179
  }
96
- AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
97
- AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
99
- type: Injectable
180
+ 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 });
181
+ 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 }] });
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
183
+ type: Component,
184
+ 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>" }]
100
185
  }], ctorParameters: function () {
101
- return [{ type: undefined, decorators: [{
186
+ return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
102
187
  type: Inject,
103
- args: [ADM_LOCALE]
188
+ args: [ADM_BACKEND_URL]
104
189
  }] }];
105
190
  } });
106
191
 
192
+ class ProcessesView extends AppSearch {
193
+ constructor() { super(); }
194
+ }
195
+
107
196
  class AdmWrkLoc extends LocalizationService {
108
197
  constructor(LOC_LOCALE) {
109
198
  super(LOC_LOCALE);
@@ -134,600 +223,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
134
223
  }], ctorParameters: function () {
135
224
  return [{ type: undefined, decorators: [{
136
225
  type: Inject,
137
- args: [ADM_LOCALE]
138
- }] }];
139
- } });
140
-
141
- class AdmAuditLoc extends LocalizationService {
142
- constructor(LOC_LOCALE) {
143
- super(LOC_LOCALE);
144
- super.set("en->it", "Search Application Audits", ["Ricerca Audit Applicativi"]);
145
- super.set("en->it", "User", ["Utente"]);
146
- super.set("en->it", "REST Call", ["Chiamata REST"]);
147
- super.set("en->it", "Update", ["Aggiornamento"]);
148
- super.set("en->it", "Route", ["Route"]);
149
- super.set("en->it", "Action", ["Azione"]);
150
- super.set("en->it", "HTTP Method", ["Metodo HTTP"]);
151
- super.set("en->it", "Arguments", ["Argomenti"]);
152
- super.set("en->it", "Object ID", ["ID Oggetto"]);
153
- super.set("en->it", "Object Type", ["Tipo Oggetto"]);
154
- super.set("en->it", "Object Data", ["Dati Oggetto"]);
155
- super.set("en->it", "Loading Application Audits", ["Carico gli Audit dell'Applicazione"]);
156
- super.set("en->it", "Date", ["Data"]);
157
- super.set("en->it", "HTTP Response", ["Risposta HTTP"]);
158
- super.set("en->it", "Application Error Code", ["Codice Errore Applicativo"]);
159
- }
160
- }
161
- AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
162
- AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc });
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditLoc, decorators: [{
164
- type: Injectable
165
- }], ctorParameters: function () {
166
- return [{ type: undefined, decorators: [{
167
- type: Inject,
168
- args: [ADM_LOCALE]
169
- }] }];
170
- } });
171
-
172
- class AdmEnqLoc extends LocalizationService {
173
- constructor(LOC_LOCALE) {
174
- super(LOC_LOCALE);
175
- super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
176
- super.set("en->it", "Name", ["Nome"]);
177
- super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
178
- super.set("en->it", "Global", ["Globale"]);
179
- }
180
- }
181
- AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
182
- AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
183
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
184
- type: Injectable
185
- }], ctorParameters: function () {
186
- return [{ type: undefined, decorators: [{
187
- type: Inject,
188
- args: [ADM_LOCALE]
189
- }] }];
190
- } });
191
-
192
- class AdmMetricsLoc extends LocalizationService {
193
- constructor(LOC_LOCALE) {
194
- super(LOC_LOCALE);
195
- super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
196
- super.set("en->it", "Session ID", ["Cod. Sessione"]);
197
- super.set("en->it", "Session Serial", ["Seriale Sessione"]);
198
- super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
199
- super.set("en->it", "Loading Data", ["Carico i Dati"]);
200
- super.set("en->it", "Update every", ["Aggiorna ogni"]);
201
- super.set("en->it", "second/s", ["secondo/i"]);
202
- super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
203
- }
204
- }
205
- AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
206
- AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
208
- type: Injectable
209
- }], ctorParameters: function () {
210
- return [{ type: undefined, decorators: [{
211
- type: Inject,
212
- args: [ADM_LOCALE]
213
- }] }];
214
- } });
215
-
216
- class KeyValue {
217
- constructor(id, description) {
218
- this.id = id;
219
- this.description = description;
220
- }
221
- }
222
-
223
- const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
224
-
225
- const Repository = {
226
- GET_Adm_ChangeProcessConsumerGroup: "/api/Adm/ChangeProcessConsumerGroup",
227
- GET_Adm_ClearAllCaches: "/api/Adm/ClearAllCaches",
228
- GET_Adm_GetConsumerGroups: "/api/Adm/GetConsumerGroups#cache",
229
- GET_Adm_GetInfos: "/api/Adm/GetInfos",
230
- GET_Adm_GetMetrics: "/api/Adm/GetMetrics",
231
- POST_Adm_GetMetrics: "/api/Adm/GetMetrics",
232
- POST_Adm_GetProfilerDataNodes: "/api/Adm/GetProfilerDataNodes",
233
- POST_Adm_GetServerAudits: "/api/Adm/GetServerAudits",
234
- POST_Adm_GetServerLocks: "/api/Adm/GetServerLocks",
235
- GET_Adm_GetServerLogs: "/api/Adm/GetServerLogs",
236
- POST_Adm_GetServerWorkers: "/api/Adm/GetServerWorkers",
237
- POST_Adm_GetTopActivities: "/api/Adm/GetTopActivities",
238
- GET_Adm_GetWorkerStatus: "/api/Adm/GetWorkerStatus",
239
- GET_Adm_InvalidateServerSideCache: "/api/Adm/InvalidateServerSideCache",
240
- GET_Adm_KillProcess: "/api/Adm/KillProcess",
241
- GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
242
- GET_Adm_StartWorker: "/api/Adm/StartWorker",
243
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
244
- };
245
-
246
- const Lock_loc = {
247
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
248
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
249
- 'Hold Mode': { 'en-US': "Hold Mode", 'it-IT': "Modalità Hold" },
250
- 'Request Mode': { 'en-US': "Request Mode", 'it-IT': "Modalità Richiesta" },
251
- 'Parameter 1': { 'en-US': "Parameter 1", 'it-IT': "Parametro 1" },
252
- 'Parameter 2': { 'en-US': "Parameter 2", 'it-IT': "Parametro 2" },
253
- 'Tenant Level Lock': { 'en-US': "Tenant Level Lock", 'it-IT': "Lock a livello Tenant" },
254
- 'Tenant': { 'en-US': "Tenant", 'it-IT': "Tenant" },
255
- 'Grant Time': { 'en-US': "Grant Time", 'it-IT': "Istante Concessione" },
256
- 'Blocked on SID': { 'en-US': "Blocked on SID", 'it-IT': "Bloccato su SID" }
257
- };
258
-
259
- const ProfilerDataNode_loc = {
260
- 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
261
- 'ID': { 'en-US': "ID", 'it-IT': "ID" },
262
- 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
263
- 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
264
- 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
265
- 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
266
- 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
267
- 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
268
- 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
269
- 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
270
- 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
271
- 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
272
- 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
273
- 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
274
- 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
275
- 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
276
- 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
277
- };
278
-
279
- class ProcessesView extends AppSearch {
280
- constructor() { super(); }
281
- }
282
-
283
- class ProfilerDataNode {
284
- }
285
- __decorate([
286
- Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
287
- autoserialize
288
- ], ProfilerDataNode.prototype, "parentid", void 0);
289
- __decorate([
290
- Export(20, ProfilerDataNode_loc["ID"][Locale]),
291
- autoserialize
292
- ], ProfilerDataNode.prototype, "id", void 0);
293
- __decorate([
294
- Export(30, ProfilerDataNode_loc["Description"][Locale]),
295
- autoserialize
296
- ], ProfilerDataNode.prototype, "description", void 0);
297
- __decorate([
298
- Export(40, ProfilerDataNode_loc["Calls"][Locale]),
299
- autoserialize
300
- ], ProfilerDataNode.prototype, "calls", void 0);
301
- __decorate([
302
- Export(50, ProfilerDataNode_loc["Time"][Locale]),
303
- autoserialize
304
- ], ProfilerDataNode.prototype, "time", void 0);
305
- __decorate([
306
- Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
307
- autoserialize
308
- ], ProfilerDataNode.prototype, "peaktime", void 0);
309
- __decorate([
310
- Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
311
- autoserialize
312
- ], ProfilerDataNode.prototype, "mintime", void 0);
313
- __decorate([
314
- Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
315
- autoserialize
316
- ], ProfilerDataNode.prototype, "avgtime", void 0);
317
- __decorate([
318
- Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
319
- autoserialize
320
- ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
321
- __decorate([
322
- Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
323
- autoserialize
324
- ], ProfilerDataNode.prototype, "percentage", void 0);
325
- __decorate([
326
- Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
327
- autoserialize
328
- ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
329
- __decorate([
330
- Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
331
- autoserialize
332
- ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
333
- __decorate([
334
- Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
335
- autoserialize
336
- ], ProfilerDataNode.prototype, "snappeaktime", void 0);
337
- __decorate([
338
- Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
339
- autoserialize
340
- ], ProfilerDataNode.prototype, "snapmintime", void 0);
341
- __decorate([
342
- Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
343
- autoserialize
344
- ], ProfilerDataNode.prototype, "snapavgtime", void 0);
345
- __decorate([
346
- Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
347
- autoserialize
348
- ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
349
- __decorate([
350
- Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
351
- autoserialize
352
- ], ProfilerDataNode.prototype, "snappercentage", void 0);
353
-
354
- class ProfilerDataNodesView extends AppSearch {
355
- constructor() { super(); }
356
- }
357
-
358
- class TopNode {
359
- }
360
-
361
- class TopSession {
362
- }
363
-
364
- class ActiveSession {
365
- }
366
-
367
- class TopActivity {
368
- }
369
-
370
- class TopActivitiesDataView extends AppSearch {
371
- constructor() { super(); }
372
- }
373
-
374
- class Audit {
375
- }
376
-
377
- class AuditsView extends AppSearch {
378
- constructor() {
379
- super();
380
- this.filteraction = '';
381
- this.filterhttp = '';
382
- }
383
- }
384
-
385
- class Lock {
386
- }
387
- __decorate([
388
- Export(10, Lock_loc["ID"][Locale]),
389
- autoserialize
390
- ], Lock.prototype, "id", void 0);
391
- __decorate([
392
- Export(20, Lock_loc["Description"][Locale]),
393
- autoserialize
394
- ], Lock.prototype, "description", void 0);
395
- __decorate([
396
- Export(30, Lock_loc["Hold Mode"][Locale]),
397
- autoserialize
398
- ], Lock.prototype, "holdmode", void 0);
399
- __decorate([
400
- Export(40, Lock_loc["Request Mode"][Locale]),
401
- autoserialize
402
- ], Lock.prototype, "requestmode", void 0);
403
- __decorate([
404
- Export(50, Lock_loc["Parameter 1"][Locale]),
405
- autoserialize
406
- ], Lock.prototype, "p1", void 0);
407
- __decorate([
408
- Export(60, Lock_loc["Parameter 2"][Locale]),
409
- autoserialize
410
- ], Lock.prototype, "p2", void 0);
411
- __decorate([
412
- Export(70, Lock_loc["Tenant Level Lock"][Locale]),
413
- autoserialize
414
- ], Lock.prototype, "tenantlock", void 0);
415
- __decorate([
416
- Export(80, Lock_loc["Tenant"][Locale]),
417
- autoserialize
418
- ], Lock.prototype, "tenant", void 0);
419
- __decorate([
420
- Export(90, Lock_loc["Blocked on SID"][Locale]),
421
- autoserialize
422
- ], Lock.prototype, "blockedon", void 0);
423
- __decorate([
424
- Export(100, Lock_loc["Grant Time"][Locale], "DD/MM/YYYY HH:mm:ss"),
425
- autoserializeAs(Date)
426
- ], Lock.prototype, "granttime", void 0);
427
-
428
- class LocksView extends AppSearch {
429
- constructor() { super(); }
430
- }
431
-
432
- class DirectorInfos {
433
- }
434
-
435
- class MetricsView extends AppSearch {
436
- constructor() { super(); }
437
- }
438
-
439
- class MetricChart extends LineChartData {
440
- }
441
-
442
- class Metric {
443
- }
444
-
445
- class BaseModuleCommunicationsConsumer {
446
- }
447
-
448
- class AdmProfilerComponent {
449
- constructor(expExts, lc, localStorage, location, _state, http, route, backend) {
450
- this.expExts = expExts;
451
- this.lc = lc;
452
- this.localStorage = localStorage;
453
- this.location = location;
454
- this._state = _state;
455
- this.http = http;
456
- this.route = route;
457
- this.backend = backend;
458
- this.searchView = new ProfilerDataNodesView();
459
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
460
- }
461
- ngOnInit() {
462
- this.storageSub = this.route.queryParams.subscribe(params => {
463
- this.Init(params["ignoreStorage"]);
464
- });
465
- }
466
- Init(ignoreStore) {
467
- this.doInit(ignoreStore);
468
- }
469
- doInit(ignoreStorage) {
470
- return __awaiter(this, void 0, void 0, function* () {
471
- let item = yield this.localStorage.getItem("HotSearchProfilato").toPromise();
472
- if (!ignoreStorage && item) {
473
- this.init(item);
474
- }
475
- else {
476
- this.init(null);
477
- this.location.replaceState("/pages/adm/profiler");
478
- this.route.snapshot.queryParams = [];
479
- yield this.localStorage.removeItem("HotSearchProfilato").toPromise();
480
- }
481
- });
482
- }
483
- init(HotPotato) {
484
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
485
- //Altirmenti genero il modello nuovo normalmente
486
- if (HotPotato) {
487
- this.searchView = HotPotato;
488
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
489
- }
490
- else {
491
- this.searchView = new ProfilerDataNodesView();
492
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
493
- setTimeout(() => this.sendSearch());
494
- }
495
- }
496
- ngOnDestroy() {
497
- if (this.storageSub)
498
- this.storageSub.unsubscribe();
499
- }
500
- sendSearch(resetPage = true) {
501
- this.searchView.searchinprogress = true;
502
- if (resetPage)
503
- this.searchView.page = 1;
504
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
505
- }
506
- POSTGetItems(url, data) {
507
- this.http.post(url, data).subscribe(t => {
508
- this.searchView = t;
509
- this.searchView.searchinprogress = false;
510
- this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
511
- });
512
- }
513
- prepareExport(dataCallBack) {
514
- var view = JSON.parse(JSON.stringify(this.searchView));
515
- view.page = 1;
516
- view.itemsperpageoverride = 9999999;
517
- this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
518
- let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
519
- dataCallBack(items);
520
- });
521
- }
522
- }
523
- 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 });
524
- AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmProfilerComponent, selector: "adm_profiler", providers: [
525
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
526
- ], 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 } });
527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
528
- type: Component,
529
- args: [{ selector: "adm_profiler", providers: [
530
- { provide: LocalizationService, useClass: AdmProfilerComponentLoc }
531
- ], 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>" }]
532
- }], ctorParameters: function () {
533
- return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
534
- type: Inject,
535
- args: [ADM_BACKEND_URL]
536
- }] }];
537
- } });
538
-
539
- class AdmLogsComponent {
540
- constructor(_state, http, route, backend) {
541
- this._state = _state;
542
- this.http = http;
543
- this.route = route;
544
- this.backend = backend;
545
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
546
- }
547
- ngOnInit() {
548
- this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
549
- }
550
- }
551
- 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 });
552
- 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"] }] });
553
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
554
- type: Component,
555
- 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>" }]
556
- }], ctorParameters: function () {
557
- return [{ type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
558
- type: Inject,
559
- args: [ADM_BACKEND_URL]
560
- }] }];
561
- } });
562
-
563
- class AdmTopActivitiesComponent {
564
- constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
565
- this.dateExts = dateExts;
566
- this.lc = lc;
567
- this.localStorage = localStorage;
568
- this.location = location;
569
- this._state = _state;
570
- this.http = http;
571
- this.route = route;
572
- this.backend = backend;
573
- this.searchView = new TopActivitiesDataView();
574
- this.autoUpdate = false;
575
- this.seconds = "5";
576
- this.seriesPropertiesMapping = {};
577
- this.propertiesSeriesMapping = {
578
- ["cputime"]: "CPU",
579
- ["waittime"]: "Wait",
580
- ["scripttime"]: "Scripting",
581
- ["dbtime"]: "DB",
582
- ["nettime"]: "Network",
583
- ["throttletime"]: "Throttling",
584
- ["sleeptime"]: "Sleep",
585
- ["iotime"]: "IO"
586
- };
587
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
588
- }
589
- ngOnInit() {
590
- this.storageSub = this.route.queryParams.subscribe(params => {
591
- this.Init(params["ignoreStorage"]);
592
- });
593
- }
594
- Init(ignoreStore) {
595
- this.doInit(ignoreStore);
596
- }
597
- doInit(ignoreStorage) {
598
- return __awaiter(this, void 0, void 0, function* () {
599
- let item = yield this.localStorage.getItem("HotSearchTopAct").toPromise();
600
- if (!ignoreStorage && item) {
601
- this.init(item);
602
- }
603
- else {
604
- this.init(null);
605
- this.location.replaceState("/pages/adm/topact");
606
- this.route.snapshot.queryParams = [];
607
- yield this.localStorage.removeItem("HotSearchTopAct").toPromise();
608
- }
609
- });
610
- }
611
- init(HotPotato) {
612
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
613
- //Altirmenti genero il modello nuovo normalmente
614
- if (HotPotato) {
615
- this.searchView = HotPotato;
616
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
617
- }
618
- else {
619
- this.searchView = new TopActivitiesDataView();
620
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
621
- setTimeout(() => this.sendSearch());
622
- }
623
- }
624
- ngOnDestroy() {
625
- if (this.storageSub)
626
- this.storageSub.unsubscribe();
627
- }
628
- sendSearch(resetPage = true, update = false, searchViewOverride = null) {
629
- this.searchView.searchinprogress = true;
630
- if (resetPage)
631
- this.searchView.page = 1;
632
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
633
- }
634
- POSTGetItems(url, data, update) {
635
- this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
636
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
637
- if (!update) {
638
- this.searchView = t;
639
- this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
640
- }
641
- var dirinfos = yield this.getDirectorInfos();
642
- this.searchView.searchinprogress = false;
643
- this.reviewBindings(update, t, dirinfos);
644
- }));
645
- }
646
- getDirectorInfos() {
647
- return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
648
- }
649
- reviewBindings(update, searchViewOverride, dirInfos) {
650
- let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
651
- this.TopNodes = reference.topnodes;
652
- this.TopSessions = reference.topsessions;
653
- this.DirInfos = dirInfos;
654
- if (!reference.actsessions || reference.actsessions.length == 0) {
655
- this.TopActiveSessions = null;
656
- return;
657
- }
658
- let series = [];
659
- let props = Object.keys(reference.actsessions[0]);
660
- for (let i = 0; i < props.length; i++) {
661
- if (props[i] != 'sampletime') {
662
- let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
663
- series.push(s);
664
- this.seriesPropertiesMapping[props[i]] = s;
665
- }
666
- }
667
- for (let i = 0; i < reference.actsessions.length; i++) {
668
- let itemref = reference.actsessions[i];
669
- let theD = new Date(itemref.sampletime);
670
- for (let i = 0; i < props.length; i++)
671
- if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
672
- this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
673
- }
674
- if (update && this.ChartInstance) {
675
- let data = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
676
- if (series.some(t => t.values.length > 0)) {
677
- this.ChartInstance.addData(data);
678
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
679
- }
680
- }
681
- else {
682
- this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
683
- this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
684
- }
685
- }
686
- autoUpdateChanged() {
687
- if (!/^[1-9]\d*$/.test(this.seconds))
688
- this.seconds = '10';
689
- const secondsInMs = parseInt(this.seconds, null) * 1000;
690
- if (this.autoUpdate) {
691
- this.sendSearch(false, true);
692
- this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
693
- }
694
- else
695
- clearInterval(this.updateTimer);
696
- }
697
- dataSelectionChanged(event) {
698
- this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
699
- this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
700
- var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
701
- pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
702
- pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
703
- this.sendSearch(true, true, pseudoSearchView);
704
- }
705
- onChartLoaded(chart) {
706
- this.ChartInstance = chart;
707
- chart.Chart.events.on("ready", () => {
708
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
709
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
710
- setTimeout(() => {
711
- chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
712
- chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
713
- // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
714
- }, 500);
715
- });
716
- }
717
- }
718
- 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 });
719
- AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
720
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
721
- ], 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 } });
722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
723
- type: Component,
724
- args: [{ selector: "topact_search", providers: [
725
- { provide: LocalizationService, useClass: AdmTopActivitieLoc }
726
- ], 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>" }]
727
- }], ctorParameters: function () {
728
- return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
729
- type: Inject,
730
- args: [ADM_BACKEND_URL]
226
+ args: [ADM_LOCALE]
731
227
  }] }];
732
228
  } });
733
229
 
@@ -749,7 +245,7 @@ class AdmWrkComponent {
749
245
  this.newCg = "";
750
246
  this.CGs = [];
751
247
  this.CgDictionariesLoaded = false;
752
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
248
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
753
249
  this.DynamicOps = [
754
250
  new EsTableOperationDefinition("trace_on", this.lc.loc("Activate Process Tracing"), "fa fa-circle text-danger", "", "trace_enabled", "N"),
755
251
  new EsTableOperationDefinition("trace_off", this.lc.loc("Deactivate Process Tracing"), "fa fa-circle text-success", "", "trace_enabled", "Y"),
@@ -781,16 +277,13 @@ class AdmWrkComponent {
781
277
  });
782
278
  }
783
279
  init(HotPotato) {
784
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
785
- //Altirmenti genero il modello nuovo normalmente
786
280
  if (HotPotato) {
787
281
  this.searchView = HotPotato;
788
282
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerWorkers"], this.searchView);
789
283
  }
790
284
  else {
791
285
  this.searchView = new ProcessesView();
792
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
793
- setTimeout(() => this.sendSearch());
286
+ this.sendSearch();
794
287
  }
795
288
  }
796
289
  sendSearch(resetPage = true) {
@@ -875,7 +368,7 @@ class AdmWrkComponent {
875
368
  }
876
369
  }
877
370
  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 });
878
- 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 }] });
371
+ 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 }] });
879
372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmWrkComponent, decorators: [{
880
373
  type: Component,
881
374
  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>" }]
@@ -892,97 +385,450 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
892
385
  args: ["dlgChangeCg"]
893
386
  }] } });
894
387
 
895
- class AdmAuditsComponent {
896
- constructor(lc, localStorage, _state, http, route, location, backend) {
388
+ const Locale = localStorage.getItem("LOCALE") || myconfig.LOCALE;
389
+
390
+ const ProfilerDataNode_loc = {
391
+ 'Parent ID': { 'en-US': "Parent ID", 'it-IT': "ID Padre" },
392
+ 'ID': { 'en-US': "ID", 'it-IT': "ID" },
393
+ 'Description': { 'en-US': "Description", 'it-IT': "Descrizione" },
394
+ 'Calls': { 'en-US': "Calls", 'it-IT': "Chiamate" },
395
+ 'Time': { 'en-US': "Time", 'it-IT': "Tempo" },
396
+ 'Peak Time': { 'en-US': "Peak Time", 'it-IT': "Tempo Max" },
397
+ 'Min. Time': { 'en-US': "Min. Time", 'it-IT': "Tempo Min" },
398
+ 'Avg. Time': { 'en-US': "Avg. Time", 'it-IT': "Tempo Medio" },
399
+ 'Specific Time': { 'en-US': "Specific Time", 'it-IT': "Tempo Specifico" },
400
+ 'Percentage': { 'en-US': "Percentage", 'it-IT': "Percentuale" },
401
+ 'Calls for Period': { 'en-US': "Calls for Period", 'it-IT': "Chiamate Periodo" },
402
+ 'Time for Period': { 'en-US': "Time for Period", 'it-IT': "Tempo Periodo" },
403
+ 'Peak Time for Period': { 'en-US': "Peak Time for Period", 'it-IT': "Tempo Max Periodo" },
404
+ 'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
405
+ 'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
406
+ 'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
407
+ 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
408
+ };
409
+
410
+ class ProfilerDataNode {
411
+ }
412
+ __decorate([
413
+ Export(10, ProfilerDataNode_loc["Parent ID"][Locale]),
414
+ autoserialize
415
+ ], ProfilerDataNode.prototype, "parentid", void 0);
416
+ __decorate([
417
+ Export(20, ProfilerDataNode_loc["ID"][Locale]),
418
+ autoserialize
419
+ ], ProfilerDataNode.prototype, "id", void 0);
420
+ __decorate([
421
+ Export(30, ProfilerDataNode_loc["Description"][Locale]),
422
+ autoserialize
423
+ ], ProfilerDataNode.prototype, "description", void 0);
424
+ __decorate([
425
+ Export(40, ProfilerDataNode_loc["Calls"][Locale]),
426
+ autoserialize
427
+ ], ProfilerDataNode.prototype, "calls", void 0);
428
+ __decorate([
429
+ Export(50, ProfilerDataNode_loc["Time"][Locale]),
430
+ autoserialize
431
+ ], ProfilerDataNode.prototype, "time", void 0);
432
+ __decorate([
433
+ Export(60, ProfilerDataNode_loc["Peak Time"][Locale]),
434
+ autoserialize
435
+ ], ProfilerDataNode.prototype, "peaktime", void 0);
436
+ __decorate([
437
+ Export(70, ProfilerDataNode_loc["Min. Time"][Locale]),
438
+ autoserialize
439
+ ], ProfilerDataNode.prototype, "mintime", void 0);
440
+ __decorate([
441
+ Export(80, ProfilerDataNode_loc["Avg. Time"][Locale]),
442
+ autoserialize
443
+ ], ProfilerDataNode.prototype, "avgtime", void 0);
444
+ __decorate([
445
+ Export(90, ProfilerDataNode_loc["Specific Time"][Locale]),
446
+ autoserialize
447
+ ], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
448
+ __decorate([
449
+ Export(100, ProfilerDataNode_loc["Percentage"][Locale]),
450
+ autoserialize
451
+ ], ProfilerDataNode.prototype, "percentage", void 0);
452
+ __decorate([
453
+ Export(110, ProfilerDataNode_loc["Calls for Period"][Locale]),
454
+ autoserialize
455
+ ], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
456
+ __decorate([
457
+ Export(120, ProfilerDataNode_loc["Time for Period"][Locale]),
458
+ autoserialize
459
+ ], ProfilerDataNode.prototype, "snapdeltatime", void 0);
460
+ __decorate([
461
+ Export(130, ProfilerDataNode_loc["Peak Time for Period"][Locale]),
462
+ autoserialize
463
+ ], ProfilerDataNode.prototype, "snappeaktime", void 0);
464
+ __decorate([
465
+ Export(140, ProfilerDataNode_loc["Min. Time for Period"][Locale]),
466
+ autoserialize
467
+ ], ProfilerDataNode.prototype, "snapmintime", void 0);
468
+ __decorate([
469
+ Export(150, ProfilerDataNode_loc["Avg. Time for Period"][Locale]),
470
+ autoserialize
471
+ ], ProfilerDataNode.prototype, "snapavgtime", void 0);
472
+ __decorate([
473
+ Export(160, ProfilerDataNode_loc["Specific Time for Period"][Locale]),
474
+ autoserialize
475
+ ], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
476
+ __decorate([
477
+ Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
478
+ autoserialize
479
+ ], ProfilerDataNode.prototype, "snappercentage", void 0);
480
+
481
+ class ProfilerDataNodesView extends AppSearch {
482
+ constructor() { super(); }
483
+ }
484
+
485
+ class AdmProfilerComponentLoc extends LocalizationService {
486
+ constructor(LOC_LOCALE) {
487
+ super(LOC_LOCALE);
488
+ super.set("en->it", "Server Profiler", ["Profiler del Server"]);
489
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
490
+ super.set("en->it", "ID", ["ID"]);
491
+ super.set("en->it", "Description", ["Descrizione"]);
492
+ super.set("en->it", "Calls", ["Chiamate"]);
493
+ super.set("en->it", "Time", ["Tempo"]);
494
+ super.set("en->it", "Peak Time", ["Tempo Max"]);
495
+ super.set("en->it", "Min. Time", ["Tempo Min"]);
496
+ super.set("en->it", "Avg. Time", ["Tempo Medio"]);
497
+ super.set("en->it", "Specific Time", ["Tempo Specifico"]);
498
+ super.set("en->it", "Percentage", ["Percentuale"]);
499
+ super.set("en->it", "Calls for Period", ["Chiamate Periodo"]);
500
+ super.set("en->it", "Time for Period", ["Tempo Periodo"]);
501
+ super.set("en->it", "Peak Time for Period", ["Tempo Max Periodo"]);
502
+ super.set("en->it", "Min. Time for Period", ["Tempo Min Periodo"]);
503
+ super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
504
+ super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
505
+ super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
506
+ }
507
+ }
508
+ AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
509
+ AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc });
510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
511
+ type: Injectable
512
+ }], ctorParameters: function () {
513
+ return [{ type: undefined, decorators: [{
514
+ type: Inject,
515
+ args: [ADM_LOCALE]
516
+ }] }];
517
+ } });
518
+
519
+ class AdmProfilerComponent {
520
+ constructor(expExts, lc, localStorage, location, _state, http, route, backend) {
521
+ this.expExts = expExts;
522
+ this.lc = lc;
523
+ this.localStorage = localStorage;
524
+ this.location = location;
525
+ this._state = _state;
526
+ this.http = http;
527
+ this.route = route;
528
+ this.backend = backend;
529
+ this.searchView = new ProfilerDataNodesView();
530
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
531
+ }
532
+ ngOnInit() {
533
+ this.storageSub = this.route.queryParams.subscribe(params => {
534
+ this.Init(params["ignoreStorage"]);
535
+ });
536
+ }
537
+ Init(ignoreStore) {
538
+ this.doInit(ignoreStore);
539
+ }
540
+ doInit(ignoreStorage) {
541
+ return __awaiter(this, void 0, void 0, function* () {
542
+ let item = yield this.localStorage.getItem("HotSearchProfilato").toPromise();
543
+ if (!ignoreStorage && item) {
544
+ this.init(item);
545
+ }
546
+ else {
547
+ this.init(null);
548
+ this.location.replaceState("/pages/adm/profiler");
549
+ this.route.snapshot.queryParams = [];
550
+ yield this.localStorage.removeItem("HotSearchProfilato").toPromise();
551
+ }
552
+ });
553
+ }
554
+ init(HotPotato) {
555
+ if (HotPotato) {
556
+ this.searchView = HotPotato;
557
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
558
+ }
559
+ else {
560
+ this.searchView = new ProfilerDataNodesView();
561
+ this.sendSearch();
562
+ }
563
+ }
564
+ ngOnDestroy() {
565
+ if (this.storageSub)
566
+ this.storageSub.unsubscribe();
567
+ }
568
+ sendSearch(resetPage = true) {
569
+ this.searchView.searchinprogress = true;
570
+ if (resetPage)
571
+ this.searchView.page = 1;
572
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], this.searchView);
573
+ }
574
+ POSTGetItems(url, data) {
575
+ this.http.post(url, data).subscribe(t => {
576
+ this.searchView = t;
577
+ this.searchView.searchinprogress = false;
578
+ this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
579
+ });
580
+ }
581
+ prepareExport(dataCallBack) {
582
+ var view = JSON.parse(JSON.stringify(this.searchView));
583
+ view.page = 1;
584
+ view.itemsperpageoverride = 9999999;
585
+ this.http.post(this.backend + Repository["POST_Adm_GetProfilerDataNodes"], view).subscribe(t => {
586
+ let items = this.expExts.deserializeForExport(t.items, ProfilerDataNode);
587
+ dataCallBack(items);
588
+ });
589
+ }
590
+ }
591
+ 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 });
592
+ 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 } });
593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmProfilerComponent, decorators: [{
594
+ type: Component,
595
+ 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>" }]
596
+ }], ctorParameters: function () {
597
+ return [{ type: i1.ExportService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
598
+ type: Inject,
599
+ args: [ADM_BACKEND_URL]
600
+ }] }];
601
+ } });
602
+
603
+ class TopActivitiesDataView extends AppSearch {
604
+ constructor() { super(); }
605
+ }
606
+
607
+ class AdmTopActivitieLoc extends LocalizationService {
608
+ constructor(LOC_LOCALE) {
609
+ super(LOC_LOCALE);
610
+ super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
611
+ super.set("en->it", "Top Nodes", ["Prime Istruzioni"]);
612
+ super.set("en->it", "Top Sessions", ["Prime Sessioni"]);
613
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
614
+ super.set("en->it", "Top Activities", ["Attivita' Principali"]);
615
+ super.set("en->it", "Node Description", ["Descrizione Nodo"]);
616
+ super.set("en->it", "Node", ["Nodo"]);
617
+ super.set("en->it", "Activity", ["Attivita'"]);
618
+ super.set("en->it", "Limit", ["Limite"]);
619
+ super.set("en->it", "Node Type", ["Tipo Nodo"]);
620
+ super.set("en->it", "User", ["Utente"]);
621
+ super.set("en->it", "Tenant", ["Tenant"]);
622
+ super.set("en->it", "Process", ["Processo"]);
623
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
624
+ super.set("en->it", "second/s", ["secondo/i"]);
625
+ super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
626
+ super.set("en->it", "CPUs", ["CPU"]);
627
+ }
628
+ }
629
+ AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
630
+ AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc });
631
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
632
+ type: Injectable
633
+ }], ctorParameters: function () {
634
+ return [{ type: undefined, decorators: [{
635
+ type: Inject,
636
+ args: [ADM_LOCALE]
637
+ }] }];
638
+ } });
639
+
640
+ class AdmTopActivitiesComponent {
641
+ constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
642
+ this.dateExts = dateExts;
897
643
  this.lc = lc;
898
644
  this.localStorage = localStorage;
645
+ this.location = location;
899
646
  this._state = _state;
900
647
  this.http = http;
901
648
  this.route = route;
902
- this.location = location;
903
649
  this.backend = backend;
904
- this.searchView = new AuditsView();
905
- this.Actions = [];
906
- this.HttpMethods = [];
907
- this.searchInProgress = false;
908
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
909
- this.HttpMethods = [
910
- { id: "GET", description: "GET" },
911
- { id: "POST", description: "POST" },
912
- { id: "PUT", description: "PUT" },
913
- { id: "PATCH", description: "PATCH" },
914
- { id: "DELETE", description: "DELETE" }
915
- ];
916
- this.Actions = [
917
- { id: "C", description: this.lc.loc("REST Call") },
918
- { id: "U", description: this.lc.loc("Update") },
919
- { id: "D", description: this.lc.loc("Delete") }
920
- ];
650
+ this.searchView = new TopActivitiesDataView();
651
+ this.autoUpdate = false;
652
+ this.seconds = "5";
653
+ this.seriesPropertiesMapping = {};
654
+ this.propertiesSeriesMapping = {
655
+ ["cputime"]: "CPU",
656
+ ["waittime"]: "Wait",
657
+ ["scripttime"]: "Scripting",
658
+ ["dbtime"]: "DB",
659
+ ["nettime"]: "Network",
660
+ ["throttletime"]: "Throttling",
661
+ ["sleeptime"]: "Sleep",
662
+ ["iotime"]: "IO"
663
+ };
664
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
921
665
  }
922
666
  ngOnInit() {
923
667
  this.storageSub = this.route.queryParams.subscribe(params => {
924
668
  this.Init(params["ignoreStorage"]);
925
669
  });
926
670
  }
927
- ngOnDestroy() {
928
- if (this.storageSub)
929
- this.storageSub.unsubscribe();
671
+ Init(ignoreStore) {
672
+ this.doInit(ignoreStore);
930
673
  }
931
- Init(ignoreStorage) {
674
+ doInit(ignoreStorage) {
932
675
  return __awaiter(this, void 0, void 0, function* () {
933
- let item = yield this.localStorage.getItem("HotAudittato").toPromise();
676
+ let item = yield this.localStorage.getItem("HotSearchTopAct").toPromise();
934
677
  if (!ignoreStorage && item) {
935
678
  this.init(item);
936
679
  }
937
680
  else {
938
681
  this.init(null);
939
- this.location.replaceState("/pages/adm/serveraudits");
682
+ this.location.replaceState("/pages/adm/topact");
940
683
  this.route.snapshot.queryParams = [];
941
- yield this.localStorage.removeItem("HotAudittato").toPromise();
684
+ yield this.localStorage.removeItem("HotSearchTopAct").toPromise();
942
685
  }
943
686
  });
944
687
  }
945
688
  init(HotPotato) {
946
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
947
- //Altirmenti genero il modello nuovo normalmente
948
689
  if (HotPotato) {
949
690
  this.searchView = HotPotato;
950
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
691
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
951
692
  }
952
693
  else {
953
- this.searchView = new AuditsView();
954
- this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
955
- this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
956
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
957
- setTimeout(() => this.sendSearch());
694
+ this.searchView = new TopActivitiesDataView();
695
+ this.sendSearch();
958
696
  }
959
697
  }
960
- sendSearch(resetPage = true) {
961
- this.searchInProgress = true;
698
+ ngOnDestroy() {
699
+ if (this.storageSub)
700
+ this.storageSub.unsubscribe();
701
+ }
702
+ sendSearch(resetPage = true, update = false, searchViewOverride = null) {
703
+ this.searchView.searchinprogress = true;
962
704
  if (resetPage)
963
705
  this.searchView.page = 1;
964
- this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
706
+ this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
965
707
  }
966
- POSTGetProcesses(url, data) {
967
- this.http.post(url, data).subscribe(t => {
968
- this.searchView = t;
969
- this.searchInProgress = false;
970
- this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
708
+ POSTGetItems(url, data, update) {
709
+ this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
710
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
711
+ if (!update) {
712
+ this.searchView = t;
713
+ this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
714
+ }
715
+ var dirinfos = yield this.getDirectorInfos();
716
+ this.searchView.searchinprogress = false;
717
+ this.reviewBindings(update, t, dirinfos);
718
+ }));
719
+ }
720
+ getDirectorInfos() {
721
+ return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
722
+ }
723
+ reviewBindings(update, searchViewOverride, dirInfos) {
724
+ let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
725
+ this.TopNodes = reference.topnodes;
726
+ this.TopSessions = reference.topsessions;
727
+ this.DirInfos = dirInfos;
728
+ if (!reference.actsessions || reference.actsessions.length == 0) {
729
+ this.TopActiveSessions = null;
730
+ return;
731
+ }
732
+ let series = [];
733
+ let props = Object.keys(reference.actsessions[0]);
734
+ for (let i = 0; i < props.length; i++) {
735
+ if (props[i] != 'sampletime') {
736
+ let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
737
+ series.push(s);
738
+ this.seriesPropertiesMapping[props[i]] = s;
739
+ }
740
+ }
741
+ for (let i = 0; i < reference.actsessions.length; i++) {
742
+ let itemref = reference.actsessions[i];
743
+ let theD = new Date(itemref.sampletime);
744
+ for (let i = 0; i < props.length; i++)
745
+ if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
746
+ this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
747
+ }
748
+ if (update && this.ChartInstance) {
749
+ let data = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
750
+ if (series.some(t => t.values.length > 0)) {
751
+ this.ChartInstance.addData(data);
752
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
753
+ }
754
+ }
755
+ else {
756
+ this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Maximum Threads")));
757
+ this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
758
+ }
759
+ }
760
+ autoUpdateChanged() {
761
+ if (!/^[1-9]\d*$/.test(this.seconds))
762
+ this.seconds = '10';
763
+ const secondsInMs = parseInt(this.seconds, null) * 1000;
764
+ if (this.autoUpdate) {
765
+ this.sendSearch(false, true);
766
+ this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
767
+ }
768
+ else
769
+ clearInterval(this.updateTimer);
770
+ }
771
+ dataSelectionChanged(event) {
772
+ this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
773
+ this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
774
+ var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
775
+ pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
776
+ pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
777
+ this.sendSearch(true, true, pseudoSearchView);
778
+ }
779
+ onChartLoaded(chart) {
780
+ this.ChartInstance = chart;
781
+ chart.Chart.events.on("ready", () => {
782
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
783
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
784
+ setTimeout(() => {
785
+ chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
786
+ chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
787
+ // 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
788
+ }, 500);
971
789
  });
972
790
  }
973
791
  }
974
- 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 });
975
- AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmAuditsComponent, selector: "adm_audits", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", components: [{ type: i8.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { type: i8.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { type: i8.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol"] }, { type: i9.EsTableComponent, selector: "es-table", inputs: ["CornerMenuOptions", "ColumnsResizable", "AutoUpdate", "UseCustomCells", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "PagingStyle", "RowGroupingPagingStyle", "SecondarySource", "TertiarySource", "UseSelectionCache", "ShowItemGroupsColumns", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onCornerAction", "onDynamicOperation"] }], directives: [{ type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "localize": i2.LocalizePipe, "loc_date": i2.LocDatePipe }, viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
976
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmAuditsComponent, decorators: [{
792
+ 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 });
793
+ AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [
794
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
795
+ ], 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 } });
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
977
797
  type: Component,
978
- args: [{ selector: "adm_audits", viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }], template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Audits' | localize : lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div class=\"col-md-12 bottom-15\">\r\n <form role=\"form\">\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <div class=\"col-md-12 row app-no-padding app-first-filter-line\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterda\" name=\"filterda\" [Placeholder]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtera\" name=\"filtera\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filteruser\" name=\"filteruser\" [Placeholder]=\"'User' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterroute\" name=\"filterroute\" [Placeholder]=\"'Route' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Action' | localize : lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'HTTP Method' | localize : lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 row app-no-padding\">\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterargs\" name=\"filterargs\" [Placeholder]=\"'Arguments' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjid\" name=\"filterobjid\" [Placeholder]=\"'Object ID' | localize : lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterobjtype\" name=\"filterobjtype\" [Placeholder]=\"'Object Type' | localize : lc\"></form-input>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchInProgress\" class=\"input-group-addon btn app-btn-search\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Audits' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [UseCustomCells]=\"true\"\r\n [HiddenColumns] =\"true\" [ColumnsOrdering]=\"true\" [OrderByColumn]=\"true\"\r\n [MultipleOrderingDirectives]=\"true\"\r\n (onSearchRequest)=\"sendSearch($event);\">\r\n <ng-template #header>\r\n <th es-th=\"Timestamp\" class=\"app-nowrap\">{{'Date' | localize : lc}}</th>\r\n <th es-th=\"User\" class=\"app-nowrap\">{{'User' | localize : lc}}</th>\r\n <th es-th=\"Action\" class=\"app-nowrap\">{{'Action' | localize : lc}}</th>\r\n <th es-th=\"HttpMethod\" class=\"app-nowrap\">{{'HTTP Method' | localize : lc}}</th>\r\n <th es-th=\"Route\" class=\"app-nowrap\">{{'Route' | localize : lc}}</th>\r\n <th es-th=\"Args\" class=\"app-nowrap\">{{'Arguments' | localize : lc}}</th>\r\n <th es-th=\"HttpResponse\" class=\"app-nowrap\">{{'HTTP Response' | localize : lc}}</th>\r\n <th es-th=\"NonStdErrorMessage\" class=\"app-nowrap\">{{'Application Error Code' | localize : lc}}</th>\r\n <th es-th=\"ObjectType\" class=\"app-nowrap\">{{'Object Type' | localize : lc}}</th>\r\n <th es-th=\"ObjectId\" class=\"app-nowrap\">{{'Object ID' | localize : lc}}</th>\r\n <th es-th=\"ObjectData\" class=\"app-nowrap\">{{'Object Data' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-pro>\r\n <td es-td=\"Timestamp\" class=\"app-nowrap\"><strong>{{pro.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong></td>\r\n <td es-td=\"User\" class=\"app-nowrap\">{{pro.user}}</td>\r\n <td es-td=\"Action\" class=\"app-nowrap\">{{pro.action}}</td>\r\n <td es-td=\"HttpMethod\" class=\"app-nowrap\">{{pro.httpmethod}}</td>\r\n <td es-td=\"Route\" class=\"app-nowrap\">{{pro.route}}</td>\r\n <td es-td=\"Args\" class=\"app-nowrap\">{{pro.args}}</td>\r\n <td es-td=\"HttpResponse\" class=\"app-nowrap\">{{pro.httpresponse}}</td>\r\n <td es-td=\"NonStdErrorMessage\" class=\"app-nowrap\">{{pro.mdmerrorcode}}</td>\r\n <td es-td=\"ObjectType\" class=\"app-nowrap\">{{pro.objecttype}}</td>\r\n <td es-td=\"ObjectId\" class=\"app-nowrap\">{{pro.objectid}}</td>\r\n <td es-td=\"ObjectData\" class=\"app-nowrap\">{{pro.objectdata}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
798
+ args: [{ selector: "topact_search", providers: [
799
+ { provide: LocalizationService, useClass: AdmTopActivitieLoc }
800
+ ], 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>" }]
979
801
  }], ctorParameters: function () {
980
- return [{ type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: i4.Location }, { type: undefined, decorators: [{
802
+ return [{ type: i1.DateService }, { type: i2.LocalizationService }, { type: i3.PreferencesService }, { type: i4.Location }, { type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
981
803
  type: Inject,
982
804
  args: [ADM_BACKEND_URL]
983
805
  }] }];
984
806
  } });
985
807
 
808
+ class LocksView extends AppSearch {
809
+ constructor() { super(); }
810
+ }
811
+
812
+ class AdmEnqLoc extends LocalizationService {
813
+ constructor(LOC_LOCALE) {
814
+ super(LOC_LOCALE);
815
+ super.set("en->it", "Search Application Locks", ["Ricerca Lock Applicativi"]);
816
+ super.set("en->it", "Name", ["Nome"]);
817
+ super.set("en->it", "Loading Application Locks", ["Carico i Lock Applicativi"]);
818
+ super.set("en->it", "Global", ["Globale"]);
819
+ }
820
+ }
821
+ AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
822
+ AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc });
823
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqLoc, decorators: [{
824
+ type: Injectable
825
+ }], ctorParameters: function () {
826
+ return [{ type: undefined, decorators: [{
827
+ type: Inject,
828
+ args: [ADM_LOCALE]
829
+ }] }];
830
+ } });
831
+
986
832
  class AdmEnqComponent {
987
833
  constructor(lc, localStorage, expExts, _state, http, route, location, backend) {
988
834
  this.lc = lc;
@@ -994,12 +840,10 @@ class AdmEnqComponent {
994
840
  this.location = location;
995
841
  this.backend = backend;
996
842
  this.locksView = new LocksView();
997
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
843
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
998
844
  }
999
845
  ngOnInit() {
1000
- this.storageSub = this.route.queryParams.subscribe(params => {
1001
- this.Init(params["ignoreStorage"]);
1002
- });
846
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
1003
847
  }
1004
848
  ngOnDestroy() {
1005
849
  if (this.storageSub)
@@ -1020,16 +864,13 @@ class AdmEnqComponent {
1020
864
  });
1021
865
  }
1022
866
  init(HotPotato) {
1023
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1024
- //Altirmenti genero il modello nuovo normalmente
1025
867
  if (HotPotato) {
1026
868
  this.locksView = HotPotato;
1027
869
  this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerLocks"], this.locksView);
1028
870
  }
1029
871
  else {
1030
872
  this.locksView = new LocksView();
1031
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1032
- setTimeout(() => this.sendSearch());
873
+ this.sendSearch();
1033
874
  }
1034
875
  }
1035
876
  sendSearch(resetPage = true) {
@@ -1045,7 +886,7 @@ class AdmEnqComponent {
1045
886
  }
1046
887
  }
1047
888
  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 });
1048
- 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 }] });
889
+ 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 }] });
1049
890
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmEnqComponent, decorators: [{
1050
891
  type: Component,
1051
892
  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>" }]
@@ -1056,6 +897,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1056
897
  }] }];
1057
898
  } });
1058
899
 
900
+ class KeyValue {
901
+ constructor(id, description) {
902
+ this.id = id;
903
+ this.description = description;
904
+ }
905
+ }
906
+
907
+ class MetricsView extends AppSearch {
908
+ constructor() { super(); }
909
+ }
910
+
911
+ class AdmMetricsLoc extends LocalizationService {
912
+ constructor(LOC_LOCALE) {
913
+ super(LOC_LOCALE);
914
+ super.set("en->it", "System Metrics", ["Metriche di Sistema"]);
915
+ super.set("en->it", "Session ID", ["Cod. Sessione"]);
916
+ super.set("en->it", "Session Serial", ["Seriale Sessione"]);
917
+ super.set("en->it", "Filter Metrics...", ["Filtra Metriche..."]);
918
+ super.set("en->it", "Loading Data", ["Carico i Dati"]);
919
+ super.set("en->it", "Update every", ["Aggiorna ogni"]);
920
+ super.set("en->it", "second/s", ["secondo/i"]);
921
+ super.set("en->it", "Metrics Instance", ["Istanza Metriche"]);
922
+ }
923
+ }
924
+ AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: ADM_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
925
+ AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc });
926
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmMetricsLoc, decorators: [{
927
+ type: Injectable
928
+ }], ctorParameters: function () {
929
+ return [{ type: undefined, decorators: [{
930
+ type: Inject,
931
+ args: [ADM_LOCALE]
932
+ }] }];
933
+ } });
934
+
1059
935
  class AdmMetricsComponent {
1060
936
  constructor(dateExts, lc, localStorage, location, _state, http, route, backend) {
1061
937
  this.dateExts = dateExts;
@@ -1074,7 +950,7 @@ class AdmMetricsComponent {
1074
950
  this.selectedInstance = "";
1075
951
  this.instanceRequired = false;
1076
952
  this.metricsToShow = [];
1077
- this._state.handleNavigation(this.route.snapshot.data["title"], false);
953
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
1078
954
  }
1079
955
  ngOnInit() {
1080
956
  this.storageSub = this.route.queryParams.subscribe(params => {
@@ -1110,16 +986,13 @@ class AdmMetricsComponent {
1110
986
  });
1111
987
  }
1112
988
  init(HotPotato) {
1113
- //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1114
- //Altirmenti genero il modello nuovo normalmente
1115
989
  if (HotPotato) {
1116
990
  this.searchView = HotPotato;
1117
991
  this.POSTGetItems(this.backend + Repository["POST_Adm_GetMetrics"], this.searchView, false);
1118
992
  }
1119
993
  else {
1120
994
  this.searchView = new MetricsView();
1121
- //Per fare un primo giro di binding sulla View che serve a valorizzare le colonne del modello anche per la prima chiamata
1122
- setTimeout(() => this.sendSearch());
995
+ this.sendSearch();
1123
996
  }
1124
997
  this.dateChanged();
1125
998
  }
@@ -1140,7 +1013,7 @@ class AdmMetricsComponent {
1140
1013
  POSTGetItems(url, data, update) {
1141
1014
  data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);
1142
1015
  this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
1143
- //Se sono in modalit� di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1016
+ //Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
1144
1017
  if (!update) {
1145
1018
  this.selectedInstance = "";
1146
1019
  this.metricsToShow = [];
@@ -1213,6 +1086,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1213
1086
  }] }];
1214
1087
  } });
1215
1088
 
1089
+ // Angular
1090
+ class AdmLogsComponent {
1091
+ constructor(_state, http, lc, route, backend) {
1092
+ this._state = _state;
1093
+ this.http = http;
1094
+ this.lc = lc;
1095
+ this.route = route;
1096
+ this.backend = backend;
1097
+ this._state.handleNavigation(this.lc.loc(this.route.snapshot.data["title"]), false);
1098
+ }
1099
+ ngOnInit() {
1100
+ this.http.get(this.backend + Repository["GET_Adm_GetServerLogs"]).subscribe(t => { this.Log = t; });
1101
+ }
1102
+ }
1103
+ 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 });
1104
+ 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"] }] });
1105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmLogsComponent, decorators: [{
1106
+ type: Component,
1107
+ 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>" }]
1108
+ }], ctorParameters: function () {
1109
+ return [{ type: BaseModuleCommunicationsConsumer }, { type: i6.HTTPService }, { type: i2.LocalizationService }, { type: i7.ActivatedRoute }, { type: undefined, decorators: [{
1110
+ type: Inject,
1111
+ args: [ADM_BACKEND_URL]
1112
+ }] }];
1113
+ } });
1114
+
1216
1115
  // Angular
1217
1116
  const routeConfig = [
1218
1117
  {
@@ -1233,6 +1132,7 @@ const MODULES = [
1233
1132
  FormsModule,
1234
1133
  // Material
1235
1134
  MatDatepickerModule,
1135
+ MatDayjsDateModule,
1236
1136
  MatIconModule,
1237
1137
  MatInputModule,
1238
1138
  // Bootstrap
@@ -1247,11 +1147,6 @@ const MODULES = [
1247
1147
  FormsAndValidationsModule,
1248
1148
  EsGertrudeModule,
1249
1149
  EsChartsModule,
1250
- EsTableModule,
1251
- FormsAndValidationsModule,
1252
- EsChartsModule,
1253
- FormsAndValidationsModule,
1254
- EsChartsModule,
1255
1150
  NgxMatDatetimePickerModule,
1256
1151
  RouterModule.forChild(routeConfig),
1257
1152
  ];
@@ -1279,6 +1174,7 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
1279
1174
  FormsModule,
1280
1175
  // Material
1281
1176
  MatDatepickerModule,
1177
+ MatDayjsDateModule,
1282
1178
  MatIconModule,
1283
1179
  MatInputModule,
1284
1180
  // Bootstrap
@@ -1293,20 +1189,14 @@ AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.
1293
1189
  FormsAndValidationsModule,
1294
1190
  EsGertrudeModule,
1295
1191
  EsChartsModule,
1296
- EsTableModule,
1297
- FormsAndValidationsModule,
1298
- EsChartsModule,
1299
- FormsAndValidationsModule,
1300
- EsChartsModule,
1301
1192
  NgxMatDatetimePickerModule, i7.RouterModule
1302
1193
  ] });
1303
- AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, providers: [], imports: [[...MODULES]] });
1194
+ AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, imports: [[...MODULES]] });
1304
1195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AdmModule, decorators: [{
1305
1196
  type: NgModule,
1306
1197
  args: [{
1307
1198
  imports: [...MODULES],
1308
- declarations: [...COMPONENTS],
1309
- providers: []
1199
+ declarations: [...COMPONENTS]
1310
1200
  }]
1311
1201
  }] });
1312
1202