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