wafflestudio / wall

Infinite Wall
https://infinitwall.com
6 stars 2 forks source link

History Infrastructure #22

Open kindone opened 12 years ago

kindone commented 12 years ago
kindone commented 11 years ago

택민 부탁~

serendipitydeity commented 11 years ago

ctl+z가 있어야 할 것 같아요.

끌어서 휴지통에 버리면 좋겠어요.

휴지통 안에 있는 것들 모두 비우기 전까지는 복원이 가능하면 좋겠어요.

(조예경)

kindone commented 11 years ago

Undo는 클라이언트에서만 의미가 있고 서버 입장에서는 새로운 레코드를 추가하는 것일 뿐.

해결 순서

  1. 필요한 클래스 구성:
    • History: write, playforward, rollback
    • 예를 들어 (previous values, new values) 가 주어지면 undo는 previous values로 값을 바꾸고 redo는 new values로 바꿈. 이 때 필요하다면 애니메이션이 들어갈 수도.
    • 배열같은 걸로 히스토리를 구성. 현 위치 undo위치를 둠.
    • 모든 동작을 action 단위로 만들기.
    • Sheet.move
    • Sheet.resize
    • Sheet.create
    • DeleteSheet
    • TextSheet.update
    • Sheet.createRelation ?
    • ....?
      1. 각 Action에서는 History.write를 콜하도록 함.
    • 예를 들어 Sheet.move에서는 History.write(new SheetMoveAction(sheetId, oldx, oldy, newx, newy) 이런식으로.
      1. History write/rollback 구현
    • 보통상황에서는 History.write는 정상적으로 레코드를 기록
    • undo/redo할 시(playforward/rollback)에는 Sheet.move가 부른 History.write가 아무것도 하지 않음
      1. History playforward/rollback을 UI에 접목(undo/redo)