| <!doctype html> | |
| <html> | |
| 
 | |
| <head> | |
|     <title>vis.js | DataSet documentation</title> | |
|     <link rel='stylesheet' href='css/style.css' type='text/css' /> | |
| 
 | |
|     <link href="css/prettify.css" type="text/css" rel="stylesheet" /> | |
|     <link href='css/style.css' type='text/css' rel='stylesheet'> | |
| 
 | |
|     <script type="text/javascript" src="lib/prettify/prettify.js"></script> | |
| </head> | |
| 
 | |
| <body onload="prettyPrint();"> | |
| <div id="container"> | |
| 
 | |
|     <h1>DataSet documentation</h1> | |
| 
 | |
|     <h2 id="Contents">Contents</h2> | |
|     <ul> | |
|         <li><a href="#Overview">Overview</a></li> | |
|         <li><a href="#Example">Example</a></li> | |
|         <li><a href="#Construction">Construction</a></li> | |
|         <li><a href="#Data_Manipulation">Data Manipulation</a></li> | |
|         <li><a href="#Data_Filtering">Data Filtering</a></li> | |
|         <li><a href="#Data_Formatting">Data Formatting</a></li> | |
|         <li><a href="#Subscriptions">Subscriptions</a></li> | |
|         <li><a href="#Data_Policy">Data Policy</a></li> | |
|     </ul> | |
| 
 | |
| 
 | |
|     <h2 id="Overview">Overview</h2> | |
| 
 | |
|     <p> | |
|         Vis.js comes with a flexible DataSet, which can be used to hold and | |
|         manipulate unstructured data and listen for changes in the data. | |
|         The DataSet is key/value based. Data items can be added, updated and | |
|         removed from the DatSet, and one can subscribe to changes in the DataSet. | |
|         The data in the DataSet can be filtered and ordered, and fields (like | |
|         dates) can be converted to a specific type. Data can be normalized when | |
|         appending it to the DataSet as well. | |
|     </p> | |
| 
 | |
| 
 | |
|     <h2 id="Example">Example</h2> | |
| 
 | |
|     <p> | |
|         The following example shows how to use a DataSet. | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| // create a DataSet | |
| var options = {}; | |
| var data = new vis.DataSet(options); | |
| 
 | |
| // add items | |
| // note that the data items can contain different properties and data formats | |
| data.add([ | |
|     {id: 1, text: 'item 1', date: new Date(2013, 6, 20), group: 1, first: true}, | |
|     {id: 2, text: 'item 2', date: '2013-06-23', group: 2}, | |
|     {id: 3, text: 'item 3', date: '2013-06-25', group: 2}, | |
|     {id: 4, text: 'item 4'} | |
| ]); | |
| 
 | |
| // subscribe to any change in the DataSet | |
| data.subscribe('*', function (event, params, senderId) { | |
|     console.log('event', event, params); | |
| }); | |
| 
 | |
| // update an existing item | |
| data.update({id: 2, group: 1}); | |
| 
 | |
| // remove an item | |
| data.remove(4); | |
| 
 | |
| // get all ids | |
| var ids = data.getIds(); | |
| console.log('ids', ids); | |
| 
 | |
| // get a specific item | |
| var item1 = data.get(1); | |
| console.log('item1', item1); | |
| 
 | |
| // retrieve a filtered subset of the data | |
| var items = data.get({ | |
|     filter: function (item) { | |
|         return item.group == 1; | |
|     } | |
| }); | |
| console.log('filtered items', items); | |
| 
 | |
| // retrieve formatted items | |
| var items = data.get({ | |
|     fields: ['id', 'date'], | |
|     convert: { | |
|         date: 'ISODate' | |
|     } | |
| }); | |
| console.log('formatted items', items); | |
| </pre> | |
| 
 | |
| 
 | |
| 
 | |
|     <h2 id="Construction">Construction</h2> | |
| 
 | |
|     <p> | |
|         A DataSet can be constructed as: | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| var data = new vis.DataSet(options) | |
| </pre> | |
| 
 | |
|     <p> | |
|         After construction, data can be added to the DataSet using the methods | |
|         <code>add</code> and <code>update</code>, as described in section | |
|         <a href="#Data_Manipulation">Data Manipulation</a>. | |
|     </p> | |
| 
 | |
|     <p> | |
|         The parameter <code>options</code> is optional and is an object which can | |
|         contain the following properties: | |
|     </p> | |
| 
 | |
