linkmore-design
Version:
🌈 🚀lm组件库。🚀
50 lines (48 loc) • 1.78 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import castArray from 'lodash/castArray';
import isNil from 'lodash/isNil';
import { DYNAMIC_ENUM } from "./constants";
export var getFilterKeyValue = function getFilterKeyValue(conditions) {
var values = (conditions || []).reduce(function (pre, cur) {
if (isNil(cur.value)) return pre;
pre[cur === null || cur === void 0 ? void 0 : cur[DYNAMIC_ENUM.FIELD_NAME]] = cur[DYNAMIC_ENUM.VALUE];
return pre;
}, {});
return values;
};
/**
* 根据指定字段获取数据源中的依赖字段
* 遍历依赖字段返回需要更新的字段
* @return {Array} string[]
* @example
*
* flatDeepDeps('a', [{fieldName: 'a'}, {fieldName: 'b', dependencies: ['a']}])
* // => ['b']
*/
export var flatDeepDeps = function flatDeepDeps(field, dataSource) {
if (!Array.isArray(dataSource)) return [];
var depsField = dataSource.reduce(function (pre, cur) {
if (!cur.dependencies) return pre;
var deps = castArray(cur.dependencies);
if (pre.includes(cur[DYNAMIC_ENUM.FIELD_NAME])) return pre;
if (deps.includes(field)) {
return pre.concat(cur[DYNAMIC_ENUM.FIELD_NAME], flatDeepDeps(cur[DYNAMIC_ENUM.FIELD_NAME], dataSource));
}
return pre;
}, []);
return depsField;
};
/**
* 返回更新后的数据
*/
export var getUpdateResult = function getUpdateResult(updateFields, conditions) {
if (!(updateFields !== null && updateFields !== void 0 && updateFields.length)) return;
var resetConditions = conditions.map(function (item) {
var excitingField = updateFields.includes(item[DYNAMIC_ENUM.FIELD_NAME]);
if (excitingField) return _objectSpread(_objectSpread({}, item), {}, {
value: undefined
});
return item;
});
return resetConditions;
};