mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-24 21:24:52 +08:00
Update experiments filters [SCI-11794]
This commit is contained in:
parent
ac0a3ac643
commit
e20148c689
5 changed files with 54 additions and 21 deletions
|
|
@ -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')
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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';
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue