|
|
- <!doctype html>
- <html>
-
- <head>
- <title>vis.js | DataSet documentation</title>
-
- <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.on('*', function (event, properties, senderId) {
- console.log('event', event, properties);
- });
-
- // 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>
-
- <tr>
- <td>order</td>
- <td>String | Function</td>
- <td>Order the items by a field name or custom sort function.</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>on</code>,
- and removed with <code>off</code>.
- </p>
-
- <pre class="prettyprint lang-js">
- // create a DataSet
- var data = new vis.DataSet();
-
- // subscribe to any change in the DataSet
- data.on('*', function (event, properties, senderId) {
- console.log('event:', event, 'properties:', properties, '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="On">On</h3>
-
- <p>
- Subscribe to an event.
- </p>
-
- Syntax:
- <pre class="prettyprint lang-js">DataSet.on(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="Off">Off</h3>
-
- <p>
- Unsubscribe from an event.
- </p>
-
- Syntax:
- <pre class="prettyprint lang-js">DataSet.off(event, callback)</pre>
-
- Where <code>event</code> and <code>callback</code> correspond with the
- parameters used to <a href="#On">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, properties, 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>properties</td>
- <td>Object | null</td>
- <td>
- Optional properties providing more information on the event.
- In case of the events <code>add</code>,
- <code>update</code>, and <code>remove</code>,
- <code>properties</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>
|