Elixir/Phoenixでウェブサービスを作っている33

Done:

  • サーバ
    • Goal.Commands.deleteを作る(positionを詰めるため)
    • Goal.Commands.update_positionsでポジションが変わらないときの処理を追加
  • ブラウザ
    • new/create
      • n: 新規(下)
      • N: 新規(上)
      • enterで作成
      • escでキャンセル
    • edit/update
      • e: 編集、enterで更新
    • delete
      • X: 削除

Todo:

  • newとeditの処理が被っているのでリファクタリング
  • 新規作成のとき、レンダリングが遅いのをどうにかする
  • new,editのとき、l,n,N,eが入力されるのを防ぐ
  • ブラウザ
    • constructorでthis.handle* = this.handle*.bind(this);する?
    • TreeModelを継承したモデルを作ってsiblings関係の関数を生やす
    • copy/cut/paste
      • c: 単体コピー
      • C: サブツリー全体をコピー
      • x: カット
      • v: 下にペースト
      • V: 上にペースト
    • status切り替え
      • f: forward
      • b: back
      • q: close
    • タブ
      • システムメニュー
        • サインイン/サインアウト
      • ユーザーメニュー
        • アクティビティ
          • ユーザー/グループ...
    • オフライン対応
      • すごく欲しいがやらない
      • 当初想定より簡単にできるかも
  • サーバ
    • Goal(goals)
    • Membership(memberships)
      • status(pending/authorized)
    • Status(statuses)
      • ユーザー定義
        • デフォルト
          • 0: todo
          • 1: doing
          • 2: done
          • -1: close
          • done/closeは特別にしたいな……
        • 面倒くさいなこれ。固定にしよっかな
    • 操作権限チェックを入れる
    • ルート操作の防止を入れる
  • /goals/:idを/goals/:hash_digestにする
  • check_descendants!でArgumentErrorにしてるところを独自例外に変える
  • on_delete: :delete_allと再帰クエリでどっちが速いか調べる

Memo:

Programming Phoenix: Productive; Reliable; Fast

Programming Phoenix: Productive; Reliable; Fast