はじめに
hkob の雑記録の第282回目は、Album の各ページのレイアウトを設定した件を解説します。
表示するコンテンツの検討
現在、Album の親クラスである Devices は以下のようなプロパティを持っています。Devices 側が親となるリレーションは Media と SetLists のみとなります。Media はそのままタブ表示可能ですが、SetLists からさらにリレーションされている Contents はタブに表示することはできません。

これまでは、ページコンテンツとして Contents の Linked view を表示して、親の親をフィルタする形で表示をしていました。今回、SetLists からロールアップで Contents を作成してみたのですが、フィルタに「このページ」を設定することができませんでした。
Contents に ContaintedDevice プロパティを追加
Rollup ではフィルタすることができないので、Devices から Contents に対してリレーションを追加する必要がありそうです。そこで、belongs_to 側である Contents に ContainedDevice というプロパティを追加しました。1対多なので、Devices 側からは Contents という名前になります。

Set Name' andContainedDevice' to Contents オートメーションに変更
昨日、アップデートした Set `Name' to Contents オートメーションを更新し、ContainedDevice も自動設定するようにしてみます。

ContainedDevice は SetList に登録されている Devices へのリレーションをそのままコピーするだけです。

データ更新の確認
試しに最初のアルバムである NEW SEASON の Contents だけ編集してみました。ContainedDevice が正しく更新されています。

レイアウトの編集
全体的なレイアウトはこんな感じに調整してみました。

- Heading
- Artists: アーチスト名 (Relation)
- Sort order: アルバムの通番 (Text)
- Kinds: アルバムの種類 (Select)
- Release date: 初回リリース日 (Date)

- Page & Contents
- Thumbnail: アルバムジャケット (File & Media)
- Official link: オフィシャルのディスコグラフィーへのリンク (URL)
- コンテンツ: Album Lists を同期ブロックで表示 (テンプレートに埋め込み)

- Property group (Common section)
- Whole time: 収録時間 (Text)
- Comments: コメント (Text)
- Year: 初回リリース年度

- Hidden section (普段は非表示: 説明のために今は表示)
- Device type: アルバムの場合には常に Album なので非表示(Select)
- Map: Year 設定のためのマップデータベースなので非表示 (Relation)
- Media: 販売メディア、メーカープロパティも表示、ただしタブに表示するのでここでは非表示 (Relation)
- Contents: 登録された曲とデバイスを繋げる中間テーブル。こちらもタブに表示するのでここでは非表示 (Relation)

- Media タブ
- アルバムの販売メディア一覧
- このページでフィルタ
- Maker で並び替え

- Contents タブ
- アルバムの収録曲一覧
- このページでフィルタ
- Number で並び替え
おわりに
Contents のアップデート作業が残っていますが、無事に個々のアルバム・シングル・ビデオなどのページが無事に表示されそうです。