@esfaenza/admin-module 11.2.6 → 11.2.10

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 (31) hide show
  1. package/bundles/esfaenza-admin-module.umd.js +104 -10
  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 +3 -1
  6. package/esfaenza-admin-module.metadata.json +1 -1
  7. package/esm2015/esfaenza-admin-module.js +4 -2
  8. package/esm2015/lib/admin-module.module.js +4 -2
  9. package/esm2015/lib/components/_shared/node_detail.component.js +45 -0
  10. package/esm2015/lib/components/_shared/node_detail.component.loc.js +21 -0
  11. package/esm2015/lib/components/profiler/adm_profiler.component.js +10 -2
  12. package/esm2015/lib/components/profiler/adm_profiler.component.loc.js +3 -1
  13. package/esm2015/lib/components/topact/topact_search.component.js +14 -5
  14. package/esm2015/lib/components/topact/topact_search.component.loc.js +2 -1
  15. package/esm2015/lib/models/components/NodeStats.js +3 -0
  16. package/esm2015/lib/models/components/ProfilerDataNode.js +9 -1
  17. package/esm2015/lib/models/components/ProfilerDataNode.loc.js +4 -2
  18. package/esm2015/lib/models/components/TopNode.js +1 -1
  19. package/esm2015/lib/models/externals/Repository.js +3 -2
  20. package/fesm2015/esfaenza-admin-module.js +98 -12
  21. package/fesm2015/esfaenza-admin-module.js.map +1 -1
  22. package/lib/components/_shared/node_detail.component.d.ts +11 -0
  23. package/lib/components/_shared/node_detail.component.loc.d.ts +4 -0
  24. package/lib/components/profiler/adm_profiler.component.d.ts +3 -0
  25. package/lib/components/topact/topact_search.component.d.ts +3 -0
  26. package/lib/models/components/NodeStats.d.ts +21 -0
  27. package/lib/models/components/ProfilerDataNode.d.ts +2 -0
  28. package/lib/models/components/ProfilerDataNode.loc.d.ts +8 -0
  29. package/lib/models/components/TopNode.d.ts +1 -0
  30. package/lib/models/externals/Repository.d.ts +1 -0
  31. package/package.json +1 -1
@@ -351,7 +351,8 @@
351
351
  GET_Adm_KillProcess: "/api/Adm/KillProcess",
352
352
  GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
353
353
  GET_Adm_StartWorker: "/api/Adm/StartWorker",
354
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
354
+ GET_Adm_StopWorker: "/api/Adm/StopWorker",
355
+ GET_Adm_GetNodeStats: "/api/Adm/GetNodeStats",
355
356
  };
356
357
 
357
358
  var ADM_LOCALE = new core.InjectionToken('ADM_LOCALE');
@@ -746,7 +747,9 @@
746
747
  'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
747
748
  'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
748
749
  'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
749
- 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
750
+ 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" },
751
+ 'Event Type Name': { 'en-US': "Event Type Name", 'it-IT': "Nome Tipologia Evento" },
752
+ 'Wait Class Name': { 'en-US': "Wait Class Name", 'it-IT': "Nome Classe Attesa" }
750
753
  };
751
754
 
752
755
  var ProfilerDataNode = /** @class */ (function () {
@@ -821,7 +824,15 @@
821
824
  __decorate([
822
825
  extensions.Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
823
826
  cerialize.autoserialize
824
- ], ProfilerDataNode.prototype, "snappercentage", void 0);
827
+ ], ProfilerDataNode.prototype, "snappercentage", void 0);
828
+ __decorate([
829
+ extensions.Export(180, ProfilerDataNode_loc["Event Type Name"][Locale]),
830
+ cerialize.autoserialize
831
+ ], ProfilerDataNode.prototype, "eventtypename", void 0);
832
+ __decorate([
833
+ extensions.Export(190, ProfilerDataNode_loc["Wait Class Name"][Locale]),
834
+ cerialize.autoserialize
835
+ ], ProfilerDataNode.prototype, "waitclassname", void 0);
825
836
 
