fix-table-row-mode について
`sap.ui.table.Table`の非推奨行プロパティを`rowMode`集約へ置き換える開発スキルです。XMLとJavaScriptの変更を扱い、移行前にモードとの互換性を確認します。
主な機能
- 01非推奨行プロパティの対応付け
- 02適切なRowModeクラスの選択
- 03XMLとJavaScriptへの対応
- 04移行前のプロパティ互換性確認
- 05Linter再実行による検証
活用シーン
- 01テーブル行プロパティの非推奨エラー修正
- 02XMLビュー内のテーブル移行
- 03JavaScriptのテーブルインスタンス更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ ui5/ plugins-coding-agents --skill fix-table-row-modeインストール後、Claude Code で/fix-table-row-modeを入力して読み込まれたか確認します。
詳細
Fix Table Row Mode (no-deprecated-api)
このスキルは、UI5 リンターが検出するものの自動修正できない、sap.ui.table.Table の行関連の非推奨プロパティを修正します。フラットなプロパティを、構造化された rowMode 集約に置き換えて最新化します。
重要:sap.ui.table.Table を sap.m.Table に最新化しないでください。両者は同等ではありません。
Linter Rule
| ルール ID | メッセージパターン |
|---|---|
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'visibleRowCountMode' が使用されています |
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'visibleRowCount' が使用されています |
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'rowHeight' が使用されています |
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'fixedRowCount' が使用されています |
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'fixedBottomRowCount' が使用されています |
no-deprecated-api | クラス 'sap.ui.table.Table' の非推奨プロパティ 'minAutoRowCount' が使用されています |
Property Mapping
Table の非推奨プロパティ | RowMode の新しいプロパティ | 備考 |
|---|---|---|
visibleRowCountMode | (RowMode クラスを決定します) | "Fixed" → rowmodes:Fixed、"Interactive" → rowmodes:Interactive、"Auto" → rowmodes:Auto |
visibleRowCount | rowCount | Fixed モードと Interactive モードで使用します |
minAutoRowCount | minRowCount | Auto モードでのみ使用します |
rowHeight | rowContentHeight | 名前が変更されています |
fixedRowCount | fixedTopRowCount | 名前が変更されています(Top が追加) |
fixedBottomRowCount | fixedBottomRowCount | 変更なし |
RowMode Class Selection
以前の visibleRowCountMode の値に基づいて選択します。
"Fixed"(または未設定 — これがデフォルトです)→rowmodes:Fixed"Interactive"→rowmodes:Interactive"Auto"→rowmodes:Auto
Pre-Modernization Safety Check
Table に設定されたプロパティが、選択した RowMode クラスに存在しない場合(例:Fixed モードのテーブルでの minAutoRowCount)、行モードが動的に切り替わる可能性があります。そのテーブルの最新化を中止し、手動レビューが必要であることを示してください。
Fix Strategy — XML Views
Step 1: Add XML Namespace
ルートの <mvc:View> タグに追加します。
xmlns:rowmodes="sap.ui.table.rowmodes"
Step 2: Remove Deprecated Properties and Add rowMode Aggregation
変更前(Fixed モード):
<table:Table
rows="{/Products}"
visibleRowCountMode="Fixed"
visibleRowCount="5"
fixedRowCount="1"
fixedBottomRowCount="2"
rowHeight="30">
<table:columns>...</table:columns>
</table:Table>
変更後:
<table:Table
rows="{/Products}">
<table:rowMode>
<rowmodes:Fixed
rowCount="5"
fixedTopRowCount="1"
fixedBottomRowCount="2"
rowContentHeight="30"/>
</table:rowMode>
<table:columns>...</table:columns>
</table:Table>
変更前(Interactive モード):
<table:Table
rows="{/Products}"
visibleRowCountMode="Interactive"
visibleRowCount="10"
rowHeight="25">
変更後:
<table:Table
rows="{/Products}">
<table:rowMode>
<rowmodes:Interactive
rowCount="10"
rowContentHeight="25"/>
</table:rowMode>
変更前(Auto モード):
<table:Table
rows="{/Items}"
visibleRowCountMode="Auto"
minAutoRowCount="3">
変更後:
<table:Table
rows="{/Items}">
<table:rowMode>
<rowmodes:Auto minRowCount="3"/>
</table:rowMode>
Fix Strategy — JavaScript
Step 1: Add RowMode Import
適切なクラスを sap.ui.define に追加します。
- Fixed モードの場合は
"sap/ui/table/rowmodes/Fixed" - Interactive モードの場合は
"sap/ui/table/rowmodes/Interactive" - Auto モードの場合は
"sap/ui/table/rowmodes/Auto"
Step 2: Replace Properties with rowMode
変更前:
sap.ui.define([
"sap/ui/table/Table"
], function(Table) {
var oTable = new Table({
visibleRowCountMode: "Interactive",
visibleRowCount: 10,
rowHeight: 25
});
});
変更後:
sap.ui.define([
"sap/ui/table/Table",
"sap/ui/table/rowmodes/Interactive"
], function(Table, InteractiveRowMode) {
var oTable = new Table({
rowMode: new InteractiveRowMode({
rowCount: 10,
rowContentHeight: 25
})
});
});
セッターを使うパターンも処理します。
変更前:
oTable.setVisibleRowCountMode("Fixed");
oTable.setVisibleRowCount(8);
oTable.setFixedRowCount(2);
oTable.setRowHeight(40);
変更後:
// Import: "sap/ui/table/rowmodes/Fixed"
oTable.setRowMode(new FixedRowMode({
rowCount: 8,
fixedTopRowCount: 2,
rowContentHeight: 40
}));
Implementation Steps
- --details を指定してリンターを実行し、影響を受けるすべての Table インスタンスを特定します
- 各 Table について、
visibleRowCountModeから RowMode クラスを決定します(デフォルト:"Fixed") - 安全性を確認します:非推奨プロパティがすべて、選択した RowMode クラスと互換性があることを確認します
- XML ビュー:
xmlns:rowmodes="sap.ui.table.rowmodes"名前空間を追加し、非推奨プロパティを削除して、<rowMode>集約を追加します - JavaScript:RowMode のインポートを追加し、マッピングしたプロパティで RowMode インスタンスを作成して、コンストラクターまたは
setRowMode()で設定します - リンターを再実行して確認します
RowMode Properties Reference
| モード | 使用可能なプロパティ |
|---|---|
Fixed | rowCount、fixedTopRowCount、fixedBottomRowCount、rowContentHeight |
Interactive | rowCount、rowContentHeight |
Auto | minRowCount、fixedTopRowCount、fixedBottomRowCount、rowContentHeight |
注意事項
visibleRowCountModeが設定されていない場合、デフォルトは"Fixed"でした —rowmodes:Fixedを使用してください<table:rowMode>の集約は<table:Table>の内部で、<table:columns>と並べて配置します- XML では、RowMode 要素に必ず
rowmodes:名前空間プレフィックスを使用してください - 新旧どちらの API も同期処理です — 非同期処理は必要ありません
関連するスキル
- fix-deprecated-controls:
sap.ui.table.Tableに関するその他のno-deprecated-apiエラー(非推奨クラスや、行モードに関係しないプロパティなど)には、fix-deprecated-controls を使用してください - fix-js-globals:Table がグローバルアクセスでインスタンス化されている場合(例:
new sap.ui.table.Table())、fix-js-globals で適切なモジュールインポートに変換できます
コメント
Markdown 対応