linkmore-design
Version:
🌈 🚀lm组件库。🚀
60 lines (57 loc) • 2.04 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getUpdateResult = exports.getFilterKeyValue = exports.flatDeepDeps = void 0;
var _castArray = _interopRequireDefault(require("lodash/castArray"));
var _isNil = _interopRequireDefault(require("lodash/isNil"));
var _constants = require("./constants");
const getFilterKeyValue = conditions => {
const values = (conditions || []).reduce((pre, cur) => {
if ((0, _isNil.default)(cur.value)) return pre;
pre[cur?.[_constants.DYNAMIC_ENUM.FIELD_NAME]] = cur[_constants.DYNAMIC_ENUM.VALUE];
return pre;
}, {});
return values;
};
/**
* 根据指定字段获取数据源中的依赖字段
* 遍历依赖字段返回需要更新的字段
* @return {Array} string[]
* @example
*
* flatDeepDeps('a', [{fieldName: 'a'}, {fieldName: 'b', dependencies: ['a']}])
* // => ['b']
*/
exports.getFilterKeyValue = getFilterKeyValue;
const flatDeepDeps = (field, dataSource) => {
if (!Array.isArray(dataSource)) return [];
const depsField = dataSource.reduce((pre, cur) => {
if (!cur.dependencies) return pre;
const deps = (0, _castArray.default)(cur.dependencies);
if (pre.includes(cur[_constants.DYNAMIC_ENUM.FIELD_NAME])) return pre;
if (deps.includes(field)) {
return pre.concat(cur[_constants.DYNAMIC_ENUM.FIELD_NAME], flatDeepDeps(cur[_constants.DYNAMIC_ENUM.FIELD_NAME], dataSource));
}
return pre;
}, []);
return depsField;
};
/**
* 返回更新后的数据
*/
exports.flatDeepDeps = flatDeepDeps;
const getUpdateResult = (updateFields, conditions) => {
if (!updateFields?.length) return;
const resetConditions = conditions.map(item => {
const excitingField = updateFields.includes(item[_constants.DYNAMIC_ENUM.FIELD_NAME]);
if (excitingField) return {
...item,
value: undefined
};
return item;
});
return resetConditions;
};
exports.getUpdateResult = getUpdateResult;