826
837
  var ProfilerDataNodesView = /** @class */ (function (_super) {
827
838
  __extends(ProfilerDataNodesView, _super);
@@ -853,6 +864,8 @@
853
864
  _super.prototype.set.call(_this, "en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
854
865
  _super.prototype.set.call(_this, "en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
855
866
  _super.prototype.set.call(_this, "en->it", "Percentage for Period", ["Percentuale Periodo"]);
867
+ _super.prototype.set.call(_this, "en->it", "Event Type Name", ["Nome Tipologia Evento"]);
868
+ _super.prototype.set.call(_this, "en->it", "Wait Class Name", ["Nome Classe Attesa"]);
856
869
  return _this;
857
870
  }
858
871
  return AdmProfilerComponentLoc;
@@ -950,13 +963,21 @@
950
963
  dataCallBack(items);
951
964
  });
952
965
  };
966
+ AdmProfilerComponent.prototype.loadNodeDetails = function (nodeId) {
967
+ var _this = this;
968
+ this.NodeDetails = null;
969
+ var pars = new http.HttpParams().set('nodeId', nodeId);
970
+ this.http.get(this.backend + Repository.GET_Adm_GetNodeStats, pars).subscribe(function (t) {
971
+ _this.NodeDetails = t;
972
+ });
973
+ };
953
974
  return AdmProfilerComponent;
954
975
  }());
955
976
  AdmProfilerComponent.decorators = [
956
977
  { type: core.Component, args: [{
957
978
  selector: "adm_profiler",
958
979
  providers: [{ provide: localizations.LocalizationService, useClass: AdmProfilerComponentLoc }],
959
- 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\r\n <span *td=\"'1'; let item\">{{item.id}}</span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren}}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n </es-table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>"
980
+ 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\" (click)=\"loadNodeDetails(item.id); dlgNodeDetails.show();\"></span>{{item.id}}</span>\r\n <span *td=\"'2'; let item\" title=\"{{item.description}}\">{{item.description.length <= 50 ? item.description : item.description.substr(0,50) + \"[...]\" }}</span>\r\n <span *td=\"'3'; let item\">{{item.calls}}</span>\r\n <span *td=\"'4'; let item\">{{item.time}}</span>\r\n <span *td=\"'5'; let item\">{{item.peaktime}}</span>\r\n <span *td=\"'6'; let item\">{{item.mintime}}</span>\r\n <span *td=\"'7'; let item\">{{item.avgtime}}</span>\r\n <span *td=\"'8'; let item\">{{item.timewithoutchildren}}</span>\r\n <span *td=\"'9'; let item\">{{item.percentage}}</span>\r\n <span *td=\"'10' let item\">{{item.snapdeltacalls}}</span>\r\n <span *td=\"'11' let item\">{{item.snapdeltatime}}</span>\r\n <span *td=\"'12' let item\">{{item.snappeaktime}}</span>\r\n <span *td=\"'13' let item\">{{item.snapmintime}}</span>\r\n <span *td=\"'14' let item\">{{item.snapavgtime}}</span>\r\n <span *td=\"'15' let item\">{{item.snaptimewithoutchildren}}</span>\r\n <span *td=\"'16' let item\">{{item.snappercentage}}</span>\r\n <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>"
960
981
  },] }
961
982
  ];
962
983
  AdmProfilerComponent.ctorParameters = function () { return [
@@ -1000,6 +1021,7 @@
1000
1021
  _super.prototype.set.call(_this, "en->it", "second/s", ["secondo/i"]);
1001
1022
  _super.prototype.set.call(_this, "en->it", "Maximum Threads", ["Thread Massimi"]);
1002
1023
  _super.prototype.set.call(_this, "en->it", "CPUs", ["CPU"]);
1024
+ _super.prototype.set.call(_this, "en->it", "Wait Class Name", ["Nome Classe Attesa"]);
1003
1025
  return _this;
1004
1026
  }
1005
1027
  return AdmTopActivitieLoc;
@@ -1075,7 +1097,7 @@
1075
1097
  AdmTopActivitiesComponent.prototype.init = function (HotPotato) {
1076
1098
  if (HotPotato) {
1077
1099
  this.searchView = HotPotato;
1078
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
1100
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetTopActivities, this.searchView, false);
1079
1101
  }
1080
1102
  else {
1081
1103
  this.searchView = new TopActivitiesDataView();
@@ -1093,7 +1115,7 @@
1093
1115
  this.searchView.searchinprogress = true;
1094
1116
  if (resetPage)
1095
1117
  this.searchView.page = 1;
1096
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
1118
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetTopActivities, searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
1097
1119
  };
1098
1120
  AdmTopActivitiesComponent.prototype.POSTGetItems = function (url, data, update) {
1099
1121
  var _this = this;
@@ -1118,7 +1140,15 @@
1118
1140
  }); });
