0.0.0-beta.1 • Published 9 years ago
history-json v0.0.0-beta.1
History-json
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
0.0.0-beta.1
9 years ago
0.0.0-beta.0
9 years ago