@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
@@ -16,6 +16,7 @@ export const Repository = {
16
16
  GET_Adm_KillProcess: "/api/Adm/KillProcess",
17
17
  GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
18
18
  GET_Adm_StartWorker: "/api/Adm/StartWorker",
19
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
19
+ GET_Adm_StopWorker: "/api/Adm/StopWorker",
20
+ GET_Adm_GetNodeStats: "/api/Adm/GetNodeStats",
20
21
  };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL21vZGVscy9leHRlcm5hbHMvUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsa0NBQWtDLEVBQUUscUNBQXFDO0lBQ3pFLHNCQUFzQixFQUFFLHlCQUF5QjtJQUNqRCx5QkFBeUIsRUFBRSxrQ0FBa0M7SUFDN0QsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsNkJBQTZCLEVBQUUsK0JBQStCO0lBQzlELHdCQUF3QixFQUFFLDBCQUEwQjtJQUNwRCx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLHlCQUF5QixFQUFFLDJCQUEyQjtJQUN0RCx5QkFBeUIsRUFBRSwyQkFBMkI7SUFDdEQsdUJBQXVCLEVBQUUsMEJBQTBCO0lBQ25ELGlDQUFpQyxFQUFFLG9DQUFvQztJQUN2RSxtQkFBbUIsRUFBRSxzQkFBc0I7SUFDM0MseUJBQXlCLEVBQUUsNEJBQTRCO0lBQ3ZELG1CQUFtQixFQUFFLHNCQUFzQjtJQUMzQyxrQkFBa0IsRUFBRSxxQkFBcUI7Q0FDNUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSZXBvc2l0b3J5ID0ge1xyXG4gICAgR0VUX0FkbV9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cDogXCIvYXBpL0FkbS9DaGFuZ2VQcm9jZXNzQ29uc3VtZXJHcm91cFwiLFxyXG4gICAgR0VUX0FkbV9DbGVhckFsbENhY2hlczogXCIvYXBpL0FkbS9DbGVhckFsbENhY2hlc1wiLFxyXG4gICAgR0VUX0FkbV9HZXRDb25zdW1lckdyb3VwczogXCIvYXBpL0FkbS9HZXRDb25zdW1lckdyb3VwcyNjYWNoZVwiLFxyXG4gICAgR0VUX0FkbV9HZXRJbmZvczogXCIvYXBpL0FkbS9HZXRJbmZvc1wiLFxyXG4gICAgR0VUX0FkbV9HZXRNZXRyaWNzOiBcIi9hcGkvQWRtL0dldE1ldHJpY3NcIixcclxuICAgIFBPU1RfQWRtX0dldE1ldHJpY3M6IFwiL2FwaS9BZG0vR2V0TWV0cmljc1wiLFxyXG4gICAgUE9TVF9BZG1fR2V0UHJvZmlsZXJEYXRhTm9kZXM6IFwiL2FwaS9BZG0vR2V0UHJvZmlsZXJEYXRhTm9kZXNcIixcclxuICAgIFBPU1RfQWRtX0dldFNlcnZlckF1ZGl0czogXCIvYXBpL0FkbS9HZXRTZXJ2ZXJBdWRpdHNcIixcclxuICAgIFBPU1RfQWRtX0dldFNlcnZlckxvY2tzOiBcIi9hcGkvQWRtL0dldFNlcnZlckxvY2tzXCIsXHJcbiAgICBHRVRfQWRtX0dldFNlcnZlckxvZ3M6IFwiL2FwaS9BZG0vR2V0U2VydmVyTG9nc1wiLFxyXG4gICAgUE9TVF9BZG1fR2V0U2VydmVyV29ya2VyczogXCIvYXBpL0FkbS9HZXRTZXJ2ZXJXb3JrZXJzXCIsXHJcbiAgICBQT1NUX0FkbV9HZXRUb3BBY3Rpdml0aWVzOiBcIi9hcGkvQWRtL0dldFRvcEFjdGl2aXRpZXNcIixcclxuICAgIEdFVF9BZG1fR2V0V29ya2VyU3RhdHVzOiBcIi9hcGkvQWRtL0dldFdvcmtlclN0YXR1c1wiLFxyXG4gICAgR0VUX0FkbV9JbnZhbGlkYXRlU2VydmVyU2lkZUNhY2hlOiBcIi9hcGkvQWRtL0ludmFsaWRhdGVTZXJ2ZXJTaWRlQ2FjaGVcIixcclxuICAgIEdFVF9BZG1fS2lsbFByb2Nlc3M6IFwiL2FwaS9BZG0vS2lsbFByb2Nlc3NcIixcclxuICAgIEdFVF9BZG1fU2V0UHJvY2Vzc1RyYWNpbmc6IFwiL2FwaS9BZG0vU2V0UHJvY2Vzc1RyYWNpbmdcIixcclxuICAgIEdFVF9BZG1fU3RhcnRXb3JrZXI6IFwiL2FwaS9BZG0vU3RhcnRXb3JrZXJcIixcclxuICAgIEdFVF9BZG1fU3RvcFdvcmtlcjogXCIvYXBpL0FkbS9TdG9wV29ya2VyXCJcclxufSJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkbWluLW1vZHVsZS9zcmMvbGliL21vZGVscy9leHRlcm5hbHMvUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsa0NBQWtDLEVBQUUscUNBQXFDO0lBQ3pFLHNCQUFzQixFQUFFLHlCQUF5QjtJQUNqRCx5QkFBeUIsRUFBRSxrQ0FBa0M7SUFDN0QsZ0JBQWdCLEVBQUUsbUJBQW1CO0lBQ3JDLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QyxtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMsNkJBQTZCLEVBQUUsK0JBQStCO0lBQzlELHdCQUF3QixFQUFFLDBCQUEwQjtJQUNwRCx1QkFBdUIsRUFBRSx5QkFBeUI7SUFDbEQscUJBQXFCLEVBQUUsd0JBQXdCO0lBQy9DLHlCQUF5QixFQUFFLDJCQUEyQjtJQUN0RCx5QkFBeUIsRUFBRSwyQkFBMkI7SUFDdEQsdUJBQXVCLEVBQUUsMEJBQTBCO0lBQ25ELGlDQUFpQyxFQUFFLG9DQUFvQztJQUN2RSxtQkFBbUIsRUFBRSxzQkFBc0I7SUFDM0MseUJBQXlCLEVBQUUsNEJBQTRCO0lBQ3ZELG1CQUFtQixFQUFFLHNCQUFzQjtJQUMzQyxrQkFBa0IsRUFBRSxxQkFBcUI7SUFDekMsb0JBQW9CLEVBQUUsdUJBQXVCO0NBQ2hELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUmVwb3NpdG9yeSA9IHtcclxuICAgIEdFVF9BZG1fQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXA6IFwiL2FwaS9BZG0vQ2hhbmdlUHJvY2Vzc0NvbnN1bWVyR3JvdXBcIixcclxuICAgIEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXM6IFwiL2FwaS9BZG0vQ2xlYXJBbGxDYWNoZXNcIixcclxuICAgIEdFVF9BZG1fR2V0Q29uc3VtZXJHcm91cHM6IFwiL2FwaS9BZG0vR2V0Q29uc3VtZXJHcm91cHMjY2FjaGVcIixcclxuICAgIEdFVF9BZG1fR2V0SW5mb3M6IFwiL2FwaS9BZG0vR2V0SW5mb3NcIixcclxuICAgIEdFVF9BZG1fR2V0TWV0cmljczogXCIvYXBpL0FkbS9HZXRNZXRyaWNzXCIsXHJcbiAgICBQT1NUX0FkbV9HZXRNZXRyaWNzOiBcIi9hcGkvQWRtL0dldE1ldHJpY3NcIixcclxuICAgIFBPU1RfQWRtX0dldFByb2ZpbGVyRGF0YU5vZGVzOiBcIi9hcGkvQWRtL0dldFByb2ZpbGVyRGF0YU5vZGVzXCIsXHJcbiAgICBQT1NUX0FkbV9HZXRTZXJ2ZXJBdWRpdHM6IFwiL2FwaS9BZG0vR2V0U2VydmVyQXVkaXRzXCIsXHJcbiAgICBQT1NUX0FkbV9HZXRTZXJ2ZXJMb2NrczogXCIvYXBpL0FkbS9HZXRTZXJ2ZXJMb2Nrc1wiLFxyXG4gICAgR0VUX0FkbV9HZXRTZXJ2ZXJMb2dzOiBcIi9hcGkvQWRtL0dldFNlcnZlckxvZ3NcIixcclxuICAgIFBPU1RfQWRtX0dldFNlcnZlcldvcmtlcnM6IFwiL2FwaS9BZG0vR2V0U2VydmVyV29ya2Vyc1wiLFxyXG4gICAgUE9TVF9BZG1fR2V0VG9wQWN0aXZpdGllczogXCIvYXBpL0FkbS9HZXRUb3BBY3Rpdml0aWVzXCIsXHJcbiAgICBHRVRfQWRtX0dldFdvcmtlclN0YXR1czogXCIvYXBpL0FkbS9HZXRXb3JrZXJTdGF0dXNcIixcclxuICAgIEdFVF9BZG1fSW52YWxpZGF0ZVNlcnZlclNpZGVDYWNoZTogXCIvYXBpL0FkbS9JbnZhbGlkYXRlU2VydmVyU2lkZUNhY2hlXCIsXHJcbiAgICBHRVRfQWRtX0tpbGxQcm9jZXNzOiBcIi9hcGkvQWRtL0tpbGxQcm9jZXNzXCIsXHJcbiAgICBHRVRfQWRtX1NldFByb2Nlc3NUcmFjaW5nOiBcIi9hcGkvQWRtL1NldFByb2Nlc3NUcmFjaW5nXCIsXHJcbiAgICBHRVRfQWRtX1N0YXJ0V29ya2VyOiBcIi9hcGkvQWRtL1N0YXJ0V29ya2VyXCIsXHJcbiAgICBHRVRfQWRtX1N0b3BXb3JrZXI6IFwiL2FwaS9BZG0vU3RvcFdvcmtlclwiLFxyXG4gICAgR0VUX0FkbV9HZXROb2RlU3RhdHM6IFwiL2FwaS9BZG0vR2V0Tm9kZVN0YXRzXCIsXHJcbn0iXX0=
