0.0.0-beta.1 • Published 9 years ago

history-json v0.0.0-beta.1

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

History-json NPM version Build Status Coverage Status

Implement undo/redo by Accumulating json

Installation

Via npm

$ npm install history-json --save
var HistoryJson= require('history-json');
console.log(HistoryJson); //function

Via bower

$ bower install history-json --save
<script src="bower_components/history-json/history-json.min.js"></script>
<script>
  console.log(HistoryJson); //function
</script>

Usage

var history= new HistoryJson;

history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});

history.current();// { state: 'three' }
history.undo();// { state: 'two' }
history.undo();// { state: 'one' }
history.undo();// undefined

history.current();// { state: 'one' }
history.redo();// { state: 'two' }
history.redo();// { state: 'three' }
history.redo();// undefined

var exported= JSON.stringify(history);
// save to file or localStorage

var imported= new HistoryJson(exported);
imported.current();// { state: 'three' }
imported.undo();// { state: 'two' }
imported.undo();// { state: 'one' }
imported.undo();// undefined

API

.add(history,options)

Return index of added history But, Doesn't add if duplicate of previous history.

var history= new HistoryJson;
history.add({state:'one'});// 0
history.add({state:'two'});// 1
history.add({state:'three'});// 2

history.add({state:'three'});// 2

.undo(override=false)

Return history via Change index to previous

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.undo();// { state: 'two' }

.redo(override=false)

Return history via Change index to following

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.undo();// { state: 'two' }
history.redo();// { state: 'three' }

.current(override=false)

Return history by current index

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.current();// { state: 'three' }

.first(override=false)

Return history via Change index to first

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.first();// { state: 'one' }

.last(override=false)

Return history via Change index to last

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.last();// { state: 'three' }

.count()

Return number of histories

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.count()// 3

.get(index)

Return history by index

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.get(0)// { state: 'one' }

.destroy()

Delete all histories

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.add({state:'three'});
history.count();// 3

history.destroy();
history.count();// 0

.canUndo()

Return true if can undo.

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.canUndo();// true

history.undo();// { state: 'one' }
history.canUndo();// false

.canRedo()

Return true if can redo.

var history= new HistoryJson;
history.add({state:'one'});
history.add({state:'two'});
history.canRedo();// false

history.undo();// { state: 'one' }
history.canRedo();// true

Override option

Override self properties by history if set true

class Tool extends HistoryJson
  constructor: ->
    super

    @use 'Hammer',power:20
  use: (@tool,@options={})->
    @add {tool:@tool,options:@options}

tool= new Tool
tool.use 'Drill',{power:50}
console.log(tool)# tool:'Drill',options:{power:50}

tool.undo(true)
console.log(tool)# tool:'Hammer',options:{power:20}

License

MIT

0.0.0-beta.1

9 years ago

0.0.0-beta.0

9 years ago