Skip to content

行変更の確定結果を操作単位で通知できるようにする - #11

Merged
RyoSogawa merged 3 commits into
mainfrom
feat/row-change-commit-notification
Aug 8, 2026
Merged

RyoSogawa merged 3 commits into
mainfrom
feat/row-change-commit-notification

Conversation

@kanchi-Matsumoto

@kanchi-Matsumoto kanchi-Matsumoto commented Aug 2, 2026 •

Copy link
Copy Markdown
Contributor

このPRでできること

テーブルで確定した1回の編集について、変更前と変更後の行を利用側で受け取れるようになります。

背景

編集した内容をAPIへ保存するとき、変わった項目だけを送りたいという要求があります。全部送ると無駄が多く、意図しない上書きも起こりえます。

ところが既存の onChange は、「保存基準から見て現在変更されている行の一覧」を累積で通知するものでした。これは最後にまとめて保存する用途には向いていますが、「今回の操作でどの状態からどの状態へ変わったか」は分かりません。

具体例

診療時間を 20分から30分へ変更したとします。

APIへ送りたいのは「診療時間が30分になりました」という情報だけです。しかし通知されるのは「この行はいま、担当者が田中、開始が09:00、診療時間が30分、…」という現在の姿の一式でした。

これだけでは、診療時間が変わったのか、担当者が変わったのか判断できません。

フロントでやる場合の回避方法とその問題

利用側がテーブルと同じ行データをもう一部保持して、「さきほどは20分だったのに今は30分なので、変わったのは診療時間だ」と突き合わせる必要がありました。

同じ情報を2か所で管理することになるため、片方だけが更新されると画面の表示とAPI更新の内容がずれるおそれがあります。

テーブルはすでに変更前後の行を持っています。それを通知すれば、利用側で二重管理をしなくて済みます。

変更内容

  • onRowChangeCommitted を追加しました
  • 単一編集かペーストかという操作種別を通知します
  • 変更前の行、確定後の行、セル単位の差分を通知します
  • onRowChangeRejected へ、変更前の行と変更候補の行を追加しました
  • 補正によって複数の項目が変わった場合も、1回の確定結果として通知します
  • 既存の onChange の型と呼び出し方は変更していません
  • API ドキュメント、OpenSpec、単体テストを追加しました

利用側は渡された変更前後の行を比べるだけで済むため、自前で行データを保持する必要がなくなります。

PR #8との違い

PR #8 は、行を確定する前に processRowChange で補正または拒否できるようにするものです。

このPRは、PR #8 で採用された最終的な行を確定した後に、操作直前の行と一緒に利用側へ通知するものです。

補足

  • 既存の onChange だけを利用しているコードは変更不要です
  • 通知されるのは、1回の操作で影響を受けた行だけです
  • 行オブジェクトは読み取り専用のスナップショットとして扱ってください

確認

  • pnpm test
  • pnpm typecheck
  • pnpm lint
  • pnpm build

@kanchi-Matsumoto
kanchi-Matsumoto force-pushed the feat/row-change-commit-notification branch from 9e0905d to 0f3cd63 Compare August 3, 2026 13:09
@kanchi-Matsumoto
kanchi-Matsumoto marked this pull request as ready for review August 3, 2026 13:50
Base automatically changed from feat/process-row-changes to main August 6, 2026 13:39
Comment thread apps/docs/src/content/docs/api/use-spread-sheet-table.mdx
操作単位の変更前後の行と拒否コンテキストを公開し、利用側での行データの二重管理を不要にする。既存のonChangeは変更しない。
@kanchi-Matsumoto
kanchi-Matsumoto force-pushed the feat/row-change-commit-notification branch from d72af06 to 5862caa Compare August 8, 2026 02:44

@RyoSogawa RyoSogawa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@RyoSogawa
RyoSogawa merged commit 883da62 into main Aug 8, 2026
5 checks passed
@RyoSogawa
RyoSogawa deleted the feat/row-change-commit-notification branch August 8, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants