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