Switch loaders to OR filtering (#460)

* Switch loaders to OR filtering

* Add or filters to clear button

* Fix clear filters button again
This commit is contained in:
Geometrically 2022-04-22 11:36:48 -07:00 committed by GitHub
parent 06d921d855
commit dc11340faf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -24,7 +24,8 @@
selectedLicenses.length === 0 && selectedLicenses.length === 0 &&
selectedEnvironments.length === 0 && selectedEnvironments.length === 0 &&
selectedVersions.length === 0 && selectedVersions.length === 0 &&
facets.length === 0 facets.length === 0 &&
orFacets.length === 0
" "
class="iconified-button" class="iconified-button"
@click="clearFilters" @click="clearFilters"
@ -70,11 +71,11 @@
x.supported_project_types.includes(projectType) x.supported_project_types.includes(projectType)
)" )"
:key="loader.name" :key="loader.name"
:active-filters="facets" :active-filters="orFacets"
:display-name="loader.name" :display-name="loader.name"
:facet-name="`categories:${loader.name}`" :facet-name="`categories:${loader.name}`"
:icon="loader.icon" :icon="loader.icon"
@toggle="toggleFacet" @toggle="toggleOrFacet"
/> />
</section> </section>
<section aria-label="Environment filters"> <section aria-label="Environment filters">
@ -286,6 +287,7 @@ export default {
selectedEnvironments: [], selectedEnvironments: [],
facets: [], facets: [],
orFacets: [],
results: null, results: null,
pages: [], pages: [],
currentPage: 1, currentPage: 1,
@ -376,13 +378,15 @@ export default {
methods: { methods: {
async clearFilters() { async clearFilters() {
for (const facet of [...this.facets]) await this.toggleFacet(facet, true) for (const facet of [...this.facets]) await this.toggleFacet(facet, true)
for (const facet of [...this.orFacets])
await this.toggleOrFacet(facet, true)
this.selectedLicenses = [] this.selectedLicenses = []
this.selectedVersions = [] this.selectedVersions = []
this.selectedEnvironments = [] this.selectedEnvironments = []
await this.onSearchChange(1) await this.onSearchChange(1)
}, },
async toggleFacet(elementName, sendRequest) { async toggleFacet(elementName, doNotSendRequest) {
const index = this.facets.indexOf(elementName) const index = this.facets.indexOf(elementName)
if (index !== -1) { if (index !== -1) {
this.facets.splice(index, 1) this.facets.splice(index, 1)
@ -390,7 +394,17 @@ export default {
this.facets.push(elementName) this.facets.push(elementName)
} }
if (!sendRequest) await this.onSearchChange(1) if (!doNotSendRequest) await this.onSearchChange(1)
},
async toggleOrFacet(elementName, doNotSendRequest) {
const index = this.orFacets.indexOf(elementName)
if (index !== -1) {
this.orFacets.splice(index, 1)
} else {
this.orFacets.push(elementName)
}
if (!doNotSendRequest) await this.onSearchChange(1)
}, },
async toggleEnv(environment, sendRequest) { async toggleEnv(environment, sendRequest) {
const index = this.selectedEnvironments.indexOf(environment) const index = this.selectedEnvironments.indexOf(environment)
@ -431,6 +445,10 @@ export default {
formattedFacets.push([facet]) formattedFacets.push([facet])
} }
if (this.orFacets.length > 0) {
formattedFacets.push(this.orFacets)
}
if (this.selectedVersions.length > 0) { if (this.selectedVersions.length > 0) {
const versionFacets = [] const versionFacets = []
for (const facet of this.selectedVersions) { for (const facet of this.selectedVersions) {