UNPKG

cspace-ui

Version:
203 lines (159 loc) 7.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _immutable = _interopRequireDefault(require("immutable")); var _reactIntl = require("react-intl"); var _get = _interopRequireDefault(require("lodash/get")); var _InvocationDescriptorEditor = _interopRequireDefault(require("./InvocationDescriptorEditor")); var _configHelpers = require("../../helpers/configHelpers"); var _recordDataHelpers = require("../../helpers/recordDataHelpers"); var _RecordFormContainer = _interopRequireDefault(require("../../containers/record/RecordFormContainer")); var _InvocationEditor = _interopRequireDefault(require("../../../styles/cspace-ui/InvocationEditor.css")); var _FormStatusMessage = _interopRequireDefault(require("../../../styles/cspace-ui/FormStatusMessage.css")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } const messages = (0, _reactIntl.defineMessages)({ loading: { "id": "invocationEditor.loading", "defaultMessage": "Loading\u2026" }, noDescription: { "id": "invocationEditor.noDescription", "defaultMessage": "Description not provided." } }); const renderLoading = () => _react.default.createElement("div", { className: _InvocationEditor.default.pending }, _react.default.createElement(_reactIntl.FormattedMessage, messages.loading)); const propTypes = { allowedModes: _propTypes.default.arrayOf(_propTypes.default.string), config: _propTypes.default.object, invocationDescriptor: _propTypes.default.instanceOf(_immutable.default.Map), modeReadOnly: _propTypes.default.bool, invocationTargetReadOnly: _propTypes.default.bool, isInvocationTargetModified: _propTypes.default.bool, metadata: _propTypes.default.instanceOf(_immutable.default.Map), paramData: _propTypes.default.instanceOf(_immutable.default.Map), recordType: _propTypes.default.string, createNewRecord: _propTypes.default.func, onInvocationDescriptorCommit: _propTypes.default.func }; class InvocationEditor extends _react.Component { componentDidMount() { this.init(); } componentDidUpdate(prevProps) { if (prevProps.metadata !== this.props.metadata) { this.init(); } } getSupportedModes() { const { allowedModes, metadata } = this.props; let modes = []; if ((0, _recordDataHelpers.getCommonFieldValue)(metadata, 'supportsNoContext') === 'true') { modes.push('nocontext'); } if ((0, _recordDataHelpers.getCommonFieldValue)(metadata, 'supportsDocList') === 'true') { modes.push('list'); } if ((0, _recordDataHelpers.getCommonFieldValue)(metadata, 'supportsGroup') === 'true') { modes.push('group'); } if ((0, _recordDataHelpers.getCommonFieldValue)(metadata, 'supportsSingleDoc') === 'true') { modes.push('single'); } if (allowedModes) { modes = modes.filter(mode => allowedModes.includes(mode)); } return modes; } getSupportedRecordTypes() { const { config, metadata } = this.props; const forDocTypesContainer = (0, _recordDataHelpers.getCommonFieldValue)(metadata, 'forDocTypes'); let forDocTypes = forDocTypesContainer && forDocTypesContainer.get('forDocType'); if (forDocTypes) { if (!_immutable.default.List.isList(forDocTypes)) { forDocTypes = _immutable.default.List.of(forDocTypes); } const recordTypes = forDocTypes.map(forDocType => (0, _configHelpers.getRecordTypeNameByServiceObjectName)(config, forDocType)).toJS(); return recordTypes; } return []; } init() { const { createNewRecord } = this.props; // Create a params record. createNewRecord(); } render() { const { config, invocationDescriptor, modeReadOnly, invocationTargetReadOnly, isInvocationTargetModified, metadata, paramData, recordType, onInvocationDescriptorCommit } = this.props; if (!metadata) { return renderLoading(); } const invocableNameGetter = (0, _get.default)(config, ['recordTypes', recordType, 'invocableName']); const invocableName = invocableNameGetter && invocableNameGetter(metadata); const paramRecordTypeConfig = (0, _get.default)(config, ['invocables', recordType, invocableName]); const description = (0, _recordDataHelpers.getCommonFieldValue)(metadata, 'notes') || _react.default.createElement(_reactIntl.FormattedMessage, messages.noDescription); const recordTypeConfig = (0, _get.default)(config, ['recordTypes', recordType]); const recordTypeMessages = (0, _get.default)(recordTypeConfig, ['messages', 'record']); const mode = invocationDescriptor.get('mode'); const items = invocationDescriptor.get('items'); let missingTargetError; if (mode !== 'nocontext' && (!items || items.isEmpty())) { missingTargetError = _react.default.createElement("p", { className: _FormStatusMessage.default.error }, _react.default.createElement(_reactIntl.FormattedMessage, recordTypeMessages["".concat(mode, "TargetMissing")])); if (modeReadOnly && invocationTargetReadOnly) { return _react.default.createElement("div", { className: _InvocationEditor.default.common }, _react.default.createElement("p", null, description), missingTargetError); } } let unsavedWarning; if (isInvocationTargetModified) { unsavedWarning = _react.default.createElement("p", { className: _FormStatusMessage.default.warning }, _react.default.createElement(_reactIntl.FormattedMessage, recordTypeMessages.invokeUnsaved)); } return _react.default.createElement("div", { className: _InvocationEditor.default.common }, _react.default.createElement("p", null, description), _react.default.createElement(_InvocationDescriptorEditor.default, { config: config, invocationDescriptor: invocationDescriptor, modes: this.getSupportedModes(), modeReadOnly: modeReadOnly, invocationTargetReadOnly: invocationTargetReadOnly, recordTypes: this.getSupportedRecordTypes(), onCommit: onInvocationDescriptorCommit }), missingTargetError, unsavedWarning, _react.default.createElement(_RecordFormContainer.default, { config: config, csid: "", data: paramData, recordType: "invocable", recordTypeConfig: paramRecordTypeConfig })); } } exports.default = InvocationEditor; InvocationEditor.propTypes = propTypes;