From 39aa02ff576dc27ae8c79ee8df5490115791e644 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 13 Dec 2023 11:05:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D=E6=90=9C=E7=B4=A2=E4=BB=A5=E5=8F=8A=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/pm/issues_controller.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index 02b8c46cf..81f6a7af6 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -45,6 +45,8 @@ class Api::Pm::IssuesController < Api::Pm::BaseController .where.not(id: @issue.id) .where.not(id: Issue.full_children_issues(@issue).map{|i|i.id}) @issues = @issues.where(pm_issue_type: params[:pm_issue_type]) if params[:pm_issue_type].present? + @issues = @issues.ransack(id_or_project_issues_index_eq: params[:keyword]).result.or(@issues.ransack(subject_or_description_cont: params[:keyword]).result) if params[:keyword].present? + @issues = @issues.reorder("#{issue_sort_by} #{issue_sort_direction}") if params[:only_name].present? @issues = kaminary_select_paginate( @issues.select(:id, :subject, :project_issues_index, :updated_on, :created_on)) @@ -185,6 +187,18 @@ class Api::Pm::IssuesController < Api::Pm::BaseController :assigner_ids => [] ) end + def issue_sort_by + sort_by = params.fetch(:sort_by, "updated_on") + sort_by = Issue.column_names.include?(sort_by) ? sort_by : "updated_on" + sort_by + end + + def issue_sort_direction + sort_direction = params.fetch(:sort_direction, "desc").downcase + sort_direction = %w(desc asc).include?(sort_direction) ? sort_direction : "desc" + sort_direction + end + def tag_sort_by sort_by = params.fetch(:sort_by, "created_at") sort_by = IssueTag.column_names.include?(sort_by) ? sort_by : "created_at"