| <!DOCTYPE HTML> | |
| <html> | |
| <head> | |
|     <title>Timeline | Grid styling</title> | |
| 
 | |
|     <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script> | |
|     <script src="../../../dist/vis.js"></script> | |
|     <link href="../../../dist/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css"/> | |
| 
 | |
|     <style type="text/css"> | |
|         body, html { | |
|             font-family: sans-serif; | |
|         } | |
| 
 | |
|         /* alternating column backgrounds */ | |
|         .vis-time-axis .vis-grid.vis-odd { | |
|             background: #f5f5f5; | |
|         } | |
|     </style> | |
| 
 | |
| </head> | |
| <body> | |
| 
 | |
| <p> | |
|     Week numbers are calculated based on locales. For this to properly work, the timeline must be loaded with a version | |
|     of moment.js including locales.</p> | |
| <p>To set a locale for the timeline, specify the option | |
|     <code>{locale: STRING}</code>.</p> | |
| <p>To set the scale to use week numbers, use for example <code>{scale: 'week', step: 1}</code>.</p> | |
| <p>The following timeline is initialized with the 'de' locale and items are added with locally localized moment.js | |
|     objects. The timeline locale can be switched to another locale at runtime. If you choose the 'en' locale, the week | |
|     numbers will be calculated according to the US week calendar numbering scheme.</p> | |
| 
 | |
| <p> | |
|     <label for="locale">Select a locale:</label> | |
|     <select id="locale"> | |
|         <option value="en">en</option> | |
|         <option value="it">it</option> | |
|         <option value="nl">nl</option> | |
|         <option value="de" selected>de</option> | |
|     </select> | |
| </p> | |
| 
 | |
| <div id="visualization"></div> | |
| 
 | |
| <script type="text/javascript"> | |
|     var itemCount = 26; | |
| 
 | |
|     // DOM element where the Timeline will be attached | |
|     var container = document.getElementById('visualization'); | |
| 
 | |
|     // just a group for the effects | |
|     var groups = new vis.DataSet(); | |
|     groups.add([{id: 1, content: "ISO Weeks"}, {id: 2, content: "US Weeks"}]); | |
| 
 | |
|     // Create a DataSet (allows two way data-binding) | |
|     var items = new vis.DataSet(); | |
| 
 | |
|     // create a localized moment object based on the current date | |
|     var USdate = moment().locale('en').hours(0).minutes(0).seconds(0).milliseconds(0); | |
| 
 | |
|     // use the locale-aware weekday function to move to the begin of the current week | |
|     USdate.weekday(0); | |
| 
 | |
|     // Iterate and just add a week to use it again in the next iteration | |
|     for (var i = 0; i < itemCount; i++) { | |
|         var USweekNumber = USdate.format('w'); | |
|         var USweekStart = USdate.format(); | |
|         var USweekEnd = USdate.add(1, 'week').format(); | |
|         items.add({ | |
|             id: i, | |
|             group: 2, | |
|             content: 'US week ' + USweekNumber, | |
|             start: USweekStart, | |
|             end: USweekEnd | |
|         }); | |
|     } | |
| 
 | |
|     // create another localized moment object - the 'de' locale works according to the ISO8601 leap week calendar system | |
|     var DEdate = moment().locale('de').hours(0).minutes(0).seconds(0).milliseconds(0); | |
|     DEdate.weekday(0); | |
|     for (var j = 0; j < itemCount; j++) { | |
|         var DEweekNumber = DEdate.format('w'); | |
|         var DEweekStart = DEdate.format(); | |
|         var DEweekEnd = DEdate.add(1, 'week').format(); | |
|         items.add({ | |
|             id: itemCount + j, | |
|             group: 1, | |
|             content: 'ISO week ' + DEweekNumber, | |
|             start: DEweekStart, | |
|             end: DEweekEnd | |
|         }); | |
|     } | |
| 
 | |
|     // Configuration for the Timeline | |
|     var options = {timeAxis: {scale: 'week', step: 1}, locale: 'de'}; | |
| 
 | |
|     // Create a Timeline | |
|     var timeline = new vis.Timeline(container, items, groups, options); | |
| 
 | |
|     // update the locale when changing the select box value | |
|     var select = document.getElementById('locale'); | |
|     select.onchange = function () { | |
|         timeline.setOptions({ | |
|             locale: this.value | |
|         }); | |
|     }; | |
|     select.onchange(); | |
| </script> | |
| </body> | |
| </html> |