|     <table> | |
|         <tr> | |
|             <th>Name</th> | |
|             <th>Type</th> | |
|             <th>Default value</th> | |
|             <th>Description</th> | |
|         </tr> | |
|         <tr> | |
|             <td>fieldId</td> | |
|             <td>String</td> | |
|             <td>"id"</td> | |
|             <td> | |
|                 The name of the field containing the id of the items. | |
| 
 | |
|                 When data is fetched from a server which uses some specific | |
|                 field to identify items, this field name can be specified | |
|                 in the DataSet using the option <code>fieldId</code>. | |
|                 For example <a href="http://couchdb.apache.org/" | |
|                                target="_blank">CouchDB</a> uses the field | |
|                 <code>"_id"</code> to identify documents. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>convert</td> | |
|             <td>Object.<String, String></td> | |
|             <td>none</td> | |
|             <td> | |
|                 An object containing field names as key, and data types as | |
|                 value. By default, the type of the properties of items are left | |
|                 unchanged. Item properties can be normalized by specifying a | |
|                 field type. This is useful for example to automatically convert | |
|                 stringified dates coming from a server into JavaScript Date | |
|                 objects. The available data types are listed in section | |
|                 <a href="#Data_Types">Data Types</a>. | |
|             </td> | |
|         </tr> | |
|     </table> | |
| 
 | |
| 
 | |
|     <h2 id="Data_Manipulation">Data Manipulation</h2> | |
| 
 | |
|     <p> | |
|         The data in a DataSet can be manipulated using the methods | |
|         <a href="#Add"><code>add</code></a>, | |
|         <a href="#Update"><code>update</code></a>, | |
|         and <a href="#Remove"><code>remove</code></a>. | |
|         The DataSet can be emptied using the method | |
|         <a href="#Clear"><code>clear</code></a>. | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| // create a DataSet | |
| var data = new vis.DataSet(); | |
| 
 | |
| // add items | |
| data.add([ | |
|     {id: 1, text: 'item 1'}, | |
|     {id: 2, text: 'item 2'}, | |
|     {id: 3, text: 'item 3'} | |
| ]); | |
| 
 | |
| // update an item | |
| data.update({id: 2, text: 'item 2 (updated)'}); | |
| 
 | |
| // remove an item | |
| data.remove(3); | |
| </pre> | |
| 
 | |
|     <h3 id="Add">Add</h3> | |
| 
 | |
|     <p> | |
|         Add a data item or an array with items. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">var addedIds = DataSet.add(data [, senderId])</pre> | |
| 
 | |
|     The argument <code>data</code> can contain: | |
|     <ul> | |
|         <li> | |
|             An <code>Object</code> containing a single item to be | |
|             added. The item must contain an id. | |
|         </li> | |
|         <li> | |
|             An <code>Array</code> or | |
|             <code>google.visualization.DataTable</code> containing | |
|             a list with items to be added. Each item must contain | |
|             an id. | |
|         </li> | |
|     </ul> | |
| 
 | |
|     <p> | |
|         After the items are added to the DataSet, the DataSet will | |
|         trigger an event <code>add</code>. When a <code>senderId</code> | |
|         is provided, this id will be passed with the triggered | |
|         event to all subscribers. | |
|     </p> | |
| 
 | |
|     <p> | |
|         The method will throw an Error when an item with the same id | |
|         as any of the added items already exists. | |
|     </p> | |
| 
 | |
|     <h3 id="Update">Update</h3> | |
| 
 | |
|     <p> | |
|         Update a data item or an array with items. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">var updatedIds = DataSet.update(data [, senderId])</pre> | |
| 
 | |
|     The argument <code>data</code> can contain: | |
|     <ul> | |
|         <li> | |
|             An <code>Object</code> containing a single item to be | |
|             updated. The item must contain an id. | |
|         </li> | |
|         <li> | |
|             An <code>Array</code> or | |
|             <code>google.visualization.DataTable</code> containing | |
|             a list with items to be updated. Each item must contain | |
|             an id. | |
|         </li> | |
|     </ul> | |
| 
 | |
|     <p> | |
|         The provided properties will be merged in the existing item. | |
|         When an item does not exist, it will be created. | |
|     </p> | |
| 
 | |
|     <p> | |
|         After the items are updated, the DataSet will | |
|         trigger an event <code>add</code> for the added items, and | |
|         an event <code>update</code>. When a <code>senderId</code> | |
|         is provided, this id will be passed with the triggered | |
|         event to all subscribers. | |
|     </p> | |
| 
 | |
|     <h3 id="Remove">Remove</h3> | |
| 
 | |
