From ca8fa20c2c0b28e1a0e5ad1d8b5c6585073c833d Mon Sep 17 00:00:00 2001 From: "vilet.yy" Date: Thu, 27 May 2021 16:40:15 +0800 Subject: [PATCH] add: user project trends --- .../users/is_pinned_projects_controller.rb | 3 ++- .../users/project_trends_controller.rb | 11 ++++++++++ .../users/statistics_controller.rb | 2 ++ .../issues/_simple_issue_item.json.jbuilder | 3 +++ .../project_trends/_detail.json.jbuilder | 17 ++++++++++++++++ app/views/project_trends/index.json.jbuilder | 20 ++----------------- .../users/project_trends/index.json.jbuilder | 4 ++++ config/routes.rb | 1 + 8 files changed, 42 insertions(+), 19 deletions(-) create mode 100644 app/controllers/users/project_trends_controller.rb create mode 100644 app/controllers/users/statistics_controller.rb create mode 100644 app/views/project_trends/_detail.json.jbuilder create mode 100644 app/views/users/project_trends/index.json.jbuilder diff --git a/app/controllers/users/is_pinned_projects_controller.rb b/app/controllers/users/is_pinned_projects_controller.rb index 22ce29263..4f3f4e37e 100644 --- a/app/controllers/users/is_pinned_projects_controller.rb +++ b/app/controllers/users/is_pinned_projects_controller.rb @@ -18,9 +18,10 @@ class Users::IsPinnedProjectsController < Users::BaseController private def is_pinned_project_ids if params[:is_pinned_project_ids].present? - return params[:is_pinned_project_ids].select{|id| observed_user.full_member_projects.pluck(:id).include?(id.to_i) } + return params[:is_pinned_project_ids].select{|id| observed_user.full_member_projects.visible.pluck(:id).include?(id.to_i) } end if params[:is_pinned_project_id].present? + return observed_user.is_pinned_project_ids unless observed_user.full_member_projects.visible.pluck(:id).include?(params[:is_pinned_project_id].to_i) return observed_user.is_pinned_project_ids.include?(params[:is_pinned_project_id].to_i) ? observed_user.is_pinned_project_ids : observed_user.is_pinned_project_ids.push(params[:is_pinned_project_id].to_i) end end diff --git a/app/controllers/users/project_trends_controller.rb b/app/controllers/users/project_trends_controller.rb new file mode 100644 index 000000000..9edd56f18 --- /dev/null +++ b/app/controllers/users/project_trends_controller.rb @@ -0,0 +1,11 @@ +class Users::ProjectTrendsController < Users::BaseController + + def index + if params[:date].present? + @project_trends = observed_user.project_trends.where("DATE(created_at) = ?", params[:date]) + else + @project_trends = observed_user.project_trends + end + @project_trends = kaminari_paginate(@project_trends.includes(:trend, :project).order(created_at: :desc)) + end +end \ No newline at end of file diff --git a/app/controllers/users/statistics_controller.rb b/app/controllers/users/statistics_controller.rb new file mode 100644 index 000000000..82a3ef012 --- /dev/null +++ b/app/controllers/users/statistics_controller.rb @@ -0,0 +1,2 @@ +class Users::StatisticController < Users::BaseController +end \ No newline at end of file diff --git a/app/views/issues/_simple_issue_item.json.jbuilder b/app/views/issues/_simple_issue_item.json.jbuilder index f711253a4..3f9c22e9e 100644 --- a/app/views/issues/_simple_issue_item.json.jbuilder +++ b/app/views/issues/_simple_issue_item.json.jbuilder @@ -1,4 +1,7 @@ json.name issue.try(:subject) +json.issue_type issue.try(:issue_type) +json.status_id issue.try(:status_id) +json.priority_id issue.try(:priority_id) json.created_at format_time(issue.try(:created_on)) json.updated_at format_time(issue.try(:updated_on)) json.assign_user_name issue&.get_assign_user.try(:show_real_name) diff --git a/app/views/project_trends/_detail.json.jbuilder b/app/views/project_trends/_detail.json.jbuilder new file mode 100644 index 000000000..7ffa9f152 --- /dev/null +++ b/app/views/project_trends/_detail.json.jbuilder @@ -0,0 +1,17 @@ +json.id trend.id +json.trend_type trend.trend_type +json.action_type l("trend.#{trend.action_type}") + l("trend.#{trend.trend_type}") +json.trend_id trend.trend_id +json.user_name trend.user.try(:show_real_name) +json.user_login trend.user.login +json.user_avatar url_to_avatar(trend.user) +json.action_time time_from_now(trend.created_at) + +if trend.trend_type == "Issue" + json.partial! "issues/simple_issue_item", locals: {issue: trend.trend} +elsif trend.trend_type == "VersionRelease" + json.partial! "version_releases/simple_version_release", locals: {version: trend.trend} +else + json.name trend.trend.title + json.created_at format_time(trend.trend.created_at) +end diff --git a/app/views/project_trends/index.json.jbuilder b/app/views/project_trends/index.json.jbuilder index 159a3bdb8..6dca7bdb5 100644 --- a/app/views/project_trends/index.json.jbuilder +++ b/app/views/project_trends/index.json.jbuilder @@ -9,25 +9,9 @@ json.limit @limit json.project_trends_size @project_trends_size json.project_trends do json.array! @project_trends.to_a.each do |trend| - json.id trend.id - json.trend_type trend.trend_type - json.action_type l("trend.#{trend.action_type}") + l("trend.#{trend.trend_type}") - json.trend_id trend.trend_id - json.user_name trend.user.try(:show_real_name) - json.user_login trend.user.login - json.user_avatar url_to_avatar(trend.user) - - if trend.trend_type == "Issue" - json.partial! "issues/simple_issue_item", locals: {issue: trend.trend} - elsif trend.trend_type == "VersionRelease" - json.partial! "version_releases/simple_version_release", locals: {version: trend.trend} - else - json.name trend.trend.title - json.created_at format_time(trend.trend.created_at) - end - + #后续需要天际pullrequest 和 版本的内容 - + json.partial! "detail", trend: trend end end diff --git a/app/views/users/project_trends/index.json.jbuilder b/app/views/users/project_trends/index.json.jbuilder new file mode 100644 index 000000000..d1aab1390 --- /dev/null +++ b/app/views/users/project_trends/index.json.jbuilder @@ -0,0 +1,4 @@ +json.total_count @project_trends.total_count +json.project_trends @project_trends.each do |trend| + json.partial! "project_trends/detail", trend: trend +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index d61acaf8e..2363b89df 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -271,6 +271,7 @@ Rails.application.routes.draw do post :pin end end + resources :project_trends, only: [:index] resources :organizations, only: [:index] # resources :projects, only: [:index] # resources :subjects, only: [:index]