@@ -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, NgModule } from '@angular/core';
3
+ import { InjectionToken, Injectable, Inject, Component, ViewChild, EventEmitter, Input, Output, 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';
@@ -13,7 +13,7 @@ import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
13
13
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
14
14
  import { AppSearch, EsTableOperationDefinition, EsTableModule } from '@esfaenza/es-table';
15
15
  import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
16
- import { LineSerie, DateValue, LineChartData, Limit, EsChartsModule } from '@esfaenza/es-charts';
16
+ import { LineSerie, DateValue, LineChartData, Limit, PieChartData, KeyValueColor, EsChartsModule } from '@esfaenza/es-charts';
17
17
  import { EsGertrudeModule } from '@esfaenza/gertrude';
18
18
  import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
19
19
  import { ContextMenuModule } from '@esfaenza/ngx-contextmenu';
@@ -51,7 +51,8 @@ const Repository = {
51
51
  GET_Adm_KillProcess: "/api/Adm/KillProcess",
52
52
  GET_Adm_SetProcessTracing: "/api/Adm/SetProcessTracing",
53
53
  GET_Adm_StartWorker: "/api/Adm/StartWorker",
54
- GET_Adm_StopWorker: "/api/Adm/StopWorker"
54
+ GET_Adm_StopWorker: "/api/Adm/StopWorker",
55
+ GET_Adm_GetNodeStats: "/api/Adm/GetNodeStats",
55
56
  };
56
57
 
57
58
  const ADM_LOCALE = new InjectionToken('ADM_LOCALE');
@@ -403,7 +404,9 @@ const ProfilerDataNode_loc = {
403
404
  'Min. Time for Period': { 'en-US': "Min. Time for Period", 'it-IT': "Tempo Min Periodo" },
404
405
  'Avg. Time for Period': { 'en-US': "Avg. Time for Period", 'it-IT': "Tempo Medio Periodo" },
405
406
  'Specific Time for Period': { 'en-US': "Specific Time for Period", 'it-IT': "Tempo Specifico Periodo" },
406
- 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" }
407
+ 'Percentage for Period': { 'en-US': "Percentage for Period", 'it-IT': "Percentuale Periodo" },
408
+ 'Event Type Name': { 'en-US': "Event Type Name", 'it-IT': "Nome Tipologia Evento" },
409
+ 'Wait Class Name': { 'en-US': "Wait Class Name", 'it-IT': "Nome Classe Attesa" }
407
410
  };
408
411
 
409
412
  class ProfilerDataNode {
@@ -475,7 +478,15 @@ __decorate([
475
478
  __decorate([
476
479
  Export(170, ProfilerDataNode_loc["Percentage for Period"][Locale]),
477
480
  autoserialize
478
- ], ProfilerDataNode.prototype, "snappercentage", void 0);
481
+ ], ProfilerDataNode.prototype, "snappercentage", void 0);
482
+ __decorate([
483
+ Export(180, ProfilerDataNode_loc["Event Type Name"][Locale]),
484
+ autoserialize
485
+ ], ProfilerDataNode.prototype, "eventtypename", void 0);
486
+ __decorate([
487
+ Export(190, ProfilerDataNode_loc["Wait Class Name"][Locale]),
488
+ autoserialize
489
+ ], ProfilerDataNode.prototype, "waitclassname", void 0);
479
490
 
480
491
  class ProfilerDataNodesView extends AppSearch {
481
492
  constructor() { super(); }
@@ -502,6 +513,8 @@ class AdmProfilerComponentLoc extends LocalizationService {
502
513
  super.set("en->it", "Avg. Time for Period", ["Tempo Medio Periodo"]);
503
514
  super.set("en->it", "Specific Time for Period", ["Tempo Specifico Periodo"]);
504
515
  super.set("en->it", "Percentage for Period", ["Percentuale Periodo"]);
516
+ super.set("en->it", "Event Type Name", ["Nome Tipologia Evento"]);
517
+ super.set("en->it", "Wait Class Name", ["Nome Classe Attesa"]);
505
518
  }
506
519
  }
507
520
  AdmProfilerComponentLoc.decorators = [
@@ -583,12 +596,19 @@ class AdmProfilerComponent {
583
596
  dataCallBack(items);
584
597
  });
585
598
  }
599
+ loadNodeDetails(nodeId) {
600
+ this.NodeDetails = null;
601
+ let pars = new HttpParams().set('nodeId', nodeId);
602
+ this.http.get(this.backend + Repository.GET_Adm_GetNodeStats, pars).subscribe(t => {
603
+ this.NodeDetails = t;
604
+ });
605
+ }
586
606
  }
