UNPKG

@aliretail/react-materials-components

Version:
100 lines (83 loc) 2.64 kB
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); }