history-json

0.0.0-beta.1 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i history-json

Weekly Downloads

1

Version

0.0.0-beta.1

License

MIT

Last publish

Collaborators

  • 59naga