@esfaenza/admin-module 13.1.0-beta7 → 13.1.2

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