1119
1141
  };
1120
1142
  AdmTopActivitiesComponent.prototype.getDirectorInfos = function () {
1121
- return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(operators.map(function (res) { return res; })).toPromise();
1143
+ return this.http.get(this.backend + Repository.GET_Adm_GetInfos).pipe(operators.map(function (res) { return res; })).toPromise();
1144
+ };
1145
+ AdmTopActivitiesComponent.prototype.loadNodeDetails = function (nodeId) {
1146
+ var _this = this;
1147
+ this.NodeDetails = null;
1148
+ var pars = new http.HttpParams().set('nodeId', nodeId);
1149
+ this.http.get(this.backend + Repository.GET_Adm_GetNodeStats, pars).subscribe(function (t) {
1150
+ _this.NodeDetails = t;
1151
+ });
1122
1152
  };
1123
1153
  AdmTopActivitiesComponent.prototype.reviewBindings = function (update, searchViewOverride, dirInfos) {
1124
1154
  var _this = this;
@@ -1198,7 +1228,7 @@
1198
1228
  providers: [
1199
1229
  { provide: localizations.LocalizationService, useClass: AdmTopActivitieLoc }
1200
1230
  ],
1201
- template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</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]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <!--<h5 class=\"app-margin-top-5\">{{'Active Sessions' | localize : lc}}</h5>-->\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n </ng-template>\r\n <ng-template #body let-node>\r\n <td class=\"app-col-min\"><strong>{{node.profnodeid}}</strong></td>\r\n <td><span title=\"{{node.profnodedesc}}\">{{node.profnodedesc.length > 40 ? node.profnodedesc.substr(0,40) + \"...\" : node.profnodedesc}}</span></td>\r\n <td class=\"app-nowrap\">{{node.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{node.nodetypename}}</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <h5>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>"
1231
+ template: "<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"card app-overflow-visible\" widget>\r\n <div class=\"card-header\">\r\n <span class=\"text-uppercase\">\r\n {{'Top Activities' | localize : lc}}\r\n <span *ngIf=\"DirInfos\">&nbsp;-&nbsp;{{'' + DirInfos.cpus + ' ' + ('CPUs' | localize : lc) + (DirInfos.rssplan ? ' - ' + DirInfos.rssplan : '')}}</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]=\"'From' | localize : lc\"></form-datetime>\r\n </div>\r\n <div class=\"col-xl-2 col-lg-2 col-md-12 app-filter-wrapper\">\r\n <form-datetime [Readonly]=\"autoUpdate\" [FormLayout]=\"false\" [Validation]=\"false\" [(ngModel)]=\"searchView.filterto\" name=\"filterto\" [Placeholder]=\"'To' | localize : lc\"></form-datetime>\r\n </div>\r\n <button [disabled]=\"searchView.searchinprogress || autoUpdate\" class=\"input-group-addon btn app-btn-search app-margin-top-20\" (click)=\"sendSearch()\" type=\"submit\"><i class=\"fa fa-search\"></i></button>\r\n\r\n <div class=\"app-absolute app-right-25 app-top-40\">\r\n <div class=\"pull-right\">\r\n {{'Update every' | localize : lc}}&nbsp;<input [readonly]=\"autoUpdate\" maxlength=\"3\" class=\"form-control app-updevery-input\" type=\"text\" [(ngModel)]=\"seconds\" name=\"secs\" />&nbsp;{{'second/s' | localize : lc}}\r\n </div>\r\n <div class=\"pull-right m-t-2 app-margin-right-5\">\r\n <label class=\"switch\">\r\n <input type=\"checkbox\" [(ngModel)]=\"autoUpdate\" (ngModelChange)=\"autoUpdateChanged();\" />\r\n <div class=\"slider round\"></div>\r\n </label>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 app-margin-top-5\">\r\n <p *ngIf=\"!searchView\"><em>{{'Loading Data' | localize : lc}}</em></p>\r\n <div *ngIf=\"searchView\" class=\"row\">\r\n <div class=\"col-md-12 app-no-padding\">\r\n <div style=\"width: 100%; height: 290px\">\r\n <es-line-chart *ngIf=\"TopActiveSessions\"\r\n [MinGridDistance]=\"65\"\r\n [Timeline]=\"false\"\r\n [FinalInstants]=\"false\"\r\n [LegendPadding]=\"{top: 0, bottom: 7, right: 0, left: 10}\"\r\n [Fill]=\"true\"\r\n [MergeDatasets]=\"true\"\r\n [Data]=\"TopActiveSessions\"\r\n [Legend]=\"true\" \r\n name=\"topactsession\"\r\n [DataGroupingThreshold]=\"99999999\"\r\n (onSelectionChanged)=\"dataSelectionChanged($event)\" (chartLoaded)=\"onChartLoaded($event)\"></es-line-chart>\r\n </div>\r\n </div>\r\n <div class=\"col-md-5\">\r\n <h5>{{'Top Nodes' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopNodes\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">{{'Node' | localize : lc}}</th>\r\n <th>{{'Node Description' | localize : lc}}</th>\r\n <th class=\"app-col-min\">{{'Activity' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Node Type' | localize : lc}}</th>\r\n <th class=\"app-col-min app-nowrap\">{{'Wait Class Name' | 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>{{'Top Sessions' | localize : lc}}</h5>\r\n <es-table [(ngModel)]=\"TopSessions\" [HidePaging]=\"true\">\r\n <ng-template #header>\r\n <th class=\"app-col-min\">ID</th>\r\n <th>{{'User' | localize : lc}}</th>\r\n <th>{{'Tenant' | localize : lc}}</th>\r\n <th>{{'Process' | localize : lc}}</th>\r\n <th>{{'Activity' | localize : lc}}</th>\r\n <th>Cpu</th>\r\n <th>Wait</th>\r\n <th>DB</th>\r\n <th>Script</th>\r\n <th>Throttle</th>\r\n <th>Sleep</th>\r\n <th>Networking</th>\r\n <th>IO</th>\r\n </ng-template>\r\n\r\n <ng-template #body let-session>\r\n <td><strong>{{session.sid}}</strong></td>\r\n <td>{{session.user}}</td>\r\n <td>{{session.tenant}}</td>\r\n <td>{{session.bgprocess}}</td>\r\n <td>{{session.activity | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.cpu | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.wait | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.db | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.script | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.throttle | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.sleep | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.net | number : '1.1-2' : 'it'}} %</td>\r\n <td>{{session.io | number : '1.1-2' : 'it'}} %</td>\r\n </ng-template>\r\n </es-table>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\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>"
1202
1232
  },] }
