Project

General

Profile

QA #1148

バージョン選択時の表示順番を調整したい

Added by 奈良 裕記 about 1 month ago. Updated about 1 month ago.

Status:
新規
Priority:
通常
Assignee:
Category:
-
Target version:
-
Start date:
07/03/2020
Due date:
% Done:

0%

Estimated time:

Description

■現象/要望

チケットのバージョン選択時の表示順番を調整したい。

対象バージョン欄は、作業中バージョン(未完了)だけなので、選択時の問題は少ないが、
発見バージョン(カスタムフィールドのVersion)は、長期間の運用で選択肢が大量になり、誤認し易い。
名称?作成?順に表示されるようだが、表示順番を逆にできないか。

■解決策

app/models/version.rbの def <=>(version) を変更することで、ある程度修正可能(バージョン選択/ロードマップ表示順序一括)。

現状(Redmine4.1時点)

・期日が前のバージョンから表示
 期日未設定の場合、バージョン名称の昇順
 バージョン名称も同一の場合は、バージョンIDの昇順(古いものが先に表示される場合が多い)

この表示順序は、JPLが意図して設計したもの
Version numbering sort
https://redmine.org/issues/6881#note-2

Jean-Philippe Lang が9年以上前に更新
Versions are sorted by date then by name (alphabetically), 
so what you describe is not a defect (1.1 < 1.10 < 1.2 is alphabetically correct).
What you expect is some kind of version numbering sort when names looks like x.y where x and y are integers.

筆者の考え

・対象バージョンの場合、期日優先の表示は意味があるが、発見バージョンの場合、期日優先に表示することは無意味。
・発見バージョンは大量になるため、単純にバージョン名称でソートした方が選択し易い。
・新しく定義したバージョンを先に表示/選択可能とする方が、必要なバージョンを選択する時間を短縮できる。

暫定対策

期日の無視/優先表示により対処が異なる。
この順番は、ロードマップ、対象バージョン、発見バージョン共に影響する。

期日を無視し、バージョン名、バージョンIDの降順のみでソートする。
(文字列大きい方が新しい場合が多いため)

  # Versions are sorted by effective_date and name
  # Those with no effective_date are at the end, sorted by name
  def <=>(version)
       -1 * ( name == version.name ? id <=> version.id : name <=> version.name)
  end

期日指定バージョン優先、バージョン文字列は降順(文字列大きい方が新しい場合が多いため)

変更点:名前・バージョンIDの大小関係判定時に符号変えただけ(下記、-1 * の2か所)
app/models/version.rb

  # Versions are sorted by effective_date and name
  # Those with no effective_date are at the end, sorted by name
  def <=>(version)
    if self.effective_date
      if version.effective_date
        if self.effective_date == version.effective_date
          -1 *(name == version.name ? id <=> version.id : name <=> version.name)
        else
          self.effective_date <=> version.effective_date
        end
      else
        -1
      end
    else
      if version.effective_date
        1
      else
        -1 *(name == version.name ? id <=> version.id : name <=> version.name)
      end
   end
 end

■対応状況

パッチ作成済

■補足

#1

Updated by 奈良 裕記 about 1 month ago

  • Description updated (diff)
  • Assignee set to 奈良 裕記
#2

Updated by 奈良 裕記 about 1 month ago

関連チケット多数、あちら立てればこちら立たず。。

redmine/field_format.rb: def edit_tag(view, tag_id, tag_name, custom_value, options={})
class VersionFormat < RecordList

app/views/issues/_form_custom_fields.html.erb

app/helpers/custom_fields_helper.rb

  1. Return custom field html tag corresponding to its format
    def custom_field_tag(prefix, custom_value)

    custom_value.custom_field.format.edit_tag(

models/version.rb

 # Versions are sorted by effective_date and name
  # Those with no effective_date are at the end, sorted by name
  def <=>(version)
    if self.effective_date
      if version.effective_date
        if self.effective_date == version.effective_date
          name == version.name ? id <=> version.id : name <=> version.name
        else
          self.effective_date <=> version.effective_date
        end
      else
        -1
      end
    else
      if version.effective_date
        1
      else
        name == version.name ? id <=> version.id : name <=> version.name
      end
   end
 end

ロードマップの表示順番調整

Define manually the versions order in Roadmap (when date isn't defined)
https://redmine.org/issues/6974

Completed versions on Roadmap: Sort it so that recently created versions are on top
https://www.redmine.org/issues/23137

ーーーーーーーーーーーーーーーーーーーーーーーー

ソート順変更
app/models/version.rb def <=>(version)
https://redmine.org/issues/6974#note-5

Completed versions on Roadmap: Sort it so that recently created versions are on top
https://www.redmine.org/issues/23137


Order of versions is not correctly ordered
https://redmine.org/issues/28035

Version numbering sort
https://redmine.org/issues/6881

Target version pulldown should sort in descending order
https://www.redmine.org/issues/4519

Add the posibility to set/change the position of an issue in a version
https://www.redmine.org/issues/22802

Define manually the versions order in Roadmap (when date isn't defined)
https://www.redmine.org/issues/6974
duplicates,Reopened,8080,Ability to specify target version sort order
duplicates,Closed,13681,Option to choose sorting versions in roadmap

Option for alphabetical only sorting of versions (date ignored)
https://redmine.org/issues/8080

relates,New,6881,Version numbering sort
https://redmine.org/issues/6881

duplicates,Closed,13681,Option to choose sorting versions in roadmap


https://www.redmine.org/projects/redmine/repository/revisions/16088/diff/trunk/app/controllers/versions_controller.rb
@completed_versions = @versions.select(&:completed?)
@completed_versions = @versions.select(&:completed?).reverse

バージョンのテキスト順と思っていたが、実際には発見バージョンの選択肢欄に別のテキストが混在している。
明らかにテキストのソートだけではない事を認識した。

#3

Updated by 奈良 裕記 about 1 month ago

  • Description updated (diff)

Also available in: Atom PDF