@esfaenza/admin-module 11.2.12 → 11.2.15

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 (29) hide show
  1. package/bundles/esfaenza-admin-module.umd.js +190 -12
  2. package/bundles/esfaenza-admin-module.umd.js.map +1 -1
  3. package/bundles/esfaenza-admin-module.umd.min.js +2 -2
  4. package/bundles/esfaenza-admin-module.umd.min.js.map +1 -1
  5. package/esfaenza-admin-module.d.ts +6 -3
  6. package/esfaenza-admin-module.metadata.json +1 -1
  7. package/esm2015/esfaenza-admin-module.js +7 -4
  8. package/esm2015/lib/admin-module.module.js +17 -9
  9. package/esm2015/lib/components/_shared/node_detail.component.js +2 -2
  10. package/esm2015/lib/components/_shared/node_detail.component.loc.js +3 -1
  11. package/esm2015/lib/components/dynamic_views/adm_dynamic_views.component.js +116 -0
  12. package/esm2015/lib/components/dynamic_views/adm_dynamic_views.component.loc.js +19 -0
  13. package/esm2015/lib/components/profiler/adm_profiler.component.js +2 -2
  14. package/esm2015/lib/models/components/DynamicViewsView.js +5 -0
  15. package/esm2015/lib/models/components/NodeStats.js +1 -1
  16. package/esm2015/lib/models/components/NodeWaitStack.js +3 -0
  17. package/esm2015/lib/models/externals/Repository.js +3 -1
  18. package/esm2015/lib/pipes/format_time.pipe.js +23 -0
  19. package/fesm2015/esfaenza-admin-module.js +162 -11
  20. package/fesm2015/esfaenza-admin-module.js.map +1 -1
  21. package/lib/admin-module.module.d.ts +8 -0
  22. package/lib/components/dynamic_views/adm_dynamic_views.component.d.ts +32 -0
  23. package/lib/components/dynamic_views/adm_dynamic_views.component.loc.d.ts +4 -0
  24. package/lib/models/components/DynamicViewsView.d.ts +5 -0
  25. package/lib/models/components/NodeStats.d.ts +2 -0
  26. package/lib/models/components/NodeWaitStack.d.ts +6 -0
  27. package/lib/models/externals/Repository.d.ts +2 -0
  28. package/lib/pipes/format_time.pipe.d.ts +6 -0
  29. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { Location, CommonModule } from '@angular/common';
2
2
  import { FormsModule } from '@angular/forms';
3
- import { InjectionToken, Injectable, Inject, Component, ViewChild, EventEmitter, Input, Output, NgModule } from '@angular/core';
3
+ import { InjectionToken, Injectable, Inject, Component, ViewChild, EventEmitter, Input, Output, Pipe, NgModule } from '@angular/core';
4
4
  import { ActivatedRoute, RouterModule } from '@angular/router';
5
5
  import { MatIconModule } from '@angular/material/icon';
6
6
  import { MatDatepickerModule } from '@angular/material/datepicker';