1203
1233
  ];
1204
1234
  AdmTopActivitiesComponent.ctorParameters = function () { return [
@@ -1600,6 +1630,67 @@
1600
1630
  { type: String, decorators: [{ type: core.Inject, args: [ADM_BACKEND_URL,] }] }
1601
1631
  ]; };
1602
1632
 
1633
+ var NodeDetailLoc = /** @class */ (function (_super) {
1634
+ __extends(NodeDetailLoc, _super);
1635
+ function NodeDetailLoc(LOC_LOCALE) {
1636
+ var _this = _super.call(this, LOC_LOCALE) || this;
1637
+ _super.prototype.set.call(_this, "en->it", "Active Sessions", ["Sessioni Attive"]);
1638
+ _super.prototype.set.call(_this, "en->it", "Activity Node Details", ["Dettaglio Attività Nodo"]);
1639
+ _super.prototype.set.call(_this, "en->it", "Event Type", ["Tipo Evento"]);
1640
+ _super.prototype.set.call(_this, "en->it", "Elapsed (With Children)", ["Tempo Trascorso (Con Figli)"]);
1641
+ _super.prototype.set.call(_this, "en->it", "Wait Class", ["Classe Attesa"]);
1642
+ _super.prototype.set.call(_this, "en->it", "Elapsed (No Children)", ["Tempo Trascorso (Non Figli)"]);
1643
+ return _this;
1644
+ }
1645
+ return NodeDetailLoc;
1646
+ }(localizations.LocalizationService));
1647
+ NodeDetailLoc.decorators = [
1648
+ { type: core.Injectable }
1649
+ ];
1650
+ NodeDetailLoc.ctorParameters = function () { return [
1651
+ { type: String, decorators: [{ type: core.Inject, args: [ADM_LOCALE,] }] }
1652
+ ]; };
1653
+
1654
+ // Angular
1655
+ var NodeDetailComponent = /** @class */ (function () {
1656
+ function NodeDetailComponent(lc) {
1657
+ this.lc = lc;
1658
+ this.onClose = new core.EventEmitter();
1659
+ }
1660
+ NodeDetailComponent.prototype.ngOnInit = function () {
1661
+ var serie = new esCharts.LineSerie(this.lc.loc("Active Sessions"), this.NodeDetails.activesessions);
1662
+ this.NodeDetails.sessionchart = new esCharts.LineChartData([serie]);
1663
+ this.NodeDetails.loadchart = new esCharts.PieChartData([
1664
+ new esCharts.KeyValueColor("CPU", this.NodeDetails.cpuperc),
1665
+ new esCharts.KeyValueColor("Wait", this.NodeDetails.waitperc),
1666
+ new esCharts.KeyValueColor("DB", this.NodeDetails.dbperc),
1667
+ new esCharts.KeyValueColor("Script", this.NodeDetails.scriptperc),
1668
+ new esCharts.KeyValueColor("Throttle", this.NodeDetails.throttleperc),
1669
+ new esCharts.KeyValueColor("Sleep", this.NodeDetails.sleepperc),
1670
+ new esCharts.KeyValueColor("Networking", this.NodeDetails.networkperc),
1671
+ new esCharts.KeyValueColor("IO", this.NodeDetails.ioperc)
1672
+ ]);
1673
+ };
1674
+ NodeDetailComponent.prototype.closeDialog = function () {
1675
+ this.onClose.emit(true);
1676
+ };
1677
+ return NodeDetailComponent;
1678
+ }());
1679
+ NodeDetailComponent.decorators = [
1680
+ { type: core.Component, args: [{
1681
+ selector: "node-detail",
1682
+ viewProviders: [{ provide: localizations.LocalizationService, useClass: NodeDetailLoc }],
1683
+ 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\" [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>"
1684
+ },] }
1685
+ ];
1686
+ NodeDetailComponent.ctorParameters = function () { return [
1687
+ { type: localizations.LocalizationService }
1688
+ ]; };
1689
+ NodeDetailComponent.propDecorators = {
1690
+ NodeDetails: [{ type: core.Input }],
1691
+ onClose: [{ type: core.Output }]
1692
+ };
1693
+
1603
1694
  /** Chiave di questo modulo, da utilizzare per i messaggi */
