@aliretail/react-materials-components
Version:
100 lines (83 loc) • 2.64 kB
JavaScript
import * as R from 'ramda'; // 获取 column 的唯一标识顺序
// TODO: 获取顺序需要写到文档
export function getColumnKey(column) {
if (column) {
return column.key || column.dataIndex || column.title || column.group;
}
return null;
}
/**
* 从 localStorage 获取表格列配置缓存
*
* @param {string} storageKey localStorage 中的 key
* @return {*} 返回的普通对象,key 是表格列的 key 属性值,value 是 boolean,true 表示选中
*/
export function getLocalStorageConfig(storageKey) {
try {
var config = localStorage.getItem(storageKey);
var res = JSON.parse(config);
if (Array.isArray(res)) {
return res;
}
return [];
} catch (e) {
return [];
}
}
/**
* 把表格列配置保存进 localStorage
* @param {string} storageKey localStorage 中的 key
* @param {Object} config 普通对象,key 是表格列的 key 属性值,value 是 boolean,true 表示选中
*/
export function saveColumnConfig(storageKey, config) {
if (config === void 0) {
config = {};
}
try {
localStorage.setItem(storageKey, JSON.stringify(config));
} catch (e) {// do nothing
}
}
/**
* 将 setting 的每一个配置在 columns 里面寻找,都能找到算通过
* @param columns
* @param setting
*/
var checkDifferent = function checkDifferent(columns, setting) {
if (setting === void 0) {
setting = [];
}
var status = false;
setting.forEach(function (settingItem) {
var settingItemKey = getColumnKey(settingItem);
var findIdx = R.findIndex(function (columnItem) {
return getColumnKey(columnItem) === settingItemKey;
})(columns);
if (findIdx < 0) {
status = true;
}
if (settingItem.group && columns[findIdx]) {
checkDifferent(columns[findIdx].children, settingItem.children);
}
});
return status;
};
export function needResort(columns, setting) {
if (setting.length > 0) {
return checkDifferent(columns, setting);
}
return true;
} // TODO: 存储需要做排除
// column 初始处理,只允许特定的字段存在
export function filterSetting(settingList) {
var filterSettingItem = function filterSettingItem(columnSetting) {
if (typeof columnSetting === 'object') {
var filterItem = R.pick(['key', 'title', 'dataIndex', 'group', 'hidden', 'selected', 'chosen', 'width', 'align', 'children'], columnSetting);
if (filterItem.group) {
filterItem.children = R.map(filterSettingItem, filterItem.children);
}
return filterItem;
}
};
return R.compose(R.filter(R.is(Object)), R.map(filterSettingItem))(settingList);
}