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