zhou zhou
9 小时以前 44ac1c9a2a6ee6ac9f618f4a63510f8f94d1b1a9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
const EXTEND_FIELD_SOURCE_REGEXP = /^extendFields\.\[(.+)\]$/;
 
const getExtendFieldKey = (source) => {
    const match = EXTEND_FIELD_SOURCE_REGEXP.exec(source || '');
    return match ? match[1] : null;
};
 
const reorderColumns = (columns = [], columnRanks = []) => {
    if (!Array.isArray(columnRanks) || columnRanks.length === 0) {
        return columns;
    }
 
    return columns.reduce((accumulator, column, index) => {
        const rank = columnRanks.indexOf(index);
        if (rank === -1) {
            accumulator[index] = column;
        } else {
            accumulator[rank] = column;
        }
        return accumulator;
    }, []).filter(Boolean);
};
 
export const resolveVisibleColumns = (
    storeKey,
    defaultHiddenColumns = [],
    columns = [],
    hiddenColumns = defaultHiddenColumns,
    columnRanks = []
) => {
    if (!storeKey || !Array.isArray(columns)) {
        return [];
    }
 
    const visibleColumns = reorderColumns(columns, columnRanks);
    const effectiveHiddenColumns = Array.isArray(hiddenColumns) ? hiddenColumns : defaultHiddenColumns;
 
    return visibleColumns.filter((column) => {
        if (!column?.source) {
            return false;
        }
        return !effectiveHiddenColumns.includes(column.source);
    });
};
 
export const getValueBySource = (record, source) => {
    if (!record || !source) {
        return '';
    }
 
    const extendFieldKey = getExtendFieldKey(source);
    if (extendFieldKey) {
        return record.extendFields?.[extendFieldKey] ?? '';
    }
 
    return source.split('.').reduce((value, key) => {
        if (value == null) {
            return undefined;
        }
        return value[key];
    }, record) ?? '';
};