|     <p> | |
|         Remove a data item or an array with items. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">var removedIds = DataSet.remove(id [, senderId])</pre> | |
| 
 | |
|     <p> | |
|         The argument <code>id</code> can be: | |
|     </p> | |
|     <ul> | |
|         <li> | |
|             A <code>Number</code> or <code>String</code> containing the id | |
|             of a single item to be removed. | |
|         </li> | |
|         <li> | |
|             An <code>Object</code> containing the item to be deleted. | |
|             The item will be deleted by its id. | |
|         </li> | |
|         <li> | |
|             An Array containing ids or items to be removed. | |
|         </li> | |
|     </ul> | |
| 
 | |
|     <p> | |
|         The method ignores removal of non-existing items, and returns an array | |
|         containing the ids of the items which are actually removed from the | |
|         DataSet. | |
|     </p> | |
| 
 | |
|     <p> | |
|         After the items are removed, the DataSet will | |
|         trigger an event <code>remove</code> for the removed items. | |
|         When a <code>senderId</code> is provided, this id will be passed with | |
|         the triggered event to all subscribers. | |
|     </p> | |
| 
 | |
| 
 | |
|     <h3 id="Clear">Clear</h3> | |
| 
 | |
|     <p> | |
|         Clear the complete DataSet. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">var removedIds = DataSet.clear([senderId])</pre> | |
| 
 | |
|     <p> | |
|         After the items are removed, the DataSet will | |
|         trigger an event <code>remove</code> for all removed items. | |
|         When a <code>senderId</code> is provided, this id will be passed with | |
|         the triggered event to all subscribers. | |
|     </p> | |
| 
 | |
| 
 | |
|     <h2 id="Data_Filtering">Data Filtering</h2> | |
| 
 | |
|     <p> | |
|         Data can be retrieved from the DataSet using the method <code>get</code>. | |
|         This method can return a single item or a list with items. | |
|     </p> | |
| 
 | |
|     <p>A single item can be retrieved by its id:</p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| var item1 = dataset.get(1); | |
| </pre> | |
| 
 | |
|     <p>A selection of items can be retrieved by providing an array with ids:</p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| var items = dataset.get([1, 3, 4]); // retrieve items 1, 3, and 4 | |
| </pre> | |
| 
 | |
|     <p>All items can be retrieved by simply calling <code>get</code> without | |
|     specifying an id:</p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| var items = dataset.get();          // retrieve all items | |
| </pre> | |
| 
 | |
|     <p> | |
|         Items can be filtered on specific properties by providing a filter | |
|         function. A filter function is executed for each of the items in the | |
|         DataSet, and is called with the item as parameter. The function must | |
|         return a boolean. All items for which the filter function returns | |
|         true will be emitted. | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| // retrieve all items having a property group with value 2 | |
| var group2 = dataset.get({ | |
|     filter: function (item) { | |
|         return (item.group == 2); | |
|     } | |
| }); | |
| 
 | |
| // retrieve all items having a property balance with a value above zero | |
| var positiveBalance = dataset.get({ | |
|     filter: function (item) { | |
|         return (item.balance > 0); | |
|     } | |
| }); | |
| 
 | |
| </pre> | |
| 
 | |
| 
 | |
|     <h2 id="Data_Formatting">Data Formatting</h2> | |
| 
 | |
|     <p> | |
|         The DataSet contains functionality to format data retrieved via the | |
|         method <code>get</code>. The method <code>get</code> has the following | |
|         syntax: | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| var item  = DataSet.get(id, options);   // retrieve a single item | |
| var items = DataSet.get(ids, options);  // retrieve a selection of items | |
| var items = DataSet.get(options);       // retrieve all items or a filtered set | |
| </pre> | |
| 
 | |
|     <p> | |
|         Where <code>options</code> is an Object which can have the following | |
|         properties: | |
|     </p> | |
| 
 | |
|     <table> | |
|         <tr> | |
|             <th>Name</th> | |
|             <th>Type</th> | |
|             <th>Description</th> | |
|         </tr> | |
| 
 | |
|         <tr> | |
|             <td>fields</td> | |
|             <td>String[ ]</td> | |
|             <td> | |
|                 An array with field names. | |
|                 By default, all properties of the items are emitted. | |
|                 When <code>fields</code> is defined, only the properties | |
|                 whose name is specified in <code>fields</code> will be included | |
|                 in the returned items. | |
|             </td> | |
|         </tr> | |
| 
 | |
