[web] use client-side filtering for split tests in admin panel (#34975)

* [web] use client-side filtering for split tests in admin panel

Filtering on non-indexed fields is not allowed with notablescan.

* [web] add initial value for DEFAULT_FILTERS.active

* [web] unset error before fetching split tests

GitOrigin-RevId: 0813873c5a90d57c4fdbfd0043fcc325f00408aa
This commit is contained in:
Jakob Ackermann
2026-06-26 08:08:10 +00:00
committed by Copybot
parent 1b553c0455
commit a6c98365d9
@@ -10,47 +10,9 @@ const LABS_PHASE = 'labs'
const BETA_PHASE = 'beta' const BETA_PHASE = 'beta'
const RELEASE_PHASE = 'release' const RELEASE_PHASE = 'release'
async function getSplitTests({ name, phase, type, active, archived }) { async function getSplitTests() {
const filters = {}
if (name && name !== '') {
filters.name = { $regex: _.escapeRegExp(name) }
}
if (active) {
filters.$where = 'this.versions[this.versions.length - 1].active === true'
}
if (type === 'split-test') {
const query =
'this.versions[this.versions.length - 1].analyticsEnabled === true'
if (filters.$where) {
filters.$where += `&& ${query}`
} else {
filters.$where = query
}
}
if (type === 'gradual-rollout') {
const query =
'this.versions[this.versions.length - 1].analyticsEnabled === false'
if (filters.$where) {
filters.$where += `&& ${query}`
} else {
filters.$where = query
}
}
if (['alpha', 'labs', 'beta', 'release'].includes(phase)) {
const query = `this.versions[this.versions.length - 1].phase === "${phase}"`
if (filters.$where) {
filters.$where += `&& ${query}`
} else {
filters.$where = query
}
}
if (archived === true) {
filters.archived = true
} else if (archived === false) {
filters.archived = { $ne: true }
}
try { try {
return await SplitTest.find(filters) return await SplitTest.find({})
.populate('archivedBy', ['email', 'first_name', 'last_name']) .populate('archivedBy', ['email', 'first_name', 'last_name'])
.populate('versions.author', ['email', 'first_name', 'last_name']) .populate('versions.author', ['email', 'first_name', 'last_name'])
.limit(300) .limit(300)