@@ -42,8 +42,10 @@ const Repository = {
42
42
  POST_Adm_GetMetrics: "/api/Adm/GetMetrics",
43
43
  POST_Adm_GetProfilerDataNodes: "/api/Adm/GetProfilerDataNodes",
44
44
  POST_Adm_GetServerAudits: "/api/Adm/GetServerAudits",
45
+ POST_Adm_GetDynamicViewData: "/api/Adm/GetDynamicViewData",
45
46
  POST_Adm_GetServerLocks: "/api/Adm/GetServerLocks",
46
47
  GET_Adm_GetServerLogs: "/api/Adm/GetServerLogs",
48
+ GET_Adm_GetDynamicViews: "/api/Adm/GetDynamicViews",
47
49
  POST_Adm_GetServerWorkers: "/api/Adm/GetServerWorkers",
48
50
  POST_Adm_GetTopActivities: "/api/Adm/GetTopActivities",
49
51
  GET_Adm_GetWorkerStatus: "/api/Adm/GetWorkerStatus",
@@ -608,7 +610,7 @@ AdmProfilerComponent.decorators = [
608
610
  { type: Component, args: [{
609
611
  selector: "adm_profiler",
610
612
  providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],
611
- template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Server Profiler' | localize : lc}}</span>&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]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Description' | localize : lc}}</span>\r\n <span *th=\"'3'\">{{'Calls' | localize : lc}}</span>\r\n <span *th=\"'4'\">{{'Time' | localize : lc}}</span>\r\n <span *th=\"'5'\">{{'Peak Time' | localize : lc}}</span>\r\n <span *th=\"'6'\">{{'Min. Time' | localize : lc}}</span>\r\n <span *th=\"'7'\">{{'Avg. Time' | localize : lc}}</span>\r\n <span *th=\"'8'\">{{'Specific Time' | localize : lc}}</span>\r\n <span *th=\"'9'\">{{'Percentage' | localize : lc}}</span>\r\n <span *th=\"'10'\">{{'Calls for Period' | localize : lc}}</span>\r\n <span *th=\"'11'\">{{'Time for Period' | localize : lc}}</span>\r\n <span *th=\"'12'\">{{'Peak Time for Period' | localize : lc}}</span>\r\n <span *th=\"'13'\">{{'Min. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'14'\">{{'Avg. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'15'\">{{'Specific Time for Period' | localize : lc}}</span>\r\n <span *th=\"'16'\">{{'Percentage for Period' | localize : lc}}</span>\r\n <span *th=\"'17'\">{{'Event Type Name' | localize : lc}}</span>\r\n <span *th=\"'18'\">{{'Wait Class Name' | 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>"
613
+ template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Server Profiler' | localize : lc}}</span>&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]=\"'From' | localize : lc\"></form-date>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-date [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-date>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [Hierarchy]=\"true\" [OrderByColumn]=\"false\" [ParentKey]=\"'parentid'\"\r\n [OwnKey]=\"'id'\" [StartsExpanded]=\"false\" [ExportFunction]=\"prepareExport.bind(this)\" [Export]=\"true\"\r\n [ExportFileName]=\"'Profiler Export.csv'\" [HidePaging]=\"true\" (onSearchRequest)=\"sendSearch($event);\">\r\n \r\n <span *th=\"'1'\">{{'ID' | localize : lc}}</span>\r\n <span *th=\"'2'\">{{'Description' | localize : lc}}</span>\r\n <span *th=\"'3'\">{{'Calls' | localize : lc}}</span>\r\n <span *th=\"'4'\">{{'Time' | localize : lc}}</span>\r\n <span *th=\"'5'\">{{'Peak Time' | localize : lc}}</span>\r\n <span *th=\"'6'\">{{'Min. Time' | localize : lc}}</span>\r\n <span *th=\"'7'\">{{'Avg. Time' | localize : lc}}</span>\r\n <span *th=\"'8'\">{{'Specific Time' | localize : lc}}</span>\r\n <span *th=\"'9'\">{{'Percentage' | localize : lc}}</span>\r\n <span *th=\"'10'\">{{'Calls for Period' | localize : lc}}</span>\r\n <span *th=\"'11'\">{{'Time for Period' | localize : lc}}</span>\r\n <span *th=\"'12'\">{{'Peak Time for Period' | localize : lc}}</span>\r\n <span *th=\"'13'\">{{'Min. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'14'\">{{'Avg. Time for Period' | localize : lc}}</span>\r\n <span *th=\"'15'\">{{'Specific Time for Period' | localize : lc}}</span>\r\n <span *th=\"'16'\">{{'Percentage for Period' | localize : lc}}</span>\r\n <span *th=\"'17'\">{{'Event Type Name' | localize : lc}}</span>\r\n <span *th=\"'18'\">{{'Wait Class Name' | 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 | format_time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime | format_time}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime | format_time}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime | format_time}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren | format_time}}</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 | format_time}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime | format_time}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime | format_time}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren | format_time}}</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>"
612
614
  },] }
613
615
  ];
614
616
  AdmProfilerComponent.ctorParameters = () => [
@@ -1176,6 +1178,8 @@ class NodeDetailLoc extends LocalizationService {
1176
1178
  super.set("en->it", "Elapsed (With Children)", ["Tempo Trascorso (Con Figli)"]);
1177
1179
  super.set("en->it", "Wait Class", ["Classe Attesa"]);
1178
1180
  super.set("en->it", "Elapsed (No Children)", ["Tempo Trascorso (Non Figli)"]);
1181
+ super.set("en->it", "Wait Stack", ["Stack di Attesa"]);
1182
+ super.set("en->it", "Resources Usage", ["Utilizzo Risorse"]);
1179
1183
  }
1180
1184
  }