|         <tr> | |
|             <td>convert</td> | |
|             <td>Object.<String, String></td> | |
|             <td> | |
|                 An object containing field names as key, and data types as value. | |
|                 By default, the type of the properties of an item are left | |
|                 unchanged. When a field type is specified, this field in the | |
|                 items will be converted to the specified type. This can be used | |
|                 for example to convert ISO strings containing a date to a | |
|                 JavaScript Date object, or convert strings to numbers or vice | |
|                 versa. The available data types are listed in section | |
|                 <a href="#Data_Types">Data Types</a>. | |
|             </td> | |
|         </tr> | |
| 
 | |
|         <tr> | |
|             <td>filter</td> | |
|             <td>function</td> | |
|             <td>Items can be filtered on specific properties by providing a filter | |
|                 function. A filter function is executed for each of the items in the | |
|                 DataSet, and is called with the item as parameter. The function must | |
|                 return a boolean. All items for which the filter function returns | |
|                 true will be emitted. | |
|                 See section <a href="#Data_Filtering">Data Filtering</a>.</td> | |
|         </tr> | |
|     </table> | |
| 
 | |
|     <p> | |
|         The following example demonstrates formatting properties and filtering | |
|         properties from items. | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| // create a DataSet | |
| var data = new vis.DataSet(); | |
| data.add([ | |
|     {id: 1, text: 'item 1', date: '2013-06-20', group: 1, first: true}, | |
|     {id: 2, text: 'item 2', date: '2013-06-23', group: 2}, | |
|     {id: 3, text: 'item 3', date: '2013-06-25', group: 2}, | |
|     {id: 4, text: 'item 4'} | |
| ]); | |
| 
 | |
| // retrieve formatted items | |
| var items = data.get({ | |
|     fields: ['id', 'date', 'group'],    // output the specified fields only | |
|     convert: { | |
|         date: 'Date',                   // convert the date fields to Date objects | |
|         group: 'String'                 // convert the group fields to Strings | |
|     } | |
| }); | |
| </pre> | |
| 
 | |
| 
 | |
| 
 | |
|     <h3 id="Data_Types">Data Types</h3> | |
| 
 | |
|     <p> | |
|         DataSet supports the following data types: | |
|     </p> | |
| 
 | |
|     <table style="width: 100%"> | |
|         <tr> | |
|             <th>Name</th> | |
|             <th>Description</th> | |
|             <th>Examples</th> | |
|         </tr> | |
|         <tr> | |
|             <td>Boolean</td> | |
|             <td>A JavaScript Boolean</td> | |
|             <td> | |
|                 <code>true</code><br> | |
|                 <code>false</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>Number</td> | |
|             <td>A JavaScript Number</td> | |
|             <td> | |
|                 <code>32</code><br> | |
|                 <code>2.4</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>String</td> | |
|             <td>A JavaScript String</td> | |
|             <td> | |
|                 <code>"hello world"</code><br> | |
|                 <code>"2013-06-28"</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>Date</td> | |
|             <td>A JavaScript Date object</td> | |
|             <td> | |
|                 <code>new Date()</code><br> | |
|                 <code>new Date(2013, 5, 28)</code><br> | |
|                 <code>new Date(1372370400000)</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>Moment</td> | |
|             <td>A Moment object, created with | |
|                 <a href="http://momentjs.com/" target="_blank">moment.js</a></td> | |
|             <td> | |
|                 <code>moment()</code><br> | |
|                 <code>moment('2013-06-28')</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>ISODate</td> | |
|             <td>A string containing an ISO Date</td> | |
|             <td> | |
|                 <code>new Date().toISOString()</code><br> | |
|                 <code>"2013-06-27T22:00:00.000Z"</code> | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>ASPDate</td> | |
|             <td>A string containing an ASP Date</td> | |
|             <td> | |
|                 <code>"/Date(1372370400000)/"</code><br> | |
|                 <code>"/Date(1198908717056-0700)/"</code> | |
|             </td> | |
|         </tr> | |
|     </table> | |
| 
 | |
| 
 | |
|     <h2 id="Subscriptions">Subscriptions</h2> | |
| 
 | |
|     <p> | |
|         One can subscribe on changes in a DataSet. | |
|         A subscription can be created using the method <code>subscribe</code>, | |
|         and removed with <code>unsubscribe</code>. | |
|     </p> | |
| 
 | |
| <pre class="prettyprint lang-js"> | |
| // create a DataSet | |
| var data = new vis.DataSet(); | |
| 
 | |
| // subscribe to any change in the DataSet | |
| data.subscribe('*', function (event, params, senderId) { | |
|     console.log('event:', event, 'params:', params, 'senderId:', senderId); | |
| }); | |
| 
 | |
