mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-10-24 04:39:59 +08:00
FIX: Clearing inventory item filter fails with 500 or breaks UI [SCI-9345] (#6358)
This commit is contained in:
parent
809aaa8aa3
commit
9809f696a2
2 changed files with 15 additions and 8 deletions
|
|
@ -72,6 +72,7 @@ window.initRepositoryFilter = () => {
|
||||||
{ id: 'archived_by', name: I18n.t('repositories.table.archived_by'), data_type: 'RepositoryUserValue' },
|
{ id: 'archived_by', name: I18n.t('repositories.table.archived_by'), data_type: 'RepositoryUserValue' },
|
||||||
{ id: 'archived_on', name: I18n.t('repositories.table.archived_on'), data_type: 'RepositoryDateTimeValue' }
|
{ id: 'archived_on', name: I18n.t('repositories.table.archived_on'), data_type: 'RepositoryDateTimeValue' }
|
||||||
];
|
];
|
||||||
|
const defFilters = JSON.parse(JSON.stringify(DEFAULT_FILTERS));
|
||||||
const repositoryFilterContainer = new Vue({
|
const repositoryFilterContainer = new Vue({
|
||||||
el: '#filterContainer',
|
el: '#filterContainer',
|
||||||
data: () => ({
|
data: () => ({
|
||||||
|
|
@ -120,12 +121,12 @@ window.initRepositoryFilter = () => {
|
||||||
this.reloadDataTable();
|
this.reloadDataTable();
|
||||||
},
|
},
|
||||||
clearFilters() {
|
clearFilters() {
|
||||||
this.filters = this.filters
|
this.filters.forEach((filter, index) => {
|
||||||
.map(filter => {
|
const newFilter = { ...filter };
|
||||||
const newFilter = { ...filter };
|
newFilter.data['parameters'] = {};
|
||||||
newFilter.data["parameters"] = {};
|
newFilter.data['operator'] = defFilters[index].data['operator'];
|
||||||
return newFilter;
|
return newFilter;
|
||||||
});
|
});
|
||||||
this.filterName = null;
|
this.filterName = null;
|
||||||
this.dataTableElement.removeAttr('data-repository-filter-json');
|
this.dataTableElement.removeAttr('data-repository-filter-json');
|
||||||
$('#modalSaveRepositoryTableFilter').data('repositoryTableFilterId', null);
|
$('#modalSaveRepositoryTableFilter').data('repositoryTableFilterId', null);
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,8 @@ class RepositoryDatatableService
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_row_id_filter_condition(repository_rows, filter_element_params)
|
def build_row_id_filter_condition(repository_rows, filter_element_params)
|
||||||
|
return repository_rows if filter_element_params.dig(:parameters, :text).blank?
|
||||||
|
|
||||||
case filter_element_params[:operator]
|
case filter_element_params[:operator]
|
||||||
when 'contains'
|
when 'contains'
|
||||||
repository_rows
|
repository_rows
|
||||||
|
|
@ -183,6 +185,8 @@ class RepositoryDatatableService
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_name_filter_condition(repository_rows, filter_element_params)
|
def build_name_filter_condition(repository_rows, filter_element_params)
|
||||||
|
return repository_rows if filter_element_params.dig(:parameters, :text).blank?
|
||||||
|
|
||||||
case filter_element_params[:operator]
|
case filter_element_params[:operator]
|
||||||
when 'contains'
|
when 'contains'
|
||||||
repository_rows.where('repository_rows.name ILIKE ?',
|
repository_rows.where('repository_rows.name ILIKE ?',
|
||||||
|
|
@ -351,14 +355,16 @@ class RepositoryDatatableService
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_assigned_filter_condition(repository_rows, filter_element_params)
|
def build_assigned_filter_condition(repository_rows, filter_element_params)
|
||||||
|
return repository_rows if filter_element_params.dig(:parameters, :my_module_ids).blank?
|
||||||
|
|
||||||
case filter_element_params[:operator]
|
case filter_element_params[:operator]
|
||||||
when 'any_of'
|
when 'any_of'
|
||||||
repository_rows.joins(:my_modules)
|
repository_rows.joins(:my_modules)
|
||||||
.where(my_modules: { id: filter_element_params.dig(:parameters, :my_module_ids) })
|
.where(my_modules: { id: filter_element_params.dig(:parameters, :my_module_ids) })
|
||||||
when 'none_of'
|
when 'none_of'
|
||||||
repository_rows.where('NOT EXISTS (SELECT NULL FROM my_module_repository_rows
|
repository_rows.where('NOT EXISTS (SELECT NULL FROM my_module_repository_rows
|
||||||
WHERE my_module_repository_rows.repository_row_id = repository_rows.id AND
|
WHERE my_module_repository_rows.repository_row_id = repository_rows.id AND
|
||||||
my_module_repository_rows.my_module_id IN (?))', filter_element_params.dig(:parameters, :my_module_ids))
|
my_module_repository_rows.my_module_id IN (?))', filter_element_params.dig(:parameters, :my_module_ids))
|
||||||
when 'all_of'
|
when 'all_of'
|
||||||
repository_rows
|
repository_rows
|
||||||
.joins(:my_modules)
|
.joins(:my_modules)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue