getRequestFilter()

in client/client/app/components/ngbGenesTablePanel/ngbGenesTable/ngbGenesTable.service.js [266:333]


    getRequestFilter(isScrollTop) {
        const filter = {
            chromosomeIds: this.genesFilter[`${this.defaultPrefix}chromosome`] || [],
            startIndex: this.genesFilter[`${this.defaultPrefix}startIndex`],
            endIndex: this.genesFilter[`${this.defaultPrefix}endIndex`],
            featureNames: this.genesFilter[`${this.defaultPrefix}featureName`] || [],
            featureId: this.genesFilter[`${this.defaultPrefix}featureId`],
            featureTypes: this.genesFilter[`${this.defaultPrefix}featureType`] || [],
            featureFileId: this.genesFilter[`${this.defaultPrefix}featureFileId`],
            additionalFilters: this.genesFilter.additionalFilters || {},
            attributesFields: this.genesTableColumns.filter(c => !this.prefixedNonAttributeColumns.includes(c)),
            pageSize: this.genesPageSize,
            pointer: isScrollTop ? this.prevPagePointer : this.nextPagePointer,
            orderBy: (this.orderByGenes || []).map(config => ({
                field: config.field,
                desc: !config.ascending
            }))
        };
        if (this.genesFilter[`${this.defaultPrefix}frame`]) {
            filter.frames = [this.genesFilter[`${this.defaultPrefix}frame`]];
        }
        if (this.genesFilter[`${this.defaultPrefix}source`]) {
            filter.sources = [this.genesFilter[`${this.defaultPrefix}source`]];
        }
        if (this.genesFilter[`${this.defaultPrefix}strand`]) {
            switch (this.genesFilter[`${this.defaultPrefix}strand`]) {
                case '+': {
                    filter.strands = ['POSITIVE'];
                    break;
                }
                case '-': {
                    filter.strands = ['NEGATIVE'];
                    break;
                }
            }
        }
        if (this.genesFilter[`${this.defaultPrefix}score`]) {
            filter.score = {
                left: this.genesFilter[`${this.defaultPrefix}score`][0],
                right: this.genesFilter[`${this.defaultPrefix}score`][1]
            };
        }
        const tracks = (this.projectContext.tracks || []).filter(track => track.format === 'GENE');
        if (tracks.length) {
            filter.geneFileIdsByProject = {};
            tracks.forEach(track => {
                let datasetId = track.project ? track.project.id.toString() : undefined;
                if (!datasetId && track.projectId) {
                    if (Number.isNaN(Number(track.projectId))) {
                        const [dataset] = (this.projectContext.datasets || [])
                            .filter(d => d.name === track.projectId);
                        if (dataset) {
                            datasetId = dataset.id;
                        }
                    } else {
                        datasetId = track.projectId;
                    }
                }
                if (datasetId) {
                    if (!filter.geneFileIdsByProject[datasetId]) {
                        filter.geneFileIdsByProject[datasetId] = [];
                    }
                    filter.geneFileIdsByProject[datasetId].push(track.id);
                }
            });
        }
        return filter;
    }