Filtering the Query results

Hey Guys,

Is it possible to filter the query results by date range and other factors. For example I am running a few queries as such

export function dynamicDataset_ready() {

let options = {
    }
        wixData.query("SurveyResponses")
            .contains("arrRt", "Excellent")
            .find()
            .then( (results) => {
 let numberOfItems = results.totalCount; 
                $w('#arrRtExcellent').text = String(numberOfItems);
            });
 
        wixData.query("SurveyResponses")
            .eq("arrRt", "Very Good")
            .find()
            .then( (results) => {
 let numberOfItems = results.totalCount;
                $w('#arrRtVeryGood').text = String(numberOfItems);
            });
 
        wixData.query("SurveyResponses")
            .eq("arrRt", "Good")
            .find()
            .then( (results) => {
 let numberOfItems = results.totalCount; 
                $w('#arrRtGood').text = String(numberOfItems);
            });
 
        wixData.query("SurveyResponses")
            .contains("arrRt", "Fair")
            .find()
            .then( (results) => {
 let numberOfItems = results.totalCount; 
                $w('#arrRtFair').text = String(numberOfItems);
            });

        wixData.query("SurveyResponses")
            .contains("arrRt", "Poor")
            .find()
            .then( (results) => {
 let numberOfItems = results.totalCount; 
                $w('#arrRtPoor').text = String(numberOfItems);
            });
}

I need to filter it so when the following filters on the page runs, the query matches either the date range or Name of people

 
let lastFilterFile;
let lastFilterHrep;
let lastFilterArep;
let lastFilterEmail;
let lastFilterFrom;
let lastFilterTill;

let debounceTimer;

export function sbyfile_keyPress(event, $w) {
 if (debounceTimer) {
        clearTimeout(debounceTimer);
        debounceTimer = undefined;
    }
    debounceTimer = setTimeout(() => {
    filter($w('#sbyfile').value, lastFilterHrep, lastFilterArep, lastFilterEmail, lastFilterFrom, lastFilterTill);
    }, 200);
}

function filter(file, hrep, arep, cmail, asfrom, until) {
 if (lastFilterFile !== file || lastFilterHrep !== hrep || lastFilterArep !== arep || lastFilterEmail !== cmail || lastFilterFrom !== asfrom || lastFilterTill !== until) {
 let newFilter = wixData.filter();
 if(file)
        newFilter = newFilter.contains('title', file);
 if(hrep)
        newFilter = newFilter.contains('hotelRepName', hrep);
 if(arep)
        newFilter = newFilter.contains('airportRep', arep);
 if(cmail)
        newFilter = newFilter.contains('cEmail', cmail);
 if(asfrom)
        newFilter = newFilter.ge('_createdDate', asfrom);
 if(until)
        newFilter = newFilter.le('_createdDate', until);
    $w('#dynamicDataset').setFilter(newFilter);
    lastFilterFile = file;
    lastFilterHrep = hrep;
    lastFilterArep = arep;
    lastFilterEmail = cmail;
    lastFilterFrom = asfrom;
    lastFilterTill = until;
    }
}

export function hrepdd_change(event, $w) {
    filter(lastFilterFile, $w('#hrepdd').value, lastFilterArep, lastFilterEmail, lastFilterFrom, lastFilterTill);
}

export function arepdd_change(event, $w) {
    filter(lastFilterFile, lastFilterHrep, $w('#arepdd').value, lastFilterEmail, lastFilterFrom, lastFilterTill);
}

export function clang_change(event, $w) {
    filter(lastFilterFile, lastFilterHrep, lastFilterArep, lastFilterEmail, lastFilterFrom, lastFilterTill);
}

export function cmail_keyPress(event, $w) {
 if (debounceTimer) {
        clearTimeout(debounceTimer);
        debounceTimer = undefined;
    }
    debounceTimer = setTimeout(() => {
    filter($w('#cmail').value, lastFilterHrep, lastFilterArep, lastFilterEmail, lastFilterFrom, lastFilterTill);
    }, 200);
}

export function from_change(event, $w) {
    filter(lastFilterFile, lastFilterHrep, lastFilterArep, lastFilterEmail, $w("#from").value, lastFilterTill);
}

export function till_change(event, $w) {
    filter(lastFilterFile, lastFilterHrep, lastFilterArep, lastFilterEmail, lastFilterFrom, $w("#till").value);
}

Can someone help please

Shan

1 Like

Hi Shan,
Between method is compatible with Date object
Check out this reference:

Roi.