X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fsearch%2Fadvanced-search.model.ts;h=48616a9ae2161e12d858fc717b7eca7921ebf41c;hb=4a9e71c2b1ef57de01cd04984348b3957ebbc21d;hp=a0f3331755f2f9941590cdfb630c57f21885f382;hpb=0b18f4aa80df8868bf34605423c7a298dffbb2aa;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/search/advanced-search.model.ts b/client/src/app/search/advanced-search.model.ts index a0f333175..48616a9ae 100644 --- a/client/src/app/search/advanced-search.model.ts +++ b/client/src/app/search/advanced-search.model.ts @@ -18,6 +18,8 @@ export class AdvancedSearch { durationMin: number // seconds durationMax: number // seconds + sort: string + constructor (options?: { startDate?: string endDate?: string @@ -29,27 +31,32 @@ export class AdvancedSearch { tagsAllOf?: string durationMin?: string durationMax?: string + sort?: string }) { if (!options) return - this.startDate = options.startDate - this.endDate = options.endDate - this.nsfw = options.nsfw - this.categoryOneOf = options.categoryOneOf - this.licenceOneOf = options.licenceOneOf - this.languageOneOf = options.languageOneOf - this.tagsOneOf = options.tagsOneOf - this.tagsAllOf = options.tagsAllOf + this.startDate = options.startDate || undefined + this.endDate = options.endDate || undefined + this.nsfw = options.nsfw || undefined + this.categoryOneOf = options.categoryOneOf || undefined + this.licenceOneOf = options.licenceOneOf || undefined + this.languageOneOf = options.languageOneOf || undefined + this.tagsOneOf = options.tagsOneOf || undefined + this.tagsAllOf = options.tagsAllOf || undefined this.durationMin = parseInt(options.durationMin, 10) this.durationMax = parseInt(options.durationMax, 10) if (isNaN(this.durationMin)) this.durationMin = undefined if (isNaN(this.durationMax)) this.durationMax = undefined + + this.sort = options.sort || '-match' } containsValues () { const obj = this.toUrlObject() for (const k of Object.keys(obj)) { + if (k === 'sort') continue // Exception + if (obj[k] !== undefined) return true } @@ -67,6 +74,8 @@ export class AdvancedSearch { this.tagsAllOf = undefined this.durationMin = undefined this.durationMax = undefined + + this.sort = '-match' } toUrlObject () { @@ -80,7 +89,8 @@ export class AdvancedSearch { tagsOneOf: this.tagsOneOf, tagsAllOf: this.tagsAllOf, durationMin: this.durationMin, - durationMax: this.durationMax + durationMax: this.durationMax, + sort: this.sort } } @@ -89,13 +99,22 @@ export class AdvancedSearch { startDate: this.startDate, endDate: this.endDate, nsfw: this.nsfw, - categoryOneOf: this.categoryOneOf ? this.categoryOneOf.split(',') : undefined, - licenceOneOf: this.licenceOneOf ? this.licenceOneOf.split(',') : undefined, - languageOneOf: this.languageOneOf ? this.languageOneOf.split(',') : undefined, - tagsOneOf: this.tagsOneOf ? this.tagsOneOf.split(',') : undefined, - tagsAllOf: this.tagsAllOf ? this.tagsAllOf.split(',') : undefined, + categoryOneOf: this.intoArray(this.categoryOneOf), + licenceOneOf: this.intoArray(this.licenceOneOf), + languageOneOf: this.intoArray(this.languageOneOf), + tagsOneOf: this.intoArray(this.tagsOneOf), + tagsAllOf: this.intoArray(this.tagsAllOf), durationMin: this.durationMin, - durationMax: this.durationMax + durationMax: this.durationMax, + sort: this.sort } } + + private intoArray (value: any) { + if (!value) return undefined + + if (typeof value === 'string') return value.split(',') + + return [ value ] + } }