0.5.2 • Published 8 years ago

crisp-event v0.5.2

Weekly downloads
6
License
MIT
Repository
github
Last release
8 years ago

Crisp.EventJS

Object event with repeater, picker and optional asynchronous.

Build Status NPM Downloads NPM Version

var myObject = Crisp.utilCreate({ ns: 'util.event' }).objIni();

myObject.eventListener({
  listen: function( e ) {
    console.log('Listen');
  }
});
console.log('Wait');

myObject.eventTrigger();

// logs:
// Wait
// Listen

Index Table

Getting Started

Server-Nodes

Use Node Package Manager (npm) to install crisp-event for Node.js and io.js

$ npm install crisp-event
// use package
require("crisp-event");

or use the OpenCrisp UtilJS wraper

$ npm install crisp-util
// use package
require("crisp-util");

Web-Clients

Use Bower to install crisp-event for Browsers APP's and other front-end workflows.

$ bower install crisp-event
<!-- use package -->
<script type="text/javascript" src="dist/crisp-event.min.js"></script>

or use the OpenCrisp UtilJS wraper

$ bower install crisp-util
<!-- use package -->
<script type="text/javascript" src="dist/crisp-util.min.js"></script>

Development

Use Git to clone Crisp.EventJS from GitHub to develop the repository with Grunt

# Clone:
$ git clone https://github.com/OpenCrisp/Crisp.EventJS.git

# Build: test, concat, test, minify, test
$ grunt

# Test: original sourcecode for developer (included in build)
$ grunt t

# Run all test-scripts on Unix
$ sh grunt-tests.sh

Usage

How to use Crisp.EventJS with JavaScript.

Crisp.defineEvent()

How to use Crisp.defineEvent( object [, option ]) module.

var myObject = {};

// initialice event property functions on myObject
Crisp.defineEvent( myObject );

// or with manual property name of event and parent 
Crisp.defineEvent( myObject, {
    // default: __event__
    event: '__myevent__',       // manual set the name of event cach
    // default: __parent__
    parent: '__myparent__'      // manual set the name of parent reference
});

Crisp.utilCreate()

How to use Crisp.utilCreate( option ) with util.event namespace.

var myObject = Crisp.utilCreate({
    ns: 'util.event'
}).objIni();

EventJS function

.eventListener()

How to use .eventListener( option ) on myObject

// listen for all triggert events
myObject.eventListener({
  listen: function( e ) {}
});

option.self (eventListener)

works with .eventTrigger() and .eventPicker()

// set self as alternate for apply thisArg
var thisArg = {};
myObject.eventListener({
  self: thsiArg,
  listen: function( e ) {
    this === thisArg;  // true
  }
});

option.async (eventListener)

works with .eventTrigger() and .eventPicker()

// set asynchronous callback for listen:function
myObject.eventListener({
  async: true,
  listen: function( e ) {}
});

option.action (eventListener)

works with .eventTrigger() and .eventPicker()

// set right namespase string filter
myObject.eventListener({
  action: 'insert',
  listen: function( e ) {}
});

// set an expandable RegExp filter like action:'insert'
myObject.eventListener({
  action: /(^|\s)insert($|\s|\.)/,
  listen: function( e ) {}
});

// set multi right namespase string filter with space seperator
myObject.eventListener({
  action: 'insert update',
  listen: function( e ) {}
});

// set an expandable RegExp filter like action:'insert update'
myObject.eventListener({
  action: /(^|\s)(insert|update)($|\s|\.)/,
  listen: function( e ) {}
});

option.path (eventListener)

works with .eventTrigger() and .eventPicker()

// set 
myObject.eventListener({
  action: /(^|\s)(insert|update)($|\s|\.)/,
  listen: function( e ) {}
});

option.noteList (eventListener)

works with .eventPicker()

// filter notes in specified list 
myObject.eventListener({
  noteList: 'merge',
  listen: function( e ) {}
});

option.noteAction (eventListener)

works with .eventPicker()

// set filter of note action
myObject.eventListener({
  noteAction: 'delete',           // or RegExp like option.action
  listen: function( e ) {}
});

option.notePath (eventListener)

works with .eventPicker()

// set filter of note path
myObject.eventListener({
  notePath: 'doc.b',
  listen: function( e ) {}
});

.eventTrigger()

How to use .eventTrigger( option ) on myObject

var myObject = Crisp.utilCreate({ ns: 'util.event' }).objIni();

myObject.eventListener({
  listen: function( e ) {
    console.log('Listen');
  }
});
console.log('Wait');

myObject.eventTrigger();

// logs:
// Wait
// Listen

option.repeat (eventTrigger)

// set repeat for trigger parent objects
var myObject = Crisp.utilCreate({
    ns: 'util.event',
    options: {
        parent: { proWri: true }
    }
}).objIni();

var myChild = myObject.objClone().objIni({
    parent: myObject
});

myObject.a = myChild;

myChild.eventListener({
    listen: function( e ) {
        console.log('Listener: Child');
    }
});

