choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
187 lines (139 loc) • 6.13 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = uniqueError;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _ValidationResult = _interopRequireDefault(require("../ValidationResult"));
var _localeContext = require("../../locale-context");
var _isEmpty = _interopRequireDefault(require("../../_util/isEmpty"));
var _utils = require("../../data-set/utils");
var _enum = require("../../data-set/enum");
function uniqueError(_x, _x2) {
return _uniqueError.apply(this, arguments);
}
function _uniqueError() {
_uniqueError = (0, _asyncToGenerator2["default"])(
/*#__PURE__*/
_regenerator["default"].mark(function _callee(value, props) {
var dataSet, record, unique, name, multiple, range, defaultValidationMessages, myField, dirty, fields, invalid, newConfig, results, ruleName, _defaultValidationMes, validationMessage;
return _regenerator["default"].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 (!(!(0, _isEmpty["default"])(value) && dataSet && record && unique && name && !multiple && !range)) {
_context.next = 26;
break;
}
myField = record.getField(name);
if (!(myField && myField.get('type') === _enum.FieldType.object)) {
_context.next = 7;
break;
}
value = value[myField.get('valueField')];
if (!(0, _isEmpty["default"])(value)) {
_context.next = 7;
break;
}
return _context.abrupt("return", true);
case 7:
if (!myField) {
_context.next = 26;
break;
}
dirty = myField.dirty;
fields = (0, _defineProperty2["default"])({}, name, value);
if (!((0, _isString["default"])(unique) && (0, _toConsumableArray2["default"])(record.fields.entries()).some(function (_ref) {
var _ref2 = (0, _slicedToArray2["default"])(_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 ((0, _isEmpty["default"])(otherValue)) {
return true;
}
if (!dirty && field.dirty) {
dirty = true;
}
if (field && field.get('type') === _enum.FieldType.object) {
var otherObjectValue = otherValue[field.get('valueField')];
if ((0, _isEmpty["default"])(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') === _enum.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 = (0, _utils.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 ? (0, _localeContext.$l)('Validator', 'unique') : _defaultValidationMes;
return _context.abrupt("return", new _ValidationResult["default"]({
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