UNPKG

@openshift-assisted/ui-lib

Version:

React component library for the Assisted Installer UI

50 lines 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const isMatch_js_1 = tslib_1.__importDefault(require("lodash-es/isMatch.js")); const formik_1 = require("formik"); const react_1 = tslib_1.__importDefault(require("react")); const react_measure_1 = tslib_1.__importDefault(require("react-measure")); const react_core_1 = require("@patternfly/react-core"); const common_1 = require("../common"); const LocationsSelector_1 = tslib_1.__importDefault(require("./LocationsSelector")); const LabelsSelector_1 = tslib_1.__importStar(require("./LabelsSelector")); const AgentsSelectionTable_1 = tslib_1.__importDefault(require("../Agent/AgentsSelectionTable")); const use_translation_wrapper_1 = require("../../../common/hooks/use-translation-wrapper"); const ClusterDeploymentHostsSelectionAdvanced = ({ availableAgents, onEditRole, onSetInstallationDiskId, onEditHost, onHostSelect, cpuArchitecture, }) => { const { t } = (0, use_translation_wrapper_1.useTranslation)(); const { values } = (0, formik_1.useFormikContext)(); const { locations, agentLabels } = values; const matchingAgents = react_1.default.useMemo(() => availableAgents.filter((agent) => { var _a, _b, _c, _d; const labels = agentLabels.reduce((acc, curr) => { const label = curr.split('='); acc[label[0]] = label[1]; return acc; }, {}); const matchesLocation = locations.length ? locations.includes(((_b = (_a = agent.metadata) === null || _a === void 0 ? void 0 : _a.labels) === null || _b === void 0 ? void 0 : _b[common_1.AGENT_LOCATION_LABEL_KEY]) || common_1.AGENT_NOLOCATION_VALUE) : true; const matchesLabels = ((_c = agent.metadata) === null || _c === void 0 ? void 0 : _c.labels) ? (0, isMatch_js_1.default)((_d = agent.metadata) === null || _d === void 0 ? void 0 : _d.labels, labels) : true; return matchesLocation && matchesLabels; }), [availableAgents, locations, agentLabels]); return (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(react_core_1.Grid, { hasGutter: true }, react_1.default.createElement(react_core_1.GridItem, null, react_1.default.createElement(LocationsSelector_1.default, { agents: availableAgents })), react_1.default.createElement(react_core_1.GridItem, null, react_1.default.createElement(LabelsSelector_1.default, { agents: matchingAgents, name: "agentLabels", labelKeysFilter: LabelsSelector_1.infraEnvLabelKeys })), cpuArchitecture && (react_1.default.createElement(react_core_1.Alert, { variant: react_core_1.AlertVariant.info, title: t('ai:Displaying only hosts with {{cpuArchitecture}} architecture in the table.', { cpuArchitecture, }), isInline: true })), react_1.default.createElement(react_core_1.GridItem, null, react_1.default.createElement(react_measure_1.default, { bounds: true }, ({ measureRef, contentRect }) => { var _a; return (react_1.default.createElement("div", { ref: measureRef }, react_1.default.createElement(AgentsSelectionTable_1.default, { matchingAgents: matchingAgents, onEditRole: onEditRole, onSetInstallationDiskId: onSetInstallationDiskId, width: (_a = contentRect.bounds) === null || _a === void 0 ? void 0 : _a.width, onEditHost: onEditHost, onHostSelect: onHostSelect }))); }))))); }; exports.default = ClusterDeploymentHostsSelectionAdvanced; //# sourceMappingURL=ClusterDeploymentHostsSelectionAdvanced.js.map