@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
JavaScript
;
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