inlineに選択と一気に削除の機能をつける
選択範囲をどのように取得するか
- {ボツ} リッチ路線
- Drag&Dropの検知?
- テキストの選択だけなので独自で実装したほうが早い?
- 選択できないようにして、行選択のみサポートする?
- 今は複数行の時だけ範囲選択できるという謎仕様
- {ボツ} 簡易
- Textareaモードを用意する
- 簡単そう?
- {採用} 間
- 書式をごまかす
- 削除が難しそう?
- 意外とDOMをたどればできるのか?
memo
- anchorNode
- 始点
- focusNode
- 終点
これがReactにおける何かわかればOK
適切なDIVも探すことができた。
後は細かいUIだな・・
data attributeで行番号を取れるようにして、あとは行に選択機能を実装すれば選択範囲の変更を検知してそれを操作するだけでOK
その後の処理はもう少し実装してから考えるか・・
選択範囲に対してやりたい操作
- {x} 範囲コピー
- 雑に実装できた
- {x} 範囲削除
- { } 範囲から新規ページ作成
- SPAなのでうまい事やればAPI呼び出しは既存のままでできそう?
- UIどうするか?
- 右上のボタンでやる?
- ほかにもやりたい操作があるなら専用メニューのようなものを作るのが良い?
- 書式の調整?(旧書式のコンバート)
- ページ名は行頭の文字でいいか?
新規ページ作成
- 先頭行をタイトルにする
- 元ページの内容は消える?(残る?)
- 先ページに内容が書かれる
- すでにページが存在している場合は失敗する
実装方法
- loadPageがPromiseを返すようにすればロードしたページに内容を追加できるように思う
久々に来たらどうなってたかわからない・・
- これは時間がかかりそうなパターンだ
- loadPageがPromiseを返す話が何につながるかよくわからんな・・
- 新規作成というのはloadPageした後にBodyに中身を突っ込むという話だからだ
新規ページに切り出すのが出来た
元のページの選択範囲を消すのは一旦未実装にしようかな
手動で選択して消してもよいわけだし
消す必要はないが、リンクは残した方が良い?
fromをつければそれもいらない気がする
実装が楽でいいな
{ } optsという邪悪なグローバル変数がある
- これに保存しているっぽい
- 結構いろんなところで使っている
- contextに切り替えたいが・・
- {x} 作ろうとしているページがすでにある場合は失敗するようにしたい
- 保存しようとしたときにrevisionが合わないので失敗する?
- 失敗した
- このままでもよさそう
やっぱり元のページの内容は消したい
- ほとんどが消したいので消えてくれると楽
- 表示とは関係ないところでページの保存ができるようにすれば簡単に実現できる
- リファクタリングできてない問題がこんなところに・・
- save
- savePromiseのラッパー
- /search-cache の呼び出しはここ
- savePromise
- これがpostPageのラッパー
- 必要なメタデータはここで用意しているが、画面内容と連動している
- postPage
- 引数
- user, id, rawLines, lastUpdate, image
- ここが保存のための処理、メタデータなども引数で受けるようになっている
- user, id, rawLinesは用意できる
- lastUpdateも一応用意できそう
- グローバル変数のmetaに入っている
- 今回は直前のページの操作だからmetaを退避できるので行けそう
- imageは踏襲すればよいかな
- analysisを使えば取り出せるがこれも画面に連動している
- いまはいらないけどここもリファクタリングしたい
- 切り出したページでlastUpdateがおかしくて、初手で編集エラーになる問題あり
- 一度リロードすれば編集できるのでひとまずこれでしのぐ
実装箇所を移動したい
そのままlinesにおける?
selectionchangeのイベントハンドラを初回だけ動かすのはどうする?
BSの入力はグローバルで検知したい
selectionchangeのイベントハンドラもグローバルで設定したい
Linesの中でやるのは不自然だ