1 line
74 KiB
JSON
1 line
74 KiB
JSON
{"remainingRequest":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js??ref--4-2!/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js??ref--4-3!/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/metrics/metrics.tsx","dependencies":[{"path":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/metrics/metrics.tsx","mtime":1533613272709},{"path":"/var/www/html/payroll_manager/front-end/node_modules/react-hot-loader/webpack.js","mtime":1505850161000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/cache-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/thread-loader/dist/cjs.js","mtime":0},{"path":"/var/www/html/payroll_manager/front-end/node_modules/ts-loader/index.js","mtime":1530127508000},{"path":"/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js","mtime":1519899048000}],"contextDependencies":[],"result":["import * as tslib_1 from \"tslib\";\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport { Table, Progress, Col, Row, Button } from 'reactstrap';\nimport { TextFormat } from 'react-jhipster';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { APP_WHOLE_NUMBER_FORMAT, APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT } from 'app/config/constants';\nimport { systemMetrics, systemThreadDump } from '../administration.reducer';\nimport MetricsModal from './metrics-modal';\nvar MetricsPage = /** @class */ (function (_super) {\n tslib_1.__extends(MetricsPage, _super);\n function MetricsPage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n showModal: false\n };\n _this.getMetrics = function () {\n if (!_this.props.isFetching) {\n _this.props.systemMetrics();\n }\n };\n _this.getThreadDump = function () {\n _this.props.systemThreadDump();\n _this.setState({\n showModal: true\n });\n };\n _this.handleClose = function () {\n _this.setState({\n showModal: false\n });\n };\n _this.filterNaN = function (input) { return (isNaN(input) ? 0 : input); };\n _this.getStats = function (metrics) {\n var stat = {\n servicesStats: {},\n cachesStats: {}\n };\n if (!_this.props.isFetching && metrics && metrics.timers) {\n Object.keys(metrics.timers).forEach(function (key, indexNm) {\n if (key.indexOf('web.rest') !== -1 || key.indexOf('service') !== -1) {\n stat.servicesStats[key] = metrics.timers[key];\n }\n if (key.indexOf('net.sf.ehcache.Cache') !== -1) {\n // remove gets or puts\n var index = key.lastIndexOf('.');\n var newKey = key.substr(0, index);\n // Keep the name of the domain\n stat.cachesStats[newKey] = {\n name: newKey,\n value: metrics.timers[key]\n };\n }\n });\n }\n return stat;\n };\n _this.gaugeRow = function (metrics, label, key) {\n return metrics.gauges[key] ? (React.createElement(Row, null,\n React.createElement(Col, { md: \"9\" }, label),\n React.createElement(Col, { md: \"3\", className: \"text-right\" }, metrics.gauges[key].value))) : null;\n };\n _this.renderModal = function () { return React.createElement(MetricsModal, { handleClose: _this.handleClose, showModal: _this.state.showModal, threadDump: _this.props.threadDump }); };\n _this.renderGauges = function (metrics) { return (React.createElement(Row, null,\n React.createElement(Col, { sm: \"12\" },\n React.createElement(\"h3\", null, \"JVM Metrics\"),\n React.createElement(Row, null,\n React.createElement(Col, { md: \"4\" },\n React.createElement(\"b\", null, \"Memory\"),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Total Memory\"),\n \" (\",\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.total.used'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M /\",\n ' ',\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.total.max'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M)\"),\n React.createElement(Progress, { animated: true, value: metrics.gauges['jvm.memory.total.used'].value, min: \"0\", max: metrics.gauges['jvm.memory.total.max'].value, color: \"success\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.memory.total.used'].value * 100) / metrics.gauges['jvm.memory.total.max'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\")),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Heap Memory\"),\n \" (\",\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.heap.used'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M /\",\n ' ',\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.heap.max'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M)\"),\n React.createElement(Progress, { animated: true, min: \"0\", max: metrics.gauges['jvm.memory.heap.max'].value, value: metrics.gauges['jvm.memory.heap.used'].value, color: \"success\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.memory.heap.used'].value * 100) / metrics.gauges['jvm.memory.heap.max'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\")),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Non-Heap Memory\"),\n \" (\",\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.non-heap.used'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M /\",\n ' ',\n React.createElement(TextFormat, { value: metrics.gauges['jvm.memory.non-heap.committed'].value / 1048576, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"M)\"),\n React.createElement(Progress, { animated: true, min: \"0\", max: metrics.gauges['jvm.memory.non-heap.committed'].value, value: metrics.gauges['jvm.memory.non-heap.used'].value, color: \"success\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.memory.non-heap.used'].value * 100) / metrics.gauges['jvm.memory.non-heap.committed'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\"))),\n React.createElement(Col, { md: \"4\" },\n React.createElement(\"b\", null, \"Threads\"),\n \" (Total: \",\n metrics.gauges['jvm.threads.count'].value,\n \")\",\n ' ',\n React.createElement(Button, { color: \"link\", className: \"hand\", onClick: _this.getThreadDump },\n React.createElement(FontAwesomeIcon, { icon: \"eye\" })),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Runnable\"),\n \" \",\n metrics.gauges['jvm.threads.runnable.count'].value),\n React.createElement(Progress, { animated: true, min: \"0\", value: metrics.gauges['jvm.threads.runnable.count'].value, max: metrics.gauges['jvm.threads.count'].value, color: \"success\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.threads.runnable.count'].value * 100) / metrics.gauges['jvm.threads.count'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\")),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Timed Waiting\"),\n \" (\",\n metrics.gauges['jvm.threads.timed_waiting.count'].value,\n \")\"),\n React.createElement(Progress, { animated: true, min: \"0\", value: metrics.gauges['jvm.threads.timed_waiting.count'].value, max: metrics.gauges['jvm.threads.count'].value, color: \"warning\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.threads.timed_waiting.count'].value * 100) / metrics.gauges['jvm.threads.count'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\")),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Waiting\"),\n \" (\",\n metrics.gauges['jvm.threads.waiting.count'].value,\n \")\"),\n React.createElement(Progress, { animated: true, min: \"0\", value: metrics.gauges['jvm.threads.waiting.count'].value, max: metrics.gauges['jvm.threads.count'].value, color: \"warning\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.threads.waiting.count'].value * 100) / metrics.gauges['jvm.threads.count'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\")),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Blocked\"),\n \" (\",\n metrics.gauges['jvm.threads.blocked.count'].value,\n \")\"),\n React.createElement(Progress, { animated: true, min: \"0\", value: metrics.gauges['jvm.threads.blocked.count'].value, max: metrics.gauges['jvm.threads.count'].value, color: \"success\" },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['jvm.threads.blocked.count'].value * 100) / metrics.gauges['jvm.threads.count'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\"))),\n React.createElement(Col, { md: \"4\" },\n React.createElement(\"b\", null, \"Garbage collections\"),\n _this.gaugeRow(metrics, 'Mark Sweep count', 'jvm.garbage.PS-MarkSweep.count'),\n _this.gaugeRow(metrics, 'Mark Sweep time', 'jvm.garbage.PS-MarkSweep.time'),\n _this.gaugeRow(metrics, 'Scavenge count', 'jvm.garbage.PS-Scavenge.count'),\n _this.gaugeRow(metrics, 'Scavenge time', 'jvm.garbage.PS-Scavenge.time')))))); };\n return _this;\n }\n MetricsPage.prototype.componentDidMount = function () {\n this.props.systemMetrics();\n };\n MetricsPage.prototype.render = function () {\n var _a = this.props, metrics = _a.metrics, isFetching = _a.isFetching;\n var data = metrics || {};\n var _b = this.getStats(data), servicesStats = _b.servicesStats, cachesStats = _b.cachesStats;\n return (React.createElement(\"div\", null,\n React.createElement(\"h2\", { className: \"metrics-page-heading\" }, \"Application Metrics\"),\n React.createElement(\"p\", null,\n React.createElement(Button, { onClick: this.getMetrics, color: isFetching ? 'btn btn-danger' : 'btn btn-primary', disabled: isFetching },\n React.createElement(FontAwesomeIcon, { icon: \"sync\" }),\n \"\\u00A0 Refresh\")),\n React.createElement(\"hr\", null),\n metrics.gauges ? this.renderGauges(metrics) : '',\n metrics.meters && metrics.timers ? (React.createElement(Row, null,\n React.createElement(Col, { sm: \"12\" },\n React.createElement(\"h3\", null, \"HTTP requests (events per second)\"),\n React.createElement(\"p\", null,\n React.createElement(\"span\", null, \"Active requests:\"),\n ' ',\n React.createElement(\"b\", null,\n React.createElement(TextFormat, { value: metrics.counters['com.codahale.metrics.servlet.InstrumentedFilter.activeRequests'].count, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n ' ',\n \"- \",\n React.createElement(\"span\", null, \"Total requests:\"),\n ' ',\n React.createElement(\"b\", null,\n React.createElement(TextFormat, { value: metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }))),\n React.createElement(Table, null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", null, \"Code\"),\n React.createElement(\"th\", null, \"Count\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"Mean\"),\n React.createElement(\"th\", { className: \"text-right\" },\n React.createElement(\"span\", null, \"Average\"),\n \" (1 min)\"),\n React.createElement(\"th\", { className: \"text-right\" },\n React.createElement(\"span\", null, \"Average\"),\n \" (5 min)\"),\n React.createElement(\"th\", { className: \"text-right\" },\n React.createElement(\"span\", null, \"Average\"),\n \" (15 min)\"))),\n React.createElement(\"tbody\", null,\n React.createElement(\"tr\", { key: 0 },\n React.createElement(\"td\", null, \"OK\"),\n React.createElement(\"td\", null,\n React.createElement(Progress, { min: \"0\", max: metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count, value: metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].count, color: \"success\", animated: true })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].mean_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m1_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m5_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m15_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT }))),\n React.createElement(\"tr\", { key: 1 },\n React.createElement(\"td\", null, \"Not Found\"),\n React.createElement(\"td\", null,\n React.createElement(Progress, { min: \"0\", max: metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count, value: metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].count, color: \"success\", animated: true })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].mean_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m1_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m5_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m15_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT }))),\n React.createElement(\"tr\", { key: 2 },\n React.createElement(\"td\", null, \"Server Error\"),\n React.createElement(\"td\", null,\n React.createElement(Progress, { min: \"0\", max: metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count, value: metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].count, color: \"success\", animated: true })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].mean_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m1_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m5_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m15_rate), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })))))))) : (''),\n servicesStats ? (React.createElement(Row, null,\n React.createElement(Col, { sm: \"12\" },\n React.createElement(\"h3\", null, \"Services statistics (time in millisecond)\")),\n React.createElement(Table, null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", null, \"Service name\"),\n React.createElement(\"th\", null, \"Count\"),\n React.createElement(\"th\", null, \"Mean\"),\n React.createElement(\"th\", null, \"Min\"),\n React.createElement(\"th\", null, \"p50\"),\n React.createElement(\"th\", null, \"p75\"),\n React.createElement(\"th\", null, \"p95\"),\n React.createElement(\"th\", null, \"p99\"),\n React.createElement(\"th\", null, \"Max\"))),\n React.createElement(\"tbody\", null, Object.keys(servicesStats).map(function (key, index) { return (React.createElement(\"tr\", { key: key },\n React.createElement(\"td\", null, key),\n React.createElement(\"td\", null, servicesStats[key].count),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].mean * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].min * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].p50 * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].p75 * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].p95 * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].p99 * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })),\n React.createElement(\"td\", null,\n React.createElement(TextFormat, { value: servicesStats[key].max * 1024, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT })))); }))))) : (''),\n cachesStats ? (React.createElement(Row, null,\n React.createElement(Col, { sm: \"12\" },\n React.createElement(\"h3\", null, \"Ehcache statistics\"),\n React.createElement(Table, null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", null, \"Cache Name\"),\n React.createElement(\"th\", null, \"Object\"),\n React.createElement(\"th\", null, \"Misses\"),\n React.createElement(\"th\", null, \"Eviction Count\"))),\n React.createElement(\"tbody\", null, Object.keys(cachesStats).map(function (k, v) { return (React.createElement(\"tr\", { key: k },\n React.createElement(\"td\", null, k),\n React.createElement(\"td\", null, metrics.gauges[k + \".objects\"].value),\n React.createElement(\"td\", null, metrics.gauges[k + \".hits\"].value),\n React.createElement(\"td\", null, metrics.gauges[k + \".misses\"].value),\n React.createElement(\"td\", null, metrics.gauges[k + \".eviction-count\"].value))); })))))) : (''),\n metrics.gauges &&\n metrics.gauges['HikariPool-1.pool.TotalConnections'] &&\n metrics.gauges['HikariPool-1.pool.TotalConnections'].value > 0 ? (React.createElement(Row, null,\n React.createElement(Col, { sm: \"12\" },\n React.createElement(\"h3\", null, \"DataSource statistics (time in millisecond)\"),\n React.createElement(Table, null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", null,\n React.createElement(\"span\", null, \"Usage\"),\n \"(\",\n metrics.gauges['HikariPool-1.pool.ActiveConnections'].value,\n \" /\",\n ' ',\n metrics.gauges['HikariPool-1.pool.TotalConnections'].value,\n \")\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"Count\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"Mean\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"Min\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"p50\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"p75\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"p95\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"p99\"),\n React.createElement(\"th\", { className: \"text-right\" }, \"Max\"))),\n React.createElement(\"tbody\", null,\n React.createElement(\"tr\", { key: \"DB\" },\n React.createElement(\"td\", null,\n React.createElement(Progress, { min: \"0\", max: metrics.gauges['HikariPool-1.pool.TotalConnections'].value, value: metrics.gauges['HikariPool-1.pool.ActiveConnections'].value },\n React.createElement(\"span\", null,\n React.createElement(TextFormat, { value: (metrics.gauges['HikariPool-1.pool.ActiveConnections'].value * 100) /\n metrics.gauges['HikariPool-1.pool.TotalConnections'].value, type: \"number\", format: APP_WHOLE_NUMBER_FORMAT }),\n \"%\"))),\n React.createElement(\"td\", { className: \"text-right\" }, metrics.histograms['HikariPool-1.pool.Usage'].count),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].mean), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].min), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p50), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p75), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p95), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p99), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })),\n React.createElement(\"td\", { className: \"text-right\" },\n React.createElement(TextFormat, { value: this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].max), type: \"number\", format: APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT })))))))) : (''),\n this.renderModal()));\n };\n return MetricsPage;\n}(React.Component));\nexport { MetricsPage };\nvar mapStateToProps = function (storeState) { return ({\n metrics: storeState.administration.metrics,\n isFetching: storeState.administration.loading,\n threadDump: storeState.administration.threadDump\n}); };\nvar mapDispatchToProps = { systemMetrics: systemMetrics, systemThreadDump: systemThreadDump };\nexport default connect(mapStateToProps, mapDispatchToProps)(MetricsPage);\n",{"version":3,"file":"/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/metrics/metrics.tsx","sourceRoot":"","sources":["/var/www/html/payroll_manager/front-end/node_modules/tslint-loader/index.js!/var/www/html/payroll_manager/front-end/src/main/webapp/app/modules/administration/metrics/metrics.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { connect } from 'react-redux';\nimport { Table, Progress, Col, Row, Button } from 'reactstrap';\nimport { TextFormat } from 'react-jhipster';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { APP_WHOLE_NUMBER_FORMAT, APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT } from 'app/config/constants';\nimport { systemMetrics, systemThreadDump } from '../administration.reducer';\nimport MetricsModal from './metrics-modal';\nimport { IRootState } from 'app/shared/reducers';\n\nexport interface IMetricsPageProps extends StateProps, DispatchProps {}\n\nexport interface IMetricsPageState {\n showModal: boolean;\n}\n\nexport class MetricsPage extends React.Component<IMetricsPageProps, IMetricsPageState> {\n state: IMetricsPageState = {\n showModal: false\n };\n\n componentDidMount() {\n this.props.systemMetrics();\n }\n\n getMetrics = () => {\n if (!this.props.isFetching) {\n this.props.systemMetrics();\n }\n };\n\n getThreadDump = () => {\n this.props.systemThreadDump();\n this.setState({\n showModal: true\n });\n };\n\n handleClose = () => {\n this.setState({\n showModal: false\n });\n };\n\n filterNaN = input => (isNaN(input) ? 0 : input);\n\n getStats = metrics => {\n const stat = {\n servicesStats: {},\n cachesStats: {}\n };\n if (!this.props.isFetching && metrics && metrics.timers) {\n Object.keys(metrics.timers).forEach((key, indexNm) => {\n if (key.indexOf('web.rest') !== -1 || key.indexOf('service') !== -1) {\n stat.servicesStats[key] = metrics.timers[key];\n }\n if (key.indexOf('net.sf.ehcache.Cache') !== -1) {\n // remove gets or puts\n const index = key.lastIndexOf('.');\n const newKey = key.substr(0, index);\n // Keep the name of the domain\n stat.cachesStats[newKey] = {\n name: newKey,\n value: metrics.timers[key]\n };\n }\n });\n }\n return stat;\n };\n\n gaugeRow = (metrics, label: String, key) =>\n metrics.gauges[key] ? (\n <Row>\n <Col md=\"9\">{label}</Col>\n <Col md=\"3\" className=\"text-right\">\n {metrics.gauges[key].value}\n </Col>\n </Row>\n ) : null;\n\n renderModal = () => <MetricsModal handleClose={this.handleClose} showModal={this.state.showModal} threadDump={this.props.threadDump} />;\n\n renderGauges = metrics => (\n <Row>\n <Col sm=\"12\">\n <h3>JVM Metrics</h3>\n <Row>\n <Col md=\"4\">\n <b>Memory</b>\n <p>\n <span>Total Memory</span> (\n <TextFormat value={metrics.gauges['jvm.memory.total.used'].value / 1048576} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n M /{' '}\n <TextFormat value={metrics.gauges['jvm.memory.total.max'].value / 1048576} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n M)\n </p>\n <Progress\n animated\n value={metrics.gauges['jvm.memory.total.used'].value}\n min=\"0\"\n max={metrics.gauges['jvm.memory.total.max'].value}\n color=\"success\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.memory.total.used'].value * 100) / metrics.gauges['jvm.memory.total.max'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n <p>\n <span>Heap Memory</span> (\n <TextFormat value={metrics.gauges['jvm.memory.heap.used'].value / 1048576} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n M /{' '}\n <TextFormat value={metrics.gauges['jvm.memory.heap.max'].value / 1048576} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n M)\n </p>\n <Progress\n animated\n min=\"0\"\n max={metrics.gauges['jvm.memory.heap.max'].value}\n value={metrics.gauges['jvm.memory.heap.used'].value}\n color=\"success\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.memory.heap.used'].value * 100) / metrics.gauges['jvm.memory.heap.max'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n\n <p>\n <span>Non-Heap Memory</span> (\n <TextFormat\n value={metrics.gauges['jvm.memory.non-heap.used'].value / 1048576}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n M /{' '}\n <TextFormat\n value={metrics.gauges['jvm.memory.non-heap.committed'].value / 1048576}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n M)\n </p>\n <Progress\n animated\n min=\"0\"\n max={metrics.gauges['jvm.memory.non-heap.committed'].value}\n value={metrics.gauges['jvm.memory.non-heap.used'].value}\n color=\"success\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.memory.non-heap.used'].value * 100) / metrics.gauges['jvm.memory.non-heap.committed'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n </Col>\n <Col md=\"4\">\n <b>Threads</b> (Total: {metrics.gauges['jvm.threads.count'].value}){' '}\n <Button color=\"link\" className=\"hand\" onClick={this.getThreadDump}>\n <FontAwesomeIcon icon=\"eye\" />\n </Button>\n <p>\n <span>Runnable</span> {metrics.gauges['jvm.threads.runnable.count'].value}\n </p>\n <Progress\n animated\n min=\"0\"\n value={metrics.gauges['jvm.threads.runnable.count'].value}\n max={metrics.gauges['jvm.threads.count'].value}\n color=\"success\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.threads.runnable.count'].value * 100) / metrics.gauges['jvm.threads.count'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n <p>\n <span>Timed Waiting</span> ({metrics.gauges['jvm.threads.timed_waiting.count'].value})\n </p>\n <Progress\n animated\n min=\"0\"\n value={metrics.gauges['jvm.threads.timed_waiting.count'].value}\n max={metrics.gauges['jvm.threads.count'].value}\n color=\"warning\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.threads.timed_waiting.count'].value * 100) / metrics.gauges['jvm.threads.count'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n <p>\n <span>Waiting</span> ({metrics.gauges['jvm.threads.waiting.count'].value})\n </p>\n <Progress\n animated\n min=\"0\"\n value={metrics.gauges['jvm.threads.waiting.count'].value}\n max={metrics.gauges['jvm.threads.count'].value}\n color=\"warning\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.threads.waiting.count'].value * 100) / metrics.gauges['jvm.threads.count'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n <p>\n <span>Blocked</span> ({metrics.gauges['jvm.threads.blocked.count'].value})\n </p>\n <Progress\n animated\n min=\"0\"\n value={metrics.gauges['jvm.threads.blocked.count'].value}\n max={metrics.gauges['jvm.threads.count'].value}\n color=\"success\"\n >\n <span>\n <TextFormat\n value={(metrics.gauges['jvm.threads.blocked.count'].value * 100) / metrics.gauges['jvm.threads.count'].value}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n </Col>\n <Col md=\"4\">\n <b>Garbage collections</b>\n {this.gaugeRow(metrics, 'Mark Sweep count', 'jvm.garbage.PS-MarkSweep.count')}\n {this.gaugeRow(metrics, 'Mark Sweep time', 'jvm.garbage.PS-MarkSweep.time')}\n {this.gaugeRow(metrics, 'Scavenge count', 'jvm.garbage.PS-Scavenge.count')}\n {this.gaugeRow(metrics, 'Scavenge time', 'jvm.garbage.PS-Scavenge.time')}\n </Col>\n </Row>\n </Col>\n </Row>\n );\n\n render() {\n const { metrics, isFetching } = this.props;\n const data = metrics || {};\n const { servicesStats, cachesStats } = this.getStats(data);\n return (\n <div>\n <h2 className=\"metrics-page-heading\">Application Metrics</h2>\n <p>\n <Button onClick={this.getMetrics} color={isFetching ? 'btn btn-danger' : 'btn btn-primary'} disabled={isFetching}>\n <FontAwesomeIcon icon=\"sync\" /> Refresh\n </Button>\n </p>\n <hr />\n {metrics.gauges ? this.renderGauges(metrics) : ''}\n\n {metrics.meters && metrics.timers ? (\n <Row>\n <Col sm=\"12\">\n <h3>HTTP requests (events per second)</h3>\n <p>\n <span>Active requests:</span>{' '}\n <b>\n <TextFormat\n value={metrics.counters['com.codahale.metrics.servlet.InstrumentedFilter.activeRequests'].count}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n </b>{' '}\n - <span>Total requests:</span>{' '}\n <b>\n <TextFormat\n value={metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count}\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n </b>\n </p>\n <Table>\n <thead>\n <tr>\n <th>Code</th>\n <th>Count</th>\n <th className=\"text-right\">Mean</th>\n <th className=\"text-right\">\n <span>Average</span> (1 min)\n </th>\n <th className=\"text-right\">\n <span>Average</span> (5 min)\n </th>\n <th className=\"text-right\">\n <span>Average</span> (15 min)\n </th>\n </tr>\n </thead>\n <tbody>\n <tr key={0}>\n <td>OK</td>\n <td>\n <Progress\n min=\"0\"\n max={metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count}\n value={metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].count}\n color=\"success\"\n animated\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].mean_rate)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m1_rate)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m5_rate)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok'].m15_rate)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n </tr>\n <tr key={1}>\n <td>Not Found</td>\n <td>\n <Progress\n min=\"0\"\n max={metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count}\n value={metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].count}\n color=\"success\"\n animated\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].mean_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m1_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m5_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound'].m15_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n </tr>\n <tr key={2}>\n <td>Server Error</td>\n <td>\n <Progress\n min=\"0\"\n max={metrics.timers['com.codahale.metrics.servlet.InstrumentedFilter.requests'].count}\n value={metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].count}\n color=\"success\"\n animated\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].mean_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m1_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m5_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(\n metrics.meters['com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError'].m15_rate\n )}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n </tr>\n </tbody>\n </Table>\n </Col>\n </Row>\n ) : (\n ''\n )}\n {servicesStats ? (\n <Row>\n <Col sm=\"12\">\n <h3>Services statistics (time in millisecond)</h3>\n </Col>\n <Table>\n <thead>\n <tr>\n <th>Service name</th>\n <th>Count</th>\n <th>Mean</th>\n <th>Min</th>\n <th>p50</th>\n <th>p75</th>\n <th>p95</th>\n <th>p99</th>\n <th>Max</th>\n </tr>\n </thead>\n <tbody>\n {Object.keys(servicesStats).map((key, index) => (\n <tr key={key}>\n <td>{key}</td>\n <td>{servicesStats[key].count}</td>\n <td>\n <TextFormat value={servicesStats[key].mean * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].min * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].p50 * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].p75 * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].p95 * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].p99 * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n <td>\n <TextFormat value={servicesStats[key].max * 1024} type=\"number\" format={APP_WHOLE_NUMBER_FORMAT} />\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n </Row>\n ) : (\n ''\n )}\n\n {cachesStats ? (\n <Row>\n <Col sm=\"12\">\n <h3>Ehcache statistics</h3>\n <Table>\n <thead>\n <tr>\n <th>Cache Name</th>\n <th>Object</th>\n <th>Misses</th>\n <th>Eviction Count</th>\n </tr>\n </thead>\n <tbody>\n {Object.keys(cachesStats).map((k, v) => (\n <tr key={k}>\n <td>{k}</td>\n <td>{metrics.gauges[`${k}.objects`].value}</td>\n <td>{metrics.gauges[`${k}.hits`].value}</td>\n <td>{metrics.gauges[`${k}.misses`].value}</td>\n <td>{metrics.gauges[`${k}.eviction-count`].value}</td>\n </tr>\n ))}\n </tbody>\n </Table>\n </Col>\n </Row>\n ) : (\n ''\n )}\n\n {metrics.gauges &&\n metrics.gauges['HikariPool-1.pool.TotalConnections'] &&\n metrics.gauges['HikariPool-1.pool.TotalConnections'].value > 0 ? (\n <Row>\n <Col sm=\"12\">\n <h3>DataSource statistics (time in millisecond)</h3>\n <Table>\n <thead>\n <tr>\n <th>\n <span>Usage</span>\n ({metrics.gauges['HikariPool-1.pool.ActiveConnections'].value} /{' '}\n {metrics.gauges['HikariPool-1.pool.TotalConnections'].value})\n </th>\n <th className=\"text-right\">Count</th>\n <th className=\"text-right\">Mean</th>\n <th className=\"text-right\">Min</th>\n <th className=\"text-right\">p50</th>\n <th className=\"text-right\">p75</th>\n <th className=\"text-right\">p95</th>\n <th className=\"text-right\">p99</th>\n <th className=\"text-right\">Max</th>\n </tr>\n </thead>\n <tbody>\n <tr key=\"DB\">\n <td>\n <Progress\n min=\"0\"\n max={metrics.gauges['HikariPool-1.pool.TotalConnections'].value}\n value={metrics.gauges['HikariPool-1.pool.ActiveConnections'].value}\n >\n <span>\n <TextFormat\n value={\n (metrics.gauges['HikariPool-1.pool.ActiveConnections'].value * 100) /\n metrics.gauges['HikariPool-1.pool.TotalConnections'].value\n }\n type=\"number\"\n format={APP_WHOLE_NUMBER_FORMAT}\n />\n %\n </span>\n </Progress>\n </td>\n <td className=\"text-right\">{metrics.histograms['HikariPool-1.pool.Usage'].count}</td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].mean)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].min)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p50)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p75)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p95)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].p99)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n <td className=\"text-right\">\n <TextFormat\n value={this.filterNaN(metrics.histograms['HikariPool-1.pool.Usage'].max)}\n type=\"number\"\n format={APP_TWO_DIGITS_AFTER_POINT_NUMBER_FORMAT}\n />\n </td>\n </tr>\n </tbody>\n </Table>\n </Col>\n </Row>\n ) : (\n ''\n )}\n\n {this.renderModal()}\n </div>\n );\n }\n}\n\nconst mapStateToProps = (storeState: IRootState) => ({\n metrics: storeState.administration.metrics,\n isFetching: storeState.administration.loading,\n threadDump: storeState.administration.threadDump\n});\n\nconst mapDispatchToProps = { systemMetrics, systemThreadDump };\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\ntype DispatchProps = typeof mapDispatchToProps;\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(MetricsPage);\n"]}]} |