Conversation
画面下端の一時的な通知をやめ、ページを開き直すごとに 1 回だけ ダイアログで理由を伝える。「次から表示しない」で以後止められる。 判定の側は出来事を 1 回だけ発生させるだけにし、画面に何を出すかは 新しい画面部品が決める。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3 つの課題に分ける。判定の側を出来事に変え、ダイアログの部品を作り、 UiSystem に組み込む。それぞれ試験を先に書く手順で進める。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
show() の force は製品の動作では使わない。ダイアログの中でチェックを 入れてから外せば同じ分岐を通るので、引数なしで試験できる。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
画面下端の通知を出す処理を削除し、候補を伏せた理由がレイヤーの消灯で あることを osmlayeroff として 1 回だけ発生させる。何を画面に出すかは 受け取る側が決める。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
osmlayeroff を受け取り、見出しと理由と「次から表示しない」を持つ ダイアログを開く。印は StorageSystem に保存し、選ばれていれば開かない。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
UiSystem で 1 度だけ組み立てる。描画処理には手を入れない。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
no-new は文として置かれた new だけを対象にする。関数から返せば規則に 触れないので、eslint-disable の 5 行が要らなくなる。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
getData は Pixi の描画の途中で呼ばれる。受け取り側の例外で描画が止まら ないよう、出来事の発生を 1 拍遅らせる。試験も 1 拍待つ形に直す。 説明欄に osmlayeroff を足し、本文の Plateau を PLATEAU に揃えて見出しと 同じ表記にする。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
試験を足す課題では静的検査も実行する。初版は Task 2 に入れておらず no-new の違反 5 件を見逃した。試験の生成は mountDialog 経由に直す。 UiSystem の持ち物の null 初期化を Task 3 に書き足す。同ファイルの 既存の慣習で、初版に書き漏らしていた。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Owner
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
何を直したか
OSM のデータのレイヤーが消えているために PLATEAU の候補を伏せたとき、その理由を画面中央のダイアログで伝えます。
これまでは画面下端に 5 秒だけ出る通知でした。
利用者から 2 つの指摘がありました。
レイヤーを戻しても文言がその場で消えないことと、通知が見落としやすいことです。
前者を実機で確かめたところ、文言は 5 秒後に消えていました。
残り続ける不具合ではなく、表示の寿命がレイヤーの状態と結び付いていないことが原因です。
一時的な通知のままでは「戻したら消す」と「見落としにくくする」を同時に満たせないため、ダイアログに置き換えました。
決めたこと
ダイアログはページを開き直すごとに 1 回だけ出します。
レイヤーの切り替えは
Shift+Oの 1 打で起きるため、毎回出すと意図して消した人の作業が毎回止まります。「次から表示しない」を選んだ場合は、以後ずっと出しません。
構成
PlateauServiceは「候補を伏せた理由がレイヤーの消灯である」ことをosmlayeroffとして 1 回だけ知らせます。画面に何を出すかは決めません。
新しく足した
UiPlateauOsmLayerOffDialogがこれを受け取り、既存のuiConfirmでダイアログを組み立てます。「次から表示しない」の状態は
StorageSystemに記録します。出来事の発生は 1 拍遅らせています。
getDataは Pixi の描画の途中で呼ばれるため、受け取り側で例外が起きると描画の繰り返しがそのページの間止まります。変更したもの
modules/services/PlateauService.jsosmlayeroffを発生させるmodules/ui/UiPlateauOsmLayerOffDialog.jsmodules/ui/index.jsmodules/core/UiSystem.jsdata/core.yaml、data/l10n/core.en.json、data/l10n/core.ja.jsontest/browser/services/PlateauService.test.jstest/browser/ui/UiPlateauOsmLayerOffDialog.js設計文書と実装計画も
docs/superpowers/に入れてあります。確認したこと
npx eslint modules testはエラー 0 件、警告 42 件です。警告の数は起点と変わりません。
試験は 776 件成功、5 件スキップ、失敗 0 件です。
起点の 770 件に、置き換えの差 1 件と新しい 5 件が足されています。
作った配信物をローカルで配信し、次を実測しました。
UiSystemが部品を組み立てていること、出来事でダイアログが開き見出しと本文とチェックボックスと OK ボタンが正しく出ること、チェックを入れると設定が保存され外すと消えること、保存済みの状態では開かないことです。残っている制約
Shift+Oから描画を経て出来事が起きるまでの通し確認は、実機での操作が残っています。検証に使ったブラウザで Rapid の描画処理が動かず、判定の関数が呼ばれなかったためです。
経路はコード上で追ってあり、キー割り当てからレイヤーの切り替え、再描画の要求、判定、出来事の発生まで、すべて同期の直接呼び出しです。
対応エリアの外や日本国外でレイヤーを消した場合も、ダイアログが出ます。
表示範囲に PLATEAU の建物が 1 棟も無いときは出さない、という案も検討しましたが、今回は入れていません。
ページを開いているあいだに 2 回目以降レイヤーを消しても、何も出ません。
「次から表示しない」を選んだあとに戻す操作は、画面上にありません。
動作確認のお願い
対応エリアの中を開き、
Shift+Oでレイヤーを消してダイアログが出ることを確かめてください。OK で閉じたあと、同じページでもう一度消しても出ないこと、ページを開き直すとまた出ることも合わせて確認できます。
🤖 Generated with Claude Code