| 
								
							 | 
							
								<!DOCTYPE HTML>
							 | 
						
						
						
							| 
								
							 | 
							
								<html>
							 | 
						
						
						
							| 
								
							 | 
							
								<head>
							 | 
						
						
						
							| 
								
							 | 
							
								    <title>Timeline | Subgroups</title>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    <script src="../../../dist/vis.js"></script>
							 | 
						
						
						
							| 
								
							 | 
							
								    <link href="../../../dist/vis.css" rel="stylesheet" type="text/css" />
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    <style>
							 | 
						
						
						
							| 
								
							 | 
							
								        body, html {
							 | 
						
						
						
							| 
								
							 | 
							
								            font-family: arial, sans-serif;
							 | 
						
						
						
							| 
								
							 | 
							
								            font-size: 11pt;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        .vis-item.vis-background.negative {
							 | 
						
						
						
							| 
								
							 | 
							
								            background-color: rgba(255, 0, 0, 0.2);
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        .vis-item.vis-background.positive {
							 | 
						
						
						
							| 
								
							 | 
							
								            background-color: rgba(105, 255, 98, 0.20);
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								        .vis-item.vis-background.marker {
							 | 
						
						
						
							| 
								
							 | 
							
								            border-left: 2px solid green;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        table {
							 | 
						
						
						
							| 
								
							 | 
							
								            border: 1px solid gray;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        td {            
							 | 
						
						
						
							| 
								
							 | 
							
								            text-align: center
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        code {
							 | 
						
						
						
							| 
								
							 | 
							
								            padding: 2px 4px;
							 | 
						
						
						
							| 
								
							 | 
							
								            font-size: 90%;
							 | 
						
						
						
							| 
								
							 | 
							
								            color: #c7254e;
							 | 
						
						
						
							| 
								
							 | 
							
								            background-color: #f9f2f4;
							 | 
						
						
						
							| 
								
							 | 
							
								            border-radius: 4px;
							 | 
						
						
						
							| 
								
							 | 
							
								        }
							 | 
						
						
						
							| 
								
							 | 
							
								    </style>
							 | 
						
						
						
							| 
								
							 | 
							
								</head>
							 | 
						
						
						
							| 
								
							 | 
							
								<body>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<p>This example shows the workings of the subgroups. Subgroups can be stacked on each other, and the items within each subgroup can be stacked.</p>
							 | 
						
						
						
							| 
								
							 | 
							
								<p>When stacking is on for the whole timeline, all items in the timeline will be stacked with respect to each other <em>unless</em> the <code>stackSubgroups</code> option is set to <code>true</code>
							 | 
						
						
						
							| 
								
							 | 
							
								   and at least one subgroup has stacking enabled. In that case the subgroups will be stacked with respect to each other and the elements in each subgroup will be stacked based on the individual
							 | 
						
						
						
							| 
								
							 | 
							
								   stacking settings for each subgroup.
							 | 
						
						
						
							| 
								
							 | 
							
								</p>
							 | 
						
						
						
							| 
								
							 | 
							
								<table>
							 | 
						
						
						
							| 
								
							 | 
							
								    <thead>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr>
							 | 
						
						
						
							| 
								
							 | 
							
								            <th>Option</th>
							 | 
						
						
						
							| 
								
							 | 
							
								            <th>Status</th>
							 | 
						
						
						
							| 
								
							 | 
							
								            <th>Toggle</th>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								    </thead>
							 | 
						
						
						
							| 
								
							 | 
							
								    <tbody>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr >
							 | 
						
						
						
							| 
								
							 | 
							
								            <td>Stacking</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td id="stackingStatus">false</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td><button onclick="toggleStacking()">Toggle</button></td>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td>stackSubgroups</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td id="stackSubgroupsStatus">true</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td><button onclick="toggleStackSubgroups()">Toggle</button></td>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td>Stack Subgroup 0</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td id="stacksg_1">false</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td><button onclick="toggleSubgroupStack('sg_1')">Toggle</button></td>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td>Stack Subgroup 1</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td id="stacksg_2">false</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td><button onclick="toggleSubgroupStack('sg_2')">Toggle</button></td>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								        <tr>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td>Stack Subgroup 2</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td id="stacksg_3">false</td>
							 | 
						
						
						
							| 
								
							 | 
							
								            <td><button onclick="toggleSubgroupStack('sg_3')">Toggle</button></td>
							 | 
						
						
						
							| 
								
							 | 
							
								        </tr>
							 | 
						
						
						
							| 
								
							 | 
							
								    </tbody>
							 | 
						
						
						
							| 
								
							 | 
							
								</table>
							 | 
						
						
						
							| 
								
							 | 
							
								<br/>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<div id="visualization"></div>
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								<script>
							 | 
						
						
						
							| 
								
							 | 
							
								    // create a dataset with items
							 | 
						
						
						
							| 
								
							 | 
							
								    // we specify the type of the fields `start` and `end` here to be strings
							 | 
						
						
						
							| 
								
							 | 
							
								    // containing an ISO date. The fields will be outputted as ISO dates
							 | 
						
						
						
							| 
								
							 | 
							
								    // automatically getting data from the DataSet via items.get().
							 | 
						
						
						
							| 
								
							 | 
							
								    var items = new vis.DataSet({
							 | 
						
						
						
							| 
								
							 | 
							
								        type: { start: 'ISODate', end: 'ISODate' }
							 | 
						
						
						
							| 
								
							 | 
							
								    });
							 | 
						
						
						
							| 
								
							 | 
							
								    var groups = new vis.DataSet([{
							 | 
						
						
						
							| 
								
							 | 
							
								        id: 'bar', content:'bar', subgroupOrder: function (a,b) {return a.subgroupOrder - b.subgroupOrder;}, subgroupStack: {'sg_1': false, 'sg_2': false, 'sg_3': false }
							 | 
						
						
						
							| 
								
							 | 
							
								    },{
							 | 
						
						
						
							| 
								
							 | 
							
								        id: 'foo', content:'foo', subgroupOrder: 'subgroupOrder' // this group has no subgroups but this would be the other method to do the sorting.
							 | 
						
						
						
							| 
								
							 | 
							
								    }]);
							 | 
						
						
						
							| 
								
							 | 
							
								    // add items to the DataSet
							 | 
						
						
						
							| 
								
							 | 
							
								    items.add([
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'A',start: '2014-01-20', end: '2014-01-22', type: 'background', group:'foo'},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'B',start: '2014-01-22', end: '2014-01-23', type: 'background', group:'foo', className: 'negative'},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 0, content: 'no subgroup', start: '2014-01-20', end: '2014-01-22',group:'foo'},
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_1_1',start: '2014-01-25', end: '2014-01-27', type: 'background', group:'bar', subgroup:'sg_1', subgroupOrder:0},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_1_2', start: '2014-01-26', end: '2014-01-27', type: 'background', className: 'positive',group:'bar', subgroup:'sg_1', subgroupOrder:0},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 1, content: 'subgroup0_1', start: '2014-01-23T12:00:00', end: '2014-01-26T12:00:00',group:'bar', subgroup:'sg_1', subgroupOrder:0},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 2, content: 'subgroup0_2', start: '2014-01-22T12:00:01', end: '2014-01-25T12:00:00',group:'bar', subgroup:'sg_1', subgroupOrder:0},
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_2_1', start: '2014-02-01', end: '2014-02-02', type: 'background', group:'bar', subgroup:'sg_2', subgroupOrder:1},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_2_2', start: '2014-02-2', end: '2014-02-03', type: 'background', className: 'negative',group:'bar', subgroup:'sg_2', subgroupOrder:1},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 3, content: 'subgroup1_1', start: '2014-01-27T02:00:00', end: '2014-01-29',group:'bar', subgroup:'sg_2', subgroupOrder:1},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 4, content: 'subgroup1_2', start: '2014-01-28', end: '2014-02-02',group:'bar', subgroup:'sg_2', subgroupOrder:1},
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_3_1',start: '2014-01-23', end: '2014-01-25', type: 'background', group:'bar', subgroup:'sg_3', subgroupOrder:2, content:"a"},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'SG_3_2', start: '2014-01-26', end: '2014-01-28', type: 'background', className: 'positive',group:'bar', subgroup:'sg_3', subgroupOrder:2, content:"b"},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 5, content: 'subgroup2_1', start: '2014-01-23T12:00:00', end: '2014-01-26T12:00:00',group:'bar', subgroup:'sg_3', subgroupOrder:2},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 6, content: 'subgroup2_2', start: '2014-01-26T12:00:01', end: '2014-01-29T12:00:00',group:'bar', subgroup:'sg_3', subgroupOrder:2},
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'background', start: '2014-01-29', end: '2014-01-30', type: 'background', className: 'negative',group:'bar'},
							 | 
						
						
						
							| 
								
							 | 
							
								        {id: 'background_all', start: '2014-01-31', end: '2014-02-02', type: 'background', className: 'positive'},
							 | 
						
						
						
							| 
								
							 | 
							
								    ]);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var container = document.getElementById('visualization');
							 | 
						
						
						
							| 
								
							 | 
							
								    var stackingStatus = document.getElementById('stackingStatus');
							 | 
						
						
						
							| 
								
							 | 
							
								    var stackSubgroupsStatus = document.getElementById('stackSubgroupsStatus');
							 | 
						
						
						
							| 
								
							 | 
							
								    var options = {
							 | 
						
						
						
							| 
								
							 | 
							
								        // orientation:'top'
							 | 
						
						
						
							| 
								
							 | 
							
								        start: '2014-01-10',
							 | 
						
						
						
							| 
								
							 | 
							
								        end: '2014-02-10',
							 | 
						
						
						
							| 
								
							 | 
							
								        editable: true,
							 | 
						
						
						
							| 
								
							 | 
							
								        stack: false,
							 | 
						
						
						
							| 
								
							 | 
							
								        stackSubgroups: true
							 | 
						
						
						
							| 
								
							 | 
							
								    };
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    var timeline = new vis.Timeline(container, items, groups, options);
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    function toggleStacking() {
							 | 
						
						
						
							| 
								
							 | 
							
								        options.stack = !options.stack;
							 | 
						
						
						
							| 
								
							 | 
							
								        stackingStatus.innerHTML = options.stack.toString();
							 | 
						
						
						
							| 
								
							 | 
							
								        timeline.setOptions(options);
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    function toggleStackSubgroups() {
							 | 
						
						
						
							| 
								
							 | 
							
								        options.stackSubgroups = !options.stackSubgroups;
							 | 
						
						
						
							| 
								
							 | 
							
								        stackSubgroupsStatus.innerHTML = options.stackSubgroups.toString();
							 | 
						
						
						
							| 
								
							 | 
							
								        timeline.setOptions(options);
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								    function toggleSubgroupStack(subgroup) {
							 | 
						
						
						
							| 
								
							 | 
							
								        groups.get("bar").subgroupStack[subgroup] = !groups.get("bar").subgroupStack[subgroup];
							 | 
						
						
						
							| 
								
							 | 
							
								        document.getElementById('stack' + subgroup).innerHTML = groups.get("bar").subgroupStack[subgroup].toString();
							 | 
						
						
						
							| 
								
							 | 
							
								        timeline.setGroups(groups);        
							 | 
						
						
						
							| 
								
							 | 
							
								    }
							 | 
						
						
						
							| 
								
							 | 
							
								
							 | 
						
						
						
							| 
								
							 | 
							
								</script>
							 | 
						
						
						
							| 
								
							 | 
							
								</body>
							 | 
						
						
						
							| 
								
							 | 
							
								</html>
							 |