0.0.0-beta.1 • Published 11 years ago
history-json v0.0.0-beta.1
History-json

Implement undo/redo by Accumulating json
Installation
Via npm
$ npm install history-json --savevar HistoryJson= require('history-json');
console.log(HistoryJson); //functionVia 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();// undefinedAPI
.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();// trueOverride 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
11 years ago
0.0.0-beta.0
11 years ago