ソートフィールド

Collection field: SortCommunity Edition+

概要

NocoBase では、ソートフィールド(Sort)を使用して、データテーブル内のレコードの並び順を記録します。テーブルやカンバンなどのブロックで、レコードをドラッグ&ドロップして並べ替える際によく使用されます。

ソートフィールドでは、グループ化せずに並べ替えることも、グループ化してから並べ替えることもできます。グループ化ソートは、「同じグループ内で個別に並べ替える」シナリオに適しています。たとえば、クラスごとに生徒を並べたり、カンバンのステータスごとにタスクを並べたりする場合です。

注意

ソートフィールドは同一テーブルのフィールドであるため、グループ化ソートでは、同じレコードを複数のグループに同時に表示することはできません。

インストール

ソートフィールドは組み込みプラグインによって提供されるため、個別にインストールする必要はありません。

ソートフィールドの作成

データテーブルの「Configure fields」ページで「Add field」をクリックし、「ソート」を選択すると、ソートフィールドを作成できます。

20240409091123_rec_

ソートフィールドを作成すると、NocoBase はソート値を初期化します。

  • グループ化ソートを選択しない場合は、主キー フィールドと作成日時フィールドに基づいて初期化します
  • グループ化ソートを選択した場合は、まずデータをグループ化し、その後、主キー フィールドと作成日時フィールドに基づいて初期化します
注意

フィールドの作成時にソート値の初期化に失敗すると、ソートフィールドは作成されません。ある範囲内でレコードを A の位置から B の位置へ移動すると、AB 区間内にあるすべてのレコードのソート値が変更されます。そのうち 1 件でも失敗すると移動に失敗し、関連するレコードのソート値は変更されません。

グループ化しないソートフィールドの作成

以下は、グループ化ソートを使用しない sort1 フィールドを作成する例です。

20240409091510

各レコードのソートフィールドは、主キー フィールドと作成日時フィールドに基づいて初期化されます。

20240409092305

グループ化ソートフィールドの作成

以下は、Class ID に基づいてグループ化する sort2 フィールドを作成する例です。

20240409092620

この場合、データテーブル内のすべてのレコードをまず Class ID でグループ化し、その後ソートフィールドを初期化します。

20240409092847

ドラッグ&ドロップによる並べ替え

ソートフィールドは、主にさまざまなブロックのレコードをドラッグ&ドロップで並べ替えるために使用します。現在、ドラッグ&ドロップによる並べ替えに対応しているブロックは、テーブルとカンバンです。

注意
  • 同じソートフィールドを複数のブロックでドラッグ&ドロップによる並べ替えに使用すると、既存の並び順が壊れる可能性があります
  • テーブルでドラッグ&ドロップによる並べ替えを行う場合、グループ化ルール付きのソートフィールドは選択できません
  • 1対多リレーションのテーブルブロックでは、外部キーをグループ化に使用できます
  • 現在、グループ化した状態でのドラッグ&ドロップによる並べ替えに対応しているのはカンバンブロックのみです

テーブル行のドラッグ&ドロップによる並べ替え

テーブルブロックでは、ソートフィールドを使用してレコードの順序をドラッグ&ドロップで調整できます。

20240409104621_rec_

リレーションテーブルブロックでも、ソートフィールドを使用してドラッグ&ドロップで並べ替えることができます。

注意

1対多リレーションブロックでグループ化していないソートフィールドを選択した場合、すべてのレコードが並べ替えに参加する可能性があります。外部キーに基づいてグループ化してから並べ替える場合、並べ替えルールは現在のグループ内のデータにのみ影響します。最終的な結果は同じように見える場合がありますが、並べ替えの対象となるレコードの範囲は異なります。

カンバンカードのドラッグ&ドロップによる並べ替え

カンバンブロックでは、ソートフィールドを使用してカードの順序をドラッグ&ドロップで調整できます。

20240409110423_rec_

並べ替えルールの説明

グループ化されていないレコード間の移動

次のようなデータがあるとします。

[1,2,3,4,5,6,7,8,9]

5 を前方へ移動して 3 の位置に置くと、番号が変わるのは 3、4、5 だけです。5 が 3 の位置に入り、3 と 4 はそれぞれ 1 つ後ろに移動します。

[1,2,5,3,4,6,7,8,9]

続いて 6 を後方へ移動して 8 の位置に置くと、6 が 8 の位置に入り、7 と 8 はそれぞれ 1 つ前に移動します。

[1,2,5,3,4,7,8,6,9]

異なるグループ間の移動

グループ化ソートでは、レコードを別のグループへ移動すると、そのレコードが属するグループも変わります。次のような 2 つのグループがあるとします。

A: [1,2,3,4]
B: [5,6,7,8]

1 を 6 の後ろに移動すると、1 の所属するグループも A から B に変わります。

A: [2,3,4]
B: [5,6,1,7,8]

ソートの変更は画面に表示されているデータとは無関係

次のようなデータがあるとします。

[1,2,3,4,5,6,7,8,9]

画面には次のように表示されています。

[1,5,9]

1 を 9 の位置に移動すると、途中にある 2、3、4、5、6、7、8 の位置もすべて変わります。

[2,3,4,5,6,7,8,9,1]

画面には最終的に次のように表示されます。

[5,9,1]

関連リンク