@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.
- package/README.md +1 -24
- package/esm2020/lib/admin-module.module.mjs +13 -15
- package/esm2020/lib/components/audits/adm_audits.component.mjs +19 -25
- package/esm2020/lib/components/enqueues/adm_enq.component.mjs +19 -18
- package/esm2020/lib/components/logs/adm_logs.component.mjs +12 -9
- package/esm2020/lib/components/metrics/metrics_search.component.mjs +18 -15
- package/esm2020/lib/components/profiler/adm_profiler.component.loc.mjs +2 -2
- package/esm2020/lib/components/profiler/adm_profiler.component.mjs +20 -20
- package/esm2020/lib/components/topact/topact_search.component.mjs +18 -16
- package/esm2020/lib/components/workers/adm_wrk.component.mjs +16 -15
- package/esm2020/lib/models/components/AuditsView.mjs +1 -1
- package/esm2020/lib/models/components/LocksView.mjs +1 -1
- package/esm2020/lib/models/components/ProfilerDataNode.mjs +3 -3
- package/esm2020/lib/models/components/ProfilerDataNodesView.mjs +1 -1
- package/esm2020/lib/models/components/TopActivitiesDataView.mjs +1 -1
- package/esm2020/lib/models/components/TopActivity.mjs +1 -1
- package/esm2020/lib/tokens.mjs +2 -1
- package/fesm2015/esfaenza-admin-module.mjs +658 -751
- package/fesm2015/esfaenza-admin-module.mjs.map +1 -1
- package/fesm2020/esfaenza-admin-module.mjs +609 -698
- package/fesm2020/esfaenza-admin-module.mjs.map +1 -1
- package/lib/admin-module.module.d.ts +23 -16
- package/lib/components/audits/adm_audits.component.d.ts +4 -2
- package/lib/components/enqueues/adm_enq.component.d.ts +5 -4
- package/lib/components/logs/adm_logs.component.d.ts +3 -1
- package/lib/components/metrics/metrics_search.component.d.ts +8 -4
- package/lib/components/profiler/adm_profiler.component.d.ts +5 -4
- package/lib/components/topact/topact_search.component.d.ts +8 -4
- package/lib/components/workers/adm_wrk.component.d.ts +5 -3
- package/lib/models/components/AuditsView.d.ts +1 -1
- package/lib/models/components/ProfilerDataNodesView.d.ts +1 -1
- package/lib/models/components/TopActivitiesDataView.d.ts +1 -1
- package/lib/models/components/TopActivity.d.ts +3 -1
- package/lib/tokens.d.ts +1 -0
- package/package.json +10 -2
- package/esm2020/lib/components/index.mjs +0 -14
- package/esm2020/lib/models/components/Lock.loc.mjs +0 -13
- package/esm2020/lib/models/components/Lock.mjs +0 -48
- package/esm2020/lib/models/index.mjs +0 -22
- package/lib/components/index.d.ts +0 -13
- package/lib/models/components/Lock.d.ts +0 -12
- package/lib/models/components/Lock.loc.d.ts +0 -42
- 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 {
|
|
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
|
|
37
|
-
import {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
43
|
-
constructor(
|
|
44
|
-
super(
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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.
|
|
449
|
-
this.
|
|
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
|
-
|
|
457
|
-
this.
|
|
135
|
+
ngOnDestroy() {
|
|
136
|
+
if (this.storageSub)
|
|
137
|
+
this.storageSub.unsubscribe();
|
|
458
138
|
}
|
|
459
|
-
async
|
|
460
|
-
let item = await this.localStorage.getItem("
|
|
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(
|
|
146
|
+
this.location.replaceState(`/pages/${this.mod}/serveraudits`);
|
|
467
147
|
this.route.snapshot.queryParams = [];
|
|
468
|
-
await this.localStorage.removeItem("
|
|
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.
|
|
156
|
+
this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
|
|
477
157
|
}
|
|
478
158
|
else {
|
|
479
|
-
this.searchView = new
|
|
480
|
-
|
|
481
|
-
|
|
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.
|
|
166
|
+
this.searchInProgress = true;
|
|
490
167
|
if (resetPage)
|
|
491
168
|
this.searchView.page = 1;
|
|
492
|
-
this.
|
|
169
|
+
this.POSTGetProcesses(this.backend + Repository["POST_Adm_GetServerAudits"], this.searchView);
|
|
493
170
|
}
|
|
494
|
-
|
|
171
|
+
POSTGetProcesses(url, data) {
|
|
495
172
|
this.http.post(url, data).subscribe(t => {
|
|
496
173
|
this.searchView = t;
|
|
497
|
-
this.
|
|
498
|
-
this.localStorage.setItem("
|
|
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
|
-
|
|
512
|
-
AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AdmProfilerComponent, selector: "adm_profiler", providers: [
|
|
513
|
-
|
|
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> \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: "
|
|
518
|
-
|
|
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> \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: [
|
|
189
|
+
args: [ADM_MODULE_PATH]
|
|
545
190
|
}] }]; } });
|
|
546
191
|
|
|
547
|
-
class
|
|
548
|
-
constructor(
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
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
|
-
|
|
701
|
-
|
|
702
|
-
|
|
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\"> - {{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span> \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}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" /> {{'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
|
-
|
|
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\"> - {{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span> \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}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" /> {{'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: [
|
|
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(
|
|
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
|
-
|
|
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> \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> \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\">×</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\">×</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> \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> \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\">×</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\">×</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> \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> \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\">×</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\">×</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
|
-
|
|
873
|
-
|
|
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> \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> \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.
|
|
882
|
-
this.
|
|
883
|
-
this.
|
|
884
|
-
this.
|
|
885
|
-
this.
|
|
886
|
-
this.
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
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
|
-
|
|
905
|
-
|
|
906
|
-
this.storageSub.unsubscribe();
|
|
669
|
+
Init(ignoreStore) {
|
|
670
|
+
this.doInit(ignoreStore);
|
|
907
671
|
}
|
|
908
|
-
async
|
|
909
|
-
let item = await this.localStorage.getItem("
|
|
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(
|
|
679
|
+
this.location.replaceState(`/pages/${this.mod}/topact`);
|
|
916
680
|
this.route.snapshot.queryParams = [];
|
|
917
|
-
await this.localStorage.removeItem("
|
|
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.
|
|
687
|
+
this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
|
|
926
688
|
}
|
|
927
689
|
else {
|
|
928
|
-
this.searchView = new
|
|
929
|
-
this.
|
|
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
|
-
|
|
936
|
-
this.
|
|
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.
|
|
702
|
+
this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride ?? this.searchView, update);
|
|
940
703
|
}
|
|
941
|
-
|
|
942
|
-
this.http.post(url, data).subscribe(t => {
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
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
|
-
|
|
950
|
-
|
|
951
|
-
{ provide:
|
|
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\"> - {{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span> \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}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" /> {{'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: "
|
|
957
|
-
{ provide:
|
|
958
|
-
{
|
|
959
|
-
|
|
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\"> - {{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</span> \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}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" /> {{'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(
|
|
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
|
-
|
|
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> \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> \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> \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(
|
|
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
|
-
|
|
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
|
|
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}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" /> {{'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,
|
|
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
|