1181
1185
  NodeDetailLoc.decorators = [
@@ -1213,7 +1217,7 @@ NodeDetailComponent.decorators = [
1213
1217
  { type: Component, args: [{
1214
1218
  selector: "node-detail",
1215
1219
  viewProviders: [{ provide: LocalizationService, useClass: NodeDetailLoc }],
1216
- template: "<div class=\"modal-dialog modal-lg\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Activity Node Details' | localize : lc}}\r\n <span *ngIf=\"NodeDetails\">&nbsp;{{NodeDetails.nodeid}}&nbsp;-&nbsp;{{NodeDetails.nodedescription}}</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>{{'Event Type' | localize: lc}}</strong>:&nbsp;{{NodeDetails.eventtypedesc}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Elapsed (With Children)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsed}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Wait Class' | localize: lc}}</strong>:&nbsp;{{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Elapsed (No Children)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsedlesschildren}}\r\n </div>\r\n </div>\r\n <div style=\"height: 200px;\">\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()\">{{'Close' | localize : lc}}</button>\r\n </div>\r\n </div>\r\n</div>"
1220
+ template: "<div class=\"modal-dialog modal-xl\" cdkDrag>\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" cdkDragHandle>\r\n <h4 class=\"modal-title pull-left\">\r\n {{'Activity Node Details' | localize : lc}}\r\n <span *ngIf=\"NodeDetails\">&nbsp;{{NodeDetails.nodeid}}&nbsp;-&nbsp;{{NodeDetails.nodedescription}}</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>{{'Event Type' | localize: lc}}</strong>:&nbsp;{{NodeDetails.eventtypedesc}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Elapsed (With Children)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsed}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Wait Class' | localize: lc}}</strong>:&nbsp;{{NodeDetails.waitclassname}}\r\n </div>\r\n <div class=\"col-md-6\">\r\n <strong>{{'Elapsed (No Children)' | localize: lc}}</strong>:&nbsp;{{NodeDetails.elapsedlesschildren}}\r\n </div>\r\n </div>\r\n <div class=\"row\" style=\"max-height: 200px; overflow: auto\" *ngIf=\"(NodeDetails?.waitstack?.length || 0) > 0\">\r\n <h5 class=\"app-margin-top-10\"><strong>{{'Wait Stack' | localize: lc}}</strong></h5>\r\n <div *ngFor=\"let wait of NodeDetails.waitstack\">\r\n >&nbsp;{{wait.nodeid}}&nbsp;-&nbsp;{{wait.nodedescription}}:&nbsp;\r\n <strong>{{'Event Type' | localize: lc}}</strong>:&nbsp;{{wait.eventtypedesc}}&nbsp;\r\n <strong>{{'Wait Class' | 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>{{'Resources Usage' | 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()\">{{'Close' | localize : lc}}</button>\r\n </div>\r\n </div>\r\n</div>"
1217
1221
  },] }
1218
1222
  ];
1219
1223
  NodeDetailComponent.ctorParameters = () => [
@@ -1224,6 +1228,148 @@ NodeDetailComponent.propDecorators = {
1224
1228
  onClose: [{ type: Output }]
1225
1229
  };
1226
1230
 
1231
+ class DynamicViewsView extends AppSearch {
1232
+ constructor() { super(); }
1233
+ }
1234
+
1235
+ class AdmDynamicViewsLoc extends LocalizationService {
1236
+ constructor(LOC_LOCALE) {
1237
+ super(LOC_LOCALE);
1238
+ super.set("en->it", "Search Application Dynamic Views", ["Ricerca Viste Dinamiche Applicative"]);
1239
+ super.set("en->it", "Name", ["Nome"]);
1240
+ super.set("en->it", "Loading Application Dynamic Views", ["Carico le Viste Dinamiche Applicative"]);
1241
+ super.set("en->it", "View Name is mandatory for search operations", ["Il nome della vista è obbligatorio per le operazioni di ricerca"]);
1242
+ }
1243
+ }
1244
+ AdmDynamicViewsLoc.decorators = [
1245
+ { type: Injectable }
1246
+ ];
1247
+ AdmDynamicViewsLoc.ctorParameters = () => [
1248
+ { type: String, decorators: [{ type: Inject, args: [ADM_LOCALE,] }] }
1249
+ ];
1250
+
1251
+ class AdmDynamicViewsComponent {
1252
+ constructor(lc, intercom, localStorage, http, route, location, backend, mod) {
1253
+ this.lc = lc;
1254
+ this.intercom = intercom;
1255
+ this.localStorage = localStorage;
1256
+ this.http = http;
1257
+ this.route = route;
1258
+ this.location = location;
1259
+ this.backend = backend;
1260
+ this.mod = mod;
1261
+ this.searchView = new DynamicViewsView();
1262
+ this.Names = [];
1263
+ this.searchInProgress = false;
1264
+ this.badSearch = false;
1265
+ this.currentName = "";
1266
+ // Staccato dalla view perché deve essere distrutta e ricreata di continuo
1267
+ this.filterName = "";
1268
+ this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data["title"]) });
1269
+ }
1270
+ ngOnInit() {
1271
+ this.http.get(Repository.GET_Adm_GetDynamicViews).subscribe(t => { this.Names = t; });
1272
+ this.storageSub = this.route.queryParams.subscribe(params => { this.Init(params["ignoreStorage"]); });
1273
+ }
1274
+ ngOnDestroy() {
1275
+ if (this.storageSub)
1276
+ this.storageSub.unsubscribe();
1277
+ }
1278
+ Init(ignoreStorage) {
1279
+ return __awaiter(this, void 0, void 0, function* () {
1280
+ let item = yield this.localStorage.getItem("HotDinamitato").toPromise();
1281
+ if (!ignoreStorage && item) {
1282
+ this.init(item);
1283
+ }
1284
+ else {
1285
+ this.init(null);
1286
+ this.location.replaceState(`/pages/${this.mod}/serverviews`);
1287
+ this.route.snapshot.queryParams = [];
1288
+ yield this.localStorage.removeItem("HotDinamitato").toPromise();
1289
+ }
1290
+ });
1291
+ }
1292
+ init(HotPotato) {
1293
+ //Se ho la HotPotato vuol dire che sono appena tornato dall'edit/nuovo. Rifaccio la ricerca in base ai filtri precedenti
1294
+ //Altirmenti genero il modello nuovo normalmente
1295
+ if (HotPotato) {
1296
+ this.searchView = HotPotato;
1297
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetDynamicViewData, this.searchView);
1298
+ }
1299
+ else {
1300
+ this.searchView = new DynamicViewsView();
1301
+ this.sendSearch();
1302
+ }
1303
+ }
1304
+ sendSearch(resetPage = true) {
1305
+ this.searchInProgress = true;
1306
+ if (resetPage)
1307
+ this.searchView.page = 1;
1308
+ this.searchView.filtername = this.filterName;
1309
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetDynamicViewData, this.searchView);
1310
+ }
1311
+ POSTGetItems(url, data) {
1312
+ if (!this.searchView.filtername) {
1313
+ this.badSearch = true;
1314
+ this.searchView.reset();
1315
+ //Aggiorno il riferimento per refreshare la es-table
1316
+ this.searchView = JSON.parse(JSON.stringify(this.searchView));
1317
+ return;
1318
+ }
1319
+ else
1320
+ this.badSearch = false;
1321
+ // Per force-resettare l'estable
1322
+ if (this.currentName != this.searchView.filtername) {
1323
+ this.searchView = null;
1324
+ this.currentName = this.searchView.filtername;
1325
+ }
1326
+ this.http.post(url, data).subscribe(t => {
1327
+ this.searchView = t;
1328
+ this.searchInProgress = false;
1329
+ this.localStorage.setItem("HotDinamitato", this.searchView).subscribe();
1330
+ });
1331
+ }
1332
+ }
1333
+ AdmDynamicViewsComponent.decorators = [
1334
+ { type: Component, args: [{
1335
+ selector: "adm_dynamic_views",
1336
+ viewProviders: [{ provide: LocalizationService, useClass: AdmDynamicViewsLoc }],
1337
+ template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">{{'Search Application Dynamic Views' | 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]=\"'Name' | 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\">{{'View Name is mandatory for search operations' | localize : lc}}</div>\r\n <ng-container *ngIf=\"!badSearch\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Application Dynamic Views' | localize : lc}}...</em></p>\r\n <div *ngIf=\"searchView\">\r\n <es-table [(ngModel)]=\"searchView\" [AutoUpdate]=\"true\" [OrderByColumn]=\"true\" (onSearchRequest)=\"sendSearch($event);\"></es-table>\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>"
1338
+ },] }
1339
+ ];
1340
+ AdmDynamicViewsComponent.ctorParameters = () => [
1341
+ { type: LocalizationService },
1342
+ { type: InterComService },
1343
+ { type: PreferencesService },
1344
+ { type: HTTPService },
1345
+ { type: ActivatedRoute },
1346
+ { type: Location },
1347
+ { type: String, decorators: [{ type: Inject, args: [ADM_BACKEND_URL,] }] },
1348
+ { type: String, decorators: [{ type: Inject, args: [ADM_MODULE_PATH,] }] }
1349
+ ];
1350
+
1351
+ // Angular
1352
+ class FormatTimePipe {
1353
+ constructor() { }
1354
+ transform(value) {
1355
+ return this.secondsToHms(value);
1356
+ }
1357
+ secondsToHms(d) {
1358
+ d = Number(d);
1359
+ var h = Math.floor(d / 3600);
1360
+ var m = Math.floor(d % 3600 / 60);
1361
+ var s = Math.floor(d % 3600 % 60);
1362
+ var hDisplay = h > 0 ? h + " h, " : "";
1363
+ var mDisplay = m > 0 ? m + " min, " : "";
1364
+ var sDisplay = s > 0 ? s + " sec" : "";
1365
+ return hDisplay + mDisplay + sDisplay;
1366
+ }
1367
+ }
1368
+ FormatTimePipe.decorators = [
1369
+ { type: Pipe, args: [{ name: 'format_time' },] }
1370
+ ];
1371
+ FormatTimePipe.ctorParameters = () => [];
1372
+
1227
1373
  /** Chiave di questo modulo, da utilizzare per i messaggi */
