mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-02 11:08:31 +08:00
Implement sorting on the project screen (when filterin/searching) [SCI-5281]
This commit is contained in:
parent
ba3db65437
commit
0c65f3f7c2
3 changed files with 22 additions and 20 deletions
|
|
@ -456,16 +456,7 @@
|
|||
|
||||
function refreshCurrentView() {
|
||||
loadCardsView();
|
||||
|
||||
// Also refresh sidebar tree navigation
|
||||
$.ajax({
|
||||
url: $('#projects-cards-view').data('projects-sidebar-url'),
|
||||
type: 'GET',
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
$('#slide-panel .tree').html(data.html);
|
||||
}
|
||||
});
|
||||
Sidebar.reload();
|
||||
}
|
||||
|
||||
function initEditButton() {
|
||||
|
|
@ -522,7 +513,6 @@
|
|||
selectedProjects.length = 0;
|
||||
selectedProjectFolders.length = 0;
|
||||
refreshProjectsToolbar();
|
||||
Sidebar.reload();
|
||||
init();
|
||||
},
|
||||
error: function() {
|
||||
|
|
|
|||
|
|
@ -51,13 +51,11 @@ class ProjectFolder < ApplicationRecord
|
|||
)
|
||||
SELECT id FROM inner_project_folders ORDER BY selected_folders_ids".gsub(/\n|\t/, ' ').gsub(/ +/, ' ')
|
||||
|
||||
new_query =
|
||||
if project_folder.present?
|
||||
where("project_folders.id IN (#{inner_folders_sql})", team.id, project_folder.id)
|
||||
else
|
||||
where("project_folders.id IN (#{inner_folders_sql})", team.id)
|
||||
end
|
||||
new_query.order(:parent_folder_id)
|
||||
if project_folder.present?
|
||||
where("project_folders.id IN (#{inner_folders_sql})", team.id, project_folder.id)
|
||||
else
|
||||
where("project_folders.id IN (#{inner_folders_sql})", team.id)
|
||||
end
|
||||
end
|
||||
|
||||
def parent_folders
|
||||
|
|
|
|||
|
|
@ -37,8 +37,13 @@ class ProjectsOverviewService
|
|||
else
|
||||
fetch_project_records
|
||||
end
|
||||
project_records = project_records.includes(:project_folder)
|
||||
sort_records(filter_project_records(project_records)).group_by(&:project_folder)
|
||||
project_records = sort_records(filter_project_records(project_records)).includes(:project_folder).to_a
|
||||
folder_records = ProjectFolder.inner_folders(@team, @current_folder).includes(:parent_folder).to_a
|
||||
|
||||
sorted_results_by_folder = {}
|
||||
build_folder_content(@current_folder, folder_records, project_records, sorted_results_by_folder)
|
||||
|
||||
sorted_results_by_folder
|
||||
end
|
||||
|
||||
def project_and_folder_cards
|
||||
|
|
@ -50,6 +55,15 @@ class ProjectsOverviewService
|
|||
|
||||
private
|
||||
|
||||
def build_folder_content(folder, folder_records, project_records, sorted_results_by_folder)
|
||||
projects_in_folder = project_records.select { |p| p.project_folder == folder }
|
||||
sorted_results_by_folder[folder] = projects_in_folder if projects_in_folder.present?
|
||||
|
||||
folder_records.select { |f| f.parent_folder == folder }.each do |inner_folder|
|
||||
build_folder_content(inner_folder, folder_records, project_records, sorted_results_by_folder)
|
||||
end
|
||||
end
|
||||
|
||||
def fetch_project_records
|
||||
due_modules =
|
||||
MyModule.active
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue