filterData: function()

in webapp/components/flow-design-system/fds-demo.js [839:878]


    filterData: function (data, searchTerm, ignoreCase) {
        let field = '';
        if (searchTerm.indexOf(':') > -1) {
            field = searchTerm.split(':')[0].trim();
            searchTerm = searchTerm.split(':')[1].trim();
        }
        const filter = searchTerm ? (ignoreCase ? searchTerm.toLowerCase() : searchTerm) : '';

        if (filter) {
            data = data.filter(function (item) {
                const res = Object.keys(item).find(function (key) {
                    if (field.indexOf('.') > -1) {
                        const objArray = field.split('.');
                        let obj = item;
                        const arrayLength = objArray.length;
                        for (let i = 0; i < arrayLength; i++) {
                            try {
                                obj = obj[objArray[i]];
                            } catch (e) {
                                return false;
                            }
                        }
                        const preItemValue = ('' + obj);
                        const itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                        return itemValue.indexOf(filter) > -1;
                    }

                    if (key !== field && field !== '') {
                        return false;
                    }

                    const preItemValue = ('' + item[key]);
                    const itemValue = ignoreCase ? preItemValue.toLowerCase() : preItemValue;
                    return itemValue.indexOf(filter) > -1;
                });
                return !(typeof res === 'undefined');
            });
        }
        return data;
    },