ng-jhipster
Version:
A Jhipster util library for Angular
117 lines (113 loc) • 13.6 kB
JavaScript
/*
Copyright 2013-2020 the original author or authors from the JHipster project.
This file is part of the JHipster project, see https://www.jhipster.tech/
for more information.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { Component, Input } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { JhiThreadModalComponent } from './jhi-metrics-modal-threads.component';
export class JhiJvmThreadsComponent {
constructor(modalService) {
this.modalService = modalService;
}
ngOnInit() {
this.threadStats = {
threadDumpRunnable: 0,
threadDumpWaiting: 0,
threadDumpTimedWaiting: 0,
threadDumpBlocked: 0,
threadDumpAll: 0
};
this.threadData.forEach(value => {
if (value.threadState === 'RUNNABLE') {
this.threadStats.threadDumpRunnable += 1;
}
else if (value.threadState === 'WAITING') {
this.threadStats.threadDumpWaiting += 1;
}
else if (value.threadState === 'TIMED_WAITING') {
this.threadStats.threadDumpTimedWaiting += 1;
}
else if (value.threadState === 'BLOCKED') {
this.threadStats.threadDumpBlocked += 1;
}
});
this.threadStats.threadDumpAll =
this.threadStats.threadDumpRunnable +
this.threadStats.threadDumpWaiting +
this.threadStats.threadDumpTimedWaiting +
this.threadStats.threadDumpBlocked;
}
open() {
const modalRef = this.modalService.open(JhiThreadModalComponent);
modalRef.componentInstance.threadDump = this.threadData;
}
}
JhiJvmThreadsComponent.decorators = [
{ type: Component, args: [{
selector: 'jhi-jvm-threads',
template: `
<h4 jhiTranslate="metrics.jvm.threads.title">Threads</h4>
<span><span jhiTranslate="metrics.jvm.threads.runnable">Runnable</span> {{ threadStats.threadDumpRunnable }}</span>
<ngb-progressbar
[value]="threadStats.threadDumpRunnable"
[max]="threadStats.threadDumpAll"
[striped]="true"
[animated]="false"
type="success"
>
<span>{{ (threadStats.threadDumpRunnable * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>
</ngb-progressbar>
<span><span jhiTranslate="metrics.jvm.threads.timedwaiting">Timed Waiting</span> ({{ threadStats.threadDumpTimedWaiting }})</span>
<ngb-progressbar
[value]="threadStats.threadDumpTimedWaiting"
[max]="threadStats.threadDumpAll"
[striped]="true"
[animated]="false"
type="warning"
>
<span>{{ (threadStats.threadDumpTimedWaiting * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>
</ngb-progressbar>
<span><span jhiTranslate="metrics.jvm.threads.waiting">Waiting</span> ({{ threadStats.threadDumpWaiting }})</span>
<ngb-progressbar
[value]="threadStats.threadDumpWaiting"
[max]="threadStats.threadDumpAll"
[striped]="true"
[animated]="false"
type="warning"
>
<span>{{ (threadStats.threadDumpWaiting * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>
</ngb-progressbar>
<span><span jhiTranslate="metrics.jvm.threads.blocked">Blocked</span> ({{ threadStats.threadDumpBlocked }})</span>
<ngb-progressbar
[value]="threadStats.threadDumpBlocked"
[max]="threadStats.threadDumpAll"
[striped]="true"
[animated]="false"
type="success"
>
<span>{{ (threadStats.threadDumpBlocked * 100) / threadStats.threadDumpAll | number: '1.0-0' }}%</span>
</ngb-progressbar>
<div>Total: {{ threadStats.threadDumpAll }}</div>
<button class="hand btn btn-primary btn-sm" (click)="open()" data-toggle="modal" data-target="#threadDump">
<span>Expand</span>
</button>
`
},] }
];
JhiJvmThreadsComponent.ctorParameters = () => [
{ type: NgbModal }
];
JhiJvmThreadsComponent.propDecorators = {
threadData: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamhpLWp2bS10aHJlYWRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvbWV0cmljcy9qaGktanZtLXRocmVhZHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQW9EaEYsTUFBTSxPQUFPLHNCQUFzQjtJQWMvQixZQUFvQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFHLENBQUM7SUFFOUMsUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixrQkFBa0IsRUFBRSxDQUFDO1lBQ3JCLGlCQUFpQixFQUFFLENBQUM7WUFDcEIsc0JBQXNCLEVBQUUsQ0FBQztZQUN6QixpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLGFBQWEsRUFBRSxDQUFDO1NBQ25CLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1QixJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQzthQUM1QztpQkFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQzthQUMzQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssZUFBZSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixJQUFJLENBQUMsQ0FBQzthQUNoRDtpQkFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCO2dCQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtnQkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0I7Z0JBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUk7UUFDQSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2pFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM1RCxDQUFDOzs7WUFqR0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQThDVDthQUNKOzs7WUFyRFEsUUFBUTs7O3lCQWtFWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiBDb3B5cmlnaHQgMjAxMy0yMDIwIHRoZSBvcmlnaW5hbCBhdXRob3Igb3IgYXV0aG9ycyBmcm9tIHRoZSBKSGlwc3RlciBwcm9qZWN0LlxuXG4gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEpIaXBzdGVyIHByb2plY3QsIHNlZSBodHRwczovL3d3dy5qaGlwc3Rlci50ZWNoL1xuIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbmltcG9ydCB7IEpoaVRocmVhZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9qaGktbWV0cmljcy1tb2RhbC10aHJlYWRzLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnamhpLWp2bS10aHJlYWRzJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8aDQgamhpVHJhbnNsYXRlPVwibWV0cmljcy5qdm0udGhyZWFkcy50aXRsZVwiPlRocmVhZHM8L2g0PlxuICAgICAgICA8c3Bhbj48c3BhbiBqaGlUcmFuc2xhdGU9XCJtZXRyaWNzLmp2bS50aHJlYWRzLnJ1bm5hYmxlXCI+UnVubmFibGU8L3NwYW4+IHt7IHRocmVhZFN0YXRzLnRocmVhZER1bXBSdW5uYWJsZSB9fTwvc3Bhbj5cbiAgICAgICAgPG5nYi1wcm9ncmVzc2JhclxuICAgICAgICAgICAgW3ZhbHVlXT1cInRocmVhZFN0YXRzLnRocmVhZER1bXBSdW5uYWJsZVwiXG4gICAgICAgICAgICBbbWF4XT1cInRocmVhZFN0YXRzLnRocmVhZER1bXBBbGxcIlxuICAgICAgICAgICAgW3N0cmlwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYW5pbWF0ZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyAodGhyZWFkU3RhdHMudGhyZWFkRHVtcFJ1bm5hYmxlICogMTAwKSAvIHRocmVhZFN0YXRzLnRocmVhZER1bXBBbGwgfCBudW1iZXI6ICcxLjAtMCcgfX0lPC9zcGFuPlxuICAgICAgICA8L25nYi1wcm9ncmVzc2Jhcj5cbiAgICAgICAgPHNwYW4+PHNwYW4gamhpVHJhbnNsYXRlPVwibWV0cmljcy5qdm0udGhyZWFkcy50aW1lZHdhaXRpbmdcIj5UaW1lZCBXYWl0aW5nPC9zcGFuPiAoe3sgdGhyZWFkU3RhdHMudGhyZWFkRHVtcFRpbWVkV2FpdGluZyB9fSk8L3NwYW4+XG4gICAgICAgIDxuZ2ItcHJvZ3Jlc3NiYXJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0aHJlYWRTdGF0cy50aHJlYWREdW1wVGltZWRXYWl0aW5nXCJcbiAgICAgICAgICAgIFttYXhdPVwidGhyZWFkU3RhdHMudGhyZWFkRHVtcEFsbFwiXG4gICAgICAgICAgICBbc3RyaXBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthbmltYXRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICB0eXBlPVwid2FybmluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7ICh0aHJlYWRTdGF0cy50aHJlYWREdW1wVGltZWRXYWl0aW5nICogMTAwKSAvIHRocmVhZFN0YXRzLnRocmVhZER1bXBBbGwgfCBudW1iZXI6ICcxLjAtMCcgfX0lPC9zcGFuPlxuICAgICAgICA8L25nYi1wcm9ncmVzc2Jhcj5cbiAgICAgICAgPHNwYW4+PHNwYW4gamhpVHJhbnNsYXRlPVwibWV0cmljcy5qdm0udGhyZWFkcy53YWl0aW5nXCI+V2FpdGluZzwvc3Bhbj4gKHt7IHRocmVhZFN0YXRzLnRocmVhZER1bXBXYWl0aW5nIH19KTwvc3Bhbj5cbiAgICAgICAgPG5nYi1wcm9ncmVzc2JhclxuICAgICAgICAgICAgW3ZhbHVlXT1cInRocmVhZFN0YXRzLnRocmVhZER1bXBXYWl0aW5nXCJcbiAgICAgICAgICAgIFttYXhdPVwidGhyZWFkU3RhdHMudGhyZWFkRHVtcEFsbFwiXG4gICAgICAgICAgICBbc3RyaXBlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFthbmltYXRlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICB0eXBlPVwid2FybmluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7ICh0aHJlYWRTdGF0cy50aHJlYWREdW1wV2FpdGluZyAqIDEwMCkgLyB0aHJlYWRTdGF0cy50aHJlYWREdW1wQWxsIHwgbnVtYmVyOiAnMS4wLTAnIH19JTwvc3Bhbj5cbiAgICAgICAgPC9uZ2ItcHJvZ3Jlc3NiYXI+XG4gICAgICAgIDxzcGFuPjxzcGFuIGpoaVRyYW5zbGF0ZT1cIm1ldHJpY3MuanZtLnRocmVhZHMuYmxvY2tlZFwiPkJsb2NrZWQ8L3NwYW4+ICh7eyB0aHJlYWRTdGF0cy50aHJlYWREdW1wQmxvY2tlZCB9fSk8L3NwYW4+XG4gICAgICAgIDxuZ2ItcHJvZ3Jlc3NiYXJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ0aHJlYWRTdGF0cy50aHJlYWREdW1wQmxvY2tlZFwiXG4gICAgICAgICAgICBbbWF4XT1cInRocmVhZFN0YXRzLnRocmVhZER1bXBBbGxcIlxuICAgICAgICAgICAgW3N0cmlwZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYW5pbWF0ZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyAodGhyZWFkU3RhdHMudGhyZWFkRHVtcEJsb2NrZWQgKiAxMDApIC8gdGhyZWFkU3RhdHMudGhyZWFkRHVtcEFsbCB8IG51bWJlcjogJzEuMC0wJyB9fSU8L3NwYW4+XG4gICAgICAgIDwvbmdiLXByb2dyZXNzYmFyPlxuICAgICAgICA8ZGl2PlRvdGFsOiB7eyB0aHJlYWRTdGF0cy50aHJlYWREdW1wQWxsIH19PC9kaXY+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJoYW5kIGJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwib3BlbigpXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3RocmVhZER1bXBcIj5cbiAgICAgICAgICAgIDxzcGFuPkV4cGFuZDwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBKaGlKdm1UaHJlYWRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICB0aHJlYWRTdGF0czoge1xuICAgICAgICB0aHJlYWREdW1wQWxsOiBudW1iZXI7XG4gICAgICAgIHRocmVhZER1bXBSdW5uYWJsZTogbnVtYmVyO1xuICAgICAgICB0aHJlYWREdW1wVGltZWRXYWl0aW5nOiBudW1iZXI7XG4gICAgICAgIHRocmVhZER1bXBXYWl0aW5nOiBudW1iZXI7XG4gICAgICAgIHRocmVhZER1bXBCbG9ja2VkOiBudW1iZXI7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIG9iamVjdCBjb250YWluaW5nIHRocmVhZCByZWxhdGVkIG1ldHJpY3NcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHJlYWREYXRhOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50aHJlYWRTdGF0cyA9IHtcbiAgICAgICAgICAgIHRocmVhZER1bXBSdW5uYWJsZTogMCxcbiAgICAgICAgICAgIHRocmVhZER1bXBXYWl0aW5nOiAwLFxuICAgICAgICAgICAgdGhyZWFkRHVtcFRpbWVkV2FpdGluZzogMCxcbiAgICAgICAgICAgIHRocmVhZER1bXBCbG9ja2VkOiAwLFxuICAgICAgICAgICAgdGhyZWFkRHVtcEFsbDogMFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMudGhyZWFkRGF0YS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS50aHJlYWRTdGF0ZSA9PT0gJ1JVTk5BQkxFJykge1xuICAgICAgICAgICAgICAgIHRoaXMudGhyZWFkU3RhdHMudGhyZWFkRHVtcFJ1bm5hYmxlICs9IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnRocmVhZFN0YXRlID09PSAnV0FJVElORycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRocmVhZFN0YXRzLnRocmVhZER1bXBXYWl0aW5nICs9IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLnRocmVhZFN0YXRlID09PSAnVElNRURfV0FJVElORycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRocmVhZFN0YXRzLnRocmVhZER1bXBUaW1lZFdhaXRpbmcgKz0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUudGhyZWFkU3RhdGUgPT09ICdCTE9DS0VEJykge1xuICAgICAgICAgICAgICAgIHRoaXMudGhyZWFkU3RhdHMudGhyZWFkRHVtcEJsb2NrZWQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy50aHJlYWRTdGF0cy50aHJlYWREdW1wQWxsID1cbiAgICAgICAgICAgIHRoaXMudGhyZWFkU3RhdHMudGhyZWFkRHVtcFJ1bm5hYmxlICtcbiAgICAgICAgICAgIHRoaXMudGhyZWFkU3RhdHMudGhyZWFkRHVtcFdhaXRpbmcgK1xuICAgICAgICAgICAgdGhpcy50aHJlYWRTdGF0cy50aHJlYWREdW1wVGltZWRXYWl0aW5nICtcbiAgICAgICAgICAgIHRoaXMudGhyZWFkU3RhdHMudGhyZWFkRHVtcEJsb2NrZWQ7XG4gICAgfVxuXG4gICAgb3BlbigpIHtcbiAgICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEpoaVRocmVhZE1vZGFsQ29tcG9uZW50KTtcbiAgICAgICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGhyZWFkRHVtcCA9IHRoaXMudGhyZWFkRGF0YTtcbiAgICB9XG59XG4iXX0=