Update experiments filters [SCI-11794]

This commit is contained in:
Andrej 2025-04-24 09:37:24 +02:00
parent ac0a3ac643
commit e20148c689
5 changed files with 54 additions and 21 deletions

View file

@ -113,7 +113,12 @@ export default {
moveModalObject: null, moveModalObject: null,
duplicateModalObject: null, duplicateModalObject: null,
descriptionModalObject: null, descriptionModalObject: null,
reloadingTable: false reloadingTable: false,
statusesList: [
['not_started', this.i18n.t('experiments.table.column.status.not_started')],
['started', this.i18n.t('experiments.table.column.status.started')],
['completed', this.i18n.t('experiments.table.column.status.completed')]
]
}; };
}, },
computed: { computed: {
@ -138,6 +143,9 @@ export default {
headerName: this.i18n.t('experiments.table.column.status_html'), headerName: this.i18n.t('experiments.table.column.status_html'),
sortable: true, sortable: true,
cellRenderer: StatusRenderer, cellRenderer: StatusRenderer,
cellRendererParams: {
statusesList: this.statusesList
},
minWidth: 200 minWidth: 200
}, },
{ {
@ -238,14 +246,28 @@ export default {
type: 'Text' type: 'Text'
}, },
{ {
key: 'created_at', key: 'start_on',
type: 'DateRange', type: 'DateRange',
label: this.i18n.t('filters_modal.created_on.label') label: this.i18n.t('filters_modal.created_on.label'),
mode: 'date'
},
{
key: 'due_date',
type: 'DateRange',
label: this.i18n.t('filters_modal.due_date.label'),
mode: 'date'
}, },
{ {
key: 'updated_on', key: 'updated_on',
type: 'DateRange', type: 'DateRange',
label: this.i18n.t('filters_modal.updated_on.label') label: this.i18n.t('filters_modal.updated_on.label')
},
{
key: 'statuses',
type: 'Select',
options: this.statusesList,
label: this.i18n.t('experiments.index.filters.status'),
placeholder: this.i18n.t('experiments.index.filters.status_placeholder')
} }
]; ];

View file

@ -1,7 +1,7 @@
<template> <template>
<div v-if="params.data.status_cell.editable" class="py-0.5"> <div v-if="params.data.status_cell.editable" class="py-0.5">
<SelectDropdown <SelectDropdown
:options="statuses" :options="params.statusesList"
:value="params.data.status_cell.status" :value="params.data.status_cell.status"
@change="changeStatus" @change="changeStatus"
size="xs" size="xs"
@ -33,15 +33,6 @@ export default {
required: true required: true
} }
}, },
data() {
return {
statuses: [
['not_started', this.i18n.t('experiments.table.column.status.not_started')],
['started', this.i18n.t('experiments.table.column.status.started')],
['completed', this.i18n.t('experiments.table.column.status.completed')]
]
};
},
methods: { methods: {
statusColor(status) { statusColor(status) {
let color = 'bg-sn-grey-500'; let color = 'bg-sn-grey-500';

View file

@ -8,6 +8,7 @@
class="w-full" class="w-full"
@change="updateDateFrom" @change="updateDateFrom"
@cleared="updateDateFrom" @cleared="updateDateFrom"
:mode="this.filter.mode || 'datetime'"
:clearable="true" :clearable="true"
:placeholder="i18n.t('From')" :placeholder="i18n.t('From')"
:dateOnly="true" :dateOnly="true"
@ -20,6 +21,7 @@
class="w-full" class="w-full"
@change="updateDateTo" @change="updateDateTo"
@cleared="updateDateTo" @cleared="updateDateTo"
:mode="this.filter.mode || 'datetime'"
:clearable="true" :clearable="true"
:placeholder="i18n.t('To')" :placeholder="i18n.t('To')"
:dateOnly="true" :dateOnly="true"

View file

@ -45,13 +45,14 @@ module Lists
) )
end end
if @filters[:created_at_from].present? @records = @records.where('experiments.start_on >= ?', @filters[:start_on_from]) if @filters[:start_on_from].present?
@records = @records.where('experiments.created_at > ?', @filters[:created_at_from])
end @records = @records.where('experiments.start_on <= ?', @filters[:start_on_to]) if @filters[:start_on_to].present?
if @filters[:created_at_to].present?
@records = @records.where('experiments.created_at < ?', @records = @records.where('experiments.due_date >= ?', @filters[:due_date_from]) if @filters[:due_date_from].present?
@filters[:created_at_to])
end @records = @records.where('experiments.due_date <= ?', @filters[:due_date_to]) if @filters[:due_date_to].present?
if @filters[:updated_on_from].present? if @filters[:updated_on_from].present?
@records = @records.where('experiments.updated_at > ?', @filters[:updated_on_from]) @records = @records.where('experiments.updated_at > ?', @filters[:updated_on_from])
end end
@ -68,6 +69,18 @@ module Lists
@records = @records.where('COALESCE(experiments.archived_on, projects.archived_on) < ?', @records = @records.where('COALESCE(experiments.archived_on, projects.archived_on) < ?',
@filters[:archived_on_to]) @filters[:archived_on_to])
end end
if @filters[:statuses].present?
scopes = {
'not_started' => @records.not_started,
'started' => @records.started,
'completed' => @records.completed
}
selected_scopes = @filters[:statuses].values.filter_map { |status| scopes[status] }
@records = selected_scopes.reduce(@records.none, :or) if selected_scopes.any?
end
end end
def sortable_columns def sortable_columns

View file

@ -1737,6 +1737,9 @@ en:
experiment_access: "Access" experiment_access: "Access"
details_modal: details_modal:
description: "%{name} description" description: "%{name} description"
filters:
status: "Status"
status_placeholder: "Select experiment status"
new: new:
create: 'New Experiment' create: 'New Experiment'
modal_title: 'Create new experiment' modal_title: 'Create new experiment'
@ -4796,9 +4799,11 @@ en:
created_on: created_on:
label: "Start date" label: "Start date"
updated_on: updated_on:
label: "Modified date" label: "Updated date"
archived_on: archived_on:
label: "Archived on" label: "Archived on"
due_date:
label: "Due date"
recent_searches_label: "Recent searches" recent_searches_label: "Recent searches"
show_btn: show_btn:
one: "Show results" one: "Show results"