1228
1374
  const MK_ADM = "EsAdminModule";
1229
1375
  /** Messaggi gestiti da questo modulo */
@@ -1258,7 +1404,7 @@ AdminModuleCommService.ctorParameters = () => [
1258
1404
  ];
1259
1405
 
1260
1406
  // Angular
1261
- const ɵ0 = { title: "Search Application Processes", internalNavigation: false }, ɵ1 = { title: "Server Profiler", internalNavigation: false }, ɵ2 = { title: "Top Activities", internalNavigation: false }, ɵ3 = { title: "System Metrics", internalNavigation: false }, ɵ4 = { title: "Server Logs", internalNavigation: false }, ɵ5 = { title: "Search Application Audits", internalNavigation: false }, ɵ6 = { title: "Search Application Locks", internalNavigation: false };
1407
+ const ɵ0 = { title: "Search Application Processes", internalNavigation: false }, ɵ1 = { title: "Server Profiler", internalNavigation: false }, ɵ2 = { title: "Top Activities", internalNavigation: false }, ɵ3 = { title: "System Metrics", internalNavigation: false }, ɵ4 = { title: "Server Logs", internalNavigation: false }, ɵ5 = { title: "Search Application Audits", internalNavigation: false }, ɵ6 = { title: "Search Application Locks", internalNavigation: false }, ɵ7 = { title: "Search Application Dynamic Views", internalNavigation: false };
1262
1408
  const routeConfig = [
1263
1409
  {
1264
1410
  path: "",
@@ -1269,7 +1415,8 @@ const routeConfig = [
1269
1415
  { path: "metrics", component: AdmMetricsComponent, data: ɵ3 },
1270
1416
  { path: "serverlogs", component: AdmLogsComponent, data: ɵ4 },
1271
1417
  { path: "serveraudits", component: AdmAuditsComponent, data: ɵ5 },
1272
- { path: "serverenqueues", component: AdmEnqComponent, data: ɵ6 }
1418
+ { path: "serverenqueues", component: AdmEnqComponent, data: ɵ6 },
1419
+ { path: "serverviews", component: AdmDynamicViewsComponent, data: ɵ7 }
1273
1420
  ]
1274
1421
  }
1275
1422
  ];
