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