mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-09-09 06:35:37 +08:00
Fix filtering for repository snapshots [SCI-6423]
This commit is contained in:
parent
8fcf4e9aa2
commit
34554e57e3
4 changed files with 29 additions and 13 deletions
|
@ -267,7 +267,7 @@ class RepositoryDatatableService
|
|||
operator: filter_element_params[:operator],
|
||||
parameters: filter_element_params[:parameters]
|
||||
)
|
||||
config = Extends::REPOSITORY_EXTRA_SEARCH_ATTR[filter_element.repository_column.data_type.to_sym]
|
||||
config = Extends::REPOSITORY_ADVANCED_SEARCH_ATTR[filter_element.repository_column.data_type.to_sym]
|
||||
|
||||
if %w(empty file_not_attached).include?(filter_element_params[:operator])
|
||||
repository_rows.left_outer_joins(config[:includes]).where(config[:field] => nil)
|
||||
|
|
|
@ -13,14 +13,13 @@ class RepositorySnapshotDatatableService < RepositoryDatatableService
|
|||
end
|
||||
|
||||
def process_query
|
||||
search_value = build_conditions(@params)[:search_value]
|
||||
order_obj = build_conditions(@params)[:order_by_column]
|
||||
search_value = @params[:search][:value]
|
||||
order_params = @params[:order].first
|
||||
order_by_column = { column: order_params[:column].to_i, dir: order_params[:dir] }
|
||||
|
||||
repository_rows = fetch_rows(search_value)
|
||||
repository_rows = fetch_rows(search_value).preload(Extends::REPOSITORY_ROWS_PRELOAD_RELATIONS)
|
||||
|
||||
repository_rows = repository_rows.preload(Extends::REPOSITORY_ROWS_PRELOAD_RELATIONS)
|
||||
|
||||
@repository_rows = sort_rows(order_obj, repository_rows)
|
||||
sort_rows(order_by_column, repository_rows)
|
||||
end
|
||||
|
||||
def fetch_rows(search_value)
|
||||
|
@ -29,12 +28,8 @@ class RepositorySnapshotDatatableService < RepositoryDatatableService
|
|||
@all_count = repository_rows.count
|
||||
|
||||
if search_value.present?
|
||||
matched_by_user = repository_rows.joins(:created_by).where_attributes_like('users.full_name', search_value)
|
||||
|
||||
repository_row_matches = repository_rows
|
||||
.where_attributes_like(['repository_rows.name', 'repository_rows.id'], search_value)
|
||||
repository_row_matches = repository_rows.where_attributes_like(@repository.default_search_fileds, search_value)
|
||||
results = repository_rows.where(id: repository_row_matches)
|
||||
results = results.or(repository_rows.where(id: matched_by_user))
|
||||
|
||||
data_types = @repository.repository_columns.pluck(:data_type).uniq
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if @repository.present? && live_items_present && can_create_my_module_repository_snapshot?(@my_module) %>
|
||||
<% if @repository.present? && live_items_present && can_create_my_module_repository_snapshots?(@my_module) %>
|
||||
<div class="create-snapshot-item">
|
||||
<p class="info <%= 'hidden' unless @repository_snapshots.blank? %>">
|
||||
<%= t('my_modules.repository.snapshots.full_view.no_snapshots_label') %>
|
||||
|
|
|
@ -70,6 +70,27 @@ class Extends
|
|||
|
||||
# Extra attributes used for search in repositories, 'filed_name' => include_hash
|
||||
REPOSITORY_EXTRA_SEARCH_ATTR = {
|
||||
RepositoryTextValue: {
|
||||
field: 'repository_text_values.data', includes: :repository_text_values
|
||||
}, RepositoryNumberValue: {
|
||||
field: 'repository_number_values.data', includes: :repository_number_values
|
||||
}, RepositoryListValue: {
|
||||
field: 'repository_list_items.data',
|
||||
includes: { repository_list_values: :repository_list_item }
|
||||
}, RepositoryChecklistValue: {
|
||||
field: 'repository_checklist_items.data',
|
||||
includes: { repository_checklist_values: { repository_checklist_items_values: :repository_checklist_item } }
|
||||
}, RepositoryStatusValue: {
|
||||
field: 'repository_status_items.status',
|
||||
includes: { repository_status_values: :repository_status_item }
|
||||
}, RepositoryAssetValue: {
|
||||
field: 'active_storage_blobs.filename',
|
||||
includes: { repository_asset_values: { asset: { file_attachment: :blob } } }
|
||||
}
|
||||
}
|
||||
|
||||
# Extra attributes used for advanced search in repositories, 'filed_name' => include_hash
|
||||
REPOSITORY_ADVANCED_SEARCH_ATTR = {
|
||||
RepositoryTextValue: {
|
||||
field: 'repository_text_values.data', includes: :repository_text_values
|
||||
}, RepositoryNumberValue: {
|
||||
|
|
Loading…
Add table
Reference in a new issue