mcpField
F
fix-table-row-mode

fix-table-row-mode

github.com/ui5開発44141 回インストール1 週間前に更新
リポジトリ

fix-table-row-mode について

`sap.ui.table.Table`の非推奨行プロパティを`rowMode`集約へ置き換える開発スキルです。XMLとJavaScriptの変更を扱い、移行前にモードとの互換性を確認します。

主な機能

  1. 01非推奨行プロパティの対応付け
  2. 02適切なRowModeクラスの選択
  3. 03XMLとJavaScriptへの対応
  4. 04移行前のプロパティ互換性確認
  5. 05Linter再実行による検証

活用シーン

  1. 01テーブル行プロパティの非推奨エラー修正
  2. 02XMLビュー内のテーブル移行
  3. 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
visibleRowCountrowCountFixed モードと Interactive モードで使用します
minAutoRowCountminRowCountAuto モードでのみ使用します
rowHeightrowContentHeight名前が変更されています
fixedRowCountfixedTopRowCount名前が変更されています(Top が追加)
fixedBottomRowCountfixedBottomRowCount変更なし

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

  1. --details を指定してリンターを実行し、影響を受けるすべての Table インスタンスを特定します
  2. 各 Table について、visibleRowCountMode から RowMode クラスを決定します(デフォルト:"Fixed")
  3. 安全性を確認します:非推奨プロパティがすべて、選択した RowMode クラスと互換性があることを確認します
  4. XML ビュー:xmlns:rowmodes="sap.ui.table.rowmodes" 名前空間を追加し、非推奨プロパティを削除して、<rowMode> 集約を追加します
  5. JavaScript:RowMode のインポートを追加し、マッピングしたプロパティで RowMode インスタンスを作成して、コンストラクターまたは setRowMode() で設定します
  6. リンターを再実行して確認します

RowMode Properties Reference

モード使用可能なプロパティ
FixedrowCount、fixedTopRowCount、fixedBottomRowCount、rowContentHeight
InteractiverowCount、rowContentHeight
AutominRowCount、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 で適切なモジュールインポートに変換できます

コメント