myObject.eventListener({
    listen: function( e ) {
        console.log('Listener: Object');
    }
});
console.log('JSON', myObject.xTo() );

myChild.eventTrigger({
    repeat: true
});

// logs:
// JSON {"a":{"b":"B"}}
// Listener: Child
// Listener: Object
// End

option.exporter (eventTrigger)

var myObject = {};
Crisp.defineEvent( myObject );

myObject.eventListener({
    listen: function( e ) {
        console.log('Listener');
    }
});
console.log('Wait');

myObject.eventTrigger();

myObject.eventTrigger({
    exporter: myObject
});
console.log('End');

// logs:
// Wait
// Listener
// End

option.action (eventTrigger)

var myObject = {};
Crisp.defineEvent( myObject );

myObject.eventListener({
    action: 'change',
    listen: function( e ) {
        assert.strictEqual( 'change', e.action );
        assert.strictEqual( myObject, this );
        assert.strictEqual( myObject, e.self );
    }
});

myObject.eventTrigger({
    action: 'change'
});

option.path (eventTrigger)

var myObject = {};
Crisp.defineEvent( myObject );

myObject.eventListener({
    path: 'doc',
    listen: function( e ) {
        assert.strictEqual( 'doc', e.path );
        assert.strictEqual( myObject, this );
        assert.strictEqual( myObject, e.self );
    }
});

myObject.eventTrigger({
    path: 'doc'
});

option.args (eventTrigger)

var thisArg = {};

var myObject = Crisp.utilCreate({
    ns: 'util.event'
}).objIni();

myObject.eventListener({
    listen: function( e ) {
        assert.strictEqual( myObject, this );
        assert.strictEqual( thisArg, e );
    }
});

myObject.eventTrigger({
    args: thisArg
});

.eventPicker()

How to use .eventPicker( option ) on myObject

var myObject = Crisp.utilCreate({ ns: 'util.event' }).objIni();

myObject.eventListener({
  listen: function( e ) {
    console.log('Listen:', e.action, e.List().xTo() );
  }
});

var pickerCache = {};
var picker = myObject.eventPicker({
    cache: pickerCache
});

picker.Note({
    action: 'update'
});
console.log('Wait');

picker.Talk();
console.log('End')

// logs:
// Wait
// Listen: task [{"action":"update"}]
// End

option.cache (eventPicker)

// Listener wait for the last Talk() on the same cache
var myObject = Crisp.utilCreate({ ns: 'util.event' }).objIni();

myObject.eventListener({
  listen: function( e ) {
    console.log('Listen:', e.action, e.List().xTo() );
  }
});

var pickerCache = {};
var picker = myObject.eventPicker({
    cache: pickerCache
});

{
    var sub_picker = myObject.eventPicker({
        cache: pickerCache
    });

    sub_picker.Note({
        action: 'insert'
    });
    console.log('Wait 0');

    sub_picker.Talk();
}

picker.Note({
    action: 'update'
});
console.log('Wait 1');

picker.Talk();
console.log('End')

// logs:
// Wait 0
// Wait 1
// Listen: task [{"action":"insert"},{"action":"update"}]
// End

option.action (eventPicker)

var myObject = {};
var pickerCache = {};

Crisp.defineEvent( myObject );

myObject.eventListener({
    action: 'changed',
    listen: function( e ) {
        assert.strictEqual( myObject, this );
        assert.strictEqual( myObject, e.self );
    }
});

var picker = myObject.eventPicker({
    action: 'changed',
    cache: pickerCache
});

picker.Note({
    action: 'update'
});

picker.Talk();

option.path (eventPicker)

var myObject = {};
var pickerCache = {};

Crisp.defineEvent( myObject );

myObject.eventListener({
    path: 'doc.a',
    listen: function( e ) {
        assert.strictEqual( myObject, this );
        assert.strictEqual( myObject, e.self );
    }
});

var picker = myObject.eventPicker({
    path: 'doc.a',
    cache: pickerCache
});

picker.Talk();

option.empty (eventPicker)

var myObject = {};
var pickerCache = {};

Crisp.defineEvent( myObject );

myObject.eventListener({
    listen: function( e ) {
        assert.strictEqual( '[]', e.List().xTo() );
        assert.strictEqual( myObject, this );
        assert.strictEqual( myObject, e.self );
    }
});

var picker = myObject.eventPicker({
    empty: true,
    cache: pickerCache
});

picker.Talk();

.eventRemove()

How to use .eventRemove( event ) on myObject

var myObject = Crisp.utilCreate({ ns: 'util.event' }).objIni();

var eventObject = myObject.eventListener({
  listen: function( e ) {
    console.log('Listen');
  }
});
console.log('Wait 0');

myObject.eventTrigger();

myObject.eventRemove( eventObject );
console.log('Wait 1');

myObject.eventTrigger();

console.log('End')

// logs:
// Wait 0
// Listen
// Wait 1
// End

Links

0.5.2

8 years ago

0.5.1

9 years ago

0.4.6

9 years ago

0.4.2

9 years ago

0.4.1

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago