Add archived on column [SCI-6482] ()

Co-authored-by: Anton <anton@scinote.net>
This commit is contained in:
aignatov-bio 2022-02-03 13:18:15 +01:00 committed by GitHub
parent 5223ce13f3
commit ec6886735c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 3 deletions
app
javascript
packs/vue
vue/repository_filter
services

View file

@ -14,7 +14,8 @@ window.initRepositoryFilter = () => {
{ id: 'row_name', name: 'Name', data_type: 'RepositoryTextValue' },
{ id: 'added_on', name: 'Added on', data_type: 'RepositoryDateTimeValue' },
{ id: 'added_by', name: 'Added by', data_type: 'RepositoryUserValue' },
{ id: 'archived_by', name: 'Archived by', data_type: 'RepositoryUserValue' }
{ id: 'archived_by', name: 'Archived by', data_type: 'RepositoryUserValue' },
{ id: 'archived_on', name: 'Archived on', data_type: 'RepositoryDateTimeValue' }
];
const repositoryFilterContainer = new Vue({
el: '#filterContainer',

View file

@ -75,7 +75,8 @@
},
computed: {
isBlank(){
return this.operator == 'any_of' && !this.value;
return (this.operator == 'any_of' && !this.value) ||
(this.filter.column.id === 'archived_by' && $('.repository-show').hasClass('active') ) ;
}
}
}

View file

@ -16,7 +16,8 @@ export default {
},
computed: {
isBlank() {
return this.operator === 'equal_to' && !this.value;
return (this.operator === 'equal_to' && !this.value) ||
(this.filter.column.id === 'archived_on' && $('.repository-show').hasClass('active'));
},
isPreset() {
return [

View file

@ -135,6 +135,8 @@ class RepositoryDatatableService
build_added_by_filter_condition(repository_rows, filter_element_params)
when 'archived_by'
build_archived_by_filter_condition(repository_rows, filter_element_params)
when 'archived_on'
build_archived_on_filter_condition(repository_rows, filter_element_params)
when 'assigned'
build_assigned_filter_condition(repository_rows, filter_element_params)
else
@ -214,6 +216,45 @@ class RepositoryDatatableService
end
end
def build_archived_on_filter_condition(repository_rows, filter_element_params)
case filter_element_params[:operator]
when 'today'
repository_rows.where('archived_on >= ?', Time.zone.now.beginning_of_day)
when 'yesterday'
repository_rows.where('archived_on >= ? AND archived_on < ?',
Time.zone.now.beginning_of_day - 1.day, Time.zone.now.beginning_of_day)
when 'last_week'
repository_rows.where('archived_on >= ? AND archived_on < ?',
Time.zone.now.beginning_of_week - 1.week, Time.zone.now.beginning_of_week)
when 'this_month'
repository_rows.where('archived_on >= ?', Time.zone.now.beginning_of_month)
when 'last_year'
repository_rows.where('archived_on >= ? AND archived_on < ?',
Time.zone.now.beginning_of_year - 1.year, Time.zone.now.beginning_of_year)
when 'this_year'
repository_rows.where('archived_on >= ?', Time.zone.now.beginning_of_year)
when 'equal_to'
repository_rows.where(archived_on: filter_element_params.dig(:parameters, :datetime))
when 'unequal_to'
repository_rows
.where.not(archived_on: filter_element_params.dig(:parameters, :datetime))
when 'greater_than'
repository_rows.where('archived_on > ?', filter_element_params.dig(:parameters, :datetime))
when 'greater_than_or_equal_to'
repository_rows.where('archived_on >= ?', filter_element_params.dig(:parameters, :datetime))
when 'less_than'
repository_rows.where('archived_on < ?', filter_element_params.dig(:parameters, :datetime))
when 'less_than_or_equal_to'
repository_rows.where('archived_on <= ?', filter_element_params.dig(:parameters, :datetime))
when 'between'
repository_rows.where('archived_on > ? AND archived_on < ?',
filter_element_params.dig(:parameters, :start_datetime),
filter_element_params.dig(:parameters, :end_datetime))
else
raise ArgumentError, 'Wrong operator for RepositoryRow Archived On!'
end
end
def build_added_by_filter_condition(repository_rows, filter_element_params)
case filter_element_params[:operator]
when 'any_of'