587
607
  AdmProfilerComponent.decorators = [
588
608
  { type: Component, args: [{
589
609
  selector: "adm_profiler",
590
610
  providers: [{ provide: LocalizationService, useClass: AdmProfilerComponentLoc }],
591
- 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>"
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\" (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>"
592
612
  },] }
593
613
  ];
594
614
  AdmProfilerComponent.ctorParameters = () => [
@@ -627,6 +647,7 @@ class AdmTopActivitieLoc extends LocalizationService {
627
647
  super.set("en->it", "second/s", ["secondo/i"]);
628
648
  super.set("en->it", "Maximum Threads", ["Thread Massimi"]);
629
649
  super.set("en->it", "CPUs", ["CPU"]);
650
+ super.set("en->it", "Wait Class Name", ["Nome Classe Attesa"]);
630
651
  }
631
652
  }
632
653
  AdmTopActivitieLoc.decorators = [
@@ -688,7 +709,7 @@ class AdmTopActivitiesComponent {
688
709
  init(HotPotato) {
689
710
  if (HotPotato) {
690
711
  this.searchView = HotPotato;
691
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], this.searchView, false);
712
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetTopActivities, this.searchView, false);
692
713
  }
693
714
  else {
694
715
  this.searchView = new TopActivitiesDataView();
@@ -703,7 +724,7 @@ class AdmTopActivitiesComponent {
703
724
  this.searchView.searchinprogress = true;
704
725
  if (resetPage)
705
726
  this.searchView.page = 1;
706
- this.POSTGetItems(this.backend + Repository["POST_Adm_GetTopActivities"], searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
727
+ this.POSTGetItems(this.backend + Repository.POST_Adm_GetTopActivities, searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView, update);
707
728
  }
708
729
  POSTGetItems(url, data, update) {
709
730
  this.http.post(url, data).subscribe((t) => __awaiter(this, void 0, void 0, function* () {
@@ -718,7 +739,14 @@ class AdmTopActivitiesComponent {
718
739
  }));
719
740
  }
720
741
  getDirectorInfos() {
721
- return this.http.get(this.backend + Repository["GET_Adm_GetInfos"]).pipe(map(res => { return res; })).toPromise();
742
+ return this.http.get(this.backend + Repository.GET_Adm_GetInfos).pipe(map(res => { return res; })).toPromise();
743
+ }
744
+ loadNodeDetails(nodeId) {
745
+ this.NodeDetails = null;
746
+ let pars = new HttpParams().set('nodeId', nodeId);
747
+ this.http.get(this.backend + Repository.GET_Adm_GetNodeStats, pars).subscribe(t => {
748
+ this.NodeDetails = t;
749
+ });
722
750
  }
723
751
  reviewBindings(update, searchViewOverride, dirInfos) {
724
752
  let reference = (searchViewOverride !== null && searchViewOverride !== void 0 ? searchViewOverride : this.searchView).items[0];
@@ -795,7 +823,7 @@ AdmTopActivitiesComponent.decorators = [
795
823
  providers: [
796
824
  { provide: LocalizationService, useClass: AdmTopActivitieLoc }
797
825
  ],
798
- 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>"
826
+ 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>"
799
827
  },] }
800
828
  ];
801
829
  AdmTopActivitiesComponent.ctorParameters = () => [
@@ -1139,6 +1167,63 @@ AdmLogsComponent.ctorParameters = () => [
1139
1167
  { type: String, decorators: [{ type: Inject, args: [ADM_BACKEND_URL,] }] }
1140
1168
  ];
1141
1169
 
1170
+ class NodeDetailLoc extends LocalizationService {
1171
+ constructor(LOC_LOCALE) {
1172
+ super(LOC_LOCALE);
1173
+ super.set("en->it", "Active Sessions", ["Sessioni Attive"]);
1174
+ super.set("en->it", "Activity Node Details", ["Dettaglio Attività Nodo"]);
1175
+ super.set("en->it", "Event Type", ["Tipo Evento"]);
1176
+ super.set("en->it", "Elapsed (With Children)", ["Tempo Trascorso (Con Figli)"]);
1177
+ super.set("en->it", "Wait Class", ["Classe Attesa"]);
1178
+ super.set("en->it", "Elapsed (No Children)", ["Tempo Trascorso (Non Figli)"]);
1179
+ }
1180
+ }
1181
+ NodeDetailLoc.decorators = [
1182
+ { type: Injectable }
1183
+ ];
1184
+ NodeDetailLoc.ctorParameters = () => [
1185
+ { type: String, decorators: [{ type: Inject, args: [ADM_LOCALE,] }] }
1186
+ ];
1187
+
1188
+ // Angular
1189
+ class NodeDetailComponent {
1190
+ constructor(lc) {
1191
+ this.lc = lc;
1192
+ this.onClose = new EventEmitter();
1193
+ }
1194
+ ngOnInit() {
1195
+ let serie = new LineSerie(this.lc.loc("Active Sessions"), this.NodeDetails.activesessions);
1196
+ this.NodeDetails.sessionchart = new LineChartData([serie]);
1197
+ this.NodeDetails.loadchart = new PieChartData([
1198
+ new KeyValueColor("CPU", this.NodeDetails.cpuperc),
1199
+ new KeyValueColor("Wait", this.NodeDetails.waitperc),
1200
+ new KeyValueColor("DB", this.NodeDetails.dbperc),
1201
+ new KeyValueColor("Script", this.NodeDetails.scriptperc),
1202
+ new KeyValueColor("Throttle", this.NodeDetails.throttleperc),
1203
+ new KeyValueColor("Sleep", this.NodeDetails.sleepperc),
1204
+ new KeyValueColor("Networking", this.NodeDetails.networkperc),
1205
+ new KeyValueColor("IO", this.NodeDetails.ioperc)
1206
+ ]);
1207
+ }
1208
+ closeDialog() {
1209
+ this.onClose.emit(true);
1210
+ }
1211
+ }
1212
+ NodeDetailComponent.decorators = [
1213
+ { type: Component, args: [{
1214
+ selector: "node-detail",
1215
+ 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\" [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
+ },] }
1218
+ ];
1219
+ NodeDetailComponent.ctorParameters = () => [
1220
+ { type: LocalizationService }
1221
+ ];
1222
+ NodeDetailComponent.propDecorators = {
1223
+ NodeDetails: [{ type: Input }],
1224
+ onClose: [{ type: Output }]
1225
+ };
1226
+
1142
1227
  /** Chiave di questo modulo, da utilizzare per i messaggi */
1143
1228
  const MK_ADM = "EsAdminModule";
1144
1229
  /** Messaggi gestiti da questo modulo */
@@ -1219,7 +1304,8 @@ const COMPONENTS = [
1219
1304
  AdmLogsComponent,
1220
1305
  AdmAuditsComponent,
1221
1306
  AdmEnqComponent,
1222
- AdmMetricsComponent
1307
+ AdmMetricsComponent,
1308
+ NodeDetailComponent
1223
1309
  ];
1224
1310
  const ɵ7 = myconfig.LOCALE, ɵ8 = myconfig.BACKEND_URL, ɵ9 = !!myconfig.TRANSACTIONS_TIMEOUT_S;
1225
1311
  class AdmModule {
@@ -1249,5 +1335,5 @@ AdmModule.ctorParameters = () => [
1249
1335
  * Generated bundle index. Do not edit.
1250
1336
  */
1251
1337
 
1252
- 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, AdminModuleCommService as ɵo };
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 };
1253
1339
  //# sourceMappingURL=esfaenza-admin-module.js.map