UNPKG

@stolostron/multicluster-sdk

Version:

Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.

50 lines 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); /* Copyright Contributors to the Open Cluster Management project */ const dynamic_plugin_sdk_1 = require("@openshift-console/dynamic-plugin-sdk"); const react_styles_1 = require("@patternfly/react-styles"); const react_i18next_1 = require("react-i18next"); const utils_1 = require("./utils"); const react_1 = require("react"); const react_router_dom_v5_compat_1 = require("react-router-dom-v5-compat"); const Inner = ({ event, cache, list, index }) => { const { t } = (0, react_i18next_1.useTranslation)(); const canGetNodes = (0, dynamic_plugin_sdk_1.useAccessReview)({ group: utils_1.NodeModel.apiGroup, resource: utils_1.NodeModel.plural, verb: 'list', }); (0, react_1.useEffect)(() => { // Actions contents will render after the initial row height calculation, // so recompute the row height. cache.clear(index, 0); list === null || list === void 0 ? void 0 : list.recomputeRowHeights(index); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const { involvedObject: obj, source, message, reason, series, reportingComponent } = event; const tooltipMsg = `${reason} (${obj.kind})`; const isWarning = (0, utils_1.typeFilter)('warning', event); const firstTime = (0, utils_1.getFirstTime)(event); const lastTime = (0, utils_1.getLastTime)(event); const count = series ? series.count || 0 : event.count || 0; // Events in v1beta1 apiVersion store the information about the reporting component // in the 'source.component' field. Events in v1 apiVersion are storing the information // in the `reportingComponent` field. // Unfortunatelly we cannot determine which field to use based on the apiVersion since // v1beta1 is internally converted to v1. const component = source.component ? source.component : reportingComponent; return ((0, jsx_runtime_1.jsxs)("div", { className: (0, react_styles_1.css)('co-sysevent', { 'co-sysevent--warning': isWarning, }), "data-test": isWarning ? 'event-warning' : 'event', children: [(0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__icon-box", children: [(0, jsx_runtime_1.jsx)("i", { className: "co-sysevent-icon", title: tooltipMsg }), (0, jsx_runtime_1.jsx)("div", { className: "co-sysevent__icon-line" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__box", role: "gridcell", children: [(0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__header", children: [(0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__subheader", children: [(0, jsx_runtime_1.jsx)(dynamic_plugin_sdk_1.ResourceLink, { className: "co-sysevent__resourcelink", kind: (0, utils_1.referenceFor)(obj), namespace: obj.namespace, name: obj.name }), obj.namespace && ((0, jsx_runtime_1.jsx)(dynamic_plugin_sdk_1.ResourceLink, { className: "co-sysevent__resourcelink hidden-xs", kind: "Namespace", name: obj.namespace })), lastTime && (0, jsx_runtime_1.jsx)(dynamic_plugin_sdk_1.Timestamp, { className: "co-sysevent__timestamp", timestamp: lastTime })] }), (0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__details", children: [(0, jsx_runtime_1.jsxs)("small", { className: "co-sysevent__source", children: [component !== 'kubelet' && t('public~Generated from {{ sourceComponent }}', { sourceComponent: component, }), component === 'kubelet' && canGetNodes && ((0, jsx_runtime_1.jsxs)(react_i18next_1.Trans, { ns: "public", children: ["Generated from ", { sourceComponent: component }, " on", ' ', (0, jsx_runtime_1.jsx)(react_router_dom_v5_compat_1.Link, { to: (0, utils_1.resourcePathFromModel)(utils_1.NodeModel, source.host), children: { sourceHost: source.host } })] })), component === 'kubelet' && !canGetNodes && t('public~Generated from {{ sourceComponent }} on {{ sourceHost }}', { sourceComponent: component, sourceHost: source.host, })] }), (0, jsx_runtime_1.jsxs)("div", { className: "co-sysevent__count-and-actions", children: [count > 1 && firstTime && ((0, jsx_runtime_1.jsx)(react_i18next_1.Trans, { ns: "public", children: (0, jsx_runtime_1.jsxs)("small", { className: "co-sysevent__count pf-v6-u-text-color-subtle", children: [{ eventCount: count }, " times in the last", ' ', (0, jsx_runtime_1.jsx)(dynamic_plugin_sdk_1.Timestamp, { timestamp: firstTime, simple: true, omitSuffix: true })] }) })), count > 1 && !firstTime && ((0, jsx_runtime_1.jsx)(react_i18next_1.Trans, { ns: "public", children: (0, jsx_runtime_1.jsxs)("small", { className: "co-sysevent__count pf-v6-u-text-color-subtle", children: [{ eventCount: count }, " times"] }) }))] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "co-sysevent__message", children: message })] })] })); }; exports.default = Inner; //# sourceMappingURL=EventComponent.js.map