From 5bef80ee5877064f352f45624a6f8878d428133a Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 11 Sep 2020 18:32:42 +0800 Subject: [PATCH] Change Index Category --- app/controllers/application_controller.rb | 2 +- app/controllers/oauth/educoder_controller.rb | 2 +- .../project_categories_controller.rb | 6 +++++- app/controllers/projects_controller.rb | 3 ++- app/models/project_category.rb | 8 +++++++ .../group_list.json.jbuilder | 21 +++++++++++++++---- .../projects/group_type_list.json.jbuilder | 13 ++++++++---- 7 files changed, 43 insertions(+), 12 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ef3d7debd..293ac6a75 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -385,7 +385,7 @@ class ApplicationController < ActionController::Base def current_user if Rails.env.development? - User.current = User.find 36480 + User.current = User.find 1 else User.current end diff --git a/app/controllers/oauth/educoder_controller.rb b/app/controllers/oauth/educoder_controller.rb index a803adbb6..a0b35b66e 100644 --- a/app/controllers/oauth/educoder_controller.rb +++ b/app/controllers/oauth/educoder_controller.rb @@ -7,7 +7,7 @@ class Oauth::EducoderController < Oauth::BaseController token = params[:token] ::OauthEducoderForm.new({login: login, token: token, callback_url: callback_url}).validate! - + open_user= OpenUsers::Educoder.find_by(uid: login) if open_user.present? && open_user.user.present? && open_user.user.email_binded? diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb index 116a79281..4b4a96342 100644 --- a/app/controllers/project_categories_controller.rb +++ b/app/controllers/project_categories_controller.rb @@ -11,7 +11,11 @@ class ProjectCategoriesController < ApplicationController # else # projects = Project.visible # end + @project_children_categories = ProjectCategory.descendants projects = Project.no_anomory_projects.visible - @category_group_list = projects.joins(:project_category).group("project_categories.id", "project_categories.name").size + categories = projects.joins(:project_category).where(project_categories: {ancestry: nil}).group("project_categories.name", "project_categories.id").size.keys.to_h + extra_category_id = categories.delete("其他") + categories = categories.merge({"其他": extra_category_id}) if extra_category_id.present? #其他的放在最后面 + @category_group_list = categories end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f46945f80..bfecf81ae 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -44,7 +44,8 @@ class ProjectsController < ApplicationController # projects = Project.visible # end projects = Project.no_anomory_projects.visible - @project_group_list = projects.group(:project_type).size + language_lists = projects.joins(:project_language).group("project_languages.name", "project_languages.id").size.keys.sort.to_h + @project_group_list = language_lists.delete_if { |k, v| k.blank? } end def update diff --git a/app/models/project_category.rb b/app/models/project_category.rb index ff9c0a849..e1c36a303 100644 --- a/app/models/project_category.rb +++ b/app/models/project_category.rb @@ -2,4 +2,12 @@ class ProjectCategory < ApplicationRecord include Projectable has_ancestry + def self.descendants + where.not(ancestry: [nil, ""]) + end + + def self.get_children(target_id) + where(ancestry: target_id).pluck(:id,:name) + end + end diff --git a/app/views/project_categories/group_list.json.jbuilder b/app/views/project_categories/group_list.json.jbuilder index 07ce8834c..f9fdb75fd 100644 --- a/app/views/project_categories/group_list.json.jbuilder +++ b/app/views/project_categories/group_list.json.jbuilder @@ -1,5 +1,18 @@ -json.array! @category_group_list do |category,v| - json.id category[0] - json.name category[1] - json.projects_count v +# json.array! @category_group_list do |category,v| +# json.id category[0] +# json.name category[1] +# json.projects_count v +# end + +json.array! @category_group_list do |k,v| + children_category = @project_children_categories.get_children(v) + json.children do + json.array! children_category do |cate| + json.id cate[0] + json.name cate[1] + json.parent_id v + end + end + json.id v + json.name k.to_s end \ No newline at end of file diff --git a/app/views/projects/group_type_list.json.jbuilder b/app/views/projects/group_type_list.json.jbuilder index 34d46894c..4676de89d 100644 --- a/app/views/projects/group_type_list.json.jbuilder +++ b/app/views/projects/group_type_list.json.jbuilder @@ -1,5 +1,10 @@ -json.array! @project_group_list do |type,v| - json.project_type type - json.name render_zh_project_type(type) - json.projects_count v +# json.array! @project_group_list do |type,v| +# json.project_type type +# json.name render_zh_project_type(type) +# json.projects_count v +# end + +json.array! @project_group_list do |k,v| + json.name k + json.id v end \ No newline at end of file