@esfaenza/admin-module 15.2.52 → 16.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/lib/admin-module.comms.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/admin-module.module.mjs +39 -39
- package/{esm2020 → esm2022}/lib/components/_shared/node_detail.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/_shared/node_detail.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/audits/adm_audits.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/audits/adm_audits.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/dynamic_views/adm_dynamic_views.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/dynamic_views/adm_dynamic_views.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/enqueues/adm_enq.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/enqueues/adm_enq.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/logs/adm_logs.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/logs/adm_logs.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/metrics/metrics_search.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/metrics/metrics_search.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/mtd_query/mtd_query.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/mtd_query/mtd_query.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/profiler/adm_profiler.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/profiler/adm_profiler.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/topact/topact_search.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/topact/topact_search.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/workers/adm_wrk.component.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/workers/adm_wrk.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/models/components/AuditsView.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/components/ProfilerDataNode.loc.mjs +4 -4
- package/{esm2020 → esm2022}/lib/pipes/format_time.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/admin-module.base.service.mjs +4 -4
- package/{fesm2020 → fesm2022}/esfaenza-admin-module.mjs +111 -111
- package/fesm2022/esfaenza-admin-module.mjs.map +1 -0
- package/lib/components/_shared/node_detail.component.d.ts +1 -1
- package/lib/models/components/AuditsView.d.ts +1 -0
- package/package.json +5 -11
- package/fesm2015/esfaenza-admin-module.mjs +0 -1865
- package/fesm2015/esfaenza-admin-module.mjs.map +0 -1
- package/fesm2020/esfaenza-admin-module.mjs.map +0 -1
- /package/{esm2020 → esm2022}/esfaenza-admin-module.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/admin-module-messages.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/ActiveSession.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/Audit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/DirectorInfos.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/DynamicViewsView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/LocksView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/Metric.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/MetricChart.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/MetricsView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/NodeStats.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/NodeWaitStack.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/ProcessesView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/ProfilerDataNode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/ProfilerDataNodesView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/QueryView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/SessionStats.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/SessionThread.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/TopActivitiesDataView.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/TopActivity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/TopNode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/components/TopSession.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/shared/KeyValue.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -1,1865 +0,0 @@
|
|
|
1
|
-
import * as i5 from '@angular/common';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i7 from '@angular/forms';
|
|
4
|
-
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import * as i0 from '@angular/core';
|
|
6
|
-
import { InjectionToken, Injectable, Component, Inject, ViewChild, EventEmitter, Input, Output, Pipe, NgModule } from '@angular/core';
|
|
7
|
-
import * as i4 from '@angular/router';
|
|
8
|
-
import { RouterModule } from '@angular/router';
|
|
9
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
10
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
11
|
-
import { MatDayjsDateModule } from '@esfaenza/material-dayjs-adapter';
|
|
12
|
-
import { MatLegacyInputModule } from '@angular/material/legacy-input';
|
|
13
|
-
import { NgxMatDatetimePickerModule } from '@angular-material-components/datetime-picker';
|
|
14
|
-
import * as i8 from 'ngx-bootstrap/modal';
|
|
15
|
-
import { ModalModule } from 'ngx-bootstrap/modal';
|
|
16
|
-
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
17
|
-
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
18
|
-
import * as i9 from '@esfaenza/es-table';
|
|
19
|
-
import { AppSearch, EsTableOperationDefinition, EsTableModule } from '@esfaenza/es-table';
|
|
20
|
-
import * as i9$1 from '@esfaenza/forms-and-validations';
|
|
21
|
-
import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
|
|
22
|
-
import * as i3$1 from '@esfaenza/es-charts';
|
|
23
|
-
import { LineSerie, LineChartData, PieChartData, KeyValueColor, DateValue, Limit, EsChartsModule } from '@esfaenza/es-charts';
|
|
24
|
-
import { EsGertrudeModule } from '@esfaenza/gertrude';
|
|
25
|
-
import * as i1$1 from '@esfaenza/extensions';
|
|
26
|
-
import { MessageService, InboundMessageTypes, Export, ExportLocalization, ExtensionsModule } from '@esfaenza/extensions';
|
|
27
|
-
import * as i1 from '@esfaenza/localizations';
|
|
28
|
-
import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
|
|
29
|
-
import { ContextMenuModule } from '@esfaenza/ngx-contextmenu';
|
|
30
|
-
import { __awaiter, __decorate } from 'tslib';
|
|
31
|
-
import * as i3 from '@esfaenza/preferences';
|
|
32
|
-
import { HttpParams } from '@angular/common/http';
|
|
33
|
-
import { HTTPService } from '@esfaenza/httpservice';
|
|
34
|
-
import { firstValueFrom, catchError, of, ReplaySubject, interval } from 'rxjs';
|
|
35
|
-
import { GenericItem } from '@esfaenza/core/domain';
|
|
36
|
-
import { takeUntil } from 'rxjs/operators';
|
|
37
|
-
|
|
38
|
-
class AuditsView extends AppSearch {
|
|
39
|
-
constructor() {
|
|
40
|
-
super();
|
|
41
|
-
this.filteraction = '';
|
|
42
|
-
this.filterhttp = '';
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const ADM_MODULE_PATH = new InjectionToken('ADM_MODULE_PATH');
|
|
47
|
-
const ADM_CONVERSATIONS = new InjectionToken('ADM_CONVERSATIONS');
|
|
48
|
-
|
|
49
|
-
class AdmAuditLoc extends LocalizationService {
|
|
50
|
-
constructor(injector) {
|
|
51
|
-
super(injector);
|
|
52
|
-
super.set("it->en", "Ricerca Audit Applicativi", ["Search Application Audits"]);
|
|
53
|
-
super.set("it->en", "Utente", ["User"]);
|
|
54
|
-
super.set("it->en", "Chiamata REST", ["REST Call"]);
|
|
55
|
-
super.set("it->en", "Aggiornamento", ["Update"]);
|
|
56
|
-
super.set("it->en", "Route", ["Route"]);
|
|
57
|
-
super.set("it->en", "Azione", ["Action"]);
|
|
58
|
-
super.set("it->en", "Metodo HTTP", ["HTTP Method"]);
|
|
59
|
-
super.set("it->en", "Argomenti", ["Arguments"]);
|
|
60
|
-
super.set("it->en", "ID Oggetto", ["Object ID"]);
|
|
61
|
-
super.set("it->en", "Tipo Oggetto", ["Object Type"]);
|
|
62
|
-
super.set("it->en", "Dati Oggetto", ["Object Data"]);
|
|
63
|
-
super.set("it->en", "Carico gli Audit dell'Applicazione", ["Loading Application Audits"]);
|
|
64
|
-
super.set("it->en", "Data", ["Date"]);
|
|
65
|
-
super.set("it->en", "Indirizzo", ["Address"]);
|
|
66
|
-
super.set("it->en", "Risposta HTTP", ["HTTP Response"]);
|
|
67
|
-
super.set("it->en", "Codice Errore Applicativo", ["Application Error Code"]);
|
|
68
|
-
super.set("it->en", "Cod. Conversation", ["Conversation ID"]);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
AdmAuditLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmAuditLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
-
AdmAuditLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmAuditLoc });
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmAuditLoc, decorators: [{
|
|
74
|
-
type: Injectable
|
|
75
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
76
|
-
|
|
77
|
-
// Chiamate ai Repository
|
|
78
|
-
const GET_Director_ChangeProcessConsumerGroup = "/api/Director/ChangeProcessConsumerGroup";
|
|
79
|
-
const GET_Director_GetConsumerGroups = "/api/Director/GetConsumerGroups#cache";
|
|
80
|
-
const GET_Director_GetInfos = "/api/Director/GetInfos";
|
|
81
|
-
const GET_Director_GetMetrics = "/api/Director/GetMetrics";
|
|
82
|
-
const POST_Director_GetMetrics = "/api/Director/GetMetrics";
|
|
83
|
-
const POST_Director_GetProfilerDataNodes = "/api/Director/GetProfilerDataNodes";
|
|
84
|
-
const GET_Director_GetWorkloadReport = "/api/Director/GetWorkloadReport";
|
|
85
|
-
const POST_Director_GetServerAudits = "/api/Director/GetServerAudits";
|
|
86
|
-
const POST_Director_GetDynamicViewData = "/api/Director/GetDynamicViewData";
|
|
87
|
-
const POST_Director_GetServerLocks = "/api/Director/GetServerLocks";
|
|
88
|
-
const POST_Director_GetServerQuery = "/api/Director/GetServerQuery";
|
|
89
|
-
const GET_Director_GetServerLogs = "/api/Director/GetServerLogs";
|
|
90
|
-
const GET_Director_GetDynamicViews = "/api/Director/GetDynamicViews";
|
|
91
|
-
const POST_Director_GetServerWorkers = "/api/Director/GetServerWorkers";
|
|
92
|
-
const POST_Director_GetTopActivities = "/api/Director/GetTopActivities";
|
|
93
|
-
const GET_Director_KillProcess = "/api/Director/KillProcess";
|
|
94
|
-
const GET_Director_SetProcessTracing = "/api/Director/SetProcessTracing";
|
|
95
|
-
const GET_Director_GetNodeStats = "/api/Director/GetNodeStats";
|
|
96
|
-
const GET_Director_GetSessionStats = "/api/Director/GetSessionStats";
|
|
97
|
-
class AdminModuleBaseService {
|
|
98
|
-
constructor(injector) {
|
|
99
|
-
this.injector = injector;
|
|
100
|
-
this.http = this.injector.get(HTTPService);
|
|
101
|
-
this.msgExts = this.injector.get(MessageService);
|
|
102
|
-
}
|
|
103
|
-
getServerWorkers(sv) {
|
|
104
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetServerWorkers, sv));
|
|
106
|
-
return ret;
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
doSetProcessTracing(be, instanceid, sid, serial, enable) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
var pars = new HttpParams()
|
|
112
|
-
.set("instanceid", instanceid)
|
|
113
|
-
.set("sid", sid)
|
|
114
|
-
.set("serial", serial)
|
|
115
|
-
.set("enable", enable)
|
|
116
|
-
.set("be", be);
|
|
117
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_SetProcessTracing, pars));
|
|
118
|
-
return ret;
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
doKillProcess(be, instanceid, sid, serial) {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
var pars = new HttpParams()
|
|
124
|
-
.set("instanceid", instanceid)
|
|
125
|
-
.set("sid", sid)
|
|
126
|
-
.set("serial", serial)
|
|
127
|
-
.set("be", be);
|
|
128
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_KillProcess, pars));
|
|
129
|
-
return ret;
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
doChangeProcessConsumerGroup(be, instanceid, sid, serial, consumerGroup) {
|
|
133
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
134
|
-
var pars = new HttpParams()
|
|
135
|
-
.set("instanceid", instanceid)
|
|
136
|
-
.set("sid", sid)
|
|
137
|
-
.set("serial", serial)
|
|
138
|
-
.set("consumer_group", consumerGroup)
|
|
139
|
-
.set("be", be);
|
|
140
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_ChangeProcessConsumerGroup, pars));
|
|
141
|
-
return ret;
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
getConsumerGroups(be) {
|
|
145
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
-
var pars = new HttpParams().set("be", be);
|
|
147
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetConsumerGroups, pars));
|
|
148
|
-
return ret;
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
getServerLogs(be, from, to) {
|
|
152
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
var pars = new HttpParams().set("from", from).set("to", to).set("be", be);
|
|
154
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetServerLogs, pars));
|
|
155
|
-
return ret;
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
getTopActivities(be, sv) {
|
|
159
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
-
var pars = new HttpParams().set("be", be);
|
|
161
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetTopActivities, sv, pars));
|
|
162
|
-
return ret;
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
getInfos(be) {
|
|
166
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
167
|
-
var pars = new HttpParams().set("be", be);
|
|
168
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetInfos, pars, null, false).pipe(catchError(_ => of(null))));
|
|
169
|
-
return ret;
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
getNodeStats(be, nodeId) {
|
|
173
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
-
let pars = new HttpParams().set("nodeId", nodeId).set("be", be);
|
|
175
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetNodeStats, pars));
|
|
176
|
-
return ret;
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
getSessionStats(be, sid, serial) {
|
|
180
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
181
|
-
let pars = new HttpParams().set('sid', sid).set('serial', serial).set("be", be);
|
|
182
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetSessionStats, pars));
|
|
183
|
-
return ret;
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
getProfilerDataNodes(be, sv) {
|
|
187
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
-
var pars = new HttpParams().set("be", be);
|
|
189
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetProfilerDataNodes, sv, pars));
|
|
190
|
-
return ret;
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
downloadWorkloadReport(be, from, to) {
|
|
194
|
-
let pars = new HttpParams().set("from", from || "").set("to", to || "").set("be", be);
|
|
195
|
-
this.http.getFileNative(GET_Director_GetWorkloadReport, pars);
|
|
196
|
-
}
|
|
197
|
-
getMetrics(be, sv) {
|
|
198
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
-
var pars = new HttpParams().set("be", be);
|
|
200
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetMetrics, sv, pars));
|
|
201
|
-
return ret;
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
getMetricsList(be, from, to) {
|
|
205
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
206
|
-
let pars = new HttpParams()
|
|
207
|
-
.set("from", from || "")
|
|
208
|
-
.set("to", to || "")
|
|
209
|
-
.set("be", be);
|
|
210
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetMetrics, pars));
|
|
211
|
-
return ret.sort((a, b) => a.name.localeCompare(b.name));
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
getServerLocks(be, sv) {
|
|
215
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
216
|
-
var pars = new HttpParams().set("be", be);
|
|
217
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetServerLocks, sv, pars));
|
|
218
|
-
return ret;
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
getServerQuery(be, sv) {
|
|
222
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
223
|
-
var pars = new HttpParams().set("be", be);
|
|
224
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetServerQuery, sv, pars));
|
|
225
|
-
return ret;
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
getDynamicViewData(be, sv) {
|
|
229
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
230
|
-
var pars = new HttpParams().set("be", be);
|
|
231
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetDynamicViewData, sv, pars));
|
|
232
|
-
return ret;
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
getDynamicViews(be) {
|
|
236
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
237
|
-
var pars = new HttpParams().set("be", be);
|
|
238
|
-
let ret = yield firstValueFrom(this.http.get(GET_Director_GetDynamicViews, pars));
|
|
239
|
-
return ret;
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
getServerAudits(be, sv) {
|
|
243
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
244
|
-
var pars = new HttpParams().set("be", be);
|
|
245
|
-
let ret = yield firstValueFrom(this.http.post(POST_Director_GetServerAudits, sv, pars));
|
|
246
|
-
return ret;
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
AdminModuleBaseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleBaseService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
251
|
-
AdminModuleBaseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleBaseService });
|
|
252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleBaseService, decorators: [{
|
|
253
|
-
type: Injectable
|
|
254
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
255
|
-
|
|
256
|
-
class AdmAuditsComponent {
|
|
257
|
-
constructor(lc, intercom, localStorage, route, location, adms, mod, usesConversations) {
|
|
258
|
-
this.lc = lc;
|
|
259
|
-
this.intercom = intercom;
|
|
260
|
-
this.localStorage = localStorage;
|
|
261
|
-
this.route = route;
|
|
262
|
-
this.location = location;
|
|
263
|
-
this.adms = adms;
|
|
264
|
-
this.mod = mod;
|
|
265
|
-
this.usesConversations = usesConversations;
|
|
266
|
-
this.searchView = new AuditsView();
|
|
267
|
-
this.Actions = [];
|
|
268
|
-
this.HttpMethods = [];
|
|
269
|
-
this.searchInProgress = false;
|
|
270
|
-
this.be = route.snapshot.params["be"] || "";
|
|
271
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
272
|
-
this.HttpMethods = [
|
|
273
|
-
{ id: "GET", description: "GET" },
|
|
274
|
-
{ id: "POST", description: "POST" },
|
|
275
|
-
{ id: "PUT", description: "PUT" },
|
|
276
|
-
{ id: "PATCH", description: "PATCH" },
|
|
277
|
-
{ id: "DELETE", description: "DELETE" }
|
|
278
|
-
];
|
|
279
|
-
this.Actions = [
|
|
280
|
-
{ id: "C", description: this.lc.loc("Chiamata REST") },
|
|
281
|
-
{ id: "U", description: this.lc.loc("Aggiornamento") },
|
|
282
|
-
{ id: "D", description: this.lc.loc("Elimina") }
|
|
283
|
-
];
|
|
284
|
-
}
|
|
285
|
-
ngOnInit() {
|
|
286
|
-
this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
|
|
287
|
-
}
|
|
288
|
-
ngOnDestroy() {
|
|
289
|
-
if (this.storageSub)
|
|
290
|
-
this.storageSub.unsubscribe();
|
|
291
|
-
}
|
|
292
|
-
Init(ignoreStorage) {
|
|
293
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
294
|
-
let item = yield this.localStorage.getItem("HotAudittato").toPromise();
|
|
295
|
-
if (!ignoreStorage && item) {
|
|
296
|
-
this.init(item);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
this.init(null);
|
|
300
|
-
this.location.replaceState(`/pages/${this.mod}/serveraudits`);
|
|
301
|
-
this.route.snapshot.queryParams = [];
|
|
302
|
-
yield this.localStorage.removeItem("HotAudittato").toPromise();
|
|
303
|
-
}
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
init(HotPotato) {
|
|
307
|
-
//Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
|
|
308
|
-
//Altirmenti genero il modello nuovo normalmente
|
|
309
|
-
if (HotPotato) {
|
|
310
|
-
this.searchView = HotPotato;
|
|
311
|
-
this.POSTGetProcesses(this.searchView);
|
|
312
|
-
}
|
|
313
|
-
else {
|
|
314
|
-
this.searchView = new AuditsView();
|
|
315
|
-
this.searchView.filterda = dayjs().add(-1, "month").format(this.lc.token("getSmallDateFormat"));
|
|
316
|
-
this.searchView.filtera = dayjs().format(this.lc.token("getSmallDateFormat"));
|
|
317
|
-
this.sendSearch();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
sendSearch(resetPage = true) {
|
|
321
|
-
this.searchInProgress = true;
|
|
322
|
-
if (resetPage)
|
|
323
|
-
this.searchView.page = 1;
|
|
324
|
-
this.POSTGetProcesses(this.searchView);
|
|
325
|
-
}
|
|
326
|
-
POSTGetProcesses(data) {
|
|
327
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
328
|
-
this.searchView = yield this.adms.getServerAudits(this.be, data);
|
|
329
|
-
this.searchInProgress = false;
|
|
330
|
-
this.localStorage.setItem("HotAudittato", this.searchView).subscribe();
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
AdmAuditsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmAuditsComponent, deps: [{ token: i1.LocalizationService }, { token: i1$1.InterComService }, { token: i3.PreferencesService }, { token: i4.ActivatedRoute }, { token: i5.Location }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }, { token: ADM_CONVERSATIONS }], target: i0.ɵɵFactoryTarget.Component });
|
|
335
|
-
AdmAuditsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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\">{{'Ricerca Audit Applicativi' | 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]=\"'Da' | 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]=\"'A' | 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]=\"'Utente' | 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.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | 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]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></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-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\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.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | 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]=\"'ID Oggetto' | 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]=\"'Tipo Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <!-- Per ora commentato -->\r\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | 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>{{'Carico gli Audit dell\\'Applicazione' | 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'\">{{'Data' | localize: lc}}</span>\r\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\r\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\r\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\r\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\r\n\r\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let item\">{{item.user}}</span>\r\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\r\n <span *td=\"'Action'; let item\">{{item.action}}</span>\r\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\r\n <span *td=\"'Route'; let item\">{{item.route}}</span>\r\n <span *td=\"'Args'; let item\">{{item.args}}</span>\r\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\r\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\r\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\r\n <span *td=\"'ObjectData'; let item\">{{item.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>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdForProperty", "tdIf", "tdClass", "tdPropertyAccessor", "tdAlignment", "tdFormat", "tdIconClass", "tdConditionField", "tdConditionValue", "tdTitle", "tdContent"] }, { kind: "directive", type: i9.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thShrink", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation", "thProperty", "thType", "thSource", "thMulti", "thStaticContent", "thBackgroundColor", "thAlignment", "thFormat", "thEditorName", "thEditorOptions", "thRendererName", "thRoutePath", "thRouteParameterProperties"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { kind: "component", type: i9$1.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i9$1.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol", "OptionTemplate"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }, { kind: "pipe", type: i1$1.LocDatePipe, name: "loc_date" }], viewProviders: [{ provide: LocalizationService, useClass: AdmAuditLoc }] });
|
|
336
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmAuditsComponent, decorators: [{
|
|
337
|
-
type: Component,
|
|
338
|
-
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\">{{'Ricerca Audit Applicativi' | 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]=\"'Da' | 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]=\"'A' | 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]=\"'Utente' | 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.filteraddress\" name=\"filteraddress\" [Placeholder]=\"'Indirizzo' | 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]=\"'Azione' | localize: lc\" [(ngModel)]=\"searchView.filteraction\" name=\"filteraction\" [Source]=\"Actions\"></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-select [FormLayout]=\"false\" [Validation]=\"false\" [SelectLabel]=\"'Metodo HTTP' | localize: lc\" [(ngModel)]=\"searchView.filterhttp\" name=\"filterhttp\" [Source]=\"HttpMethods\"></form-select>\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.filterargs\" name=\"filterargs\" [Placeholder]=\"'Argomenti' | 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]=\"'ID Oggetto' | 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]=\"'Tipo Oggetto' | localize: lc\"></form-input>\r\n </div>\r\n <!-- Per ora commentato -->\r\n <!-- <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" *ngIf=\"usesConversations\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterconversationid\" name=\"filterconversationid\" [Placeholder]=\"'Cod. Conversation' | 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>{{'Carico gli Audit dell\\'Applicazione' | 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'\">{{'Data' | localize: lc}}</span>\r\n <span *th=\"'User'\">{{'Utente' | localize: lc}}</span>\r\n <span *th=\"'RemoteAddress'\">{{'Indirizzo' | localize: lc}}</span>\r\n <span *th=\"'Action'\">{{'Azione' | localize: lc}}</span>\r\n <span *th=\"'HttpMethod'\">{{'Metodo HTTP' | localize: lc}}</span>\r\n <span *th=\"'Route'\">{{'Route' | localize : lc}}</span>\r\n <span *th=\"'Args'\">{{'Argomenti' | localize: lc}}</span>\r\n <span *th=\"'HttpResponse'\">{{'Risposta HTTP' | localize: lc}}</span>\r\n <span *th=\"'NonStdErrorMessage'\">{{'Codice Errore Applicativo' | localize: lc}}</span>\r\n <span *th=\"'ConvId'; If: usesConversations\">{{'Cod. Conversation' | localize: lc}}</span>\r\n <span *th=\"'ObjectType'\">{{'Tipo Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectId'\">{{'ID Oggetto' | localize: lc}}</span>\r\n <span *th=\"'ObjectData'\">{{'Dati Oggetto' | localize: lc}}</span>\r\n\r\n <strong *td=\"'Timestamp'; let item\">{{item.timestamp | loc_date:'DD/MM/YYYY HH:mm:ss'}}</strong>\r\n <span *td=\"'User'; let item\">{{item.user}}</span>\r\n <span *td=\"'RemoteAddress'; let item\">{{item.address}}</span>\r\n <span *td=\"'Action'; let item\">{{item.action}}</span>\r\n <span *td=\"'HttpMethod'; let item\">{{item.httpmethod}}</span>\r\n <span *td=\"'Route'; let item\">{{item.route}}</span>\r\n <span *td=\"'Args'; let item\">{{item.args}}</span>\r\n <span *td=\"'HttpResponse'; let item\">{{item.httpresponse}}</span>\r\n <span *td=\"'NonStdErrorMessage'; let item\">{{item.mdmerrorcode}}</span>\r\n <span *td=\"'ConvId'; If: usesConversations; let item\">{{item.conversationid}}</span>\r\n <span *td=\"'ObjectType'; let item\">{{item.objecttype}}</span>\r\n <span *td=\"'ObjectId'; let item\">{{item.objectid}}</span>\r\n <span *td=\"'ObjectData'; let item\">{{item.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>" }]
|
|
339
|
-
}], ctorParameters: function () {
|
|
340
|
-
return [{ type: i1.LocalizationService }, { type: i1$1.InterComService }, { type: i3.PreferencesService }, { type: i4.ActivatedRoute }, { type: i5.Location }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
341
|
-
type: Inject,
|
|
342
|
-
args: [ADM_MODULE_PATH]
|
|
343
|
-
}] }, { type: undefined, decorators: [{
|
|
344
|
-
type: Inject,
|
|
345
|
-
args: [ADM_CONVERSATIONS]
|
|
346
|
-
}] }];
|
|
347
|
-
} });
|
|
348
|
-
|
|
349
|
-
class KeyValue {
|
|
350
|
-
constructor(id, description) {
|
|
351
|
-
this.id = id;
|
|
352
|
-
this.description = description;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
class ProcessesView extends AppSearch {
|
|
357
|
-
constructor() { super(); }
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
class AdmWrkLoc extends LocalizationService {
|
|
361
|
-
constructor(injector) {
|
|
362
|
-
super(injector);
|
|
363
|
-
super.set("it->en", "Gruppo di Consumo modificato con successo", ["Consumer Group succesfully changed"]);
|
|
364
|
-
super.set("it->en", "Errori nella modifica del Gruppo di Consumo", ["Errors changing Consumer Group"]);
|
|
365
|
-
super.set("it->en", "Modifica Gruppo di Consumo", ["Change Consumer Group"]);
|
|
366
|
-
super.set("it->en", "Nuovo Gruppo di Consumo", ["New Consumer Group"]);
|
|
367
|
-
super.set("it->en", "Tipo Thread", ["Thread Type"]);
|
|
368
|
-
super.set("it->en", "Stato Thread", ["Thread Status"]);
|
|
369
|
-
super.set("it->en", "Tipo", ["Type"]);
|
|
370
|
-
super.set("it->en", "Stato", ["State"]);
|
|
371
|
-
super.set("it->en", "SID", ["SID"]);
|
|
372
|
-
super.set("it->en", "TID", ["TID"]);
|
|
373
|
-
super.set("it->en", "In Attesa", ["In Wait"]);
|
|
374
|
-
super.set("it->en", "Push dedicato connesso", ["Dedicated push connected"]);
|
|
375
|
-
super.set("it->en", "Ricerca globale", ["Global search"]);
|
|
376
|
-
super.set("it->en", "Ricerca Processi Applicativi", ["Search Application Processes"]);
|
|
377
|
-
super.set("it->en", "Tenant", ["Tenant"]);
|
|
378
|
-
super.set("it->en", "Errori nella modifica del Tracing del Processo", ["Errors toggling Process Tracing"]);
|
|
379
|
-
super.set("it->en", "Utente", ["User"]);
|
|
380
|
-
super.set("it->en", "Carico i Processi Applicativi", ["Loading Application Processes"]);
|
|
381
|
-
super.set("it->en", "Attiva Tracing Processo", ["Activate Process Tracing"]);
|
|
382
|
-
super.set("it->en", "Disattiva Tracing Progetto", ["Deactivate Process Tracing"]);
|
|
383
|
-
super.set("it->en", "Ammazza Processo", ["Kill Process"]);
|
|
384
|
-
super.set("it->en", "Errori durante la Kill del Processo", ["Errors killing the Process"]);
|
|
385
|
-
super.set("it->en", "Processo ucciso con successo", ["Process succesfully killed"]);
|
|
386
|
-
super.set("it->en", "Conferma Terminazione del Processo", ["Confirm Process Kill"]);
|
|
387
|
-
super.set("it->en", "Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso", ["Are you sure you wish to kill the selected process? The associated user will be disconnected"]);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
AdmWrkLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmWrkLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
391
|
-
AdmWrkLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmWrkLoc });
|
|
392
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmWrkLoc, decorators: [{
|
|
393
|
-
type: Injectable
|
|
394
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
395
|
-
|
|
396
|
-
class AdmWrkComponent {
|
|
397
|
-
constructor(utiExts, msgExts, lc, localStorage, intercom, route, location, adms, mod) {
|
|
398
|
-
this.utiExts = utiExts;
|
|
399
|
-
this.msgExts = msgExts;
|
|
400
|
-
this.lc = lc;
|
|
401
|
-
this.localStorage = localStorage;
|
|
402
|
-
this.intercom = intercom;
|
|
403
|
-
this.route = route;
|
|
404
|
-
this.location = location;
|
|
405
|
-
this.adms = adms;
|
|
406
|
-
this.mod = mod;
|
|
407
|
-
this.globalFilterValue = null;
|
|
408
|
-
this.searchView = new ProcessesView();
|
|
409
|
-
this.DynamicOps = [];
|
|
410
|
-
this.valueToShow = "";
|
|
411
|
-
this.Types = [];
|
|
412
|
-
this.States = [];
|
|
413
|
-
this.ThreadTypes = [];
|
|
414
|
-
this.ThreadStatuses = [];
|
|
415
|
-
//********************************************** Gestione modifica Consumer Group ***************************************
|
|
416
|
-
this.newCg = "";
|
|
417
|
-
this.CGs = [];
|
|
418
|
-
this.CgDictionariesLoaded = false;
|
|
419
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
420
|
-
this.be = route.snapshot.params["be"] || "";
|
|
421
|
-
this.DynamicOps = [
|
|
422
|
-
new EsTableOperationDefinition("trace_on", this.lc.loc("Attiva Tracing Processo"), "fa fa-circle text-danger", "", "trace_enabled", "N"),
|
|
423
|
-
new EsTableOperationDefinition("trace_off", this.lc.loc("Disattiva Tracing Progetto"), "fa fa-circle text-success", "", "trace_enabled", "Y"),
|
|
424
|
-
new EsTableOperationDefinition("kill", this.lc.loc("Ammazza Processo"), "fa fa-ban text-danger"),
|
|
425
|
-
new EsTableOperationDefinition("change_cg", this.lc.loc("Modifica Gruppo di Consumo"), "fa fa-edit text-info")
|
|
426
|
-
];
|
|
427
|
-
}
|
|
428
|
-
ngOnInit() {
|
|
429
|
-
this.storageSub = this.route.queryParams.subscribe(params => {
|
|
430
|
-
this.Init(params["ignoreStorage"]);
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
|
-
ngOnDestroy() {
|
|
434
|
-
if (this.storageSub)
|
|
435
|
-
this.storageSub.unsubscribe();
|
|
436
|
-
}
|
|
437
|
-
Init(ignoreStorage) {
|
|
438
|
-
this.Types = [new KeyValue("USER", "USER"), new KeyValue("BACKGROUND", "BACKGROUND"), new KeyValue("JOB", "JOB")];
|
|
439
|
-
this.States = [new KeyValue("ACTIVE", "ACTIVE"), new KeyValue("INACTIVE", "INACTIVE"), new KeyValue("KILLED", "KILLED")];
|
|
440
|
-
this.ThreadTypes = ["APITHREAD", "APIPUSHTHREAD", "BACKGROUNDTHREAD", "JOBTHREAD", "PARALLELSLAVETHREAD"].map(t => new KeyValue(t, t));
|
|
441
|
-
this.ThreadStatuses = ["ACTIVE", "IDLE", "THROTTLING", "KILLED"].map(t => new KeyValue(t, t));
|
|
442
|
-
this.doInit(ignoreStorage);
|
|
443
|
-
}
|
|
444
|
-
doInit(ignoreStorage) {
|
|
445
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
446
|
-
let item = yield this.localStorage.getItem("HotProcessato").toPromise();
|
|
447
|
-
if (!ignoreStorage && item) {
|
|
448
|
-
this.init(item);
|
|
449
|
-
}
|
|
450
|
-
else {
|
|
451
|
-
this.init(null);
|
|
452
|
-
this.location.replaceState(`/pages/${this.mod}/serverworkers`);
|
|
453
|
-
this.route.snapshot.queryParams = [];
|
|
454
|
-
yield this.localStorage.removeItem("HotProcessato").toPromise();
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
init(HotPotato) {
|
|
459
|
-
if (HotPotato) {
|
|
460
|
-
this.searchView = HotPotato;
|
|
461
|
-
this.POSTGetServerWorkers();
|
|
462
|
-
}
|
|
463
|
-
else {
|
|
464
|
-
this.searchView = new ProcessesView();
|
|
465
|
-
this.sendSearch();
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
sendSearch(resetPage = true) {
|
|
469
|
-
this.searchView.searchinprogress = true;
|
|
470
|
-
if (resetPage)
|
|
471
|
-
this.searchView.page = 1;
|
|
472
|
-
this.POSTGetServerWorkers();
|
|
473
|
-
}
|
|
474
|
-
POSTGetServerWorkers() {
|
|
475
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
476
|
-
// Switch cattivo per resettare la tabella quando cambia il global (dato che potrebbero cambiare le colonne)
|
|
477
|
-
// La casistica è esplicitamente non supportata dall'estable quindi abbozzo un hard refresh da qui...
|
|
478
|
-
if (this.globalFilterValue != null && this.globalFilterValue != this.searchView.filterglobal) {
|
|
479
|
-
let prevSearchView = this.utiExts.deepClone(this.searchView);
|
|
480
|
-
this.searchView = null;
|
|
481
|
-
requestAnimationFrame(() => __awaiter(this, void 0, void 0, function* () {
|
|
482
|
-
this.globalFilterValue = prevSearchView.filterglobal;
|
|
483
|
-
this.searchView = yield this.adms.getServerWorkers(prevSearchView);
|
|
484
|
-
this.searchView.searchinprogress = false;
|
|
485
|
-
this.localStorage.setItem("HotProcessato", this.searchView).subscribe();
|
|
486
|
-
}));
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
this.globalFilterValue = this.searchView.filterglobal || false;
|
|
490
|
-
this.searchView = yield this.adms.getServerWorkers(this.searchView);
|
|
491
|
-
this.searchView.searchinprogress = false;
|
|
492
|
-
this.localStorage.setItem("HotProcessato", this.searchView).subscribe();
|
|
493
|
-
}
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
prepareExport(callback) {
|
|
497
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
498
|
-
var view = JSON.parse(JSON.stringify(this.searchView));
|
|
499
|
-
view.page = 1;
|
|
500
|
-
view.itemsperpageoverride = 9999999;
|
|
501
|
-
let tmp = yield this.adms.getServerWorkers(view);
|
|
502
|
-
callback(tmp.items, GenericItem);
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
back() {
|
|
506
|
-
this.location.back();
|
|
507
|
-
}
|
|
508
|
-
onOperation(event) {
|
|
509
|
-
switch (event.id) {
|
|
510
|
-
case "trace_on":
|
|
511
|
-
this.toggleTracing(event.item, true);
|
|
512
|
-
break;
|
|
513
|
-
case "trace_off":
|
|
514
|
-
this.toggleTracing(event.item, false);
|
|
515
|
-
break;
|
|
516
|
-
case "kill":
|
|
517
|
-
this.killProcess(event.item);
|
|
518
|
-
break;
|
|
519
|
-
case "change_cg":
|
|
520
|
-
this.changeProcessCg(event.item);
|
|
521
|
-
break;
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
toggleTracing(process, tracing) {
|
|
525
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
526
|
-
let res = yield this.adms.doSetProcessTracing(this.be, process.properties["inst_id"] || process.properties["INST_ID"], process.properties["sid"] || process.properties["SID"], process.properties["serial"] || process.properties["SERIAL"], tracing.toString());
|
|
527
|
-
this.msgExts.manageStringResponse(res, "", this.lc.loc("Errori nella modifica del Tracing del Processo"), () => this.sendSearch());
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
killProcess(process) {
|
|
531
|
-
this.msgExts.simpleWarningWithChoice(this.lc.loc("Conferma Terminazione del Processo"), this.lc.loc("Sei sicuro di voler Terminare il processo selezionato? L'utente relativo sara' disconnesso"), () => __awaiter(this, void 0, void 0, function* () {
|
|
532
|
-
let res = yield this.adms.doKillProcess(this.be, process.properties["inst_id"] || process.properties["INST_ID"], process.properties["sid"] || process.properties["SID"], process.properties["serial"] || process.properties["SERIAL"]);
|
|
533
|
-
this.msgExts.manageStringResponse(res, this.lc.loc("Processo ucciso con successo"), this.lc.loc("Errori durante la Kill del Processo"), () => this.sendSearch());
|
|
534
|
-
}));
|
|
535
|
-
}
|
|
536
|
-
changeProcessCg(process) {
|
|
537
|
-
this.ProcessOnEdit = process;
|
|
538
|
-
if (!this.CgDictionariesLoaded) {
|
|
539
|
-
this.loadCgDictionaries();
|
|
540
|
-
this.CgDictionariesLoaded = true;
|
|
541
|
-
}
|
|
542
|
-
this.setupChangeCg();
|
|
543
|
-
this.dlgChangeCg.show();
|
|
544
|
-
}
|
|
545
|
-
loadCgDictionaries() {
|
|
546
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
547
|
-
this.CGs = yield this.adms.getConsumerGroups(this.be);
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
setupChangeCg() {
|
|
551
|
-
this.utiExts.cleanForm(this.cgFrom);
|
|
552
|
-
setTimeout(() => { this.newCg = ""; });
|
|
553
|
-
}
|
|
554
|
-
doChangeCg() {
|
|
555
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
556
|
-
let res = yield this.adms.doChangeProcessConsumerGroup(this.be, this.ProcessOnEdit.properties["inst_id"] || this.ProcessOnEdit.properties["INST_ID"], this.ProcessOnEdit.properties["sid"] || this.ProcessOnEdit.properties["SID"], this.ProcessOnEdit.properties["serial"] || this.ProcessOnEdit.properties["SERIAL"], this.newCg);
|
|
557
|
-
this.msgExts.manageStringResponse(res, this.lc.loc("Gruppo di Consumo modificato con successo"), this.lc.loc("Errori nella modifica del Gruppo di Consumo"), () => this.sendSearch());
|
|
558
|
-
return true;
|
|
559
|
-
});
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
AdmWrkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmWrkComponent, deps: [{ token: i1$1.UtilityService }, { token: i1$1.MessageService }, { token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: i5.Location }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
563
|
-
AdmWrkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div *ngIf=\"searchView\" 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-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\r\n </div> \r\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| 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\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [SelectLabel]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-1 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]=\"'Utente' | 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\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [SelectLabel]=\"'Stato' | localize: lc\" [Source]=\"States\"></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.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| 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.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| 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\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [SelectLabel]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></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\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [SelectLabel]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\r\n </div> \r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\r\n </div> \r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.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>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\"\r\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\r\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n \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()\">{{'Indietro' | 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\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | 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]=\"'Nuovo Gruppo di Consumo' | 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()\">{{'Chiudi' | localize: lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | 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>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.ModalDirective, selector: "[bsModal]", inputs: ["config", "closeInterceptor"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["bs-modal"] }, { kind: "directive", type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdForProperty", "tdIf", "tdClass", "tdPropertyAccessor", "tdAlignment", "tdFormat", "tdIconClass", "tdConditionField", "tdConditionValue", "tdTitle", "tdContent"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i9$1.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i9$1.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol", "OptionTemplate"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: AdmWrkLoc }] });
|
|
564
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmWrkComponent, decorators: [{
|
|
565
|
-
type: Component,
|
|
566
|
-
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\">{{'Ricerca Processi Applicativi' | localize: lc}}</span>\r\n </div>\r\n <div class=\"card-body widget-body\">\r\n <div *ngIf=\"searchView\" 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-1 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterglobal = !searchView.filterglobal\">{{'Ricerca globale' | localize: lc}}</span>\r\n </div> \r\n <div class=\"col-xl-2 col-lg-1 col-md-12 app-filter-wrapper\">\r\n <form-input [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filtersid\" name=\"filtersid\" [Placeholder]=\"'SID'| 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\" [(ngModel)]=\"searchView.filtertype\" name=\"filtertype\" [SelectLabel]=\"'Tipo' | localize: lc\" [Source]=\"Types\"></form-select>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-1 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]=\"'Utente' | 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\" [(ngModel)]=\"searchView.filterstate\" name=\"filterState\" [SelectLabel]=\"'Stato' | localize: lc\" [Source]=\"States\"></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.filtertid\" name=\"filtertid\" [Placeholder]=\"'TID'| 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.filtermtid\" name=\"filtermtid\" [Placeholder]=\"'Thread gestito'| 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\" [(ngModel)]=\"searchView.filterthreadtype\" name=\"filterthreadtype\" [SelectLabel]=\"'Tipo Thread' | localize: lc\" [Source]=\"ThreadTypes\"></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\" [(ngModel)]=\"searchView.filterthreadstatus\" name=\"filterthreadstatus\" [SelectLabel]=\"'Stato Thread' | localize: lc\" [Source]=\"ThreadStatuses\"></form-select>\r\n </div> \r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterinwait\" name=\"filterinwait\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterinwait = !searchView.filterinwait\">{{'In Attesa' | localize: lc}}</span>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterdcid\" name=\"filterdcid\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"searchView.filterdcid = !searchView.filterdcid\">{{'Push dedicato connesso' | localize: lc}}</span>\r\n </div> \r\n </div>\r\n </div>\r\n <div class=\"col-md-1 app-no-padding\">\r\n <button [disabled]=\"searchView.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>{{'Carico i Processi Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [DynamicOperations]=\"DynamicOps\" [Export]=\"true\"\r\n [ExportFileName]=\"'Application Processes.csv'\" [ExportFunction]=\"prepareExport.bind(this)\" [AutoUpdate]=\"true\"\r\n [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" (onDynamicOperation)=\"onOperation($event)\">\r\n \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()\">{{'Indietro' | 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\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Modifica Gruppo di Consumo' | 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]=\"'Nuovo Gruppo di Consumo' | 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()\">{{'Chiudi' | localize: lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Conferma' | 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>" }]
|
|
567
|
-
}], ctorParameters: function () {
|
|
568
|
-
return [{ type: i1$1.UtilityService }, { type: i1$1.MessageService }, { type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: i5.Location }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
569
|
-
type: Inject,
|
|
570
|
-
args: [ADM_MODULE_PATH]
|
|
571
|
-
}] }];
|
|
572
|
-
}, propDecorators: { cgFrom: [{
|
|
573
|
-
type: ViewChild,
|
|
574
|
-
args: ["cgFrom"]
|
|
575
|
-
}], dlgChangeCg: [{
|
|
576
|
-
type: ViewChild,
|
|
577
|
-
args: ["dlgChangeCg"]
|
|
578
|
-
}] } });
|
|
579
|
-
|
|
580
|
-
class ProfilerDataNodeLoc extends LocalizationService {
|
|
581
|
-
constructor(injector) {
|
|
582
|
-
super(injector);
|
|
583
|
-
super.set("it->en", "ID Padre", ["Parent ID"]);
|
|
584
|
-
super.set("it->en", "ID", ["ID"]);
|
|
585
|
-
super.set("it->en", "Descrizione", ["Description"]);
|
|
586
|
-
super.set("it->en", "Chiamate", ["Calls"]);
|
|
587
|
-
super.set("it->en", "Tempo", ["Time"]);
|
|
588
|
-
super.set("it->en", "Tempo Max", ["Peak Time"]);
|
|
589
|
-
super.set("it->en", "Tempo Min", ["Min. Time"]);
|
|
590
|
-
super.set("it->en", "Tempo Medio", ["Avg. Time"]);
|
|
591
|
-
super.set("it->en", "Tempo Specifico", ["Specific Time"]);
|
|
592
|
-
super.set("it->en", "Percentuale", ["Percentage"]);
|
|
593
|
-
super.set("it->en", "Chiamate Periodo", ["Calls for Period"]);
|
|
594
|
-
super.set("it->en", "Tempo Periodo", ["Time for Period"]);
|
|
595
|
-
super.set("it->en", "Tempo Max Periodo", ["Peak Time for Period"]);
|
|
596
|
-
super.set("it->en", "Tempo Min Periodo", ["Min. Time for Period"]);
|
|
597
|
-
super.set("it->en", "Tempo Medio Periodo", ["Avg. Time for Period"]);
|
|
598
|
-
super.set("it->en", "Tempo Specifico Periodo", ["Specific Time for Period"]);
|
|
599
|
-
super.set("it->en", "Percentuale Periodo", ["Percentage for Period"]);
|
|
600
|
-
super.set("it->en", "Nome Tipologia Evento", ["Event Type Name"]);
|
|
601
|
-
super.set("it->en", "Nome Classe Attesa", ["Wait Class Name"]);
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
ProfilerDataNodeLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProfilerDataNodeLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
605
|
-
ProfilerDataNodeLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProfilerDataNodeLoc });
|
|
606
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ProfilerDataNodeLoc, decorators: [{
|
|
607
|
-
type: Injectable
|
|
608
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
609
|
-
|
|
610
|
-
let ProfilerDataNode = class ProfilerDataNode {
|
|
611
|
-
};
|
|
612
|
-
__decorate([
|
|
613
|
-
Export(10, "ID Padre")
|
|
614
|
-
], ProfilerDataNode.prototype, "parentid", void 0);
|
|
615
|
-
__decorate([
|
|
616
|
-
Export(20, "ID")
|
|
617
|
-
], ProfilerDataNode.prototype, "id", void 0);
|
|
618
|
-
__decorate([
|
|
619
|
-
Export(30, "Descrizione")
|
|
620
|
-
], ProfilerDataNode.prototype, "description", void 0);
|
|
621
|
-
__decorate([
|
|
622
|
-
Export(40, "Chiamate")
|
|
623
|
-
], ProfilerDataNode.prototype, "calls", void 0);
|
|
624
|
-
__decorate([
|
|
625
|
-
Export(50, "Tempo")
|
|
626
|
-
], ProfilerDataNode.prototype, "time", void 0);
|
|
627
|
-
__decorate([
|
|
628
|
-
Export(60, "Tempo Max")
|
|
629
|
-
], ProfilerDataNode.prototype, "peaktime", void 0);
|
|
630
|
-
__decorate([
|
|
631
|
-
Export(70, "Tempo Min")
|
|
632
|
-
], ProfilerDataNode.prototype, "mintime", void 0);
|
|
633
|
-
__decorate([
|
|
634
|
-
Export(80, "Tempo Medio")
|
|
635
|
-
], ProfilerDataNode.prototype, "avgtime", void 0);
|
|
636
|
-
__decorate([
|
|
637
|
-
Export(90, "Tempo Specifico")
|
|
638
|
-
], ProfilerDataNode.prototype, "timewithoutchildren", void 0);
|
|
639
|
-
__decorate([
|
|
640
|
-
Export(100, "Percentuale")
|
|
641
|
-
], ProfilerDataNode.prototype, "percentage", void 0);
|
|
642
|
-
__decorate([
|
|
643
|
-
Export(110, "Chiamate Periodo")
|
|
644
|
-
], ProfilerDataNode.prototype, "snapdeltacalls", void 0);
|
|
645
|
-
__decorate([
|
|
646
|
-
Export(120, "Tempo Periodo")
|
|
647
|
-
], ProfilerDataNode.prototype, "snapdeltatime", void 0);
|
|
648
|
-
__decorate([
|
|
649
|
-
Export(130, "Tempo Max Periodo")
|
|
650
|
-
], ProfilerDataNode.prototype, "snappeaktime", void 0);
|
|
651
|
-
__decorate([
|
|
652
|
-
Export(140, "Tempo Min Periodo")
|
|
653
|
-
], ProfilerDataNode.prototype, "snapmintime", void 0);
|
|
654
|
-
__decorate([
|
|
655
|
-
Export(150, "Tempo Medio Periodo")
|
|
656
|
-
], ProfilerDataNode.prototype, "snapavgtime", void 0);
|
|
657
|
-
__decorate([
|
|
658
|
-
Export(160, "Tempo Specifico Periodo")
|
|
659
|
-
], ProfilerDataNode.prototype, "snaptimewithoutchildren", void 0);
|
|
660
|
-
__decorate([
|
|
661
|
-
Export(170, "Percentuale Periodo")
|
|
662
|
-
], ProfilerDataNode.prototype, "snappercentage", void 0);
|
|
663
|
-
__decorate([
|
|
664
|
-
Export(180, "Nome Tipologia Evento")
|
|
665
|
-
], ProfilerDataNode.prototype, "eventtypename", void 0);
|
|
666
|
-
__decorate([
|
|
667
|
-
Export(190, "Nome Classe Attesa")
|
|
668
|
-
], ProfilerDataNode.prototype, "waitclassname", void 0);
|
|
669
|
-
ProfilerDataNode = __decorate([
|
|
670
|
-
ExportLocalization(ProfilerDataNodeLoc)
|
|
671
|
-
], ProfilerDataNode);
|
|
672
|
-
|
|
673
|
-
class ProfilerDataNodesView extends AppSearch {
|
|
674
|
-
constructor() { super(); }
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
class AdmProfilerComponentLoc extends LocalizationService {
|
|
678
|
-
constructor(injector) {
|
|
679
|
-
super(injector);
|
|
680
|
-
super.set("it->en", "Profiler del Server", ["Server Profiler"]);
|
|
681
|
-
super.set("it->en", "Carico i Dati", ["Loading Data"]);
|
|
682
|
-
super.set("it->en", "ID", ["ID"]);
|
|
683
|
-
super.set("it->en", "Descrizione", ["Description"]);
|
|
684
|
-
super.set("it->en", "Chiamate", ["Calls"]);
|
|
685
|
-
super.set("it->en", "Tempo", ["Time"]);
|
|
686
|
-
super.set("it->en", "Tempo Max", ["Peak Time"]);
|
|
687
|
-
super.set("it->en", "Tempo Min", ["Min. Time"]);
|
|
688
|
-
super.set("it->en", "Tempo Medio", ["Avg. Time"]);
|
|
689
|
-
super.set("it->en", "Tempo Specifico", ["Specific Time"]);
|
|
690
|
-
super.set("it->en", "Percentuale", ["Percentage"]);
|
|
691
|
-
super.set("it->en", "Chiamate Periodo", ["Calls for Period"]);
|
|
692
|
-
super.set("it->en", "Tempo Periodo", ["Time for Period"]);
|
|
693
|
-
super.set("it->en", "Tempo Max Periodo", ["Peak Time for Period"]);
|
|
694
|
-
super.set("it->en", "Tempo Min Periodo", ["Min. Time for Period"]);
|
|
695
|
-
super.set("it->en", "Tempo Medio Periodo", ["Avg. Time for Period"]);
|
|
696
|
-
super.set("it->en", "Tempo Specifico Periodo", ["Specific Time for Period"]);
|
|
697
|
-
super.set("it->en", "Percentuale Periodo", ["Percentage for Period"]);
|
|
698
|
-
super.set("it->en", "Nome Tipologia Evento", ["Event Type Name"]);
|
|
699
|
-
super.set("it->en", "Nome Classe Attesa", ["Wait Class Name"]);
|
|
700
|
-
}
|
|
701
|
-
}
|
|
702
|
-
AdmProfilerComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmProfilerComponentLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
703
|
-
AdmProfilerComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmProfilerComponentLoc });
|
|
704
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmProfilerComponentLoc, decorators: [{
|
|
705
|
-
type: Injectable
|
|
706
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
707
|
-
|
|
708
|
-
class NodeDetailLoc extends LocalizationService {
|
|
709
|
-
constructor(injector) {
|
|
710
|
-
super(injector);
|
|
711
|
-
super.set("it->en", "Sessioni Attive", ["Active Sessions"]);
|
|
712
|
-
super.set("it->en", "Dettaglio Attività Nodo", ["Activity Node Details"]);
|
|
713
|
-
super.set("it->en", "Tipo Evento", ["Event Type"]);
|
|
714
|
-
super.set("it->en", "Tempo Trascorso (Con Figli)", ["Elapsed (With Children)"]);
|
|
715
|
-
super.set("it->en", "Classe Attesa", ["Wait Class"]);
|
|
716
|
-
super.set("it->en", "Tempo Trascorso", ["Elapsed (No Children)"]);
|
|
717
|
-
super.set("it->en", "Stack di Attesa", ["Wait Stack"]);
|
|
718
|
-
super.set("it->en", "Utilizzo Risorse", ["Resources Usage"]);
|
|
719
|
-
super.set("it->en", "Esecuzioni", ["Executions"]);
|
|
720
|
-
super.set("it->en", "Dettaglio evento", ["Event detail"]);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
NodeDetailLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NodeDetailLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
724
|
-
NodeDetailLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NodeDetailLoc });
|
|
725
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NodeDetailLoc, decorators: [{
|
|
726
|
-
type: Injectable
|
|
727
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
728
|
-
|
|
729
|
-
// Angular
|
|
730
|
-
class NodeDetailComponent {
|
|
731
|
-
constructor(lc) {
|
|
732
|
-
this.lc = lc;
|
|
733
|
-
this.onClose = new EventEmitter();
|
|
734
|
-
}
|
|
735
|
-
ngOnInit() {
|
|
736
|
-
let serie = new LineSerie(this.lc.loc("Sessioni Attive"), this.NodeDetails.activesessions);
|
|
737
|
-
this.NodeDetails.sessionchart = new LineChartData([serie]);
|
|
738
|
-
this.NodeDetails.loadchart = new PieChartData([
|
|
739
|
-
new KeyValueColor("CPU", this.NodeDetails.cpuperc),
|
|
740
|
-
new KeyValueColor("Wait", this.NodeDetails.waitperc),
|
|
741
|
-
new KeyValueColor("DB", this.NodeDetails.dbperc),
|
|
742
|
-
new KeyValueColor("Script", this.NodeDetails.scriptperc),
|
|
743
|
-
new KeyValueColor("Throttle", this.NodeDetails.throttleperc),
|
|
744
|
-
new KeyValueColor("Sleep", this.NodeDetails.sleepperc),
|
|
745
|
-
new KeyValueColor("Networking", this.NodeDetails.networkperc),
|
|
746
|
-
new KeyValueColor("IO", this.NodeDetails.ioperc)
|
|
747
|
-
]);
|
|
748
|
-
}
|
|
749
|
-
closeDialog() {
|
|
750
|
-
this.onClose.emit(true);
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
NodeDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NodeDetailComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
754
|
-
NodeDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: NodeDetailComponent, selector: "node-detail", inputs: { NodeDetails: "NodeDetails" }, outputs: { onClose: "onClose" }, ngImport: i0, template: "<div class=\"modal-dialog modal-xl\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Dettaglio Attivit\u00E0 Nodo' | localize: lc}}\r\n <span *ngIf=\"NodeDetails\"> {{NodeDetails.nodeid}}</span>\r\n </h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"NodeDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\r\n </div>\r\n <div class=\"col-md-6\">\r\n\t\t\t\t\t<strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\r\n </div>\r\n </div>\r\n\t\t\t<div>\r\n\t\t\t\t<h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\r\n\t\t\t\t{{NodeDetails.nodedescription}}\r\n\t\t\t</div>\r\n\t\t\t<div style=\"max-height: 200px; overflow: auto\" *ngIf=\"(NodeDetails?.waitstack?.length || 0) > 0\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\r\n <div *ngFor=\"let wait of NodeDetails.waitstack; let i = index;\">\r\n <ng-container *ngFor=\"let _ of [].constructor(i+1)\">-</ng-container> {{wait.nodeid}} - {{wait.nodedescription}}: \r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \r\n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\r\n </div>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\r\n <es-line-chart *ngIf=\"NodeDetails.sessionchart\"\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]=\"NodeDetails.sessionchart\"\r\n [Legend]=\"true\" \r\n name=\"nodeDetailSessionChart\"\r\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <es-pie-chart *ngIf=\"NodeDetails.loadchart\" [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill", "Stacked"] }, { kind: "component", type: i3$1.EsPieChartComponent, selector: "es-pie-chart", inputs: ["Data", "DataArray", "HideZeroes", "Mode3D", "DonutRadiusPercentage", "LabelsWrap", "LabelsTruncate", "LabelsWidth", "LabelsVisible"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }] });
|
|
755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NodeDetailComponent, decorators: [{
|
|
756
|
-
type: Component,
|
|
757
|
-
args: [{ selector: "node-detail", viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }], template: "<div class=\"modal-dialog modal-xl\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Dettaglio Attivit\u00E0 Nodo' | localize: lc}}\r\n <span *ngIf=\"NodeDetails\"> {{NodeDetails.nodeid}}</span>\r\n </h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"closeDialog()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"NodeDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{NodeDetails.eventtypedesc}} <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso (Con Figli)' | localize: lc}}</strong>: {{NodeDetails.elapsed}} s\r\n </div>\r\n <div class=\"col-md-6\">\r\n\t\t\t\t\t<strong>{{'Esecuzioni' | localize: lc}}</strong>: {{NodeDetails.executions}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Tempo Trascorso' | localize: lc}}</strong>: {{NodeDetails.elapsedlesschildren}} s\r\n </div>\r\n </div>\r\n\t\t\t<div>\r\n\t\t\t\t<h5 class=\"app-margin-top-10\"><strong>{{'Dettaglio evento' | localize: lc}}</strong></h5>\r\n\t\t\t\t{{NodeDetails.nodedescription}}\r\n\t\t\t</div>\r\n\t\t\t<div style=\"max-height: 200px; overflow: auto\" *ngIf=\"(NodeDetails?.waitstack?.length || 0) > 0\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Stack di Attesa' | localize: lc}}</strong></h5>\r\n <div *ngFor=\"let wait of NodeDetails.waitstack; let i = index;\">\r\n <ng-container *ngFor=\"let _ of [].constructor(i+1)\">-</ng-container> {{wait.nodeid}} - {{wait.nodedescription}}: \r\n <strong>{{'Tipo Evento' | localize: lc}}</strong>: {{wait.eventtypedesc}} \r\n <strong>{{'Classe Attesa' | localize: lc}}</strong>: {{wait.waitclassname}}\r\n </div>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Utilizzo Risorse' | localize: lc}}</strong></h5>\r\n <es-line-chart *ngIf=\"NodeDetails.sessionchart\"\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]=\"NodeDetails.sessionchart\"\r\n [Legend]=\"true\" \r\n name=\"nodeDetailSessionChart\"\r\n [DataGroupingThreshold]=\"99999999\"></es-line-chart>\r\n </div>\r\n <div style=\"height: 200px;\">\r\n <es-pie-chart *ngIf=\"NodeDetails.loadchart\" [Legend]=\"true\" [Data]=\"NodeDetails.loadchart\" name=\"nodeDetailLoadChart\"></es-pie-chart>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"closeDialog()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
758
|
-
}], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { NodeDetails: [{
|
|
759
|
-
type: Input
|
|
760
|
-
}], onClose: [{
|
|
761
|
-
type: Output
|
|
762
|
-
}] } });
|
|
763
|
-
|
|
764
|
-
class AdmProfilerComponent {
|
|
765
|
-
constructor(lc, localStorage, location, intercom, route, adms, mod) {
|
|
766
|
-
this.lc = lc;
|
|
767
|
-
this.localStorage = localStorage;
|
|
768
|
-
this.location = location;
|
|
769
|
-
this.intercom = intercom;
|
|
770
|
-
this.route = route;
|
|
771
|
-
this.adms = adms;
|
|
772
|
-
this.mod = mod;
|
|
773
|
-
this.searchView = new ProfilerDataNodesView();
|
|
774
|
-
this.be = route.snapshot.params["be"] || "";
|
|
775
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
776
|
-
}
|
|
777
|
-
ngOnInit() {
|
|
778
|
-
this.storageSub = this.route.queryParams.subscribe(params => {
|
|
779
|
-
this.Init(params["ignoreStorage"]);
|
|
780
|
-
});
|
|
781
|
-
}
|
|
782
|
-
Init(ignoreStore) {
|
|
783
|
-
this.doInit(ignoreStore);
|
|
784
|
-
}
|
|
785
|
-
doInit(ignoreStorage) {
|
|
786
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
787
|
-
let item = yield this.localStorage.getItem("HotSearchProfilato").toPromise();
|
|
788
|
-
if (!ignoreStorage && item) {
|
|
789
|
-
this.init(item);
|
|
790
|
-
}
|
|
791
|
-
else {
|
|
792
|
-
this.init(null);
|
|
793
|
-
this.location.replaceState(`/pages/${this.mod}/profiler`);
|
|
794
|
-
this.route.snapshot.queryParams = [];
|
|
795
|
-
yield this.localStorage.removeItem("HotSearchProfilato").toPromise();
|
|
796
|
-
}
|
|
797
|
-
});
|
|
798
|
-
}
|
|
799
|
-
init(HotPotato) {
|
|
800
|
-
if (HotPotato) {
|
|
801
|
-
this.searchView = HotPotato;
|
|
802
|
-
this.POSTGetItems(this.searchView);
|
|
803
|
-
}
|
|
804
|
-
else {
|
|
805
|
-
this.searchView = new ProfilerDataNodesView();
|
|
806
|
-
this.sendSearch();
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
ngOnDestroy() {
|
|
810
|
-
if (this.storageSub)
|
|
811
|
-
this.storageSub.unsubscribe();
|
|
812
|
-
}
|
|
813
|
-
sendSearch(resetPage = true) {
|
|
814
|
-
this.searchView.searchinprogress = true;
|
|
815
|
-
if (resetPage)
|
|
816
|
-
this.searchView.page = 1;
|
|
817
|
-
this.POSTGetItems(this.searchView);
|
|
818
|
-
}
|
|
819
|
-
downloadWorkloadReport() {
|
|
820
|
-
this.adms.downloadWorkloadReport(this.be, this.searchView.filterfrom, this.searchView.filterto);
|
|
821
|
-
}
|
|
822
|
-
POSTGetItems(data) {
|
|
823
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
824
|
-
this.searchView = yield this.adms.getProfilerDataNodes(this.be, data);
|
|
825
|
-
this.searchView.searchinprogress = false;
|
|
826
|
-
this.localStorage.setItem("HotSearchProfilato", this.searchView).subscribe();
|
|
827
|
-
});
|
|
828
|
-
}
|
|
829
|
-
prepareExport(dataCallBack) {
|
|
830
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
831
|
-
var view = JSON.parse(JSON.stringify(this.searchView));
|
|
832
|
-
view.page = 1;
|
|
833
|
-
view.itemsperpageoverride = 9999999;
|
|
834
|
-
let res = yield this.adms.getProfilerDataNodes(this.be, view);
|
|
835
|
-
dataCallBack(res.items, ProfilerDataNode);
|
|
836
|
-
});
|
|
837
|
-
}
|
|
838
|
-
loadNodeDetails(nodeId) {
|
|
839
|
-
this.NodeDetails = null;
|
|
840
|
-
requestAnimationFrame(() => __awaiter(this, void 0, void 0, function* () {
|
|
841
|
-
this.NodeDetails = yield this.adms.getNodeStats(this.be, nodeId);
|
|
842
|
-
}));
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
AdmProfilerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmProfilerComponent, deps: [{ token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i5.Location }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
846
|
-
AdmProfilerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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\">{{'Profiler del Server' | 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]=\"'Da' | 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]=\"'A' | 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 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></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>{{'Carico i Dati' | 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'\">{{'Descrizione' | localize: lc}}</span>\r\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\r\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\r\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\r\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\r\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\r\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\r\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\r\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\r\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\r\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\r\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\r\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\r\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\r\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\r\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\r\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\r\n\r\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></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 <span *td=\"'17' let item\">{{item.eventtypename}}</span>\r\n <span *td=\"'18' let item\">{{item.waitclassname}}</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>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.ModalDirective, selector: "[bsModal]", inputs: ["config", "closeInterceptor"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["bs-modal"] }, { kind: "directive", type: i9.EsTdDirective, selector: "[td]", inputs: ["tdVisible", "td", "tdForProperty", "tdIf", "tdClass", "tdPropertyAccessor", "tdAlignment", "tdFormat", "tdIconClass", "tdConditionField", "tdConditionValue", "tdTitle", "tdContent"] }, { kind: "directive", type: i9.EsThDirective, selector: "[th]", inputs: ["th", "thPinned", "thPinnable", "thPinnedWidth", "thVisible", "thFixed", "thParent", "thOrder", "thOrderable", "thWrap", "thResizable", "thClass", "thShrink", "thGroupClass", "thIf", "thEmpty", "thGroup", "thAggregation", "thProperty", "thType", "thSource", "thMulti", "thStaticContent", "thBackgroundColor", "thAlignment", "thFormat", "thEditorName", "thEditorOptions", "thRendererName", "thRoutePath", "thRouteParameterProperties"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { kind: "component", type: NodeDetailComponent, selector: "node-detail", inputs: ["NodeDetails"], outputs: ["onClose"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }] });
|
|
847
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmProfilerComponent, decorators: [{
|
|
848
|
-
type: Component,
|
|
849
|
-
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\">{{'Profiler del Server' | 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]=\"'Da' | 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]=\"'A' | 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 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n <button class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"downloadWorkloadReport()\" type=\"submit\"><i class=\"fa fa-download\"></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>{{'Carico i Dati' | 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'\">{{'Descrizione' | localize: lc}}</span>\r\n <span *th=\"'3'\">{{'Chiamate' | localize: lc}}</span>\r\n <span *th=\"'4'\">{{'Tempo' | localize: lc}}</span>\r\n <span *th=\"'5'\">{{'Tempo Max' | localize: lc}}</span>\r\n <span *th=\"'6'\">{{'Tempo Min' | localize: lc}}</span>\r\n <span *th=\"'7'\">{{'Tempo Medio' | localize: lc}}</span>\r\n <span *th=\"'8'\">{{'Tempo Specifico' | localize: lc}}</span>\r\n <span *th=\"'9'\">{{'Percentuale' | localize: lc}}</span>\r\n <span *th=\"'10'\">{{'Chiamate Periodo' | localize: lc}}</span>\r\n <span *th=\"'11'\">{{'Tempo Periodo' | localize: lc}}</span>\r\n <span *th=\"'12'\">{{'Tempo Max Periodo' | localize: lc}}</span>\r\n <span *th=\"'13'\">{{'Tempo Min Periodo' | localize: lc}}</span>\r\n <span *th=\"'14'\">{{'Tempo Medio Periodo' | localize: lc}}</span>\r\n <span *th=\"'15'\">{{'Tempo Specifico Periodo' | localize: lc}}</span>\r\n <span *th=\"'16'\">{{'Percentuale Periodo' | localize: lc}}</span>\r\n <span *th=\"'17'\">{{'Nome Tipologia Evento' | localize: lc}}</span>\r\n <span *th=\"'18'\">{{'Nome Classe Attesa' | localize: lc}}</span>\r\n\r\n <span *td=\"'1'; let item\"><span class=\"app-link app-inline\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\">{{item.id}}</span></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 <span *td=\"'17' let item\">{{item.eventtypename}}</span>\r\n <span *td=\"'18' let item\">{{item.waitclassname}}</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>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>" }]
|
|
850
|
-
}], ctorParameters: function () {
|
|
851
|
-
return [{ type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i5.Location }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
852
|
-
type: Inject,
|
|
853
|
-
args: [ADM_MODULE_PATH]
|
|
854
|
-
}] }];
|
|
855
|
-
} });
|
|
856
|
-
|
|
857
|
-
class TopActivitiesDataView extends AppSearch {
|
|
858
|
-
constructor() { super(); }
|
|
859
|
-
}
|
|
860
|
-
|
|
861
|
-
class AdmTopActivitieLoc extends LocalizationService {
|
|
862
|
-
constructor(injector) {
|
|
863
|
-
super(injector);
|
|
864
|
-
super.set("it->en", "Sessioni Attive", ["Active Sessions"]);
|
|
865
|
-
super.set("it->en", "Prime Istruzioni", ["Top Nodes"]);
|
|
866
|
-
super.set("it->en", "Prime Sessioni", ["Top Sessions"]);
|
|
867
|
-
super.set("it->en", "Carico i Dati", ["Loading Data"]);
|
|
868
|
-
super.set("it->en", "Attività Principali", ["Top Activities"]);
|
|
869
|
-
super.set("it->en", "Descrizione Nodo", ["Node Description"]);
|
|
870
|
-
super.set("it->en", "Nodo", ["Node"]);
|
|
871
|
-
super.set("it->en", "Attività", ["Activity"]);
|
|
872
|
-
super.set("it->en", "Limite", ["Limit"]);
|
|
873
|
-
super.set("it->en", "Tipo Nodo", ["Node Type"]);
|
|
874
|
-
super.set("it->en", "Utente", ["User"]);
|
|
875
|
-
super.set("it->en", "Tenant", ["Tenant"]);
|
|
876
|
-
super.set("it->en", "Processo", ["Process"]);
|
|
877
|
-
super.set("it->en", "Aggiorna ogni", ["Update every"]);
|
|
878
|
-
super.set("it->en", "secondo/i", ["second/s"]);
|
|
879
|
-
super.set("it->en", "Thread Massimi", ["Maximum Threads"]);
|
|
880
|
-
super.set("it->en", "CPU", ["CPUs"]);
|
|
881
|
-
super.set("it->en", "Classe Attesa", ["Wait Class Name"]);
|
|
882
|
-
super.set("it->en", "Seriale", ["Serial"]);
|
|
883
|
-
super.set("it->en", "Stato", ["Status"]);
|
|
884
|
-
super.set("it->en", "Tipo", ["Type"]);
|
|
885
|
-
super.set("it->en", "Utente", ["User"]);
|
|
886
|
-
}
|
|
887
|
-
}
|
|
888
|
-
AdmTopActivitieLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmTopActivitieLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
889
|
-
AdmTopActivitieLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmTopActivitieLoc });
|
|
890
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmTopActivitieLoc, decorators: [{
|
|
891
|
-
type: Injectable
|
|
892
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
893
|
-
|
|
894
|
-
class AdmTopActivitiesComponent {
|
|
895
|
-
constructor(dateExts, lc, localStorage, location, intercom, route, adms, mod) {
|
|
896
|
-
this.dateExts = dateExts;
|
|
897
|
-
this.lc = lc;
|
|
898
|
-
this.localStorage = localStorage;
|
|
899
|
-
this.location = location;
|
|
900
|
-
this.intercom = intercom;
|
|
901
|
-
this.route = route;
|
|
902
|
-
this.adms = adms;
|
|
903
|
-
this.mod = mod;
|
|
904
|
-
this.searchView = new TopActivitiesDataView();
|
|
905
|
-
this.autoUpdate = false;
|
|
906
|
-
this.seconds = "5";
|
|
907
|
-
this.rtWindow = null;
|
|
908
|
-
this.destroyed$ = new ReplaySubject(1);
|
|
909
|
-
this.seriesPropertiesMapping = {};
|
|
910
|
-
this.propertiesSeriesMapping = {
|
|
911
|
-
["cputime"]: "CPU",
|
|
912
|
-
["waittime"]: "Wait",
|
|
913
|
-
["scripttime"]: "Scripting",
|
|
914
|
-
["dbtime"]: "DB",
|
|
915
|
-
["nettime"]: "Network",
|
|
916
|
-
["throttletime"]: "Throttling",
|
|
917
|
-
["sleeptime"]: "Sleep",
|
|
918
|
-
["iotime"]: "IO"
|
|
919
|
-
};
|
|
920
|
-
this.seriesPropertiesMapping2 = {};
|
|
921
|
-
this.be = route.snapshot.params["be"] || "";
|
|
922
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
923
|
-
}
|
|
924
|
-
ngOnInit() {
|
|
925
|
-
// Ogni minuto calcolo qual è la finestra del realTime
|
|
926
|
-
interval(60 * 1000).pipe(takeUntil(this.destroyed$)).subscribe(_ => {
|
|
927
|
-
this.updateRealTimeWindow();
|
|
928
|
-
});
|
|
929
|
-
this.storageSub = this.route.queryParams.subscribe(params => {
|
|
930
|
-
this.Init(params["ignoreStorage"]);
|
|
931
|
-
});
|
|
932
|
-
}
|
|
933
|
-
updateRealTimeWindow() {
|
|
934
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
935
|
-
let data = new TopActivitiesDataView();
|
|
936
|
-
data.filterbe = this.be;
|
|
937
|
-
data = yield this.adms.getTopActivities(this.be, data);
|
|
938
|
-
let reference = data.items[0];
|
|
939
|
-
for (let i = 0; i < reference.actsessions.length; i++) {
|
|
940
|
-
let itemref = reference.actsessions[i];
|
|
941
|
-
let theD = this.dateExts.getDateConvertion(itemref.sampletime);
|
|
942
|
-
if (!this.rtWindow)
|
|
943
|
-
this.rtWindow = { from: theD, to: theD };
|
|
944
|
-
else {
|
|
945
|
-
if (theD.isBefore(this.rtWindow.from))
|
|
946
|
-
this.rtWindow.from = theD;
|
|
947
|
-
if (theD.isAfter(this.rtWindow.to))
|
|
948
|
-
this.rtWindow.to = theD;
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
});
|
|
952
|
-
}
|
|
953
|
-
Init(ignoreStore) {
|
|
954
|
-
this.doInit(ignoreStore);
|
|
955
|
-
}
|
|
956
|
-
doInit(ignoreStorage) {
|
|
957
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
958
|
-
let item = yield this.localStorage.getItem("HotSearchTopAct").toPromise();
|
|
959
|
-
if (!ignoreStorage && item) {
|
|
960
|
-
this.init(item);
|
|
961
|
-
}
|
|
962
|
-
else {
|
|
963
|
-
this.init(null);
|
|
964
|
-
this.location.replaceState(`/pages/${this.mod}/topact`);
|
|
965
|
-
this.route.snapshot.queryParams = [];
|
|
966
|
-
yield this.localStorage.removeItem("HotSearchTopAct").toPromise();
|
|
967
|
-
}
|
|
968
|
-
});
|
|
969
|
-
}
|
|
970
|
-
init(HotPotato) {
|
|
971
|
-
if (HotPotato) {
|
|
972
|
-
this.searchView = HotPotato;
|
|
973
|
-
this.POSTGetItems(this.searchView, false);
|
|
974
|
-
}
|
|
975
|
-
else {
|
|
976
|
-
this.searchView = new TopActivitiesDataView();
|
|
977
|
-
this.sendSearch();
|
|
978
|
-
}
|
|
979
|
-
}
|
|
980
|
-
ngOnDestroy() {
|
|
981
|
-
this.destroyed$.next(true);
|
|
982
|
-
this.destroyed$.complete();
|
|
983
|
-
if (this.storageSub)
|
|
984
|
-
this.storageSub.unsubscribe();
|
|
985
|
-
}
|
|
986
|
-
sendSearch(resetPage = true, update = false, searchViewOverride = null) {
|
|
987
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
988
|
-
let sv = searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView;
|
|
989
|
-
if ((sv.filterfrom || sv.filterto) && !this.rtWindow)
|
|
990
|
-
yield this.updateRealTimeWindow();
|
|
991
|
-
let dateRequestOnRealtimeWindow = sv.filterfrom && this.dateExts.getDateConvertion(sv.filterfrom).isAfter(this.rtWindow.from) &&
|
|
992
|
-
sv.filterto && this.dateExts.getDateConvertion(sv.filterto).isBefore(this.rtWindow.to);
|
|
993
|
-
sv.filterrealtime = dateRequestOnRealtimeWindow;
|
|
994
|
-
sv.searchinprogress = true;
|
|
995
|
-
this.POSTGetItems(sv, update);
|
|
996
|
-
});
|
|
997
|
-
}
|
|
998
|
-
POSTGetItems(data, update) {
|
|
999
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1000
|
-
data.filterbe = this.be;
|
|
1001
|
-
let res = yield this.adms.getTopActivities(this.be, data);
|
|
1002
|
-
//Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
|
|
1003
|
-
if (!update) {
|
|
1004
|
-
this.searchView = res;
|
|
1005
|
-
this.localStorage.setItem("HotSearchTopAct", this.searchView).subscribe();
|
|
1006
|
-
}
|
|
1007
|
-
// DirectorInfos anche se per qualche motivo crasha di brutto è comunque non obbligatorio, evito di non caricare la pagina solo perché lui scoppia
|
|
1008
|
-
let dirinfos = yield this.adms.getInfos(this.be);
|
|
1009
|
-
this.searchView.searchinprogress = false;
|
|
1010
|
-
this.reviewBindings(update, res, dirinfos);
|
|
1011
|
-
});
|
|
1012
|
-
}
|
|
1013
|
-
loadNodeDetails(nodeId) {
|
|
1014
|
-
this.NodeDetails = null;
|
|
1015
|
-
requestAnimationFrame(() => __awaiter(this, void 0, void 0, function* () {
|
|
1016
|
-
this.NodeDetails = yield this.adms.getNodeStats(this.be, nodeId);
|
|
1017
|
-
}));
|
|
1018
|
-
}
|
|
1019
|
-
reviewBindings(update, searchViewOverride, dirInfos) {
|
|
1020
|
-
let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
|
|
1021
|
-
this.TopNodes = reference.topnodes;
|
|
1022
|
-
this.TopSessions = reference.topsessions;
|
|
1023
|
-
this.DirInfos = dirInfos;
|
|
1024
|
-
if (!reference.actsessions || reference.actsessions.length == 0) {
|
|
1025
|
-
this.TopActiveSessions = null;
|
|
1026
|
-
return;
|
|
1027
|
-
}
|
|
1028
|
-
let series = [];
|
|
1029
|
-
let props = Object.keys(reference.actsessions[0]);
|
|
1030
|
-
for (let i = 0; i < props.length; i++) {
|
|
1031
|
-
if (props[i] != 'sampletime') {
|
|
1032
|
-
let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
|
|
1033
|
-
series.push(s);
|
|
1034
|
-
this.seriesPropertiesMapping[props[i]] = s;
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
for (let i = 0; i < reference.actsessions.length; i++) {
|
|
1038
|
-
let itemref = reference.actsessions[i];
|
|
1039
|
-
let theD = new Date(itemref.sampletime);
|
|
1040
|
-
for (let i = 0; i < props.length; i++)
|
|
1041
|
-
if (props[i] != 'sampletime' && (!update || this.dateExts.getDateConvertion(theD).isAfter(this.LastDataPoint)))
|
|
1042
|
-
this.seriesPropertiesMapping[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
|
|
1043
|
-
}
|
|
1044
|
-
if (update && this.ChartInstance) {
|
|
1045
|
-
let data = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Thread Massimi")));
|
|
1046
|
-
if (series.some(t => t.values.length > 0)) {
|
|
1047
|
-
this.ChartInstance.addData(data);
|
|
1048
|
-
this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
|
|
1049
|
-
}
|
|
1050
|
-
}
|
|
1051
|
-
else {
|
|
1052
|
-
this.TopActiveSessions = new LineChartData(series, new Limit(dirInfos === null || dirInfos === void 0 ? void 0 : dirInfos.threads, this.lc.loc("Thread Massimi")));
|
|
1053
|
-
this.LastDataPoint = series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
|
|
1054
|
-
}
|
|
1055
|
-
}
|
|
1056
|
-
autoUpdateChanged() {
|
|
1057
|
-
if (!/^[1-9]\d*$/.test(this.seconds))
|
|
1058
|
-
this.seconds = '10';
|
|
1059
|
-
const secondsInMs = parseInt(this.seconds, null) * 1000;
|
|
1060
|
-
if (this.autoUpdate) {
|
|
1061
|
-
this.sendSearch(false, true);
|
|
1062
|
-
this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
|
|
1063
|
-
}
|
|
1064
|
-
else
|
|
1065
|
-
clearInterval(this.updateTimer);
|
|
1066
|
-
}
|
|
1067
|
-
dataSelectionChanged(event) {
|
|
1068
|
-
this.from = event.initial ? (this.searchView.filterfrom ? this.dateExts.getDateConvertion(this.searchView.filterfrom).toDate() : "") : event.from;
|
|
1069
|
-
this.to = event.initial ? (this.searchView.filterto ? this.dateExts.getDateConvertion(this.searchView.filterto).toDate() : "") : event.to;
|
|
1070
|
-
var pseudoSearchView = JSON.parse(JSON.stringify(this.searchView));
|
|
1071
|
-
pseudoSearchView.filterfrom = this.from ? dayjs(this.from).format(this.lc.token("getFullDateDisplayFormat")) : "";
|
|
1072
|
-
pseudoSearchView.filterto = this.to ? dayjs(this.to).format(this.lc.token("getFullDateDisplayFormat")) : "";
|
|
1073
|
-
this.sendSearch(true, true, pseudoSearchView);
|
|
1074
|
-
}
|
|
1075
|
-
onChartLoaded(chart, overwriteInstance = true) {
|
|
1076
|
-
if (overwriteInstance)
|
|
1077
|
-
this.ChartInstance = chart;
|
|
1078
|
-
chart.Chart.events.on("ready", () => {
|
|
1079
|
-
chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
|
|
1080
|
-
chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
|
|
1081
|
-
setTimeout(() => {
|
|
1082
|
-
chart.Chart.xAxes.each(x => x.zoom({ start: 0, end: 1 }, true, true));
|
|
1083
|
-
chart.Chart.yAxes.each(y => y.zoom({ start: 0, end: 1 }, true, true));
|
|
1084
|
-
// 500 millisecondi è più o meno il tempo di prima animazione del grafico. Finito questo si resetta lo zoom
|
|
1085
|
-
}, 500);
|
|
1086
|
-
});
|
|
1087
|
-
}
|
|
1088
|
-
loadSessionDetails(sessionId, serialNo) {
|
|
1089
|
-
this.SessionDetails = null;
|
|
1090
|
-
requestAnimationFrame(() => __awaiter(this, void 0, void 0, function* () {
|
|
1091
|
-
this.SessionDetails = yield this.adms.getSessionStats(this.be, sessionId === null || sessionId === void 0 ? void 0 : sessionId.toString(), serialNo === null || serialNo === void 0 ? void 0 : serialNo.toString());
|
|
1092
|
-
this.threadSelectionChanged(null);
|
|
1093
|
-
}));
|
|
1094
|
-
}
|
|
1095
|
-
threadSelectionChanged(selection) {
|
|
1096
|
-
this.SelectedTopNodes = null;
|
|
1097
|
-
this.SelectedSessions = null;
|
|
1098
|
-
requestAnimationFrame(() => {
|
|
1099
|
-
let sessDet = ((selection === null || selection === void 0 ? void 0 : selection.count) || 0) == 0 ? this.SessionDetails : selection.items[0];
|
|
1100
|
-
this.SelectedTopNodes = sessDet.nodes;
|
|
1101
|
-
let series = [];
|
|
1102
|
-
let props = Object.keys(sessDet.sessions[0]);
|
|
1103
|
-
for (let i = 0; i < props.length; i++) {
|
|
1104
|
-
if (props[i] != 'sampletime') {
|
|
1105
|
-
let s = new LineSerie(this.propertiesSeriesMapping[props[i]], [], null, null, "sessions");
|
|
1106
|
-
series.push(s);
|
|
1107
|
-
this.seriesPropertiesMapping2[props[i]] = s;
|
|
1108
|
-
}
|
|
1109
|
-
}
|
|
1110
|
-
for (let i = 0; i < sessDet.sessions.length; i++) {
|
|
1111
|
-
let itemref = sessDet.sessions[i];
|
|
1112
|
-
let theD = new Date(itemref.sampletime);
|
|
1113
|
-
for (let i = 0; i < props.length; i++)
|
|
1114
|
-
if (props[i] != 'sampletime')
|
|
1115
|
-
this.seriesPropertiesMapping2[props[i]].values.push(new DateValue(theD, itemref[props[i]]));
|
|
1116
|
-
}
|
|
1117
|
-
this.SelectedSessions = new LineChartData(series);
|
|
1118
|
-
});
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
AdmTopActivitiesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmTopActivitiesComponent, deps: [{ token: i1$1.DateService }, { token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i5.Location }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
1122
|
-
AdmTopActivitiesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AdmTopActivitiesComponent, selector: "topact_search", providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }], 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 {{'Attivit\u00E0 Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </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]=\"'Da' | 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]=\"'A' | 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 {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | 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\" name=\"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>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\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 [Stacked]=\"true\"\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>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attivit\u00E0' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></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 <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | 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>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attivit\u00E0' | 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 class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadSessionDetails(session.sid, session.serial); dlgSessionDetails.show();\">{{session.sid}}</span></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>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attivit\u00E0' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></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 == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attivit\u00E0</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\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=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.ModalDirective, selector: "[bsModal]", inputs: ["config", "closeInterceptor"], outputs: ["onShow", "onShown", "onHide", "onHidden"], exportAs: ["bs-modal"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { kind: "component", type: i3$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill", "Stacked"] }, { kind: "component", type: NodeDetailComponent, selector: "node-detail", inputs: ["NodeDetails"], outputs: ["onClose"] }, { kind: "pipe", type: i5.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }] });
|
|
1123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmTopActivitiesComponent, decorators: [{
|
|
1124
|
-
type: Component,
|
|
1125
|
-
args: [{ selector: "topact_search", providers: [{ provide: LocalizationService, useClass: AdmTopActivitieLoc }], 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 {{'Attivit\u00E0 Principali' | localize: lc}}\r\n <span *ngIf=\"DirInfos\"> - \r\n {{'' + DirInfos.cpus + ' ' + ('CPU' | localize: lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}} \r\n Load average: {{ DirInfos.lavg1 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg5 | number : '1.1-2' : 'it'}} {{ DirInfos.lavg15 | number : '1.1-2' : 'it'}}\r\n </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]=\"'Da' | 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]=\"'A' | 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 {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | 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\" name=\"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>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\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 [Stacked]=\"true\"\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>{{'Prime Istruzioni' | localize: lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attivit\u00E0' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></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 <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Prime Sessioni' | 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>{{'Utente' | localize: lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Processo' | localize: lc}}</th>\r\n <th>{{'Attivit\u00E0' | 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 class=\"app-col-min\"><span class=\"app-link\" (click)=\"loadSessionDetails(session.sid, session.serial); dlgSessionDetails.show();\">{{session.sid}}</span></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>\r\n\r\n<div bsModal #dlgNodeDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <node-detail *ngIf=\"NodeDetails\" [NodeDetails]=\"NodeDetails\" (onClose)=\"dlgNodeDetails.hide()\"></node-detail>\r\n</div>\r\n\r\n<div bsModal #dlgSessionDetails=\"bs-modal\" class=\"modal fade\" role=\"dialog\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-feminist\" emaDraggable>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title pull-left\">{{'Dettaglio Sessione' | localize: lc}}<span *ngIf=\"SessionDetails\"> {{SessionDetails.sid}}</span></h4>\r\n <button type=\"button\" class=\"close pull-right\" (click)=\"dlgSessionDetails.hide()\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button>\r\n </div>\r\n <div class=\"modal-body\" *ngIf=\"SessionDetails\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\"><strong>{{'Seriale' | localize: lc}}</strong>: {{SessionDetails.serial}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Stato' | localize: lc}}</strong>: {{SessionDetails.status}} </div>\r\n <div class=\"col-md-6\"><strong>{{'Tipo' | localize: lc}}</strong>: {{SessionDetails.type}}</div>\r\n <div class=\"col-md-6\"><strong>{{'Utente' | localize: lc}}</strong>: {{SessionDetails.user}} <span *ngIf=\"SessionDetails.tenant\">({{SessionDetails.tenant}})</span></div>\r\n </div>\r\n\r\n <div style=\"display: flex; width: 100%; margin-top: 15px;\">\r\n <div style=\"flex-grow: 0;display: flex;flex-direction: column\">\r\n <h5>Prime Istruzioni</h5>\r\n <div *ngIf=\"SelectedTopNodes\">\r\n <es-table [(ngModel)]=\"SelectedTopNodes\" [ArraymodeItemsPerPage]=\"10\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Nodo' | localize: lc}}</th>\r\n <th>{{'Descrizione Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min\">{{'Attivit\u00E0' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Tipo Nodo' | localize: lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Classe Attesa' | localize: lc}}</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><span class=\"app-link\"(click)=\"loadNodeDetails(node.profnodeid); dlgNodeDetails.show();\">{{node.profnodeid}}</span></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 == \"NaN\" ? null : node.activity) | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n <td>{{node.waitclassname}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n <div style=\"width: 15px;\"></div>\r\n <div style=\"flex-grow: 2;display: flex;flex-direction: column\">\r\n <h5>Attivit\u00E0</h5>\r\n <div *ngIf=\"SelectedSessions\" style=\"width: 100%; height: 290px\">\r\n <es-line-chart [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [Stacked]=\"true\"\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=\"session_details\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (chartLoaded)=\"onChartLoaded($event, true)\">\r\n </es-line-chart>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"display: flex; width: 100%;\">\r\n <div style=\"flex-grow: 1;\">\r\n <h5>Statistiche Thread</h5>\r\n <div>\r\n <es-table [(ngModel)]=\"SessionDetails.threads\" [ArraymodeItemsPerPage]=\"10\" [Selection]=\"true\" [SingleSelection]=\"true\" (onSelectionChanged)=\"threadSelectionChanged($event)\">\r\n <ng-template #header>\r\n <th>Thread</th>\r\n <th>Stato</th>\r\n <th>Tipo</th>\r\n <th>API</th>\r\n <th>Attesa corrente</th>\r\n <th>Nodo di attesa</th>\r\n <th>Attesa su</th>\r\n <th>Classe</th>\r\n <th>Par. 1</th>\r\n <th>Par. 2</th>\r\n <th>Par. 3</th>\r\n <th>Tempo Attesa</th>\r\n </ng-template>\r\n \r\n <ng-template #body let-thread>\r\n <td>{{thread.tid}}</td>\r\n <td>{{thread.status}}</td>\r\n <td>{{thread.type}}</td>\r\n <td>{{thread.api}}</td>\r\n <td>{{thread.wait}}</td>\r\n <td>{{thread.waitnode}}</td>\r\n <td>{{thread.waiteventtype}}</td>\r\n <td>{{thread.waitclassname}}</td>\r\n <td>{{thread.waitpar1}}</td>\r\n <td>{{thread.waitpar2}}</td>\r\n <td>{{thread.waitpar3}}</td>\r\n <td>{{(thread.waittime == \"NaN\" ? null : thread.waittime) | number : '1.1-2' : 'it'}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"dlgSessionDetails.hide()\">{{'Chiudi' | localize: lc}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1126
|
-
}], ctorParameters: function () {
|
|
1127
|
-
return [{ type: i1$1.DateService }, { type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i5.Location }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
1128
|
-
type: Inject,
|
|
1129
|
-
args: [ADM_MODULE_PATH]
|
|
1130
|
-
}] }];
|
|
1131
|
-
} });
|
|
1132
|
-
|
|
1133
|
-
class LocksView extends AppSearch {
|
|
1134
|
-
constructor() { super(); }
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
|
-
class AdmEnqLoc extends LocalizationService {
|
|
1138
|
-
constructor(injector) {
|
|
1139
|
-
super(injector);
|
|
1140
|
-
super.set("it->en", "Ricerca Lock Applicativi", ["Search Application Locks"]);
|
|
1141
|
-
super.set("it->en", "Nome", ["Name"]);
|
|
1142
|
-
super.set("it->en", "Carico i Lock Applicativi", ["Loading Application Locks"]);
|
|
1143
|
-
super.set("it->en", "Globale", ["Global"]);
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
|
-
AdmEnqLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmEnqLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1147
|
-
AdmEnqLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmEnqLoc });
|
|
1148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmEnqLoc, decorators: [{
|
|
1149
|
-
type: Injectable
|
|
1150
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1151
|
-
|
|
1152
|
-
class AdmEnqComponent {
|
|
1153
|
-
constructor(lc, localStorage, expExts, intercom, route, location, adms, mod) {
|
|
1154
|
-
this.lc = lc;
|
|
1155
|
-
this.localStorage = localStorage;
|
|
1156
|
-
this.expExts = expExts;
|
|
1157
|
-
this.intercom = intercom;
|
|
1158
|
-
this.route = route;
|
|
1159
|
-
this.location = location;
|
|
1160
|
-
this.adms = adms;
|
|
1161
|
-
this.mod = mod;
|
|
1162
|
-
this.locksView = new LocksView();
|
|
1163
|
-
this.be = route.snapshot.params["be"] || "";
|
|
1164
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
1165
|
-
}
|
|
1166
|
-
ngOnInit() {
|
|
1167
|
-
this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
|
|
1168
|
-
}
|
|
1169
|
-
ngOnDestroy() {
|
|
1170
|
-
if (this.storageSub)
|
|
1171
|
-
this.storageSub.unsubscribe();
|
|
1172
|
-
}
|
|
1173
|
-
Init(ignoreStorage) {
|
|
1174
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1175
|
-
let item = yield this.localStorage.getItem("HotEnqueue").toPromise();
|
|
1176
|
-
if (!ignoreStorage && item) {
|
|
1177
|
-
this.init(item);
|
|
1178
|
-
}
|
|
1179
|
-
else {
|
|
1180
|
-
this.init(null);
|
|
1181
|
-
this.location.replaceState(`/pages/${this.mod}/serverenqueues`);
|
|
1182
|
-
this.route.snapshot.queryParams = [];
|
|
1183
|
-
yield this.localStorage.removeItem("HotEnqueue").toPromise();
|
|
1184
|
-
}
|
|
1185
|
-
});
|
|
1186
|
-
}
|
|
1187
|
-
init(HotPotato) {
|
|
1188
|
-
if (HotPotato) {
|
|
1189
|
-
this.locksView = HotPotato;
|
|
1190
|
-
this.POSTGetProcesses(this.locksView);
|
|
1191
|
-
}
|
|
1192
|
-
else {
|
|
1193
|
-
this.locksView = new LocksView();
|
|
1194
|
-
this.sendSearch();
|
|
1195
|
-
}
|
|
1196
|
-
}
|
|
1197
|
-
sendSearch(resetPage = true) {
|
|
1198
|
-
if (resetPage)
|
|
1199
|
-
this.locksView.page = 1;
|
|
1200
|
-
this.POSTGetProcesses(this.locksView);
|
|
1201
|
-
}
|
|
1202
|
-
POSTGetProcesses(data) {
|
|
1203
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1204
|
-
this.locksView = yield this.adms.getServerLocks(this.be, data);
|
|
1205
|
-
this.locksView.searchinprogress = false;
|
|
1206
|
-
this.localStorage.setItem("HotEnqueue", this.locksView).subscribe();
|
|
1207
|
-
});
|
|
1208
|
-
}
|
|
1209
|
-
prepareExport(callback) {
|
|
1210
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1211
|
-
var view = JSON.parse(JSON.stringify(this.locksView));
|
|
1212
|
-
view.page = 1;
|
|
1213
|
-
view.itemsperpageoverride = 9999999;
|
|
1214
|
-
let tmp = yield this.adms.getServerLocks(this.be, view);
|
|
1215
|
-
callback(tmp.items, GenericItem);
|
|
1216
|
-
});
|
|
1217
|
-
}
|
|
1218
|
-
}
|
|
1219
|
-
AdmEnqComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmEnqComponent, deps: [{ token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i1$1.ExportService }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: i5.Location }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
1220
|
-
AdmEnqComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", 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\">{{'Ricerca Lock Applicativi' | 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]=\"'Nome' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | 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>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\r\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i9$1.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: AdmEnqLoc }] });
|
|
1221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmEnqComponent, decorators: [{
|
|
1222
|
-
type: Component,
|
|
1223
|
-
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\">{{'Ricerca Lock Applicativi' | 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]=\"'Nome' | localize: lc\"></form-input>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\" style=\"display: flex; height: 38px;\">\r\n <form-checkbox [FormLayout]=\"false\" [SliderMode]=\"true\" [Validation]=\"false\" [(ngModel)]=\"locksView.filterglobal\" name=\"filterglobal\"></form-checkbox> \r\n <span class=\"app-pointer app-padding-top-5 app-padding-left-5\" (click)=\"locksView.filterglobal = !locksView.filterglobal\">{{'Globale' | 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>{{'Carico i Lock Applicativi' | localize: lc}}...</em></p>\r\n <div *ngIf=\"locksView\">\r\n <es-table [(ngModel)]=\"locksView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"\r\n [ExportFileName]=\"'Application Locks.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1224
|
-
}], ctorParameters: function () {
|
|
1225
|
-
return [{ type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i1$1.ExportService }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: i5.Location }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
1226
|
-
type: Inject,
|
|
1227
|
-
args: [ADM_MODULE_PATH]
|
|
1228
|
-
}] }];
|
|
1229
|
-
} });
|
|
1230
|
-
|
|
1231
|
-
class MetricsView extends AppSearch {
|
|
1232
|
-
constructor() { super(); }
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
class AdmMetricsLoc extends LocalizationService {
|
|
1236
|
-
constructor(injector) {
|
|
1237
|
-
super(injector);
|
|
1238
|
-
super.set("it->en", "Metriche di Sistema", ["System Metrics"]);
|
|
1239
|
-
super.set("it->en", "Cod. Sessione", ["Session ID"]);
|
|
1240
|
-
super.set("it->en", "Seriale Sessione", ["Session Serial"]);
|
|
1241
|
-
super.set("it->en", "Filtra Metriche...", ["Filter Metrics..."]);
|
|
1242
|
-
super.set("it->en", "Carico i Dati", ["Loading Data"]);
|
|
1243
|
-
super.set("it->en", "Aggiorna ogni", ["Update every"]);
|
|
1244
|
-
super.set("it->en", "secondo/i", ["second/s"]);
|
|
1245
|
-
super.set("it->en", "Istanza Metriche", ["Metrics Instance"]);
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
|
-
AdmMetricsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmMetricsLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1249
|
-
AdmMetricsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmMetricsLoc });
|
|
1250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmMetricsLoc, decorators: [{
|
|
1251
|
-
type: Injectable
|
|
1252
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1253
|
-
|
|
1254
|
-
class AdmMetricsComponent {
|
|
1255
|
-
constructor(dateExts, lc, localStorage, location, intercom, route, adms, mod) {
|
|
1256
|
-
this.dateExts = dateExts;
|
|
1257
|
-
this.lc = lc;
|
|
1258
|
-
this.localStorage = localStorage;
|
|
1259
|
-
this.location = location;
|
|
1260
|
-
this.intercom = intercom;
|
|
1261
|
-
this.route = route;
|
|
1262
|
-
this.adms = adms;
|
|
1263
|
-
this.mod = mod;
|
|
1264
|
-
this.MetricsChartCache = {};
|
|
1265
|
-
this.searchView = new MetricsView();
|
|
1266
|
-
this.autoUpdate = false;
|
|
1267
|
-
this.seconds = "5";
|
|
1268
|
-
this.Instances = [];
|
|
1269
|
-
this.selectedInstance = "";
|
|
1270
|
-
this.instanceRequired = false;
|
|
1271
|
-
this.metricsToShow = [];
|
|
1272
|
-
this.be = route.snapshot.params["be"] || "";
|
|
1273
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
1274
|
-
}
|
|
1275
|
-
ngOnInit() {
|
|
1276
|
-
this.storageSub = this.route.queryParams.subscribe(params => {
|
|
1277
|
-
this.Init(params["ignoreStorage"]);
|
|
1278
|
-
});
|
|
1279
|
-
}
|
|
1280
|
-
Init(ignoreStore) {
|
|
1281
|
-
this.doInit(ignoreStore);
|
|
1282
|
-
}
|
|
1283
|
-
dateChanged() {
|
|
1284
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1285
|
-
// Pulizia di tutti i parametri di ricerca dipendenti dalle date
|
|
1286
|
-
this.metricsToShow = [];
|
|
1287
|
-
this.Metrics = [];
|
|
1288
|
-
this.instanceRequired = false;
|
|
1289
|
-
this.Instances = [];
|
|
1290
|
-
this.selectedInstance = "";
|
|
1291
|
-
this.searchView.filtermetrics = [];
|
|
1292
|
-
this.Metrics = yield this.adms.getMetricsList(this.be, this.searchView.filterfrom || "", this.searchView.filterto || "");
|
|
1293
|
-
});
|
|
1294
|
-
}
|
|
1295
|
-
doInit(ignoreStorage) {
|
|
1296
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1297
|
-
let item = yield this.localStorage.getItem("HotSearchMetrics").toPromise();
|
|
1298
|
-
if (!ignoreStorage && item) {
|
|
1299
|
-
this.init(item);
|
|
1300
|
-
}
|
|
1301
|
-
else {
|
|
1302
|
-
this.init(null);
|
|
1303
|
-
this.location.replaceState(`/pages/${this.mod}/metrics`);
|
|
1304
|
-
this.route.snapshot.queryParams = [];
|
|
1305
|
-
yield this.localStorage.removeItem("HotSearchMetrics").toPromise();
|
|
1306
|
-
}
|
|
1307
|
-
});
|
|
1308
|
-
}
|
|
1309
|
-
init(HotPotato) {
|
|
1310
|
-
if (HotPotato) {
|
|
1311
|
-
this.searchView = HotPotato;
|
|
1312
|
-
this.POSTGetItems(this.searchView, false);
|
|
1313
|
-
}
|
|
1314
|
-
else {
|
|
1315
|
-
this.searchView = new MetricsView();
|
|
1316
|
-
this.sendSearch();
|
|
1317
|
-
}
|
|
1318
|
-
this.dateChanged();
|
|
1319
|
-
}
|
|
1320
|
-
ngOnDestroy() {
|
|
1321
|
-
if (this.storageSub)
|
|
1322
|
-
this.storageSub.unsubscribe();
|
|
1323
|
-
}
|
|
1324
|
-
sendSearch(resetPage = true, update = false, searchViewOverride = null) {
|
|
1325
|
-
if (!update)
|
|
1326
|
-
this.MetricsChartCache = {};
|
|
1327
|
-
this.searchView.searchinprogress = true;
|
|
1328
|
-
// Questa ricerca prende i nomi distinct delle metriche quindi devo prendere tutto per forza
|
|
1329
|
-
this.searchView.itemsperpageoverride = 999999;
|
|
1330
|
-
if (resetPage)
|
|
1331
|
-
this.searchView.page = 1;
|
|
1332
|
-
this.POSTGetItems(searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
|
|
1333
|
-
}
|
|
1334
|
-
POSTGetItems(data, update) {
|
|
1335
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1336
|
-
data.filterrealtime = update ? data.filterrealtime : !(!!data.filterfrom || !!data.filterto);
|
|
1337
|
-
let res = yield this.adms.getMetrics(this.be, data);
|
|
1338
|
-
//Se sono in modalità di update non devo toccare la searchView attuale se non per il searchinprogress che viene messo dall'es table
|
|
1339
|
-
if (!update) {
|
|
1340
|
-
this.selectedInstance = "";
|
|
1341
|
-
this.metricsToShow = [];
|
|
1342
|
-
this.searchView = res;
|
|
1343
|
-
this.searchView.items.forEach(m => {
|
|
1344
|
-
if (m.instance && !this.Instances.find(t => t.id == m.instance))
|
|
1345
|
-
this.Instances.push(new KeyValue(m.instance, m.instance));
|
|
1346
|
-
});
|
|
1347
|
-
this.instanceRequired = this.Instances.length > 1;
|
|
1348
|
-
if (this.Instances.length == 1) {
|
|
1349
|
-
this.selectedInstance = this.Instances[0].id;
|
|
1350
|
-
this.instanceSelected();
|
|
1351
|
-
}
|
|
1352
|
-
else
|
|
1353
|
-
this.instanceSelected(true);
|
|
1354
|
-
this.localStorage.setItem("HotSearchMetrics", this.searchView).subscribe();
|
|
1355
|
-
}
|
|
1356
|
-
else {
|
|
1357
|
-
// Per ogni grafico di ogni metrica aggiungo tutti i valori che sono DOPO all'ultimo ts registrato per quel grafico
|
|
1358
|
-
res.items.forEach(m => {
|
|
1359
|
-
m.values.forEach(c => {
|
|
1360
|
-
let refm = this.MetricsChartCache[this.metricKey(m, c)];
|
|
1361
|
-
if (refm) {
|
|
1362
|
-
c.series.forEach(s => { s.values = s.values.filter(v => this.dateExts.getDateConvertion(v.d).isAfter(refm.lastTs)); });
|
|
1363
|
-
if (c.series.some(t => t.values.length > 0)) {
|
|
1364
|
-
refm.lastTs = c.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0];
|
|
1365
|
-
refm.chart.addData(c);
|
|
1366
|
-
}
|
|
1367
|
-
}
|
|
1368
|
-
});
|
|
1369
|
-
});
|
|
1370
|
-
}
|
|
1371
|
-
this.searchView.searchinprogress = false;
|
|
1372
|
-
});
|
|
1373
|
-
}
|
|
1374
|
-
instanceSelected(allowNull = false) {
|
|
1375
|
-
if (!this.selectedInstance && !allowNull)
|
|
1376
|
-
return;
|
|
1377
|
-
this.metricsToShow = this.searchView.items.filter(t => !this.selectedInstance || (t.instance == this.selectedInstance));
|
|
1378
|
-
}
|
|
1379
|
-
linkChartToMetric(metric, metricChart, chartComp) {
|
|
1380
|
-
this.MetricsChartCache[this.metricKey(metric, metricChart)] = { chart: chartComp, lastTs: metricChart.series.map(t => dayjs.max(t.values.map(v => this.dateExts.getDateConvertion(v.d))))[0] };
|
|
1381
|
-
}
|
|
1382
|
-
metricKey(metric, value) {
|
|
1383
|
-
return metric.name + " - " + value.xtitle + (metric.instance ? " - " + metric.instance : "");
|
|
1384
|
-
}
|
|
1385
|
-
autoUpdateChanged() {
|
|
1386
|
-
if (!/^[1-9]\d*$/.test(this.seconds))
|
|
1387
|
-
this.seconds = '10';
|
|
1388
|
-
const secondsInMs = parseInt(this.seconds, null) * 1000;
|
|
1389
|
-
if (this.autoUpdate) {
|
|
1390
|
-
this.sendSearch(false, true);
|
|
1391
|
-
this.updateTimer = setInterval(() => { this.sendSearch(false, true); }, secondsInMs);
|
|
1392
|
-
}
|
|
1393
|
-
else
|
|
1394
|
-
clearInterval(this.updateTimer);
|
|
1395
|
-
}
|
|
1396
|
-
}
|
|
1397
|
-
AdmMetricsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmMetricsComponent, deps: [{ token: i1$1.DateService }, { token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i5.Location }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
1398
|
-
AdmMetricsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AdmMetricsComponent, selector: "metrics_search", providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }], 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 {{'Metriche di Sistema' | 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]=\"'Da' | 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]=\"'A' | 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]=\"'Cod. Sessione' | 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]=\"'Seriale Sessione' | 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]=\"'Filtra Metriche...' | 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 {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | 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\" name=\"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>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | 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>", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9$1.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i9$1.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol", "OptionTemplate"] }, { kind: "component", type: i9$1.FormMultiSelectComponent, selector: "form-multiselect", inputs: ["SelectLabel", "UseKeyValues", "UseCommaSeparatedList"] }, { kind: "component", type: i9$1.FormDateTimeComponent, selector: "form-datetime", inputs: ["JsDates"] }, { kind: "component", type: i3$1.EsLineChartComponent, selector: "es-line-chart", inputs: ["Data", "DataArray", "Step", "DataGroupBucketSize", "DataGroupingThreshold", "StrokeSize", "AllowGaps", "MergeDatasets", "FinalInstants", "Min", "Max", "Fill", "Stacked"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }] });
|
|
1399
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmMetricsComponent, decorators: [{
|
|
1400
|
-
type: Component,
|
|
1401
|
-
args: [{ selector: "metrics_search", providers: [{ provide: LocalizationService, useClass: AdmMetricsLoc }], 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 {{'Metriche di Sistema' | 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]=\"'Da' | 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]=\"'A' | 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]=\"'Cod. Sessione' | 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]=\"'Seriale Sessione' | 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]=\"'Filtra Metriche...' | 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 {{'Aggiorna ogni' | localize: lc}} <input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"seconds\" /> {{'secondo/i' | 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\" name=\"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>{{'Carico i Dati' | localize: lc}}</em></p>\r\n <div *ngIf=\"searchView && instanceRequired\">\r\n <form-select [Validation]=\"false\" [Label]=\"'Istanza Metriche' | 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>" }]
|
|
1402
|
-
}], ctorParameters: function () {
|
|
1403
|
-
return [{ type: i1$1.DateService }, { type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i5.Location }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
1404
|
-
type: Inject,
|
|
1405
|
-
args: [ADM_MODULE_PATH]
|
|
1406
|
-
}] }];
|
|
1407
|
-
} });
|
|
1408
|
-
|
|
1409
|
-
class AdmLogsLoc extends LocalizationService {
|
|
1410
|
-
constructor(injector) {
|
|
1411
|
-
super(injector);
|
|
1412
|
-
super.set("it->en", "Log del Server", ["Server Logs"]);
|
|
1413
|
-
}
|
|
1414
|
-
}
|
|
1415
|
-
AdmLogsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmLogsLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1416
|
-
AdmLogsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmLogsLoc });
|
|
1417
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmLogsLoc, decorators: [{
|
|
1418
|
-
type: Injectable
|
|
1419
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1420
|
-
|
|
1421
|
-
class AdmLogsComponent {
|
|
1422
|
-
constructor(intercom, lc, route, adms) {
|
|
1423
|
-
this.intercom = intercom;
|
|
1424
|
-
this.lc = lc;
|
|
1425
|
-
this.route = route;
|
|
1426
|
-
this.adms = adms;
|
|
1427
|
-
this.filterfrom = "";
|
|
1428
|
-
this.filterto = "";
|
|
1429
|
-
this.be = route.snapshot.params["be"] || "";
|
|
1430
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
1431
|
-
}
|
|
1432
|
-
ngOnInit() {
|
|
1433
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1434
|
-
yield this.sendSearch();
|
|
1435
|
-
});
|
|
1436
|
-
}
|
|
1437
|
-
sendSearch() {
|
|
1438
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1439
|
-
this.searchinprogress = true;
|
|
1440
|
-
this.Log = yield this.adms.getServerLogs(this.be, this.filterfrom, this.filterto);
|
|
1441
|
-
this.searchinprogress = false;
|
|
1442
|
-
});
|
|
1443
|
-
}
|
|
1444
|
-
}
|
|
1445
|
-
AdmLogsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmLogsComponent, deps: [{ token: i1$1.InterComService }, { token: i1.LocalizationService }, { token: i4.ActivatedRoute }, { token: AdminModuleBaseService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1446
|
-
AdmLogsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AdmLogsComponent, selector: "adm_logs", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-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)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></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)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9$1.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }], viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }] });
|
|
1447
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmLogsComponent, decorators: [{
|
|
1448
|
-
type: Component,
|
|
1449
|
-
args: [{ selector: "adm_logs", viewProviders: [{ provide: LocalizationService, useClass: AdmLogsLoc }], template: "<div class=\"row\">\r\n <div class=\"col-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)]=\"filterfrom\" name=\"filterfrom\" [Placeholder]=\"'Da'\"></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)]=\"filterto\" name=\"filterto\" [Placeholder]=\"'A'\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20 app-margin-right-5\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <p *ngIf=\"Log\" class=\"app-whitespace-prewrap\" [innerHTML]=\"Log\"></p>\r\n\r\n</div>" }]
|
|
1450
|
-
}], ctorParameters: function () { return [{ type: i1$1.InterComService }, { type: i1.LocalizationService }, { type: i4.ActivatedRoute }, { type: AdminModuleBaseService }]; } });
|
|
1451
|
-
|
|
1452
|
-
class DynamicViewsView extends AppSearch {
|
|
1453
|
-
constructor() { super(); }
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1456
|
-
class AdmDynamicViewsLoc extends LocalizationService {
|
|
1457
|
-
constructor(injector) {
|
|
1458
|
-
super(injector);
|
|
1459
|
-
super.set("it->en", "Ricerca Viste Dinamiche Applicative", ["Search Application Dynamic Views"]);
|
|
1460
|
-
super.set("it->en", "Nome", ["Name"]);
|
|
1461
|
-
super.set("it->en", "Carico le Viste Dinamiche Applicative", ["Loading Application Dynamic Views"]);
|
|
1462
|
-
super.set("it->en", "Il nome della vista è obbligatorio per le operazioni di ricerca", ["View Name is mandatory for search operations"]);
|
|
1463
|
-
super.set("it->en", "Nessun elemento trovato per la vista dinamica", ["No element found for Dynamic View"]);
|
|
1464
|
-
}
|
|
1465
|
-
}
|
|
1466
|
-
AdmDynamicViewsLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmDynamicViewsLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1467
|
-
AdmDynamicViewsLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmDynamicViewsLoc });
|
|
1468
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmDynamicViewsLoc, decorators: [{
|
|
1469
|
-
type: Injectable
|
|
1470
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1471
|
-
|
|
1472
|
-
class AdmDynamicViewsComponent {
|
|
1473
|
-
constructor(lc, intercom, localStorage, route, location, adms, mod) {
|
|
1474
|
-
this.lc = lc;
|
|
1475
|
-
this.intercom = intercom;
|
|
1476
|
-
this.localStorage = localStorage;
|
|
1477
|
-
this.route = route;
|
|
1478
|
-
this.location = location;
|
|
1479
|
-
this.adms = adms;
|
|
1480
|
-
this.mod = mod;
|
|
1481
|
-
this.searchView = new DynamicViewsView();
|
|
1482
|
-
this.Names = [];
|
|
1483
|
-
this.badSearch = false;
|
|
1484
|
-
this.currentName = "";
|
|
1485
|
-
// Staccato dalla view perché deve essere distrutta e ricreata di continuo
|
|
1486
|
-
this.filterName = "";
|
|
1487
|
-
this.be = route.snapshot.params["be"] || "";
|
|
1488
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
1489
|
-
}
|
|
1490
|
-
ngOnInit() {
|
|
1491
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1492
|
-
this.Names = yield this.adms.getDynamicViews(this.be);
|
|
1493
|
-
this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
|
|
1494
|
-
});
|
|
1495
|
-
}
|
|
1496
|
-
ngOnDestroy() {
|
|
1497
|
-
if (this.storageSub)
|
|
1498
|
-
this.storageSub.unsubscribe();
|
|
1499
|
-
}
|
|
1500
|
-
Init(ignoreStorage) {
|
|
1501
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1502
|
-
let item = yield this.localStorage.getItem("HotDinamitato").toPromise();
|
|
1503
|
-
if (!ignoreStorage && item) {
|
|
1504
|
-
this.init(item);
|
|
1505
|
-
}
|
|
1506
|
-
else {
|
|
1507
|
-
this.init(null);
|
|
1508
|
-
this.location.replaceState(`/pages/${this.mod}/serverviews`);
|
|
1509
|
-
this.route.snapshot.queryParams = [];
|
|
1510
|
-
yield this.localStorage.removeItem("HotDinamitato").toPromise();
|
|
1511
|
-
}
|
|
1512
|
-
});
|
|
1513
|
-
}
|
|
1514
|
-
init(HotPotato) {
|
|
1515
|
-
//Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
|
|
1516
|
-
//Altirmenti genero il modello nuovo normalmente
|
|
1517
|
-
if (HotPotato) {
|
|
1518
|
-
this.searchView = HotPotato;
|
|
1519
|
-
this.POSTGetItems();
|
|
1520
|
-
}
|
|
1521
|
-
else {
|
|
1522
|
-
this.searchView = new DynamicViewsView();
|
|
1523
|
-
this.sendSearch();
|
|
1524
|
-
}
|
|
1525
|
-
}
|
|
1526
|
-
sendSearch(resetPage = true) {
|
|
1527
|
-
this.searchView.searchinprogress = true;
|
|
1528
|
-
if (resetPage)
|
|
1529
|
-
this.searchView.page = 1;
|
|
1530
|
-
this.searchView.filtername = this.filterName;
|
|
1531
|
-
this.POSTGetItems();
|
|
1532
|
-
}
|
|
1533
|
-
prepareExportDynamicView(callback) {
|
|
1534
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1535
|
-
var view = JSON.parse(JSON.stringify(this.searchView));
|
|
1536
|
-
view.page = 1;
|
|
1537
|
-
view.itemsperpageoverride = 9999999;
|
|
1538
|
-
let tmp = yield this.adms.getDynamicViewData(this.be, view);
|
|
1539
|
-
callback(tmp.items, GenericItem);
|
|
1540
|
-
});
|
|
1541
|
-
}
|
|
1542
|
-
POSTGetItems() {
|
|
1543
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1544
|
-
if (!this.searchView.filtername) {
|
|
1545
|
-
this.badSearch = true;
|
|
1546
|
-
AppSearch.reset(this.searchView);
|
|
1547
|
-
return;
|
|
1548
|
-
}
|
|
1549
|
-
else
|
|
1550
|
-
this.badSearch = false;
|
|
1551
|
-
// Per force-resettare l'estable
|
|
1552
|
-
if (this.currentName != this.searchView.filtername) {
|
|
1553
|
-
this.currentName = this.searchView.filtername;
|
|
1554
|
-
this.searchView = new DynamicViewsView();
|
|
1555
|
-
this.searchView.page = 1;
|
|
1556
|
-
this.searchView.filtername = this.currentName;
|
|
1557
|
-
}
|
|
1558
|
-
this.searchView = yield this.adms.getDynamicViewData(this.be, this.searchView);
|
|
1559
|
-
this.searchView.searchinprogress = false;
|
|
1560
|
-
this.localStorage.setItem("HotDinamitato", this.searchView).subscribe();
|
|
1561
|
-
});
|
|
1562
|
-
}
|
|
1563
|
-
}
|
|
1564
|
-
AdmDynamicViewsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmDynamicViewsComponent, deps: [{ token: i1.LocalizationService }, { token: i1$1.InterComService }, { token: i3.PreferencesService }, { token: i4.ActivatedRoute }, { token: i5.Location }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
1565
|
-
AdmDynamicViewsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AdmDynamicViewsComponent, selector: "adm_dynamic_views", 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\">{{'Ricerca Viste Dinamiche Applicative' | 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-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [SelectLabel]=\"'Nome' | localize: lc\"></form-select>\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>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div *ngIf=\"badSearch\" class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista \u00E8 obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\r\n <ng-container *ngIf=\"!badSearch\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && searchView.items.length > 0\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n <div *ngIf=\"searchView && searchView.items.length == 0 && !searchView.searchinprogress\" class=\"card card-info app-white-text app-padding-10\">\r\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol", "OptionTemplate"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }] });
|
|
1566
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmDynamicViewsComponent, decorators: [{
|
|
1567
|
-
type: Component,
|
|
1568
|
-
args: [{ selector: "adm_dynamic_views", viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }], 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\">{{'Ricerca Viste Dinamiche Applicative' | 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-select [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"filterName\" name=\"filtername\" [Source]=\"Names\" [SelectLabel]=\"'Nome' | localize: lc\"></form-select>\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>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <div *ngIf=\"badSearch\" class=\"card card-info app-white-text app-padding-10\">{{'Il nome della vista \u00E8 obbligatorio per le operazioni di ricerca' | localize: lc}}</div>\r\n <ng-container *ngIf=\"!badSearch\">\r\n <p *ngIf=\"!searchView\"><em>{{'Carico le Viste Dinamiche Applicative' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && searchView.items.length > 0\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [ExportFunction]=\"prepareExportDynamicView.bind(this)\" [Export]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\r\n </div>\r\n <div *ngIf=\"searchView && searchView.items.length == 0 && !searchView.searchinprogress\" class=\"card card-info app-white-text app-padding-10\">\r\n {{'Nessun elemento trovato per la vista dinamica' | localize: lc}} <strong>{{searchView.filtername}}</strong>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1569
|
-
}], ctorParameters: function () {
|
|
1570
|
-
return [{ type: i1.LocalizationService }, { type: i1$1.InterComService }, { type: i3.PreferencesService }, { type: i4.ActivatedRoute }, { type: i5.Location }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
1571
|
-
type: Inject,
|
|
1572
|
-
args: [ADM_MODULE_PATH]
|
|
1573
|
-
}] }];
|
|
1574
|
-
} });
|
|
1575
|
-
|
|
1576
|
-
class QueryView extends AppSearch {
|
|
1577
|
-
constructor() { super(); }
|
|
1578
|
-
}
|
|
1579
|
-
|
|
1580
|
-
class MtdQueryLoc extends LocalizationService {
|
|
1581
|
-
constructor(injector) {
|
|
1582
|
-
super(injector);
|
|
1583
|
-
super.set("it->en", "Esecuzione Query Metadati", ["Metadata Query Execution"]);
|
|
1584
|
-
super.set("it->en", "Query", ["Query"]);
|
|
1585
|
-
super.set("it->en", "Carico i Risultati", ["Loading Results"]);
|
|
1586
|
-
}
|
|
1587
|
-
}
|
|
1588
|
-
MtdQueryLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MtdQueryLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1589
|
-
MtdQueryLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MtdQueryLoc });
|
|
1590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MtdQueryLoc, decorators: [{
|
|
1591
|
-
type: Injectable
|
|
1592
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
1593
|
-
|
|
1594
|
-
class MtdQueryComponent {
|
|
1595
|
-
constructor(lc, localStorage, expExts, intercom, route, location, adms, mod) {
|
|
1596
|
-
this.lc = lc;
|
|
1597
|
-
this.localStorage = localStorage;
|
|
1598
|
-
this.expExts = expExts;
|
|
1599
|
-
this.intercom = intercom;
|
|
1600
|
-
this.route = route;
|
|
1601
|
-
this.location = location;
|
|
1602
|
-
this.adms = adms;
|
|
1603
|
-
this.mod = mod;
|
|
1604
|
-
this.searchView = new QueryView();
|
|
1605
|
-
this.searching = false;
|
|
1606
|
-
this.be = route.snapshot.params["be"] || "";
|
|
1607
|
-
this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
|
|
1608
|
-
}
|
|
1609
|
-
ngOnInit() {
|
|
1610
|
-
this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
|
|
1611
|
-
}
|
|
1612
|
-
ngOnDestroy() {
|
|
1613
|
-
if (this.storageSub)
|
|
1614
|
-
this.storageSub.unsubscribe();
|
|
1615
|
-
}
|
|
1616
|
-
Init(ignoreStorage) {
|
|
1617
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1618
|
-
let item = yield this.localStorage.getItem("HotQuery").toPromise();
|
|
1619
|
-
if (!ignoreStorage && item) {
|
|
1620
|
-
this.init(item);
|
|
1621
|
-
}
|
|
1622
|
-
else {
|
|
1623
|
-
this.init(null);
|
|
1624
|
-
this.location.replaceState(`/pages/${this.mod}/metadataquery`);
|
|
1625
|
-
this.route.snapshot.queryParams = [];
|
|
1626
|
-
yield this.localStorage.removeItem("HotQuery").toPromise();
|
|
1627
|
-
}
|
|
1628
|
-
});
|
|
1629
|
-
}
|
|
1630
|
-
init(HotPotato) {
|
|
1631
|
-
if (HotPotato) {
|
|
1632
|
-
this.searchView = HotPotato;
|
|
1633
|
-
this.POSTGetSearch(this.searchView);
|
|
1634
|
-
}
|
|
1635
|
-
else {
|
|
1636
|
-
this.searchView = new QueryView();
|
|
1637
|
-
this.sendSearch();
|
|
1638
|
-
}
|
|
1639
|
-
}
|
|
1640
|
-
sendSearch(resetPage = true) {
|
|
1641
|
-
this.searching = true;
|
|
1642
|
-
if (resetPage)
|
|
1643
|
-
this.searchView.page = 1;
|
|
1644
|
-
if (!this.searchView.filterquery)
|
|
1645
|
-
return;
|
|
1646
|
-
this.POSTGetSearch(this.searchView);
|
|
1647
|
-
}
|
|
1648
|
-
POSTGetSearch(data) {
|
|
1649
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1650
|
-
this.searchView = yield this.adms.getServerQuery(this.be, data);
|
|
1651
|
-
this.searchView.searchinprogress = false;
|
|
1652
|
-
this.localStorage.setItem("HotEnqueue", this.searchView).subscribe();
|
|
1653
|
-
this.searching = false;
|
|
1654
|
-
});
|
|
1655
|
-
}
|
|
1656
|
-
prepareExport(callback) {
|
|
1657
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1658
|
-
var view = JSON.parse(JSON.stringify(this.searchView));
|
|
1659
|
-
view.page = 1;
|
|
1660
|
-
view.itemsperpageoverride = 9999999;
|
|
1661
|
-
let tmp = yield this.adms.getServerLocks(this.be, view);
|
|
1662
|
-
callback(tmp.items, GenericItem);
|
|
1663
|
-
});
|
|
1664
|
-
}
|
|
1665
|
-
}
|
|
1666
|
-
MtdQueryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MtdQueryComponent, deps: [{ token: i1.LocalizationService }, { token: i3.PreferencesService }, { token: i1$1.ExportService }, { token: i1$1.InterComService }, { token: i4.ActivatedRoute }, { token: i5.Location }, { token: AdminModuleBaseService }, { token: ADM_MODULE_PATH }], target: i0.ɵɵFactoryTarget.Component });
|
|
1667
|
-
MtdQueryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: MtdQueryComponent, selector: "adm_mtd_query", 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\">{{'Esecuzione Query Metadati' | 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-11 col-lg-11 col-md-11 app-filter-wrapper\">\r\n <form-textarea [Rows]=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\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=\"!searchView\"><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && !searching\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i9.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "component", type: i9$1.FormTextareaComponent, selector: "form-textarea", inputs: ["Rows"] }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }] });
|
|
1668
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MtdQueryComponent, decorators: [{
|
|
1669
|
-
type: Component,
|
|
1670
|
-
args: [{ selector: "adm_mtd_query", viewProviders: [{ provide: LocalizationService, useClass: MtdQueryLoc }], 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\">{{'Esecuzione Query Metadati' | 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-11 col-lg-11 col-md-11 app-filter-wrapper\">\r\n <form-textarea [Rows]=\"3\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterquery\" name=\"filterquery\" [Placeholder]=\"'Query'\"></form-textarea>\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=\"!searchView\"><em>{{'Carico i Risultati' | localize: lc}}...</em></p>\r\n <div *ngIf=\"searchView && !searching\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\" [ExportFileName]=\"'Results.csv'\" [ExportFunction]=\"prepareExport.bind(this)\"></es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
1671
|
-
}], ctorParameters: function () {
|
|
1672
|
-
return [{ type: i1.LocalizationService }, { type: i3.PreferencesService }, { type: i1$1.ExportService }, { type: i1$1.InterComService }, { type: i4.ActivatedRoute }, { type: i5.Location }, { type: AdminModuleBaseService }, { type: undefined, decorators: [{
|
|
1673
|
-
type: Inject,
|
|
1674
|
-
args: [ADM_MODULE_PATH]
|
|
1675
|
-
}] }];
|
|
1676
|
-
} });
|
|
1677
|
-
|
|
1678
|
-
// Angular
|
|
1679
|
-
class FormatTimePipe {
|
|
1680
|
-
constructor() { }
|
|
1681
|
-
transform(value) {
|
|
1682
|
-
return this.secondsToHms(value);
|
|
1683
|
-
}
|
|
1684
|
-
secondsToHms(d) {
|
|
1685
|
-
d = Number(d);
|
|
1686
|
-
var h = Math.floor(d / 3600);
|
|
1687
|
-
var m = Math.floor(d % 3600 / 60);
|
|
1688
|
-
var s = Math.floor(d % 3600 % 60);
|
|
1689
|
-
var hDisplay = h > 0 ? h + " h, " : "";
|
|
1690
|
-
var mDisplay = m > 0 ? m + " min, " : "";
|
|
1691
|
-
var sDisplay = s > 0 ? s + " sec" : "";
|
|
1692
|
-
return hDisplay + mDisplay + sDisplay;
|
|
1693
|
-
}
|
|
1694
|
-
}
|
|
1695
|
-
FormatTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FormatTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1696
|
-
FormatTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FormatTimePipe, name: "format_time" });
|
|
1697
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FormatTimePipe, decorators: [{
|
|
1698
|
-
type: Pipe,
|
|
1699
|
-
args: [{ name: 'format_time' }]
|
|
1700
|
-
}], ctorParameters: function () { return []; } });
|
|
1701
|
-
|
|
1702
|
-
/** Chiave di questo modulo, da utilizzare per i messaggi */
|
|
1703
|
-
const MK_ADM = "EsAdminModule";
|
|
1704
|
-
/** Messaggi gestiti da questo modulo */
|
|
1705
|
-
var AdmMessageTypes;
|
|
1706
|
-
(function (AdmMessageTypes) {
|
|
1707
|
-
AdmMessageTypes[AdmMessageTypes["Message"] = 0] = "Message";
|
|
1708
|
-
})(AdmMessageTypes || (AdmMessageTypes = {}));
|
|
1709
|
-
|
|
1710
|
-
// Angular
|
|
1711
|
-
class AdminModuleCommService {
|
|
1712
|
-
constructor(intercom) {
|
|
1713
|
-
this.intercom = intercom;
|
|
1714
|
-
}
|
|
1715
|
-
register() {
|
|
1716
|
-
this.intercom.register(MK_ADM);
|
|
1717
|
-
this.intercom.outbounds[MK_ADM].subscribe((t) => { this.handleOutbound(t.type, t.message); });
|
|
1718
|
-
}
|
|
1719
|
-
handleOutbound(type, message) {
|
|
1720
|
-
switch (type) {
|
|
1721
|
-
case AdmMessageTypes.Message:
|
|
1722
|
-
if (myconfig.DEBUG_MODE)
|
|
1723
|
-
console.log("@admin-module outbound message: " + message);
|
|
1724
|
-
break;
|
|
1725
|
-
}
|
|
1726
|
-
}
|
|
1727
|
-
}
|
|
1728
|
-
AdminModuleCommService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleCommService, deps: [{ token: i1$1.InterComService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1729
|
-
AdminModuleCommService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleCommService });
|
|
1730
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdminModuleCommService, decorators: [{
|
|
1731
|
-
type: Injectable
|
|
1732
|
-
}], ctorParameters: function () { return [{ type: i1$1.InterComService }]; } });
|
|
1733
|
-
|
|
1734
|
-
// Angular
|
|
1735
|
-
const routeConfig = [
|
|
1736
|
-
{
|
|
1737
|
-
path: "", children: [
|
|
1738
|
-
{ path: "serverworkers/:be", component: AdmWrkComponent, data: { title: "Ricerca Processi Applicativi", internalNavigation: false } },
|
|
1739
|
-
{ path: "profiler/:be", component: AdmProfilerComponent, data: { title: "Profiler del Server", internalNavigation: false } },
|
|
1740
|
-
{ path: "topact/:be", component: AdmTopActivitiesComponent, data: { title: "Attività Principali", internalNavigation: false } },
|
|
1741
|
-
{ path: "metrics/:be", component: AdmMetricsComponent, data: { title: "Metriche di Sistema", internalNavigation: false } },
|
|
1742
|
-
{ path: "serverlogs/:be", component: AdmLogsComponent, data: { title: "Log del Server", internalNavigation: false } },
|
|
1743
|
-
{ path: "serveraudits/:be", component: AdmAuditsComponent, data: { title: "Ricerca Audit Applicativi", internalNavigation: false } },
|
|
1744
|
-
{ path: "serverenqueues/:be", component: AdmEnqComponent, data: { title: "Ricerca Lock Applicativi", internalNavigation: false } },
|
|
1745
|
-
{ path: "serverviews/:be", component: AdmDynamicViewsComponent, data: { title: "Ricerca Viste Dinamiche Applicative", internalNavigation: false } },
|
|
1746
|
-
{ path: "metadataquery/:be", component: MtdQueryComponent, data: { title: "Ricerca Viste Dinamiche Applicative", internalNavigation: false } },
|
|
1747
|
-
{ path: "serverworkers", component: AdmWrkComponent, data: { title: "Ricerca Processi Applicativi", internalNavigation: false } },
|
|
1748
|
-
{ path: "profiler", component: AdmProfilerComponent, data: { title: "Profiler del Server", internalNavigation: false } },
|
|
1749
|
-
{ path: "topact", component: AdmTopActivitiesComponent, data: { title: "Attività Principali", internalNavigation: false } },
|
|
1750
|
-
{ path: "metrics", component: AdmMetricsComponent, data: { title: "Metriche di Sistema", internalNavigation: false } },
|
|
1751
|
-
{ path: "serverlogs", component: AdmLogsComponent, data: { title: "Log del Server", internalNavigation: false } },
|
|
1752
|
-
{ path: "serveraudits", component: AdmAuditsComponent, data: { title: "Ricerca Audit Applicativi", internalNavigation: false } },
|
|
1753
|
-
{ path: "serverenqueues", component: AdmEnqComponent, data: { title: "Ricerca Lock Applicativi", internalNavigation: false } },
|
|
1754
|
-
{ path: "serverviews", component: AdmDynamicViewsComponent, data: { title: "Ricerca Viste Dinamiche Applicative", internalNavigation: false } },
|
|
1755
|
-
{ path: "metadataquery", component: MtdQueryComponent, data: { title: "Ricerca Viste Dinamiche Applicative", internalNavigation: false } }
|
|
1756
|
-
]
|
|
1757
|
-
}
|
|
1758
|
-
];
|
|
1759
|
-
const MODULES = [
|
|
1760
|
-
// Base
|
|
1761
|
-
CommonModule,
|
|
1762
|
-
FormsModule,
|
|
1763
|
-
// Material
|
|
1764
|
-
MatDatepickerModule,
|
|
1765
|
-
MatDayjsDateModule,
|
|
1766
|
-
MatIconModule,
|
|
1767
|
-
MatLegacyInputModule,
|
|
1768
|
-
// Bootstrap
|
|
1769
|
-
ModalModule,
|
|
1770
|
-
TooltipModule,
|
|
1771
|
-
BsDropdownModule,
|
|
1772
|
-
// Esfaenza e componenti visuali
|
|
1773
|
-
ContextMenuModule,
|
|
1774
|
-
LocalizationModule,
|
|
1775
|
-
ExtensionsModule,
|
|
1776
|
-
EsTableModule,
|
|
1777
|
-
FormsAndValidationsModule,
|
|
1778
|
-
EsGertrudeModule,
|
|
1779
|
-
EsChartsModule,
|
|
1780
|
-
NgxMatDatetimePickerModule,
|
|
1781
|
-
RouterModule.forChild(routeConfig),
|
|
1782
|
-
];
|
|
1783
|
-
const COMPONENTS = [
|
|
1784
|
-
AdmWrkComponent,
|
|
1785
|
-
AdmProfilerComponent,
|
|
1786
|
-
AdmTopActivitiesComponent,
|
|
1787
|
-
AdmDynamicViewsComponent,
|
|
1788
|
-
AdmLogsComponent,
|
|
1789
|
-
AdmAuditsComponent,
|
|
1790
|
-
AdmEnqComponent,
|
|
1791
|
-
AdmMetricsComponent,
|
|
1792
|
-
NodeDetailComponent,
|
|
1793
|
-
MtdQueryComponent
|
|
1794
|
-
];
|
|
1795
|
-
const PIPES = [
|
|
1796
|
-
FormatTimePipe
|
|
1797
|
-
];
|
|
1798
|
-
class AdmModule {
|
|
1799
|
-
constructor(commService) {
|
|
1800
|
-
this.commService = commService;
|
|
1801
|
-
console.log("@esfaenza/admin-module: BOOTSTRAP");
|
|
1802
|
-
this.commService.register();
|
|
1803
|
-
}
|
|
1804
|
-
}
|
|
1805
|
-
AdmModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmModule, deps: [{ token: AdminModuleCommService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1806
|
-
AdmModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: AdmModule, declarations: [AdmWrkComponent,
|
|
1807
|
-
AdmProfilerComponent,
|
|
1808
|
-
AdmTopActivitiesComponent,
|
|
1809
|
-
AdmDynamicViewsComponent,
|
|
1810
|
-
AdmLogsComponent,
|
|
1811
|
-
AdmAuditsComponent,
|
|
1812
|
-
AdmEnqComponent,
|
|
1813
|
-
AdmMetricsComponent,
|
|
1814
|
-
NodeDetailComponent,
|
|
1815
|
-
MtdQueryComponent, FormatTimePipe], imports: [
|
|
1816
|
-
// Base
|
|
1817
|
-
CommonModule,
|
|
1818
|
-
FormsModule,
|
|
1819
|
-
// Material
|
|
1820
|
-
MatDatepickerModule,
|
|
1821
|
-
MatDayjsDateModule,
|
|
1822
|
-
MatIconModule,
|
|
1823
|
-
MatLegacyInputModule,
|
|
1824
|
-
// Bootstrap
|
|
1825
|
-
ModalModule,
|
|
1826
|
-
TooltipModule,
|
|
1827
|
-
BsDropdownModule,
|
|
1828
|
-
// Esfaenza e componenti visuali
|
|
1829
|
-
ContextMenuModule,
|
|
1830
|
-
LocalizationModule,
|
|
1831
|
-
ExtensionsModule,
|
|
1832
|
-
EsTableModule,
|
|
1833
|
-
FormsAndValidationsModule,
|
|
1834
|
-
EsGertrudeModule,
|
|
1835
|
-
EsChartsModule,
|
|
1836
|
-
NgxMatDatetimePickerModule, i4.RouterModule
|
|
1837
|
-
] });
|
|
1838
|
-
AdmModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmModule, providers: [
|
|
1839
|
-
AdminModuleCommService,
|
|
1840
|
-
AdminModuleBaseService,
|
|
1841
|
-
{ provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }
|
|
1842
|
-
], imports: [MODULES] });
|
|
1843
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AdmModule, decorators: [{
|
|
1844
|
-
type: NgModule,
|
|
1845
|
-
args: [{
|
|
1846
|
-
imports: [...MODULES],
|
|
1847
|
-
declarations: [...COMPONENTS, ...PIPES],
|
|
1848
|
-
providers: [
|
|
1849
|
-
AdminModuleCommService,
|
|
1850
|
-
AdminModuleBaseService,
|
|
1851
|
-
{ provide: ADM_CONVERSATIONS, useFactory: () => !!myconfig.TransactionTimeoutSeconds }
|
|
1852
|
-
]
|
|
1853
|
-
}]
|
|
1854
|
-
}], ctorParameters: function () { return [{ type: AdminModuleCommService }]; } });
|
|
1855
|
-
|
|
1856
|
-
/*
|
|
1857
|
-
* Public API Surface of admin-module
|
|
1858
|
-
*/
|
|
1859
|
-
|
|
1860
|
-
/**
|
|
1861
|
-
* Generated bundle index. Do not edit.
|
|
1862
|
-
*/
|
|
1863
|
-
|
|
1864
|
-
export { ADM_CONVERSATIONS, ADM_MODULE_PATH, AdmMessageTypes, AdmModule, MK_ADM, routeConfig };
|
|
1865
|
-
//# sourceMappingURL=esfaenza-admin-module.mjs.map
|