@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
172 lines (164 loc) • 6.47 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getCompatibleArgsOnFuncChange = void 0;
Object.defineProperty(exports, "getDefaultArgValue", {
enumerable: true,
get: function get() {
return _ruleUtils.getDefaultArgValue;
}
});
Object.defineProperty(exports, "setArgValue", {
enumerable: true,
get: function get() {
return _ruleUtils.setArgValue;
}
});
exports.setFunc = exports.setArgValueSrc = exports.setArgValueAsyncListValues = void 0;
Object.defineProperty(exports, "setFuncDefaultArg", {
enumerable: true,
get: function get() {
return _ruleUtils.setFuncDefaultArg;
}
});
Object.defineProperty(exports, "setFuncDefaultArgs", {
enumerable: true,
get: function get() {
return _ruleUtils.setFuncDefaultArgs;
}
});
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _configUtils = require("../utils/configUtils");
var _ruleUtils = require("../utils/ruleUtils");
var _validation = require("../utils/validation");
var _immutable = _interopRequireDefault(require("immutable"));
/**
* @param {Immutable.Map} value
* @return {array} - [usedFields, badFields]
*/
// const getUsedFieldsInFuncValue = (value, config) => {
// let usedFields = [];
// let badFields = [];
// const _traverse = (value) => {
// const args = value && value.get("args");
// if (!args) return;
// for (const arg of args.values()) {
// if (arg.get("valueSrc") == "field") {
// const rightField = arg.get("value");
// if (rightField) {
// const rightFieldDefinition = config ? getFieldConfig(config, rightField) : undefined;
// if (config && !rightFieldDefinition)
// badFields.push(rightField);
// else
// usedFields.push(rightField);
// }
// } else if (arg.get("valueSrc") == "func") {
// _traverse(arg.get("value"));
// }
// }
// };
// _traverse(value);
// return [usedFields, badFields];
// };
/**
* Used @ FuncWidget
* @param {Immutable.Map} value
* @param {string} funcKey
* @param {object} config
* @param {boolean} canFixArgs
*/
var setFunc = exports.setFunc = function setFunc(value, funcKey, config, canFixArgs) {
var fieldSeparator = config.settings.fieldSeparator;
value = value || new _immutable["default"].Map();
if (Array.isArray(funcKey)) {
// fix for cascader
funcKey = funcKey.join(fieldSeparator);
}
var oldFuncKey = value.get("func");
var oldArgs = value.get("args");
value = value.set("func", funcKey);
var funcConfig = funcKey && (0, _configUtils.getFuncConfig)(config, funcKey);
var newFuncSignature = funcKey && (0, _configUtils.getFuncSignature)(config, funcKey);
var oldFuncSignature = oldFuncKey && (0, _configUtils.getFuncSignature)(config, oldFuncKey);
var keepArgsKeys = getCompatibleArgsOnFuncChange(oldFuncSignature, newFuncSignature, oldArgs, config, canFixArgs);
if (keepArgsKeys.length) {
var argsKeys = Object.keys(newFuncSignature.args);
var deleteArgsKeys = argsKeys.filter(function (k) {
return !keepArgsKeys.includes(k);
});
value = deleteArgsKeys.reduce(function (value, k) {
return value.deleteIn(["args", k]);
}, value);
} else {
value = value.set("args", new _immutable["default"].Map());
}
// defaults
value = (0, _ruleUtils.setFuncDefaultArgs)(config, value, funcConfig);
return value;
};
/**
* Used @ FuncWidget
* @param {Immutable.Map} value
* @param {string} argKey
* @param {string} argValSrc
* @param {object} argConfig
*/
var setArgValueSrc = exports.setArgValueSrc = function setArgValueSrc(value, argKey, argValSrc, _argConfig, _config) {
if (value && value.get("func")) {
value = value.setIn(["args", argKey], new _immutable["default"].Map({
valueSrc: argValSrc
}));
}
return value;
};
var setArgValueAsyncListValues = exports.setArgValueAsyncListValues = function setArgValueAsyncListValues(value, argKey, asyncListValues, _argConfig, _config) {
if (value && value.get("func")) {
value = value.setIn(["args", argKey, "asyncListValues"], asyncListValues);
}
return value;
};
// see getFuncSignature in configUtils
var getCompatibleArgsOnFuncChange = exports.getCompatibleArgsOnFuncChange = function getCompatibleArgsOnFuncChange(s1, s2, argVals, config) {
var canFixArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
if ((s1 === null || s1 === void 0 ? void 0 : s1.returnType) != (s2 === null || s2 === void 0 ? void 0 : s2.returnType)) return [];
var checkIndexes = false;
var keys = Object.keys(s2.args);
var compatibleKeys = keys.filter(function (k, i) {
var arg2 = s2.args[k];
var arg1 = s1.args[k];
var oldInd = Object.keys(s1.args).indexOf(k);
if (!arg1 && (arg2.defaultValue !== undefined || arg2.isOptional)) {
return true;
}
if (checkIndexes && i !== oldInd) {
return false;
}
if ((arg1 === null || arg1 === void 0 ? void 0 : arg1.type) != arg2.type) return false;
if (_configUtils.selectTypes.includes(arg2.type)) {
if (!arg1.listValuesType || arg1.listValuesType !== arg2.listValuesType) return false;
}
if (argVals) {
var _argValidErrors$filte;
var argVal = argVals.get(k);
var argValue = argVal === null || argVal === void 0 ? void 0 : argVal.get("value");
var argValueSrc = argVal === null || argVal === void 0 ? void 0 : argVal.get("valueSrc");
if (argValueSrc && arg2.valueSources && !arg2.valueSources.includes(argValueSrc)) return false;
var leftField = null,
operator = null,
argDef = arg2,
asyncListValues = null,
isEndValue = true;
var _validateValue = (0, _validation.validateValue)(config, leftField, argDef, operator, argValue, argDef.type, argValueSrc, asyncListValues, canFixArgs, isEndValue),
_validateValue2 = (0, _slicedToArray2["default"])(_validateValue, 2),
_fixedArgVal = _validateValue2[0],
argValidErrors = _validateValue2[1];
if (argValidErrors !== null && argValidErrors !== void 0 && (_argValidErrors$filte = argValidErrors.filter(function (e) {
return !e.fixed;
})) !== null && _argValidErrors$filte !== void 0 && _argValidErrors$filte.length) return false;
}
return true;
});
return compatibleKeys;
};