@stolostron/multicluster-sdk
Version:
Provides extensions and APIs that dynamic plugins can use to leverage multicluster capabilities provided by Red Hat Advanced Cluster Management.
133 lines • 4.92 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.typeFilter = exports.resourcePathFromModel = exports.groupVersionFor = exports.referenceFor = exports.getParentScrollableElement = exports.sortEvents = exports.getLastTime = exports.getFirstTime = exports.NodeModel = exports.EventModel = void 0;
const dynamic_plugin_sdk_1 = require("@openshift-console/dynamic-plugin-sdk");
const _ = __importStar(require("lodash"));
exports.EventModel = {
apiVersion: 'v1',
label: 'Event',
// t('public~Event')
labelKey: 'public~Event',
plural: 'events',
abbr: 'E',
namespaced: true,
kind: 'Event',
id: 'event',
labelPlural: 'Events',
// t('public~Events')
labelPluralKey: 'public~Events',
};
exports.NodeModel = {
apiVersion: 'v1',
label: 'Node',
// t('public~Node')
labelKey: 'public~Node',
plural: 'nodes',
abbr: 'N',
kind: 'Node',
id: 'node',
labelPlural: 'Nodes',
// t('public~Nodes')
labelPluralKey: 'public~Nodes',
};
const getFirstTime = (event) => event.firstTimestamp || event.eventTime;
exports.getFirstTime = getFirstTime;
const getLastTime = (event) => {
const lastObservedTime = event.series ? event.series.lastObservedTime : null;
return event.lastTimestamp || lastObservedTime || event.eventTime;
};
exports.getLastTime = getLastTime;
const sortEvents = (events) => {
return _.orderBy(events, [exports.getLastTime, exports.getFirstTime, 'name'], ['desc', 'desc', 'asc']);
};
exports.sortEvents = sortEvents;
const isHTMLElement = (n) => {
return n.nodeType === Node.ELEMENT_NODE;
};
const getParentScrollableElement = (node) => {
var _a;
let parentNode = node;
while (parentNode) {
if (isHTMLElement(parentNode)) {
let overflow = (_a = parentNode.style) === null || _a === void 0 ? void 0 : _a.overflow;
if (!overflow.includes('scroll') && !overflow.includes('auto')) {
overflow = window.getComputedStyle(parentNode).overflow;
}
if (overflow.includes('scroll') || overflow.includes('auto')) {
return parentNode;
}
}
parentNode = parentNode.parentNode;
}
return undefined;
};
exports.getParentScrollableElement = getParentScrollableElement;
const referenceFor = ({ kind, apiVersion }) => {
if (!kind) {
return '';
}
const { group, version } = (0, exports.groupVersionFor)(apiVersion || '');
return [group || 'core', version, kind].join('~');
};
exports.referenceFor = referenceFor;
const groupVersionFor = (apiVersion) => ({
group: apiVersion.split('/').length === 2 ? apiVersion.split('/')[0] : 'core',
version: apiVersion.split('/').length === 2 ? apiVersion.split('/')[1] : apiVersion,
});
exports.groupVersionFor = groupVersionFor;
const resourcePathFromModel = (model, name, namespace) => {
const { crd, namespaced, plural } = model;
let url = '/k8s/';
if (!namespaced) {
url += 'cluster/';
}
if (namespaced) {
url += namespace ? `ns/${namespace}/` : 'all-namespaces/';
}
if (crd) {
url += (0, dynamic_plugin_sdk_1.getGroupVersionKindForModel)(model);
}
else if (plural) {
url += plural;
}
if (name) {
// Some resources have a name that needs to be encoded. For instance,
// Users can have special characters in the name like `#`.
url += `/${encodeURIComponent(name)}`;
}
return url;
};
exports.resourcePathFromModel = resourcePathFromModel;
// Predicate function to filter by event "type" (normal, warning, or all)
const typeFilter = (eventType, event) => {
if (eventType === 'all') {
return true;
}
const { type = 'normal' } = event;
return type.toLowerCase() === eventType;
};
exports.typeFilter = typeFilter;
//# sourceMappingURL=utils.js.map