BSON builder
This library helps to integrate a BSON builder using jQuery.
You can see this plugin in action: online demo.
Get started
You can download plugin files from the source repository: js/ sub-directory.
This plugin is also available as a NPM package: npm install jquery.bsonbuilder
Setup
$("selector").bsonBuilder(options)
Following options are available to setup BSON builder.
onLoad (function): Callback function which is given the container element and BSON document when BSON builder is loaded (e.g. {element: ..., bson: {}}
).
supportsWildcard (boolean): Supports wildcard as BSON value.
containerDecorator (function): Decorator function, is called each time an .editor
element is appended to either a document or array view.
The given .editor
allows user to update document properties or array items, and it's created with an input.child-name
(optional, if editing document, to type the property name), a select.child-type
(to choose the type of BSON value to be added) and a button
(to validate the creation of new BSON value).
These prepared child elements must not be .remove
d (use .detach
instead if needed).
The decorator function must return the decorated .editor
element.
childDecorator (function): Decorator function, is called each time a .bson
value element is added.
The given .bson
contains 3 button elements: .move-up
(possibly disabled if already first), .move-down
(possibly disabled if already last) or .remove
.
These prepared child elements must not be .remove
d (use .detach
instead if needed).
The decorator function must return the decorated .bson
element.
showPropertyValueEditor (function): Configuration function which returns a callback function to be called with an .editor
element (see containerDecorator option) and the type (string) of BSON value to edited.
The returned function must itself return a form element to be used to edit the value; e.g. function(editor, typ){ return $('<input type="text" class="bson-value" />') }
.
The configuration function showPropertyValueEditor is called with the default callback (showPropertyValueEditor: function(defCall){ return defCall }
).
hidePropertyValueEditor (function): Callback function called with an .editor
element, to hide when necessary the value editor added by function returned by showPropertyValueEditor; e.g. function(editor){ $(".bson-value", editor).css({'display':"none"}) }
.
Following types are those supported by editors of BSON values:
document
,array
,boolean
,datetime
,double
,float
,integer
,long
,objectid
,string
.
Event
Each time the managed BSON is updated, a bson.change
event is fired with following properties.
action: Either add
, remove
, move-up
or move-down
.
bson: The BSON root document, of following form.
doc1: _type:"document" val: bool2: _type:"boolean" val:false double2: _type:"double" val:1 arr1: _type:"array" val: _type:"datetime" val:null _type:"integer" val:123 _type:"wildcard" bool1: _type:"boolean" val:true date1: _type:"datetime" val:1420156800000 double1: _type:"double" val:123 float1: _type:"float" val:234 long1: _type:"long" val:12345 oid1: _type:"objectid" val:4321 str1: _type:"string" val:"a_value"
change: Data updated in the BSON: {'bson': changedPart, 'parent': changeParent, 'element': changeElement}
. The bson
sub-property is of form {_type:..., val:...}
(see the formats of BSON values in previous example of root document).