export function search()

in client/client/app/components/ngbDataSets/internal/utilities.js [358:402]


export function search(pattern, items: Array<Node>) {
    let result = false;
    for (let i = 0; i < items.length; i++) {
        const item = items[i];
        let searchFilterPassed = !pattern || !pattern.length;
        if (item.isProject) {
            let projectItems = item.items;
            if (projectItems && projectItems.length && projectItems[0].isPlaceholder) {
                projectItems = item._lazyItems;
            }
            item.childrenFilterPassed = search(pattern, projectItems);
            searchFilterPassed = searchFilterPassed || item.childrenFilterPassed;
        } else if (item.isTrack && item.format === 'REFERENCE') {
            item.searchFilterPassed = false;
            continue;
        }
        if (!item.searchInfo) {
            item.searchInfo = new SearchInfo();
        }
        if (!item.modifiedNameSearchInfo) {
            item.modifiedNameSearchInfo = new SearchInfo();
        }
        if (!item.metadataSearchInfo) {
            item.metadataSearchInfo = new SearchInfo();
        }
        item.searchInfo.test(pattern, item.displayName);
        item.modifiedNameSearchInfo.test(pattern, item.modifiedName);
        for (const key in item.metadata) {
            if (item.metadata.hasOwnProperty(key)) {
                item.metadataSearchInfo.test(pattern, item.metadata[key], key);
            }
            searchFilterPassed = searchFilterPassed || item.metadataSearchInfo.metadata[key];
        }
        item.searchFilterPassed = searchFilterPassed ||
        item.searchInfo.passed ||
        item.modifiedNameSearchInfo.passed;

        if (item.childrenFilterPassed && item.isProject && pattern.length > 0) {
            expandNodeWithChilds(item);
            item.__expanded = true;
        }
        result = result || item.searchFilterPassed;
    }
    return result;
}