UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

167 lines (133 loc) 5.5 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import isString from 'lodash/isString'; import ValidationResult from '../ValidationResult'; import { $l } from '../../locale-context'; import isEmpty from '../../_util/isEmpty'; import { axiosConfigAdapter } from '../../data-set/utils'; import { FieldType } from '../../data-set/enum'; export default function uniqueError(_x, _x2) { return _uniqueError.apply(this, arguments); } function _uniqueError() { _uniqueError = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee(value, props) { var dataSet, record, unique, name, multiple, range, defaultValidationMessages, myField, dirty, fields, invalid, newConfig, results, ruleName, _defaultValidationMes, validationMessage; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: dataSet = props.dataSet, record = props.record, unique = props.unique, name = props.name, multiple = props.multiple, range = props.range, defaultValidationMessages = props.defaultValidationMessages; if (!(!isEmpty(value) && dataSet && record && unique && name && !multiple && !range)) { _context.next = 26; break; } myField = record.getField(name); if (!(myField && myField.get('type') === FieldType.object)) { _context.next = 7; break; } value = value[myField.get('valueField')]; if (!isEmpty(value)) { _context.next = 7; break; } return _context.abrupt("return", true); case 7: if (!myField) { _context.next = 26; break; } dirty = myField.dirty; fields = _defineProperty({}, name, value); if (!(isString(unique) && _toConsumableArray(record.fields.entries()).some(function (_ref) { var _ref2 = _slicedToArray(_ref, 2), fieldName = _ref2[0], field = _ref2[1]; if (fieldName !== name && field && field.get('unique') === unique && !field.get('multiple') && !field.get('range')) { var otherValue = record.get(fieldName); if (isEmpty(otherValue)) { return true; } if (!dirty && field.dirty) { dirty = true; } if (field && field.get('type') === FieldType.object) { var otherObjectValue = otherValue[field.get('valueField')]; if (isEmpty(otherObjectValue)) { return true; } fields[fieldName] = otherObjectValue; } else { fields[fieldName] = otherValue; } } return false; }))) { _context.next = 12; break; } return _context.abrupt("return", true); case 12: if (dirty) { _context.next = 14; break; } return _context.abrupt("return", true); case 14: invalid = dataSet.data.some(function (item) { return item !== record && Object.keys(fields).every(function (field) { var dataSetField = record.getField(name); if (dataSetField && dataSetField.get('type') === FieldType.object) { var valueField = dataSetField.get('valueField'); return fields[field] === item.get(field)[valueField]; } return fields[field] === item.get(field); }); }); if (invalid) { _context.next = 22; break; } newConfig = axiosConfigAdapter('validate', dataSet, { unique: [fields] }); if (!newConfig.url) { _context.next = 22; break; } _context.next = 20; return dataSet.axios(newConfig); case 20: results = _context.sent; invalid = [].concat(results).some(function (result) { return !result; }); case 22: if (!invalid) { _context.next = 26; break; } ruleName = 'uniqueError'; _defaultValidationMes = defaultValidationMessages[ruleName], validationMessage = _defaultValidationMes === void 0 ? $l('Validator', 'unique') : _defaultValidationMes; return _context.abrupt("return", new ValidationResult({ validationMessage: validationMessage, value: value, ruleName: ruleName })); case 26: return _context.abrupt("return", true); case 27: case "end": return _context.stop(); } } }, _callee); })); return _uniqueError.apply(this, arguments); } //# sourceMappingURL=uniqueError.js.map