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