2009年8月13日木曜日

ExtJs-54 階層構造のつぶしこみ3親子の保持

今日はいろいろ進展があった。その1

先日の検討結果よりtoggleの実装をやめたのですが、
親子孫の関係の中で孫の世代の操作を親の世代が無視するという
現象がう生まれたんです。操作情報を保持できない問題にぶつかってうーん。
って成ってました。

エクスプローラとかExcelのグループ化って子の状態を保持してるじゃないですか。
あれをやりたいなぁと。

もちろんExt本体も参考にって思ったんですが
親子のexpand、collapse制御は階層別に隣接する制御を実装して
関数を再帰呼び出し(fireevent)してるみたい。
それと同じじゃちょっと面白みにかけるしパス情報もってるんだからもっと簡単に
なんとかならないかな?ともおもった。

この階層構造、ファイル管理機能を作成するときにもしようしたいので
できればファイルパスをそのままちょこっといじくるだけでそれとなくできないかな?
と通勤時間にうーん。ってちょいちょい考えてました。

でこうなりました。
「キーワード」でロックすることで回避しました。
わかりづらいけどまとめると、、、

各要素は親子孫のパス情報をある特定の区切りで保持しておくこと
①ある特殊なキーワードが含まれている場合は処理は行わない。
②ある特殊なキーワードは一意性のあるIDと合成される
③ある特殊なキーワードは一意性のあるIDの処理の結果子孫へは反映されない
④ある特殊なキーワードは一意性のあるIDの処理と対となり削除、追加の操作を可能とする。

すると
親ID
 親ID 子ID
  親ID 子ID 孫ID
 親ID 子ID-2
  親ID 子ID-2 孫ID-2
とあり、

子IDが圧縮した場合、_KEYを付与
親ID
 親ID 子ID_KEY
  (親ID 子ID_KEY 孫ID)←表現上見えていない
 親ID 子ID-2
  親ID 子ID-2 孫ID-2
となる

で、この状態で親が圧縮した場合
親ID_KEY
 (親ID_KEY 子ID_KEY)←表現上見えていない
  (親ID_KEY 子ID_KEY 孫ID)←表現上見えていない
 (親ID_KEY 子ID-2)←表現上見えていない
  (親ID_KEY 子ID-2 孫ID-2)←表現上見えていない
となる

親の展開処理のとき_KEYを利用して制御を行う。
まず、
①親ID_KEYを親IDに戻す
親ID
 (親ID 子ID_KEY)←表現上見えていない
  (親ID 子ID_KEY 孫ID)←表現上見えていない
 (親ID 子ID-2)←表現上見えていない
  (親ID 子ID-2 孫ID-2)←表現上見えていない

②KEYが含まれていない行を復元する
親ID
 (親ID 子ID_KEY)←表現上見えていない:KEYが含まれているので復元せず
  (親ID 子ID_KEY 孫ID)←表現上見えていない:KEYが含まれているので復元せず
 親ID 子ID-2←復元
  親ID 子ID-2 孫ID-2←復元

とやると
親子孫、子孫、。。。とある特殊なキーワードによって
縛ることが可能で前の状態の簡便な保持の実装が行える。

という仕組み。

形になってきた。

0 件のコメント: