From 31d065cc50e17a9abf263ed8c606cb272cd4933d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Maldonado?= Date: Tue, 27 Nov 2018 18:57:02 +0100 Subject: Add search by original publication date --- client/src/app/search/advanced-search.model.ts | 14 ++++++++ .../src/app/search/search-filters.component.html | 23 +++++++++++- client/src/app/search/search-filters.component.ts | 42 ++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) (limited to 'client') diff --git a/client/src/app/search/advanced-search.model.ts b/client/src/app/search/advanced-search.model.ts index 033fa9bba..5b713e145 100644 --- a/client/src/app/search/advanced-search.model.ts +++ b/client/src/app/search/advanced-search.model.ts @@ -4,6 +4,9 @@ export class AdvancedSearch { startDate: string // ISO 8601 endDate: string // ISO 8601 + originallyPublishedStartDate: string // ISO 8601 + originallyPublishedEndDate: string // ISO 8601 + nsfw: NSFWQuery categoryOneOf: string @@ -23,6 +26,8 @@ export class AdvancedSearch { constructor (options?: { startDate?: string endDate?: string + originallyPublishedStartDate?: string + originallyPublishedEndDate?: string nsfw?: NSFWQuery categoryOneOf?: string licenceOneOf?: string @@ -37,6 +42,9 @@ export class AdvancedSearch { this.startDate = options.startDate || undefined this.endDate = options.endDate || undefined + this.originallyPublishedStartDate = options.originallyPublishedStartDate || undefined + this.originallyPublishedEndDate = options.originallyPublishedEndDate || undefined + this.nsfw = options.nsfw || undefined this.categoryOneOf = options.categoryOneOf || undefined this.licenceOneOf = options.licenceOneOf || undefined @@ -66,6 +74,8 @@ export class AdvancedSearch { reset () { this.startDate = undefined this.endDate = undefined + this.originallyPublishedStartDate = undefined + this.originallyPublishedEndDate = undefined this.nsfw = undefined this.categoryOneOf = undefined this.licenceOneOf = undefined @@ -82,6 +92,8 @@ export class AdvancedSearch { return { startDate: this.startDate, endDate: this.endDate, + originallyPublishedStartDate: this.originallyPublishedStartDate, + originallyPublishedEndDate: this.originallyPublishedEndDate, nsfw: this.nsfw, categoryOneOf: this.categoryOneOf, licenceOneOf: this.licenceOneOf, @@ -98,6 +110,8 @@ export class AdvancedSearch { return { startDate: this.startDate, endDate: this.endDate, + originallyPublishedStartDate: this.originallyPublishedStartDate, + originallyPublishedEndDate: this.originallyPublishedEndDate, nsfw: this.nsfw, categoryOneOf: this.intoArray(this.categoryOneOf), licenceOneOf: this.intoArray(this.licenceOneOf), diff --git a/client/src/app/search/search-filters.component.html b/client/src/app/search/search-filters.component.html index 74bb781f4..8220a990b 100644 --- a/client/src/app/search/search-filters.component.html +++ b/client/src/app/search/search-filters.component.html @@ -20,6 +20,27 @@ +
+ + +
+
+ +
+
+ +
+
+
+
Duration
@@ -93,4 +114,4 @@
- \ No newline at end of file + diff --git a/client/src/app/search/search-filters.component.ts b/client/src/app/search/search-filters.component.ts index 3fdc6df35..762a6b7f2 100644 --- a/client/src/app/search/search-filters.component.ts +++ b/client/src/app/search/search-filters.component.ts @@ -25,6 +25,9 @@ export class SearchFiltersComponent implements OnInit { publishedDateRange: string durationRange: string + originallyPublishedStartYear: string + originallyPublishedEndYear: string + constructor ( private i18n: I18n, private serverService: ServerService @@ -86,15 +89,27 @@ export class SearchFiltersComponent implements OnInit { this.loadFromDurationRange() this.loadFromPublishedRange() + this.loadOriginallyPublishedAtYears() } formUpdated () { this.updateModelFromDurationRange() this.updateModelFromPublishedRange() + this.updateModelFromOriginallyPublishedAtYears() this.filtered.emit(this.advancedSearch) } + private loadOriginallyPublishedAtYears () { + this.originallyPublishedStartYear = this.advancedSearch.originallyPublishedStartDate + ? new Date(this.advancedSearch.originallyPublishedStartDate).getFullYear().toString() + : null + + this.originallyPublishedEndYear = this.advancedSearch.originallyPublishedEndDate + ? new Date(this.advancedSearch.originallyPublishedEndDate).getFullYear().toString() + : null + } + private loadFromDurationRange () { if (this.advancedSearch.durationMin || this.advancedSearch.durationMax) { const fourMinutes = 60 * 4 @@ -127,6 +142,32 @@ export class SearchFiltersComponent implements OnInit { } } + private updateModelFromOriginallyPublishedAtYears () { + const baseDate = new Date() + baseDate.setHours(0, 0, 0, 0) + baseDate.setMonth(0, 1) + + if (this.originallyPublishedStartYear) { + const year = parseInt(this.originallyPublishedStartYear, 10) + const start = new Date(baseDate) + start.setFullYear(year) + + this.advancedSearch.originallyPublishedStartDate = start.toISOString() + } else { + this.advancedSearch.originallyPublishedStartDate = null + } + + if (this.originallyPublishedEndYear) { + const year = parseInt(this.originallyPublishedEndYear, 10) + const end = new Date(baseDate) + end.setFullYear(year) + + this.advancedSearch.originallyPublishedEndDate = end.toISOString() + } else { + this.advancedSearch.originallyPublishedEndDate = null + } + } + private updateModelFromDurationRange () { if (!this.durationRange) return @@ -174,4 +215,5 @@ export class SearchFiltersComponent implements OnInit { this.advancedSearch.startDate = date.toISOString() } + } -- cgit v1.2.3