- Before
+ To
-
diff --git a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.spec.ts b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.spec.ts
index 10762264a..1f6ee909e 100644
--- a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.spec.ts
+++ b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.spec.ts
@@ -61,7 +61,7 @@ describe('DatesDropdownComponent', () => {
it('should support date input, emit change', fakeAsync(() => {
let result: string
- component.createdDateAfterChange.subscribe((date) => (result = date))
+ component.createdDateFromChange.subscribe((date) => (result = date))
const input: HTMLInputElement = fixture.nativeElement.querySelector('input')
input.value = '5/30/2023'
input.dispatchEvent(new Event('change'))
@@ -83,68 +83,68 @@ describe('DatesDropdownComponent', () => {
let result: DateSelection
component.datesSet.subscribe((date) => (result = date))
component.setCreatedRelativeDate(null)
- component.setCreatedRelativeDate(RelativeDate.LAST_7_DAYS)
+ component.setCreatedRelativeDate(RelativeDate.WITHIN_1_WEEK)
component.setAddedRelativeDate(null)
- component.setAddedRelativeDate(RelativeDate.LAST_7_DAYS)
+ component.setAddedRelativeDate(RelativeDate.WITHIN_1_WEEK)
tick(500)
expect(result).toEqual({
- createdAfter: null,
- createdBefore: null,
- createdRelativeDateID: RelativeDate.LAST_7_DAYS,
- addedAfter: null,
- addedBefore: null,
- addedRelativeDateID: RelativeDate.LAST_7_DAYS,
+ createdFrom: null,
+ createdTo: null,
+ createdRelativeDateID: RelativeDate.WITHIN_1_WEEK,
+ addedFrom: null,
+ addedTo: null,
+ addedRelativeDateID: RelativeDate.WITHIN_1_WEEK,
})
}))
it('should support report if active', () => {
- component.createdRelativeDate = RelativeDate.LAST_7_DAYS
+ component.createdRelativeDate = RelativeDate.WITHIN_1_WEEK
expect(component.isActive).toBeTruthy()
component.createdRelativeDate = null
- component.createdDateAfter = '2023-05-30'
+ component.createdDateFrom = '2023-05-30'
expect(component.isActive).toBeTruthy()
- component.createdDateAfter = null
- component.createdDateBefore = '2023-05-30'
+ component.createdDateFrom = null
+ component.createdDateTo = '2023-05-30'
expect(component.isActive).toBeTruthy()
- component.createdDateBefore = null
+ component.createdDateTo = null
- component.addedRelativeDate = RelativeDate.LAST_7_DAYS
+ component.addedRelativeDate = RelativeDate.WITHIN_1_WEEK
expect(component.isActive).toBeTruthy()
component.addedRelativeDate = null
- component.addedDateAfter = '2023-05-30'
+ component.addedDateFrom = '2023-05-30'
expect(component.isActive).toBeTruthy()
- component.addedDateAfter = null
- component.addedDateBefore = '2023-05-30'
+ component.addedDateFrom = null
+ component.addedDateTo = '2023-05-30'
expect(component.isActive).toBeTruthy()
- component.addedDateBefore = null
+ component.addedDateTo = null
expect(component.isActive).toBeFalsy()
})
it('should support reset', () => {
- component.createdDateAfter = '2023-05-30'
+ component.createdDateFrom = '2023-05-30'
component.reset()
- expect(component.createdDateAfter).toBeNull()
+ expect(component.createdDateFrom).toBeNull()
})
- it('should support clearAfter', () => {
- component.createdDateAfter = '2023-05-30'
- component.clearCreatedAfter()
- expect(component.createdDateAfter).toBeNull()
+ it('should support clearFrom', () => {
+ component.createdDateFrom = '2023-05-30'
+ component.clearCreatedFrom()
+ expect(component.createdDateFrom).toBeNull()
- component.addedDateAfter = '2023-05-30'
- component.clearAddedAfter()
- expect(component.addedDateAfter).toBeNull()
+ component.addedDateFrom = '2023-05-30'
+ component.clearAddedFrom()
+ expect(component.addedDateFrom).toBeNull()
})
- it('should support clearBefore', () => {
- component.createdDateBefore = '2023-05-30'
- component.clearCreatedBefore()
- expect(component.createdDateBefore).toBeNull()
+ it('should support clearTo', () => {
+ component.createdDateTo = '2023-05-30'
+ component.clearCreatedTo()
+ expect(component.createdDateTo).toBeNull()
- component.addedDateBefore = '2023-05-30'
- component.clearAddedBefore()
- expect(component.addedDateBefore).toBeNull()
+ component.addedDateTo = '2023-05-30'
+ component.clearAddedTo()
+ expect(component.addedDateTo).toBeNull()
})
it('should limit keyboard events', () => {
diff --git a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts
index 356ba510a..478519487 100644
--- a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts
+++ b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts
@@ -23,19 +23,19 @@ import { popperOptionsReenablePreventOverflow } from 'src/app/utils/popper-optio
import { ClearableBadgeComponent } from '../clearable-badge/clearable-badge.component'
export interface DateSelection {
- createdBefore?: string
- createdAfter?: string
+ createdTo?: string
+ createdFrom?: string
createdRelativeDateID?: number
- addedBefore?: string
- addedAfter?: string
+ addedTo?: string
+ addedFrom?: string
addedRelativeDateID?: number
}
export enum RelativeDate {
- LAST_7_DAYS = 0,
- LAST_MONTH = 1,
- LAST_3_MONTHS = 2,
- LAST_YEAR = 3,
+ WITHIN_1_WEEK = 0,
+ WITHIN_1_MONTH = 1,
+ WITHIN_3_MONTHS = 2,
+ WITHIN_1_YEAR = 3,
}
@Component({
@@ -63,23 +63,23 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
relativeDates = [
{
- id: RelativeDate.LAST_7_DAYS,
- name: $localize`Last 7 days`,
+ id: RelativeDate.WITHIN_1_WEEK,
+ name: $localize`Within 1 week`,
date: new Date().setDate(new Date().getDate() - 7),
},
{
- id: RelativeDate.LAST_MONTH,
- name: $localize`Last month`,
+ id: RelativeDate.WITHIN_1_MONTH,
+ name: $localize`Within 1 month`,
date: new Date().setMonth(new Date().getMonth() - 1),
},
{
- id: RelativeDate.LAST_3_MONTHS,
- name: $localize`Last 3 months`,
+ id: RelativeDate.WITHIN_3_MONTHS,
+ name: $localize`Within 3 months`,
date: new Date().setMonth(new Date().getMonth() - 3),
},
{
- id: RelativeDate.LAST_YEAR,
- name: $localize`Last year`,
+ id: RelativeDate.WITHIN_1_YEAR,
+ name: $localize`Within 1 year`,
date: new Date().setFullYear(new Date().getFullYear() - 1),
},
]
@@ -88,16 +88,16 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
// created
@Input()
- createdDateBefore: string
+ createdDateTo: string
@Output()
- createdDateBeforeChange = new EventEmitter
()
+ createdDateToChange = new EventEmitter()
@Input()
- createdDateAfter: string
+ createdDateFrom: string
@Output()
- createdDateAfterChange = new EventEmitter()
+ createdDateFromChange = new EventEmitter()
@Input()
createdRelativeDate: RelativeDate
@@ -107,16 +107,16 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
// added
@Input()
- addedDateBefore: string
+ addedDateTo: string
@Output()
- addedDateBeforeChange = new EventEmitter()
+ addedDateToChange = new EventEmitter()
@Input()
- addedDateAfter: string
+ addedDateFrom: string
@Output()
- addedDateAfterChange = new EventEmitter()
+ addedDateFromChange = new EventEmitter()
@Input()
addedRelativeDate: RelativeDate
@@ -136,11 +136,11 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
get isActive(): boolean {
return (
this.createdRelativeDate !== null ||
- this.createdDateAfter?.length > 0 ||
- this.createdDateBefore?.length > 0 ||
+ this.createdDateFrom?.length > 0 ||
+ this.createdDateTo?.length > 0 ||
this.addedRelativeDate !== null ||
- this.addedDateAfter?.length > 0 ||
- this.addedDateBefore?.length > 0
+ this.addedDateFrom?.length > 0 ||
+ this.addedDateTo?.length > 0
)
}
@@ -161,42 +161,42 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
}
reset() {
- this.createdDateBefore = null
- this.createdDateAfter = null
+ this.createdDateTo = null
+ this.createdDateFrom = null
this.createdRelativeDate = null
- this.addedDateBefore = null
- this.addedDateAfter = null
+ this.addedDateTo = null
+ this.addedDateFrom = null
this.addedRelativeDate = null
this.onChange()
}
setCreatedRelativeDate(rd: RelativeDate) {
- this.createdDateBefore = null
- this.createdDateAfter = null
+ this.createdDateTo = null
+ this.createdDateFrom = null
this.createdRelativeDate = this.createdRelativeDate == rd ? null : rd
this.onChange()
}
setAddedRelativeDate(rd: RelativeDate) {
- this.addedDateBefore = null
- this.addedDateAfter = null
+ this.addedDateTo = null
+ this.addedDateFrom = null
this.addedRelativeDate = this.addedRelativeDate == rd ? null : rd
this.onChange()
}
onChange() {
- this.createdDateBeforeChange.emit(this.createdDateBefore)
- this.createdDateAfterChange.emit(this.createdDateAfter)
+ this.createdDateToChange.emit(this.createdDateTo)
+ this.createdDateFromChange.emit(this.createdDateFrom)
this.createdRelativeDateChange.emit(this.createdRelativeDate)
- this.addedDateBeforeChange.emit(this.addedDateBefore)
- this.addedDateAfterChange.emit(this.addedDateAfter)
+ this.addedDateToChange.emit(this.addedDateTo)
+ this.addedDateFromChange.emit(this.addedDateFrom)
this.addedRelativeDateChange.emit(this.addedRelativeDate)
this.datesSet.emit({
- createdAfter: this.createdDateAfter,
- createdBefore: this.createdDateBefore,
+ createdFrom: this.createdDateFrom,
+ createdTo: this.createdDateTo,
createdRelativeDateID: this.createdRelativeDate,
- addedAfter: this.addedDateAfter,
- addedBefore: this.addedDateBefore,
+ addedFrom: this.addedDateFrom,
+ addedTo: this.addedDateTo,
addedRelativeDateID: this.addedRelativeDate,
})
}
@@ -205,30 +205,30 @@ export class DatesDropdownComponent implements OnInit, OnDestroy {
this.createdRelativeDate = null
this.addedRelativeDate = null
this.datesSetDebounce$.next({
- createdAfter: this.createdDateAfter,
- createdBefore: this.createdDateBefore,
- addedAfter: this.addedDateAfter,
- addedBefore: this.addedDateBefore,
+ createdAfter: this.createdDateFrom,
+ createdBefore: this.createdDateTo,
+ addedAfter: this.addedDateFrom,
+ addedBefore: this.addedDateTo,
})
}
- clearCreatedBefore() {
- this.createdDateBefore = null
+ clearCreatedTo() {
+ this.createdDateTo = null
this.onChange()
}
- clearCreatedAfter() {
- this.createdDateAfter = null
+ clearCreatedFrom() {
+ this.createdDateFrom = null
this.onChange()
}
- clearAddedBefore() {
- this.addedDateBefore = null
+ clearAddedTo() {
+ this.addedDateTo = null
this.onChange()
}
- clearAddedAfter() {
- this.addedDateAfter = null
+ clearAddedFrom() {
+ this.addedDateFrom = null
this.onChange()
}
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html
index 32c2a1908..fcb7bed8f 100644
--- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html
+++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.html
@@ -94,11 +94,11 @@
{
])
}))
- it('should ingest filter rules for date created after', fakeAsync(() => {
- expect(component.dateCreatedAfter).toBeNull()
+ it('should ingest filter rules for date created after and adjust date by 1 day', fakeAsync(() => {
+ expect(component.dateCreatedFrom).toBeNull()
component.filterRules = [
{
rule_type: FILTER_CREATED_AFTER,
value: '2023-05-14',
},
]
- expect(component.dateCreatedAfter).toEqual('2023-05-14')
+ expect(component.dateCreatedFrom).toEqual('2023-05-15')
}))
- it('should ingest filter rules for date created before', fakeAsync(() => {
- expect(component.dateCreatedBefore).toBeNull()
+ it('should ingest filter rules for date created from', fakeAsync(() => {
+ expect(component.dateCreatedFrom).toBeNull()
+ component.filterRules = [
+ {
+ rule_type: FILTER_CREATED_FROM,
+ value: '2023-05-14',
+ },
+ ]
+ expect(component.dateCreatedFrom).toEqual('2023-05-14')
+ }))
+
+ it('should ingest filter rules for date created before and adjust date by 1 day', fakeAsync(() => {
+ expect(component.dateCreatedTo).toBeNull()
component.filterRules = [
{
rule_type: FILTER_CREATED_BEFORE,
value: '2023-05-14',
},
]
- expect(component.dateCreatedBefore).toEqual('2023-05-14')
+ expect(component.dateCreatedTo).toEqual('2023-05-13')
}))
- it('should ingest filter rules for date added after', fakeAsync(() => {
- expect(component.dateAddedAfter).toBeNull()
+ it('should ingest filter rules for date created to', fakeAsync(() => {
+ expect(component.dateCreatedTo).toBeNull()
+ component.filterRules = [
+ {
+ rule_type: FILTER_CREATED_TO,
+ value: '2023-05-14',
+ },
+ ]
+ expect(component.dateCreatedTo).toEqual('2023-05-14')
+ }))
+
+ it('should ingest filter rules for date added after and adjust date by 1 day', fakeAsync(() => {
+ expect(component.dateAddedFrom).toBeNull()
component.filterRules = [
{
rule_type: FILTER_ADDED_AFTER,
value: '2023-05-14',
},
]
- expect(component.dateAddedAfter).toEqual('2023-05-14')
+ expect(component.dateAddedFrom).toEqual('2023-05-15')
}))
- it('should ingest filter rules for date added before', fakeAsync(() => {
- expect(component.dateAddedBefore).toBeNull()
+ it('should ingest filter rules for date added from', fakeAsync(() => {
+ expect(component.dateAddedFrom).toBeNull()
+ component.filterRules = [
+ {
+ rule_type: FILTER_ADDED_FROM,
+ value: '2023-05-14',
+ },
+ ]
+ expect(component.dateAddedFrom).toEqual('2023-05-14')
+ }))
+
+ it('should ingest filter rules for date added before and adjust date by 1 day', fakeAsync(() => {
+ expect(component.dateAddedTo).toBeNull()
component.filterRules = [
{
rule_type: FILTER_ADDED_BEFORE,
value: '2023-05-14',
},
]
- expect(component.dateAddedBefore).toEqual('2023-05-14')
+ expect(component.dateAddedTo).toEqual('2023-05-13')
+ }))
+
+ it('should ingest filter rules for date added to', fakeAsync(() => {
+ expect(component.dateAddedTo).toBeNull()
+ component.filterRules = [
+ {
+ rule_type: FILTER_ADDED_TO,
+ value: '2023-05-14',
+ },
+ ]
+ expect(component.dateAddedTo).toEqual('2023-05-14')
}))
it('should ingest filter rules for has all tags', fakeAsync(() => {
@@ -1464,7 +1512,7 @@ describe('FilterEditorComponent', () => {
])
}))
- it('should convert user input to correct filter rules on date created after', fakeAsync(() => {
+ it('should convert user input to correct filter rules on date created from', fakeAsync(() => {
const dateCreatedDropdown = fixture.debugElement.queryAll(
By.directive(DatesDropdownComponent)
)[0]
@@ -1473,18 +1521,18 @@ describe('FilterEditorComponent', () => {
dateCreatedAfter.nativeElement.value = '05/14/2023'
// dateCreatedAfter.triggerEventHandler('change')
// TODO: why isn't ngModel triggering this on change?
- component.dateCreatedAfter = '2023-05-14'
+ component.dateCreatedFrom = '2023-05-14'
fixture.detectChanges()
tick(400)
expect(component.filterRules).toEqual([
{
- rule_type: FILTER_CREATED_AFTER,
+ rule_type: FILTER_CREATED_FROM,
value: '2023-05-14',
},
])
}))
- it('should convert user input to correct filter rules on date created before', fakeAsync(() => {
+ it('should convert user input to correct filter rules on date created to', fakeAsync(() => {
const dateCreatedDropdown = fixture.debugElement.queryAll(
By.directive(DatesDropdownComponent)
)[0]
@@ -1493,12 +1541,12 @@ describe('FilterEditorComponent', () => {
dateCreatedBefore.nativeElement.value = '05/14/2023'
// dateCreatedBefore.triggerEventHandler('change')
// TODO: why isn't ngModel triggering this on change?
- component.dateCreatedBefore = '2023-05-14'
+ component.dateCreatedTo = '2023-05-14'
fixture.detectChanges()
tick(400)
expect(component.filterRules).toEqual([
{
- rule_type: FILTER_CREATED_BEFORE,
+ rule_type: FILTER_CREATED_TO,
value: '2023-05-14',
},
])
@@ -1578,12 +1626,12 @@ describe('FilterEditorComponent', () => {
dateAddedAfter.nativeElement.value = '05/14/2023'
// dateAddedAfter.triggerEventHandler('change')
// TODO: why isn't ngModel triggering this on change?
- component.dateAddedAfter = '2023-05-14'
+ component.dateAddedFrom = '2023-05-14'
fixture.detectChanges()
tick(400)
expect(component.filterRules).toEqual([
{
- rule_type: FILTER_ADDED_AFTER,
+ rule_type: FILTER_ADDED_FROM,
value: '2023-05-14',
},
])
@@ -1598,12 +1646,12 @@ describe('FilterEditorComponent', () => {
dateAddedBefore.nativeElement.value = '05/14/2023'
// dateAddedBefore.triggerEventHandler('change')
// TODO: why isn't ngModel triggering this on change?
- component.dateAddedBefore = '2023-05-14'
+ component.dateAddedTo = '2023-05-14'
fixture.detectChanges()
tick(400)
expect(component.filterRules).toEqual([
{
- rule_type: FILTER_ADDED_BEFORE,
+ rule_type: FILTER_ADDED_TO,
value: '2023-05-14',
},
])
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
index 6e9a3fb7d..2179efaf4 100644
--- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
+++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
@@ -38,6 +38,8 @@ import { FilterRule } from 'src/app/data/filter-rule'
import {
FILTER_ADDED_AFTER,
FILTER_ADDED_BEFORE,
+ FILTER_ADDED_FROM,
+ FILTER_ADDED_TO,
FILTER_ASN,
FILTER_ASN_GT,
FILTER_ASN_ISNULL,
@@ -45,6 +47,8 @@ import {
FILTER_CORRESPONDENT,
FILTER_CREATED_AFTER,
FILTER_CREATED_BEFORE,
+ FILTER_CREATED_FROM,
+ FILTER_CREATED_TO,
FILTER_CUSTOM_FIELDS_QUERY,
FILTER_CUSTOM_FIELDS_TEXT,
FILTER_DOCUMENT_TYPE,
@@ -133,19 +137,19 @@ const RELATIVE_DATE_QUERY_REGEXP_CREATED = /created:\[([^\]]+)\]/g
const RELATIVE_DATE_QUERY_REGEXP_ADDED = /added:\[([^\]]+)\]/g
const RELATIVE_DATE_QUERYSTRINGS = [
{
- relativeDate: RelativeDate.LAST_7_DAYS,
+ relativeDate: RelativeDate.WITHIN_1_WEEK,
dateQuery: '-1 week to now',
},
{
- relativeDate: RelativeDate.LAST_MONTH,
+ relativeDate: RelativeDate.WITHIN_1_MONTH,
dateQuery: '-1 month to now',
},
{
- relativeDate: RelativeDate.LAST_3_MONTHS,
+ relativeDate: RelativeDate.WITHIN_3_MONTHS,
dateQuery: '-3 month to now',
},
{
- relativeDate: RelativeDate.LAST_YEAR,
+ relativeDate: RelativeDate.WITHIN_1_YEAR,
dateQuery: '-1 year to now',
},
]
@@ -349,10 +353,10 @@ export class FilterEditorComponent
storagePathSelectionModel = new FilterableDropdownSelectionModel()
customFieldQueriesModel = new CustomFieldQueriesModel()
- dateCreatedBefore: string
- dateCreatedAfter: string
- dateAddedBefore: string
- dateAddedAfter: string
+ dateCreatedTo: string
+ dateCreatedFrom: string
+ dateAddedTo: string
+ dateAddedFrom: string
dateCreatedRelativeDate: RelativeDate
dateAddedRelativeDate: RelativeDate
@@ -385,10 +389,10 @@ export class FilterEditorComponent
this.customFieldQueriesModel.clear(false)
this._textFilter = null
this._moreLikeId = null
- this.dateAddedBefore = null
- this.dateAddedAfter = null
- this.dateCreatedBefore = null
- this.dateCreatedAfter = null
+ this.dateAddedTo = null
+ this.dateAddedFrom = null
+ this.dateCreatedTo = null
+ this.dateCreatedFrom = null
this.dateCreatedRelativeDate = null
this.dateAddedRelativeDate = null
this.textFilterModifier = TEXT_FILTER_MODIFIER_EQUALS
@@ -458,16 +462,40 @@ export class FilterEditorComponent
})
break
case FILTER_CREATED_AFTER:
- this.dateCreatedAfter = rule.value
+ // Old rules require adjusting date by a day
+ const createdAfter = new Date(rule.value)
+ createdAfter.setDate(createdAfter.getDate() + 1)
+ this.dateCreatedFrom = createdAfter.toISOString().split('T')[0]
break
case FILTER_CREATED_BEFORE:
- this.dateCreatedBefore = rule.value
+ // Old rules require adjusting date by a day
+ const createdBefore = new Date(rule.value)
+ createdBefore.setDate(createdBefore.getDate() - 1)
+ this.dateCreatedTo = createdBefore.toISOString().split('T')[0]
break
case FILTER_ADDED_AFTER:
- this.dateAddedAfter = rule.value
+ // Old rules require adjusting date by a day
+ const addedAfter = new Date(rule.value)
+ addedAfter.setDate(addedAfter.getDate() + 1)
+ this.dateAddedFrom = addedAfter.toISOString().split('T')[0]
break
case FILTER_ADDED_BEFORE:
- this.dateAddedBefore = rule.value
+ // Old rules require adjusting date by a day
+ const addedBefore = new Date(rule.value)
+ addedBefore.setDate(addedBefore.getDate() - 1)
+ this.dateAddedTo = addedBefore.toISOString().split('T')[0]
+ break
+ case FILTER_CREATED_FROM:
+ this.dateCreatedFrom = rule.value
+ break
+ case FILTER_CREATED_TO:
+ this.dateCreatedTo = rule.value
+ break
+ case FILTER_ADDED_FROM:
+ this.dateAddedFrom = rule.value
+ break
+ case FILTER_ADDED_TO:
+ this.dateAddedTo = rule.value
break
case FILTER_HAS_TAGS_ALL:
this.tagSelectionModel.logicalOperator = LogicalOperator.And
@@ -814,28 +842,28 @@ export class FilterEditorComponent
value: JSON.stringify(queries[0]),
})
}
- if (this.dateCreatedBefore) {
+ if (this.dateCreatedTo) {
filterRules.push({
- rule_type: FILTER_CREATED_BEFORE,
- value: this.dateCreatedBefore,
+ rule_type: FILTER_CREATED_TO,
+ value: this.dateCreatedTo,
})
}
- if (this.dateCreatedAfter) {
+ if (this.dateCreatedFrom) {
filterRules.push({
- rule_type: FILTER_CREATED_AFTER,
- value: this.dateCreatedAfter,
+ rule_type: FILTER_CREATED_FROM,
+ value: this.dateCreatedFrom,
})
}
- if (this.dateAddedBefore) {
+ if (this.dateAddedTo) {
filterRules.push({
- rule_type: FILTER_ADDED_BEFORE,
- value: this.dateAddedBefore,
+ rule_type: FILTER_ADDED_TO,
+ value: this.dateAddedTo,
})
}
- if (this.dateAddedAfter) {
+ if (this.dateAddedFrom) {
filterRules.push({
- rule_type: FILTER_ADDED_AFTER,
- value: this.dateAddedAfter,
+ rule_type: FILTER_ADDED_FROM,
+ value: this.dateAddedFrom,
})
}
if (
diff --git a/src-ui/src/app/data/filter-rule-type.ts b/src-ui/src/app/data/filter-rule-type.ts
index 1c6b1cdf8..dd9d8731a 100644
--- a/src-ui/src/app/data/filter-rule-type.ts
+++ b/src-ui/src/app/data/filter-rule-type.ts
@@ -36,6 +36,11 @@ export const FILTER_CREATED_DAY = 12
export const FILTER_ADDED_BEFORE = 13
export const FILTER_ADDED_AFTER = 14
+export const FILTER_CREATED_TO = 43
+export const FILTER_CREATED_FROM = 44
+export const FILTER_ADDED_TO = 45
+export const FILTER_ADDED_FROM = 46
+
export const FILTER_MODIFIED_BEFORE = 15
export const FILTER_MODIFIED_AFTER = 16
@@ -179,6 +184,18 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [
datatype: 'date',
multi: false,
},
+ {
+ id: FILTER_CREATED_TO,
+ filtervar: 'created__date__lte',
+ datatype: 'date',
+ multi: false,
+ },
+ {
+ id: FILTER_CREATED_FROM,
+ filtervar: 'created__date__gte',
+ datatype: 'date',
+ multi: false,
+ },
{
id: FILTER_CREATED_YEAR,
filtervar: 'created__year',
@@ -210,6 +227,18 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [
datatype: 'date',
multi: false,
},
+ {
+ id: FILTER_ADDED_TO,
+ filtervar: 'added__date__lte',
+ datatype: 'date',
+ multi: false,
+ },
+ {
+ id: FILTER_ADDED_FROM,
+ filtervar: 'added__date__gte',
+ datatype: 'date',
+ multi: false,
+ },
{
id: FILTER_MODIFIED_BEFORE,
filtervar: 'modified__date__lt',
diff --git a/src/documents/filters.py b/src/documents/filters.py
index 185ba7b6f..142f3f519 100644
--- a/src/documents/filters.py
+++ b/src/documents/filters.py
@@ -41,7 +41,19 @@ from documents.models import Tag
CHAR_KWARGS = ["istartswith", "iendswith", "icontains", "iexact"]
ID_KWARGS = ["in", "exact"]
INT_KWARGS = ["exact", "gt", "gte", "lt", "lte", "isnull"]
-DATE_KWARGS = ["year", "month", "day", "date__gt", "gt", "date__lt", "lt"]
+DATE_KWARGS = [
+ "year",
+ "month",
+ "day",
+ "date__gt",
+ "date__gte",
+ "gt",
+ "gte",
+ "date__lt",
+ "date__lte",
+ "lt",
+ "lte",
+]
CUSTOM_FIELD_QUERY_MAX_DEPTH = 10
CUSTOM_FIELD_QUERY_MAX_ATOMS = 20
diff --git a/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py b/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py
new file mode 100644
index 000000000..0b0e3cba3
--- /dev/null
+++ b/src/documents/migrations/1062_alter_savedviewfilterrule_rule_type.py
@@ -0,0 +1,69 @@
+# Generated by Django 5.1.4 on 2025-02-06 05:54
+
+from django.db import migrations
+from django.db import models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("documents", "1061_workflowactionwebhook_as_json"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="savedviewfilterrule",
+ name="rule_type",
+ field=models.PositiveIntegerField(
+ choices=[
+ (0, "title contains"),
+ (1, "content contains"),
+ (2, "ASN is"),
+ (3, "correspondent is"),
+ (4, "document type is"),
+ (5, "is in inbox"),
+ (6, "has tag"),
+ (7, "has any tag"),
+ (8, "created before"),
+ (9, "created after"),
+ (10, "created year is"),
+ (11, "created month is"),
+ (12, "created day is"),
+ (13, "added before"),
+ (14, "added after"),
+ (15, "modified before"),
+ (16, "modified after"),
+ (17, "does not have tag"),
+ (18, "does not have ASN"),
+ (19, "title or content contains"),
+ (20, "fulltext query"),
+ (21, "more like this"),
+ (22, "has tags in"),
+ (23, "ASN greater than"),
+ (24, "ASN less than"),
+ (25, "storage path is"),
+ (26, "has correspondent in"),
+ (27, "does not have correspondent in"),
+ (28, "has document type in"),
+ (29, "does not have document type in"),
+ (30, "has storage path in"),
+ (31, "does not have storage path in"),
+ (32, "owner is"),
+ (33, "has owner in"),
+ (34, "does not have owner"),
+ (35, "does not have owner in"),
+ (36, "has custom field value"),
+ (37, "is shared by me"),
+ (38, "has custom fields"),
+ (39, "has custom field in"),
+ (40, "does not have custom field in"),
+ (41, "does not have custom field"),
+ (42, "custom fields query"),
+ (43, "created to"),
+ (44, "created from"),
+ (45, "added to"),
+ (46, "added from"),
+ ],
+ verbose_name="rule type",
+ ),
+ ),
+ ]
diff --git a/src/documents/models.py b/src/documents/models.py
index 79856b837..e7d866e24 100644
--- a/src/documents/models.py
+++ b/src/documents/models.py
@@ -522,6 +522,10 @@ class SavedViewFilterRule(models.Model):
(40, _("does not have custom field in")),
(41, _("does not have custom field")),
(42, _("custom fields query")),
+ (43, _("created to")),
+ (44, _("created from")),
+ (45, _("added to")),
+ (46, _("added from")),
]
saved_view = models.ForeignKey(