@@ -1301,13 +1448,17 @@ const COMPONENTS = [
1301
1448
  AdmWrkComponent,
1302
1449
  AdmProfilerComponent,
1303
1450
  AdmTopActivitiesComponent,
1451
+ AdmDynamicViewsComponent,
1304
1452
  AdmLogsComponent,
1305
1453
  AdmAuditsComponent,
1306
1454
  AdmEnqComponent,
1307
1455
  AdmMetricsComponent,
1308
1456
  NodeDetailComponent
1309
1457
  ];
1310
- const ɵ7 = myconfig.LOCALE, ɵ8 = myconfig.BACKEND_URL, ɵ9 = !!myconfig.TRANSACTIONS_TIMEOUT_S;
1458
+ const PIPES = [
1459
+ FormatTimePipe
1460
+ ];
1461
+ const ɵ8 = myconfig.LOCALE, ɵ9 = myconfig.BACKEND_URL, ɵ10 = !!myconfig.TRANSACTIONS_TIMEOUT_S;
1311
1462
  class AdmModule {
1312
1463
  constructor(commService) {
1313
1464
  this.commService = commService;
@@ -1318,12 +1469,12 @@ class AdmModule {
1318
1469
  AdmModule.decorators = [
1319
1470
  { type: NgModule, args: [{
1320
1471
  imports: [...MODULES],
1321
- declarations: [...COMPONENTS],
1472
+ declarations: [...COMPONENTS, ...PIPES],
1322
1473
  providers: [
1323
1474
  AdminModuleCommService,
1324
- { provide: ADM_LOCALE, useValue: ɵ7 },
1325
- { provide: ADM_BACKEND_URL, useValue: ɵ8 },
1326
- { provide: ADM_CONVERSATIONS, useValue: ɵ9 }
1475
+ { provide: ADM_LOCALE, useValue: ɵ8 },
1476
+ { provide: ADM_BACKEND_URL, useValue: ɵ9 },
1477
+ { provide: ADM_CONVERSATIONS, useValue: ɵ10 }
1327
1478
  ]
1328
1479
  },] }
1329
1480
  ];
@@ -1335,5 +1486,5 @@ AdmModule.ctorParameters = () => [
1335
1486
  * Generated bundle index. Do not edit.
1336
1487
  */
1337
1488
 
1338
- export { ADM_BACKEND_URL, ADM_CONVERSATIONS, ADM_LOCALE, ADM_MODULE_PATH, AdmMessageTypes, AdmModule, MK_ADM, routeConfig, ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AdmWrkComponent as ɵa, AdmWrkLoc as ɵb, AdmProfilerComponent as ɵc, AdmProfilerComponentLoc as ɵd, AdmTopActivitiesComponent as ɵe, AdmTopActivitieLoc as ɵf, AdmMetricsComponent as ɵg, AdmMetricsLoc as ɵh, AdmLogsComponent as ɵi, AdmLogsLoc as ɵj, AdmAuditsComponent as ɵk, AdmAuditLoc as ɵl, AdmEnqComponent as ɵm, AdmEnqLoc as ɵn, NodeDetailComponent as ɵo, NodeDetailLoc as ɵp, AdminModuleCommService as ɵq };
1489
+ export { ADM_BACKEND_URL, ADM_CONVERSATIONS, ADM_LOCALE, ADM_MODULE_PATH, AdmMessageTypes, AdmModule, MK_ADM, routeConfig, ɵ0, ɵ1, ɵ10, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AdmWrkComponent as ɵa, AdmWrkLoc as ɵb, AdmProfilerComponent as ɵc, AdmProfilerComponentLoc as ɵd, AdmTopActivitiesComponent as ɵe, AdmTopActivitieLoc as ɵf, AdmMetricsComponent as ɵg, AdmMetricsLoc as ɵh, AdmLogsComponent as ɵi, AdmLogsLoc as ɵj, AdmAuditsComponent as ɵk, AdmAuditLoc as ɵl, AdmEnqComponent as ɵm, AdmEnqLoc as ɵn, AdmDynamicViewsComponent as ɵo, AdmDynamicViewsLoc as ɵp, NodeDetailComponent as ɵq, NodeDetailLoc as ɵr, FormatTimePipe as ɵs, AdminModuleCommService as ɵt };
1339
1490
  //# sourceMappingURL=esfaenza-admin-module.js.map