1604
1695
  var MK_ADM = "EsAdminModule";
1605
1696
  (function (AdmMessageTypes) {
@@ -1679,7 +1770,8 @@
1679
1770
  AdmLogsComponent,
1680
1771
  AdmAuditsComponent,
1681
1772
  AdmEnqComponent,
1682
- AdmMetricsComponent
1773
+ AdmMetricsComponent,
1774
+ NodeDetailComponent
1683
1775
  ];
1684
1776
  var ɵ7 = myconfig.LOCALE, ɵ8 = myconfig.BACKEND_URL, ɵ9 = !!myconfig.TRANSACTIONS_TIMEOUT_S;
1685
1777
  var AdmModule = /** @class */ (function () {
@@ -1741,7 +1833,9 @@
1741
1833
  exports.ɵl = AdmAuditLoc;
1742
1834
  exports.ɵm = AdmEnqComponent;
1743
1835
  exports.ɵn = AdmEnqLoc;
1744
- exports.ɵo = AdminModuleCommService;
1836
+ exports.ɵo = NodeDetailComponent;
1837
+ exports.ɵp = NodeDetailLoc;
1838
+ exports.ɵq = AdminModuleCommService;
1745
1839
 
1746
1840
  Object.defineProperty(exports, '__esModule', { value: true });
1747
1841