| // add an item | |
| data.add({id: 1, text: 'item 1'});              // triggers an 'add' event | |
| data.update({id: 1, text: 'item 1 (updated)'}); // triggers an 'update' event | |
| data.remove(1);                                 // triggers an 'remove' event | |
| </pre> | |
| 
 | |
| 
 | |
|     <h3 id="Subscribe">Subscribe</h3> | |
| 
 | |
|     <p> | |
|         Subscribe to an event. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">DataSet.subscribe(event, callback)</pre> | |
| 
 | |
|     Where: | |
|     <ul> | |
|         <li> | |
|             <code>event</code> is a String containing any of the events listed | |
|             in section <a href="#Events">Events</a>. | |
|         </li> | |
|         <li> | |
|             <code>callback</code> is a callback function which will be called | |
|             each time the event occurs. The callback function is described in | |
|             section <a href="#Callback">Callback</a>. | |
|         </li> | |
|     </ul> | |
| 
 | |
|     <h3 id="Unsubscribe">Unsubscribe</h3> | |
| 
 | |
|     <p> | |
|         Unsubscribe from an event. | |
|     </p> | |
| 
 | |
|     Syntax: | |
|     <pre class="prettyprint lang-js">DataSet.unsubscribe(event, callback)</pre> | |
| 
 | |
|     Where <code>event</code> and <code>callback</code> correspond with the | |
|     parameters used to <a href="#Subscribe">subscribe</a> to the event. | |
| 
 | |
|     <h3 id="Events">Events</h3> | |
| 
 | |
|     <p> | |
|         The following events are available for subscription: | |
|     </p> | |
| 
 | |
|     <table> | |
|         <tr> | |
|             <th>Event</th> | |
|             <th>Description</th> | |
|         </tr> | |
|         <tr> | |
|             <td>add</td> | |
|             <td> | |
|                 The <code>add</code> event is triggered when an item | |
|                 or a set of items is added, or when an item is updated while | |
|                 not yet existing. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>update</td> | |
|             <td> | |
|                 The <code>update</code> event is triggered when an existing item | |
|                 or a set of existing items is updated. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>remove</td> | |
|             <td> | |
|                 The <code>remove</code> event is triggered when an item | |
|                 or a set of items is removed. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>*</td> | |
|             <td> | |
|                 The <code>*</code> event is triggered when any of the events | |
|                 <code>add</code>, <code>update</code>, and <code>remove</code> | |
|                 occurs. | |
|             </td> | |
|         </tr> | |
|     </table> | |
| 
 | |
|     <h3 id="Callback">Callback</h3> | |
| 
 | |
|     <p> | |
|         The callback functions of subscribers are called with the following | |
|         parameters: | |
|     </p> | |
| 
 | |
|     <pre class="prettyprint lang-js"> | |
| function (event, params, senderId) { | |
|     // handle the event | |
| }); | |
| </pre> | |
| 
 | |
|     <p> | |
|     where the parameters are defined as | |
|     </p> | |
| 
 | |
|     <table> | |
|         <tr> | |
|             <th>Parameter</th> | |
|             <th>Type</th> | |
|             <th>Description</th> | |
|         </tr> | |
|         <tr> | |
|             <td>event</td> | |
|             <td>String</td> | |
|             <td> | |
|                 Any of the available events: <code>add</code>, | |
|                 <code>update</code>, or <code>remove</code>. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>params</td> | |
|             <td>Object | null</td> | |
|             <td> | |
|                 Optional parameters providing more information on the event. | |
|                 In case of the events <code>add</code>, | |
|                 <code>update</code>, and <code>remove</code>, | |
|                 <code>params</code> is always an object containing a property | |
|                 items, which contains an array with the ids of the affected | |
|                 items. | |
|             </td> | |
|         </tr> | |
|         <tr> | |
|             <td>senderId</td> | |
|             <td>String | Number</td> | |
|             <td> | |
|                 An senderId, optionally provided by the application code | |
|                 which triggered the event. If senderId is not provided, the | |
|                 argument will be <code>null</code>. | |
|             </td> | |
|         </tr> | |
|     </table> | |
| 
 | |
| 
 | |
| 
 | |
|     <h2 id="Data_Policy">Data Policy</h2> | |
|     <p> | |
|         All code and data is processed and rendered in the browser. | |
|         No data is sent to any server. | |
|     </p> | |
| 
 | |
| </div> | |
| </body> | |
| </html> |