visjs-rails 4.16.1.0 → 4.21.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (388) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +19 -19
  3. data/example/.gitignore +26 -0
  4. data/example/.ruby-version +1 -0
  5. data/example/Gemfile +64 -0
  6. data/example/Gemfile.lock +224 -0
  7. data/example/README.md +24 -0
  8. data/example/Rakefile +6 -0
  9. data/example/app/assets/config/manifest.js +3 -0
  10. data/example/app/assets/images/.keep +0 -0
  11. data/example/app/assets/javascripts/application.js +20 -0
  12. data/example/app/assets/javascripts/cable.js +13 -0
  13. data/example/app/assets/javascripts/channels/.keep +0 -0
  14. data/example/app/assets/javascripts/welcome.coffee +6 -0
  15. data/example/app/assets/stylesheets/application.scss +3 -0
  16. data/example/app/assets/stylesheets/welcome.scss +3 -0
  17. data/example/app/channels/application_cable/channel.rb +4 -0
  18. data/example/app/channels/application_cable/connection.rb +4 -0
  19. data/example/app/controllers/application_controller.rb +2 -0
  20. data/example/app/controllers/concerns/.keep +0 -0
  21. data/example/app/controllers/welcome_controller.rb +4 -0
  22. data/example/app/helpers/application_helper.rb +2 -0
  23. data/example/app/helpers/welcome_helper.rb +2 -0
  24. data/example/app/jobs/application_job.rb +2 -0
  25. data/example/app/mailers/application_mailer.rb +4 -0
  26. data/example/app/models/application_record.rb +3 -0
  27. data/example/app/models/concerns/.keep +0 -0
  28. data/example/app/views/layouts/application.html.erb +15 -0
  29. data/example/app/views/layouts/mailer.html.erb +13 -0
  30. data/example/app/views/layouts/mailer.text.erb +1 -0
  31. data/example/app/views/welcome/index.html.erb +48 -0
  32. data/example/bin/bundle +3 -0
  33. data/example/bin/rails +9 -0
  34. data/example/bin/rake +9 -0
  35. data/example/bin/setup +36 -0
  36. data/example/bin/spring +17 -0
  37. data/example/bin/update +31 -0
  38. data/example/bin/yarn +11 -0
  39. data/example/config.ru +5 -0
  40. data/example/config/application.rb +19 -0
  41. data/example/config/boot.rb +4 -0
  42. data/example/config/cable.yml +10 -0
  43. data/example/config/credentials.yml.enc +1 -0
  44. data/example/config/database.yml +85 -0
  45. data/example/config/environment.rb +5 -0
  46. data/example/config/environments/development.rb +61 -0
  47. data/example/config/environments/production.rb +94 -0
  48. data/example/config/environments/test.rb +46 -0
  49. data/example/config/initializers/application_controller_renderer.rb +8 -0
  50. data/example/config/initializers/assets.rb +14 -0
  51. data/example/config/initializers/backtrace_silencers.rb +7 -0
  52. data/example/config/initializers/content_security_policy.rb +25 -0
  53. data/example/config/initializers/cookies_serializer.rb +5 -0
  54. data/example/config/initializers/filter_parameter_logging.rb +4 -0
  55. data/example/config/initializers/inflections.rb +16 -0
  56. data/example/config/initializers/mime_types.rb +4 -0
  57. data/example/config/initializers/wrap_parameters.rb +14 -0
  58. data/example/config/locales/en.yml +33 -0
  59. data/example/config/puma.rb +34 -0
  60. data/example/config/routes.rb +5 -0
  61. data/example/config/spring.rb +6 -0
  62. data/example/config/storage.yml +34 -0
  63. data/example/db/seeds.rb +7 -0
  64. data/example/lib/assets/.keep +0 -0
  65. data/example/lib/tasks/.keep +0 -0
  66. data/example/log/.keep +0 -0
  67. data/example/package.json +5 -0
  68. data/example/public/404.html +67 -0
  69. data/example/public/422.html +67 -0
  70. data/example/public/500.html +66 -0
  71. data/example/public/apple-touch-icon-precomposed.png +0 -0
  72. data/example/public/apple-touch-icon.png +0 -0
  73. data/example/public/favicon.ico +0 -0
  74. data/example/public/robots.txt +1 -0
  75. data/example/test/application_system_test_case.rb +5 -0
  76. data/example/test/controllers/.keep +0 -0
  77. data/example/test/controllers/welcome_controller_test.rb +9 -0
  78. data/example/test/fixtures/.keep +0 -0
  79. data/example/test/fixtures/files/.keep +0 -0
  80. data/example/test/helpers/.keep +0 -0
  81. data/example/test/integration/.keep +0 -0
  82. data/example/test/mailers/.keep +0 -0
  83. data/example/test/models/.keep +0 -0
  84. data/example/test/system/.keep +0 -0
  85. data/example/test/test_helper.rb +10 -0
  86. data/example/tmp/.keep +0 -0
  87. data/example/vendor/.keep +0 -0
  88. data/examples_for_vis/graph2d/01_basic.html +71 -0
  89. data/examples_for_vis/graph2d/02_bars.html +80 -0
  90. data/examples_for_vis/graph2d/03_groups.html +112 -0
  91. data/examples_for_vis/graph2d/04_rightAxis.html +126 -0
  92. data/examples_for_vis/graph2d/05_bothAxis.html +228 -0
  93. data/examples_for_vis/graph2d/06_interpolation.html +160 -0
  94. data/examples_for_vis/graph2d/07_scrollingAndSorting.html +74 -0
  95. data/examples_for_vis/graph2d/08_performance.html +194 -0
  96. data/examples_for_vis/graph2d/09_external_legend.html +452 -0
  97. data/examples_for_vis/graph2d/10_barsSideBySide.html +75 -0
  98. data/examples_for_vis/graph2d/11_barsSideBySideGroups.html +181 -0
  99. data/examples_for_vis/graph2d/12_customRange.html +92 -0
  100. data/examples_for_vis/graph2d/13_localization.html +65 -0
  101. data/examples_for_vis/graph2d/14_toggleGroups.html +145 -0
  102. data/examples_for_vis/graph2d/15_streaming_data.html +122 -0
  103. data/examples_for_vis/graph2d/16_bothAxisTitles.html +201 -0
  104. data/examples_for_vis/graph2d/17_dynamicStyling.html +281 -0
  105. data/examples_for_vis/graph2d/18_scatterplot.html +63 -0
  106. data/examples_for_vis/graph2d/19_labels.html +213 -0
  107. data/examples_for_vis/graph2d/20_shading.html +218 -0
  108. data/examples_for_vis/graph2d/21_barsWithEnd.html +76 -0
  109. data/examples_for_vis/graph2d/default.css +87 -0
  110. data/examples_for_vis/graph3d/01_basics.html +71 -0
  111. data/examples_for_vis/graph3d/02_camera.html +110 -0
  112. data/examples_for_vis/graph3d/03_filter_data.html +64 -0
  113. data/examples_for_vis/graph3d/04_animation.html +70 -0
  114. data/examples_for_vis/graph3d/05_line.html +60 -0
  115. data/examples_for_vis/graph3d/06_moving_dots.html +78 -0
  116. data/examples_for_vis/graph3d/07_dot_cloud_colors.html +72 -0
  117. data/examples_for_vis/graph3d/08_dot_cloud_size.html +69 -0
  118. data/examples_for_vis/graph3d/09_mobile.html +79 -0
  119. data/examples_for_vis/graph3d/10_styling.html +121 -0
  120. data/examples_for_vis/graph3d/11_tooltips.html +132 -0
  121. data/examples_for_vis/graph3d/12_custom_labels.html +116 -0
  122. data/examples_for_vis/graph3d/default.css +87 -0
  123. data/examples_for_vis/graph3d/playground/csv2array.js +120 -0
  124. data/examples_for_vis/graph3d/playground/csv2datatable.html +80 -0
  125. data/examples_for_vis/graph3d/playground/datasource.html +173 -0
  126. data/examples_for_vis/graph3d/playground/datasource.php +155 -0
  127. data/examples_for_vis/graph3d/playground/index.html +196 -0
  128. data/examples_for_vis/graph3d/playground/playground.css +91 -0
  129. data/examples_for_vis/graph3d/playground/playground.js +550 -0
  130. data/examples_for_vis/graph3d/playground/prettify/lang-apollo.js +2 -0
  131. data/examples_for_vis/graph3d/playground/prettify/lang-css.js +2 -0
  132. data/examples_for_vis/graph3d/playground/prettify/lang-hs.js +2 -0
  133. data/examples_for_vis/graph3d/playground/prettify/lang-lisp.js +2 -0
  134. data/examples_for_vis/graph3d/playground/prettify/lang-lua.js +2 -0
  135. data/examples_for_vis/graph3d/playground/prettify/lang-ml.js +2 -0
  136. data/examples_for_vis/graph3d/playground/prettify/lang-proto.js +1 -0
  137. data/examples_for_vis/graph3d/playground/prettify/lang-scala.js +2 -0
  138. data/examples_for_vis/graph3d/playground/prettify/lang-sql.js +2 -0
  139. data/examples_for_vis/graph3d/playground/prettify/lang-vb.js +2 -0
  140. data/examples_for_vis/graph3d/playground/prettify/lang-vhdl.js +3 -0
  141. data/examples_for_vis/graph3d/playground/prettify/lang-wiki.js +2 -0
  142. data/examples_for_vis/graph3d/playground/prettify/lang-yaml.js +2 -0
  143. data/examples_for_vis/graph3d/playground/prettify/prettify.css +1 -0
  144. data/examples_for_vis/graph3d/playground/prettify/prettify.js +33 -0
  145. data/examples_for_vis/network/basicUsage.html +87 -0
  146. data/examples_for_vis/network/data/datasets.html +196 -0
  147. data/examples_for_vis/network/data/dotLanguage/data/cellular_automata.gv.txt +23 -0
  148. data/examples_for_vis/network/data/dotLanguage/data/computer_network.gv.txt +19 -0
  149. data/examples_for_vis/network/data/dotLanguage/data/simple.gv.txt +15 -0
  150. data/examples_for_vis/network/data/dotLanguage/dotEdgeStyles.html +197 -0
  151. data/examples_for_vis/network/data/dotLanguage/dotLanguage.html +22 -0
  152. data/examples_for_vis/network/data/dotLanguage/dotPlayground.html +216 -0
  153. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/fsm.gv.txt +20 -0
  154. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/hello.gv.txt +1 -0
  155. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/process.gv.txt +15 -0
  156. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/screenshots/fsm.png +0 -0
  157. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/screenshots/hello.png +0 -0
  158. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/screenshots/softmaint.png +0 -0
  159. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/screenshots/traffic_lights.png +0 -0
  160. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/siblings.gv.txt +512 -0
  161. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/softmaint.gv.txt +377 -0
  162. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/traffic_lights.gv.txt +29 -0
  163. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/transparency.gv.txt +105 -0
  164. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/twopi2.gv.txt +2212 -0
  165. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/unix.gv.txt +55 -0
  166. data/examples_for_vis/network/data/dotLanguage/graphvizGallery/world.gv.txt +67 -0
  167. data/examples_for_vis/network/data/dynamicData.html +266 -0
  168. data/examples_for_vis/network/data/importingFromGephi.html +174 -0
  169. data/examples_for_vis/network/data/scalingCustom.html +86 -0
  170. data/examples_for_vis/network/data/scalingNodesEdges.html +79 -0
  171. data/examples_for_vis/network/data/scalingNodesEdgesLabels.html +85 -0
  172. data/examples_for_vis/network/datasources/WorldCup2014.js +9970 -0
  173. data/examples_for_vis/network/datasources/WorldCup2014.json +1 -0
  174. data/examples_for_vis/network/datasources/largeHierarchicalDataset.js +2 -0
  175. data/examples_for_vis/network/edgeStyles/arrowTypes.html +103 -0
  176. data/examples_for_vis/network/edgeStyles/arrows.html +61 -0
  177. data/examples_for_vis/network/edgeStyles/colors.html +71 -0
  178. data/examples_for_vis/network/edgeStyles/dashes.html +57 -0
  179. data/examples_for_vis/network/edgeStyles/smooth.html +78 -0
  180. data/examples_for_vis/network/edgeStyles/smoothWorldCup.html +97 -0
  181. data/examples_for_vis/network/events/interactionEvents.html +132 -0
  182. data/examples_for_vis/network/events/physicsEvents.html +73 -0
  183. data/examples_for_vis/network/events/renderEvents.html +83 -0
  184. data/examples_for_vis/network/exampleApplications/disassemblerExample.html +24 -0
  185. data/examples_for_vis/network/exampleApplications/disassemblerExample.js +53 -0
  186. data/examples_for_vis/network/exampleApplications/lesMiserables.html +396 -0
  187. data/examples_for_vis/network/exampleApplications/loadingBar.html +504 -0
  188. data/examples_for_vis/network/exampleApplications/neighbourhoodHighlight.html +162 -0
  189. data/examples_for_vis/network/exampleApplications/nodeLegend.html +163 -0
  190. data/examples_for_vis/network/exampleApplications/worldCupPerformance.html +98 -0
  191. data/examples_for_vis/network/exampleUtil.js +133 -0
  192. data/examples_for_vis/network/imageSelected/broken-image.png +0 -0
  193. data/examples_for_vis/network/imageSelected/imageSelected.html +82 -0
  194. data/examples_for_vis/network/imageSelected/selected.svg +53 -0
  195. data/examples_for_vis/network/imageSelected/unselected.svg +6 -0
  196. data/examples_for_vis/network/img/indonesia/1.png +0 -0
  197. data/examples_for_vis/network/img/indonesia/10.png +0 -0
  198. data/examples_for_vis/network/img/indonesia/11.png +0 -0
  199. data/examples_for_vis/network/img/indonesia/12.png +0 -0
  200. data/examples_for_vis/network/img/indonesia/13.png +0 -0
  201. data/examples_for_vis/network/img/indonesia/14.png +0 -0
  202. data/examples_for_vis/network/img/indonesia/2.png +0 -0
  203. data/examples_for_vis/network/img/indonesia/3.png +0 -0
  204. data/examples_for_vis/network/img/indonesia/4.png +0 -0
  205. data/examples_for_vis/network/img/indonesia/5.png +0 -0
  206. data/examples_for_vis/network/img/indonesia/6.png +0 -0
  207. data/examples_for_vis/network/img/indonesia/7.png +0 -0
  208. data/examples_for_vis/network/img/indonesia/8.png +0 -0
  209. data/examples_for_vis/network/img/indonesia/9.png +0 -0
  210. data/examples_for_vis/network/img/refresh-cl/Hardware-Fax-icon.png +0 -0
  211. data/examples_for_vis/network/img/refresh-cl/Hardware-Laptop-1-icon.png +0 -0
  212. data/examples_for_vis/network/img/refresh-cl/Hardware-Mobile-Phone-icon.png +0 -0
  213. data/examples_for_vis/network/img/refresh-cl/Hardware-My-Computer-3-icon.png +0 -0
  214. data/examples_for_vis/network/img/refresh-cl/Hardware-My-PDA-02-icon.png +0 -0
  215. data/examples_for_vis/network/img/refresh-cl/Hardware-My-PDA-04-icon.png +0 -0
  216. data/examples_for_vis/network/img/refresh-cl/Hardware-My-PDA-05-icon.png +0 -0
  217. data/examples_for_vis/network/img/refresh-cl/Hardware-My-Phone-Picture-icon.png +0 -0
  218. data/examples_for_vis/network/img/refresh-cl/Hardware-Printer-Blue-icon.png +0 -0
  219. data/examples_for_vis/network/img/refresh-cl/Misc-Scanner-default-icon.png +0 -0
  220. data/examples_for_vis/network/img/refresh-cl/Network-Drive-icon.png +0 -0
  221. data/examples_for_vis/network/img/refresh-cl/Network-Internet-Connection-icon.png +0 -0
  222. data/examples_for_vis/network/img/refresh-cl/Network-Pipe-icon.png +0 -0
  223. data/examples_for_vis/network/img/refresh-cl/System-Firewall-2-icon.png +0 -0
  224. data/examples_for_vis/network/img/refresh-cl/System-Globe-icon.png +0 -0
  225. data/examples_for_vis/network/img/refresh-cl/license.txt +14 -0
  226. data/examples_for_vis/network/img/soft-scraps-icons/Document-icon24.png +0 -0
  227. data/examples_for_vis/network/img/soft-scraps-icons/Document-icon32.png +0 -0
  228. data/examples_for_vis/network/img/soft-scraps-icons/Document-icon48.png +0 -0
  229. data/examples_for_vis/network/img/soft-scraps-icons/Email-icon24.png +0 -0
  230. data/examples_for_vis/network/img/soft-scraps-icons/Email-icon32.png +0 -0
  231. data/examples_for_vis/network/img/soft-scraps-icons/Email-icon48.png +0 -0
  232. data/examples_for_vis/network/img/soft-scraps-icons/Folder-icon24.png +0 -0
  233. data/examples_for_vis/network/img/soft-scraps-icons/Folder-icon32.png +0 -0
  234. data/examples_for_vis/network/img/soft-scraps-icons/Folder-icon48.png +0 -0
  235. data/examples_for_vis/network/img/soft-scraps-icons/Folder-icon64.png +0 -0
  236. data/examples_for_vis/network/img/soft-scraps-icons/Smiley-Angry-icon.png +0 -0
  237. data/examples_for_vis/network/img/soft-scraps-icons/Smiley-Grin-icon.png +0 -0
  238. data/examples_for_vis/network/img/soft-scraps-icons/User-Administrator-Blue-icon.png +0 -0
  239. data/examples_for_vis/network/img/soft-scraps-icons/User-Administrator-Green-icon.png +0 -0
  240. data/examples_for_vis/network/img/soft-scraps-icons/User-Coat-Blue-icon.png +0 -0
  241. data/examples_for_vis/network/img/soft-scraps-icons/User-Coat-Green-icon.png +0 -0
  242. data/examples_for_vis/network/img/soft-scraps-icons/User-Coat-Red-icon.png +0 -0
  243. data/examples_for_vis/network/img/soft-scraps-icons/User-Executive-Green-icon.png +0 -0
  244. data/examples_for_vis/network/img/soft-scraps-icons/User-Preppy-Blue-icon.png +0 -0
  245. data/examples_for_vis/network/img/soft-scraps-icons/User-Preppy-Red-icon.png +0 -0
  246. data/examples_for_vis/network/img/soft-scraps-icons/license.txt +12 -0
  247. data/examples_for_vis/network/labels/labelAlignment.html +70 -0
  248. data/examples_for_vis/network/labels/labelBackground.html +57 -0
  249. data/examples_for_vis/network/labels/labelColorAndSize.html +61 -0
  250. data/examples_for_vis/network/labels/labelMargins.html +63 -0
  251. data/examples_for_vis/network/labels/labelMultifont.html +115 -0
  252. data/examples_for_vis/network/labels/labelStroke.html +61 -0
  253. data/examples_for_vis/network/labels/multilineText.html +52 -0
  254. data/examples_for_vis/network/layout/demo.jsonp +1894 -0
  255. data/examples_for_vis/network/layout/demo_big.jsonp +3762 -0
  256. data/examples_for_vis/network/layout/hierarchicalLayout.html +114 -0
  257. data/examples_for_vis/network/layout/hierarchicalLayoutBigUserDefined.html +46 -0
  258. data/examples_for_vis/network/layout/hierarchicalLayoutMethods.html +108 -0
  259. data/examples_for_vis/network/layout/hierarchicalLayoutUserdefined.html +152 -0
  260. data/examples_for_vis/network/layout/hierarchicalLayoutWithoutPhysics.html +111 -0
  261. data/examples_for_vis/network/layout/randomSeed.html +60 -0
  262. data/examples_for_vis/network/nodeStyles/HTMLInNodes.html +83 -0
  263. data/examples_for_vis/network/nodeStyles/circularImages.html +219 -0
  264. data/examples_for_vis/network/nodeStyles/colors.html +140 -0
  265. data/examples_for_vis/network/nodeStyles/customGroups.html +132 -0
  266. data/examples_for_vis/network/nodeStyles/groups.html +119 -0
  267. data/examples_for_vis/network/nodeStyles/icons.html +196 -0
  268. data/examples_for_vis/network/nodeStyles/images.html +82 -0
  269. data/examples_for_vis/network/nodeStyles/imagesWithBorders.html +105 -0
  270. data/examples_for_vis/network/nodeStyles/shadows.html +119 -0
  271. data/examples_for_vis/network/nodeStyles/shapes.html +73 -0
  272. data/examples_for_vis/network/nodeStyles/shapesWithDashedBorders.html +61 -0
  273. data/examples_for_vis/network/nodeStyles/widthHeight.html +121 -0
  274. data/examples_for_vis/network/other/animationShowcase.html +279 -0
  275. data/examples_for_vis/network/other/changingClusteredEdgesNodes.html +107 -0
  276. data/examples_for_vis/network/other/chosen.html +466 -0
  277. data/examples_for_vis/network/other/clustering.html +141 -0
  278. data/examples_for_vis/network/other/clusteringByZoom.html +160 -0
  279. data/examples_for_vis/network/other/clustersOfclusters.html +88 -0
  280. data/examples_for_vis/network/other/configuration.html +83 -0
  281. data/examples_for_vis/network/other/cursorChange.html +140 -0
  282. data/examples_for_vis/network/other/manipulation.html +193 -0
  283. data/examples_for_vis/network/other/manipulationEditEdgeNoDrag.html +255 -0
  284. data/examples_for_vis/network/other/navigation.html +135 -0
  285. data/examples_for_vis/network/other/onLoadAnimation.html +85 -0
  286. data/examples_for_vis/network/other/performance.html +91 -0
  287. data/examples_for_vis/network/other/saveAndLoad.html +202 -0
  288. data/examples_for_vis/network/physics/physicsConfiguration.html +85 -0
  289. data/examples_for_vis/timeline/basicUsage.html +45 -0
  290. data/examples_for_vis/timeline/dataHandling/dataSerialization.html +123 -0
  291. data/examples_for_vis/timeline/dataHandling/loadExternalData.html +61 -0
  292. data/examples_for_vis/timeline/editing/customSnappingOfItems.html +76 -0
  293. data/examples_for_vis/timeline/editing/editingItems.html +109 -0
  294. data/examples_for_vis/timeline/editing/editingItemsCallbacks.html +172 -0
  295. data/examples_for_vis/timeline/editing/individualEditableItems.html +131 -0
  296. data/examples_for_vis/timeline/editing/itemsAlwaysDraggable.html +44 -0
  297. data/examples_for_vis/timeline/editing/overrideEditingItems.html +166 -0
  298. data/examples_for_vis/timeline/editing/tooltipOnItemChange.html +133 -0
  299. data/examples_for_vis/timeline/editing/updateDataOnEvent.html +87 -0
  300. data/examples_for_vis/timeline/groups/groups.html +79 -0
  301. data/examples_for_vis/timeline/groups/groupsEditable.html +2001 -0
  302. data/examples_for_vis/timeline/groups/groupsOrdering.html +117 -0
  303. data/examples_for_vis/timeline/groups/nestedGroups.html +113 -0
  304. data/examples_for_vis/timeline/groups/subgroups.html +326 -0
  305. data/examples_for_vis/timeline/groups/verticalItemsHide.html +196 -0
  306. data/examples_for_vis/timeline/interaction/animateWindow.html +143 -0
  307. data/examples_for_vis/timeline/interaction/clickToUse.html +107 -0
  308. data/examples_for_vis/timeline/interaction/eventListeners.html +166 -0
  309. data/examples_for_vis/timeline/interaction/limitMoveAndZoom.html +70 -0
  310. data/examples_for_vis/timeline/interaction/navigationMenu.html +121 -0
  311. data/examples_for_vis/timeline/interaction/rollingMode.html +50 -0
  312. data/examples_for_vis/timeline/interaction/setSelection.html +223 -0
  313. data/examples_for_vis/timeline/items/backgroundAreas.html +92 -0
  314. data/examples_for_vis/timeline/items/backgroundAreasWithGroups.html +123 -0
  315. data/examples_for_vis/timeline/items/expectedVsActualTimesItems.html +136 -0
  316. data/examples_for_vis/timeline/items/htmlContents.html +109 -0
  317. data/examples_for_vis/timeline/items/itemOrdering.html +88 -0
  318. data/examples_for_vis/timeline/items/pointItems.html +124 -0
  319. data/examples_for_vis/timeline/items/rangeOverflowItem.html +88 -0
  320. data/examples_for_vis/timeline/items/tooltip.html +120 -0
  321. data/examples_for_vis/timeline/items/visibleFrameTemplateContent.html +67 -0
  322. data/examples_for_vis/timeline/other/customTimeBars.html +99 -0
  323. data/examples_for_vis/timeline/other/customTimeBarsTooltip.html +105 -0
  324. data/examples_for_vis/timeline/other/dataAttributes.html +79 -0
  325. data/examples_for_vis/timeline/other/dataAttributesAll.html +78 -0
  326. data/examples_for_vis/timeline/other/drag&drop.html +201 -0
  327. data/examples_for_vis/timeline/other/functionLabelFormats.html +147 -0
  328. data/examples_for_vis/timeline/other/groupsPerformance.html +124 -0
  329. data/examples_for_vis/timeline/other/hidingPeriods.html +92 -0
  330. data/examples_for_vis/timeline/other/horizontalScroll.html +77 -0
  331. data/examples_for_vis/timeline/other/localization.html +81 -0
  332. data/examples_for_vis/timeline/other/performance.html +79 -0
  333. data/examples_for_vis/timeline/other/requirejs/requirejs_example.html +17 -0
  334. data/examples_for_vis/timeline/other/requirejs/scripts/main.js +19 -0
  335. data/examples_for_vis/timeline/other/requirejs/scripts/require.js +35 -0
  336. data/examples_for_vis/timeline/other/rtl.html +82 -0
  337. data/examples_for_vis/timeline/other/stressPerformance.html +66 -0
  338. data/examples_for_vis/timeline/other/timezone.html +98 -0
  339. data/examples_for_vis/timeline/other/usingReact.html +68 -0
  340. data/examples_for_vis/timeline/other/verticalScroll.html +91 -0
  341. data/examples_for_vis/timeline/resources/data/basic.json +34 -0
  342. data/examples_for_vis/timeline/resources/data/wk2014.json +152 -0
  343. data/examples_for_vis/timeline/resources/img/Hardware-Mobile-Phone-icon.png +0 -0
  344. data/examples_for_vis/timeline/resources/img/attachment-icon.png +0 -0
  345. data/examples_for_vis/timeline/resources/img/blog-post-edit-icon.png +0 -0
  346. data/examples_for_vis/timeline/resources/img/comments-icon.png +0 -0
  347. data/examples_for_vis/timeline/resources/img/community-users-icon.png +0 -0
  348. data/examples_for_vis/timeline/resources/img/license.txt +17 -0
  349. data/examples_for_vis/timeline/resources/img/license_aesthetica-2.txt +36 -0
  350. data/examples_for_vis/timeline/resources/img/license_refresh-cl.txt +26 -0
  351. data/examples_for_vis/timeline/resources/img/mail-icon.png +0 -0
  352. data/examples_for_vis/timeline/resources/img/notes-edit-icon.png +0 -0
  353. data/examples_for_vis/timeline/resources/img/product-icon.png +0 -0
  354. data/examples_for_vis/timeline/resources/img/truck-icon.png +0 -0
  355. data/examples_for_vis/timeline/styling/axisOrientation.html +113 -0
  356. data/examples_for_vis/timeline/styling/customCss.html +128 -0
  357. data/examples_for_vis/timeline/styling/gridStyling.html +80 -0
  358. data/examples_for_vis/timeline/styling/itemClassNames.html +125 -0
  359. data/examples_for_vis/timeline/styling/itemTemplates.html +264 -0
  360. data/examples_for_vis/timeline/styling/weekStyling.html +129 -0
  361. data/lib/visjs/rails/version.rb +1 -1
  362. data/vendor/assets/images/network/acceptDeleteIcon.png +0 -0
  363. data/vendor/assets/images/network/addNodeIcon.png +0 -0
  364. data/vendor/assets/images/network/backIcon.png +0 -0
  365. data/vendor/assets/images/network/connectIcon.png +0 -0
  366. data/vendor/assets/images/network/cross.png +0 -0
  367. data/vendor/assets/images/network/cross2.png +0 -0
  368. data/vendor/assets/images/network/deleteIcon.png +0 -0
  369. data/vendor/assets/images/network/downArrow.png +0 -0
  370. data/vendor/assets/images/network/editIcon.png +0 -0
  371. data/vendor/assets/images/network/leftArrow.png +0 -0
  372. data/vendor/assets/images/network/minus.png +0 -0
  373. data/vendor/assets/images/network/plus.png +0 -0
  374. data/vendor/assets/images/network/rightArrow.png +0 -0
  375. data/vendor/assets/images/network/upArrow.png +0 -0
  376. data/vendor/assets/images/network/zoomExtends.png +0 -0
  377. data/vendor/assets/javascripts/vis-graph3d.min.js +9 -12
  378. data/vendor/assets/javascripts/vis-network.min.js +9 -20
  379. data/vendor/assets/javascripts/vis-timeline-graph2d.min.js +9 -18
  380. data/vendor/assets/javascripts/vis.js +53293 -39579
  381. data/vendor/assets/javascripts/vis.min.js +26 -23
  382. data/vendor/assets/stylesheets/vis-network.min.css +1 -0
  383. data/vendor/assets/stylesheets/vis-timeline-graph2d.min.css +1 -0
  384. data/vendor/assets/stylesheets/{vis.scss → vis.css} +764 -640
  385. data/vendor/assets/stylesheets/vis.min.css +1 -0
  386. metadata +365 -6
  387. data/vendor/assets/images/timeline/delete.png +0 -0
  388. data/vendor/assets/stylesheets/vis.min.scss +0 -1
@@ -0,0 +1,133 @@
1
+ <html>
2
+
3
+ <head>
4
+ <title>Timeline | Tooltip on item onUpdateTime Option</title>
5
+
6
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
7
+ <script src="../../../vendor/assets/javascripts/vis.js"></script>
8
+ <link href="../../../vendor/assets/stylesheets/vis.css" rel="stylesheet" type="text/css" />
9
+
10
+ <style type="text/css">
11
+ .vis-item .vis-onUpdateTime-tooltip {
12
+ border-radius: 4px;
13
+ }
14
+ </style>
15
+
16
+
17
+ </head>
18
+
19
+ <body>
20
+
21
+ <h1>Timeline Tooltip on item onUpdateTime Option</h1>
22
+
23
+ <h2>With
24
+ <code>tooltipOnItemUpdateTime: true</code>
25
+ </h2>
26
+
27
+ <div id="mytimeline1"></div>
28
+
29
+ <h2>With
30
+ <code>tooltipOnItemUpdateTime: { template: [Function] }</code>
31
+ </h2>
32
+
33
+ <div id="mytimeline2"></div>
34
+
35
+
36
+ <h2>With groups</h2>
37
+
38
+ <div id="mytimeline3"></div>
39
+ <script>
40
+ // create items
41
+ var numberOfItems = 10;
42
+ var items = new vis.DataSet();
43
+ var types = ['box', 'point', 'range']
44
+
45
+
46
+ for (var order = 0; order < numberOfItems; order++) {
47
+ var date = vis.moment();
48
+
49
+
50
+ date.add(Math.round(Math.random() * 2), 'hour');
51
+ items.add({
52
+ id: order,
53
+ type: types[Math.floor(3 * Math.random())],
54
+ content: 'Item ' + order,
55
+ start: date.clone().add(order + 1, 'hour'),
56
+ end: date.clone().add(order + 3, 'hour')
57
+ });
58
+ }
59
+
60
+ // specify options
61
+ var options = {
62
+ multiselect: true,
63
+ maxHeight: 400,
64
+ start: new Date((new Date()).valueOf() - 10000000),
65
+ end: new Date(1000 * 60 * 60 * 24 + (new Date()).valueOf()),
66
+ editable: true
67
+ };
68
+
69
+ var options1 = jQuery.extend(options, {
70
+ tooltipOnItemUpdateTime: true
71
+ })
72
+ var container1 = document.getElementById('mytimeline1');
73
+ timeline1 = new vis.Timeline(container1, items, null, options1);
74
+
75
+ var options2 = jQuery.extend(options, {
76
+ orientation: 'top',
77
+ tooltipOnItemUpdateTime: {
78
+ template: function (item) {
79
+ return 'html template for tooltip with <b>item.start</b>: ' + item.start;
80
+ }
81
+ }
82
+ })
83
+ var container2 = document.getElementById('mytimeline2');
84
+ timeline2 = new vis.Timeline(container2, items, null, options2);
85
+
86
+
87
+ // create groups
88
+ var numberOfGroups = 25;
89
+ var groups = new vis.DataSet()
90
+ for (var i = 0; i < numberOfGroups; i++) {
91
+ groups.add({
92
+ id: i,
93
+ content: 'Truck&nbsp;' + i
94
+ })
95
+ }
96
+
97
+ // create items for groups
98
+ var numberOfItems = 1000;
99
+ var itemsWithGroups = new vis.DataSet();
100
+
101
+ var itemsPerGroup = Math.round(numberOfItems / numberOfGroups);
102
+
103
+ for (var truck = 0; truck < numberOfGroups; truck++) {
104
+ var date = new Date();
105
+ for (var order = 0; order < itemsPerGroup; order++) {
106
+ date.setHours(date.getHours() + 4 * (Math.random() < 0.2));
107
+ var start = new Date(date);
108
+
109
+ date.setHours(date.getHours() + 2 + Math.floor(Math.random() * 4));
110
+ var end = new Date(date);
111
+
112
+ itemsWithGroups.add({
113
+ id: order + itemsPerGroup * truck,
114
+ group: truck,
115
+ start: start,
116
+ end: end,
117
+ content: 'Order ' + order
118
+ });
119
+ }
120
+ }
121
+
122
+
123
+ var options3 = jQuery.extend(options, {
124
+ orientation: 'top',
125
+ tooltipOnItemUpdateTime: true
126
+ })
127
+ var container3 = document.getElementById('mytimeline3');
128
+ timeline3 = new vis.Timeline(container3, itemsWithGroups, groups, options3);
129
+ </script>
130
+
131
+ </body>
132
+
133
+ </html>
@@ -0,0 +1,87 @@
1
+ <html>
2
+
3
+ <head>
4
+ <title>Timeline | Update data on event</title>
5
+
6
+ <style type="text/css">
7
+ body {
8
+ font: 11pt verdana;
9
+ }
10
+
11
+ .vis.timeline .item.past {
12
+ filter: alpha(opacity=50);
13
+ opacity: 0.5;
14
+ }
15
+ </style>
16
+
17
+ <script src="../../../vendor/assets/javascripts/vis.js"></script>
18
+ <link href="../../../vendor/assets/stylesheets/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
19
+
20
+ </head>
21
+
22
+ <body>
23
+ <p style="width: 600px;">
24
+ When the custom time bar is shown, the user can drag this bar to a specific time. The Timeline sends an event that the custom
25
+ time is changed, after which the contents of the timeline can be changed according to the specified time in past or future.
26
+ </p>
27
+
28
+ <div id="customTime">&nbsp;</div>
29
+ <p></p>
30
+
31
+ <div id="mytimeline"></div>
32
+
33
+
34
+ <script>
35
+ // create a data set
36
+ var data = new vis.DataSet([{
37
+ id: 1,
38
+ start: new Date((new Date()).getTime() - 60 * 1000),
39
+ end: new Date(),
40
+ content: 'Dynamic event'
41
+ }]);
42
+
43
+ // specify options
44
+ var options = {
45
+ showCurrentTime: true
46
+ };
47
+
48
+ // create a timeline
49
+ var container = document.getElementById('mytimeline');
50
+ timeline = new vis.Timeline(container, data, options);
51
+
52
+ timeline.addCustomTime(new Date());
53
+
54
+ // add event listener
55
+ timeline.on('timechange', function (event) {
56
+ document.getElementById("customTime").innerHTML = "Custom Time: " + event.time;
57
+
58
+ var item = data.get(1);
59
+ if (event.time > item.start) {
60
+ item.end = new Date(event.time);
61
+ var now = new Date();
62
+ if (event.time < now) {
63
+ item.content = "Dynamic event (past)";
64
+ item.className = 'past';
65
+ } else if (event.time > now) {
66
+ item.content = "Dynamic event (future)";
67
+ item.className = 'future';
68
+ } else {
69
+ item.content = "Dynamic event (now)";
70
+ item.className = 'now';
71
+ }
72
+
73
+ data.update(item);
74
+ }
75
+ });
76
+
77
+ // set a custom range from -2 minute to +3 minutes current time
78
+ var start = new Date((new Date()).getTime() - 2 * 60 * 1000);
79
+ var end = new Date((new Date()).getTime() + 3 * 60 * 1000);
80
+ timeline.setWindow(start, end, {
81
+ animation: false
82
+ });
83
+ </script>
84
+
85
+ </body>
86
+
87
+ </html>
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+
4
+ <head>
5
+ <title>Timeline | Group example</title>
6
+
7
+ <style>
8
+ body,
9
+ html {
10
+ font-family: arial, sans-serif;
11
+ font-size: 11pt;
12
+ }
13
+
14
+ #visualization {
15
+ box-sizing: border-box;
16
+ width: 100%;
17
+ height: 300px;
18
+ }
19
+ </style>
20
+
21
+ <!-- note: moment.js must be loaded before vis.js, else vis.js uses its embedded version of moment.js -->
22
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
23
+
24
+ <script src="../../../vendor/assets/javascripts/vis.js"></script>
25
+ <link href="../../../vendor/assets/stylesheets/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
26
+
27
+ </head>
28
+
29
+ <body>
30
+ <p>
31
+ This example demonstrate using groups. Note that a DataSet is used for both items and groups, allowing to dynamically add,
32
+ update or remove both items and groups via the DataSet.
33
+ </p>
34
+ <div id="visualization"></div>
35
+
36
+ <script>
37
+ var now = moment().minutes(0).seconds(0).milliseconds(0);
38
+ var groupCount = 3;
39
+ var itemCount = 20;
40
+
41
+ // create a data set with groups
42
+ var names = ['John', 'Alston', 'Lee', 'Grant'];
43
+ var groups = new vis.DataSet();
44
+ for (var g = 0; g < groupCount; g++) {
45
+ groups.add({
46
+ id: g,
47
+ content: names[g]
48
+ });
49
+ }
50
+
51
+ // create a dataset with items
52
+ var items = new vis.DataSet();
53
+ for (var i = 0; i < itemCount; i++) {
54
+ var start = now.clone().add(Math.random() * 200, 'hours');
55
+ var group = Math.floor(Math.random() * groupCount);
56
+ items.add({
57
+ id: i,
58
+ group: group,
59
+ content: 'item ' + i +
60
+ ' <span style="color:#97B0F8;">(' + names[group] + ')</span>',
61
+ start: start,
62
+ type: 'box'
63
+ });
64
+ }
65
+
66
+ // create visualization
67
+ var container = document.getElementById('visualization');
68
+ var options = {
69
+ groupOrder: 'content' // groupOrder can be a property name or a sorting function
70
+ };
71
+
72
+ var timeline = new vis.Timeline(container);
73
+ timeline.setOptions(options);
74
+ timeline.setGroups(groups);
75
+ timeline.setItems(items);
76
+ </script>
77
+ </body>
78
+
79
+ </html>
@@ -0,0 +1,2001 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+
4
+ <head>
5
+ <title>Timeline | Editable Groups</title>
6
+
7
+ <style>
8
+ body,
9
+ html {
10
+ font-family: arial, sans-serif;
11
+ font-size: 11pt;
12
+ }
13
+
14
+ #visualization {
15
+ box-sizing: border-box;
16
+ width: 100%;
17
+ height: 300px;
18
+ }
19
+
20
+ .vis-item.openwheel {
21
+ background-color: #B0E2FF;
22
+ }
23
+
24
+ .vis-item.rally {
25
+ background-color: #EAEAEA;
26
+ }
27
+
28
+ .vis-item.motorcycle {
29
+ background-color: #FA8072;
30
+ }
31
+
32
+ .vis-item.touringcar {
33
+ background-color: #B4EEB4;
34
+ }
35
+
36
+ .vis-item.endurance {
37
+ background-color: #FFFFCC;
38
+ }
39
+ </style>
40
+
41
+ <script src="../../../vendor/assets/javascripts/vis.js"></script>
42
+ <link href="../../../vendor/assets/stylesheets/vis-timeline-graph2d.min.css" rel="stylesheet" type="text/css" />
43
+ <!-- -->
44
+ </head>
45
+
46
+ <body>
47
+ <p>
48
+ This example demonstrates editable groups (reordering and hiding).
49
+ <button onclick="showAllGroups()">Restore Hidden</button>
50
+ </p>
51
+ <div id="visualization"></div>
52
+
53
+ <script>
54
+ // http://motocal.com/
55
+ var groups = new vis.DataSet([{
56
+ "content": "Formula E",
57
+ "id": "Formula E",
58
+ "value": 1,
59
+ className: 'openwheel'
60
+ },
61
+ {
62
+ "content": "WRC",
63
+ "id": "WRC",
64
+ "value": 2,
65
+ className: 'rally'
66
+ },
67
+ {
68
+ "content": "MotoGP",
69
+ "id": "MotoGP",
70
+ "value": 3,
71
+ className: 'motorcycle'
72
+ },
73
+ {
74
+ "content": "V8SC",
75
+ "id": "V8SC",
76
+ "value": 4,
77
+ className: 'touringcars'
78
+ },
79
+ {
80
+ "content": "WTCC",
81
+ "id": "WTCC",
82
+ "value": 5,
83
+ className: 'touringcars'
84
+ },
85
+ {
86
+ "content": "F1",
87
+ "id": "F1",
88
+ "value": 6,
89
+ className: 'openwheel'
90
+ },
91
+ {
92
+ "content": "SBK",
93
+ "id": "SBK",
94
+ "value": 7,
95
+ className: 'motorcycle'
96
+ },
97
+ {
98
+ "content": "IndyCar",
99
+ "id": "IndyCar",
100
+ "value": 8,
101
+ className: 'openwheel'
102
+ },
103
+ {
104
+ "content": "MotoAmerica",
105
+ "id": "MotoAmerica",
106
+ "value": 9,
107
+ className: 'motorcycle'
108
+ },
109
+ {
110
+ "content": "SGP",
111
+ "id": "SGP",
112
+ "value": 10,
113
+ className: 'rally'
114
+ },
115
+ {
116
+ "content": "EWC",
117
+ "id": "EWC",
118
+ "value": 11,
119
+ className: 'endurance'
120
+ },
121
+ {
122
+ "content": "BSB",
123
+ "id": "BSB",
124
+ "value": 12,
125
+ className: 'motorcycle'
126
+ },
127
+ {
128
+ "content": "DTM",
129
+ "id": "DTM",
130
+ "value": 13,
131
+ className: 'touringcars'
132
+ },
133
+ {
134
+ "content": "BTCC",
135
+ "id": "BTCC",
136
+ "value": 14,
137
+ className: 'touringcars'
138
+ },
139
+ {
140
+ "content": "WorldRX",
141
+ "id": "WorldRX",
142
+ "value": 15,
143
+ className: 'rally'
144
+ },
145
+ {
146
+ "content": "WSR",
147
+ "id": "WSR",
148
+ "value": 16,
149
+ className: 'openwheel'
150
+ },
151
+ {
152
+ "content": "Roads",
153
+ "id": "Roads",
154
+ "value": 17,
155
+ className: 'motorcycle'
156
+ },
157
+ {
158
+ "content": "WEC",
159
+ "id": "WEC",
160
+ "value": 18,
161
+ className: 'endurance'
162
+ },
163
+ {
164
+ "content": "GP2",
165
+ "id": "GP2",
166
+ "value": 19,
167
+ className: 'openwheel'
168
+ }
169
+ ]);
170
+
171
+ // function to make all groups visible again
172
+ function showAllGroups() {
173
+ groups.forEach(function (group) {
174
+ groups.update({
175
+ id: group.id,
176
+ visible: true
177
+ });
178
+ })
179
+ };
180
+
181
+ // create a dataset with items
182
+ // note that months are zero-based in the JavaScript Date object, so month 3 is April
183
+ var items = new vis.DataSet([{
184
+ start: new Date(2015, 0, 10),
185
+ end: new Date(2015, 0, 11),
186
+ group: "Formula E",
187
+ className: "openwheel",
188
+ content: "Argentina",
189
+ id: "531@motocal.net"
190
+ },
191
+ {
192
+ start: new Date(2015, 0, 22),
193
+ end: new Date(2015, 0, 26),
194
+ group: "WRC",
195
+ className: "rally",
196
+ content: "Rallye Monte-Carlo",
197
+ id: "591@motocal.net"
198
+ },
199
+ {
200
+ start: new Date(2015, 1, 4),
201
+ end: new Date(2015, 1, 8),
202
+ group: "MotoGP",
203
+ className: "motorcycle",
204
+ content: "Sepang MotoGP Test 1",
205
+ id: "578@motocal.net"
206
+ },
207
+ {
208
+ start: new Date(2015, 1, 12),
209
+ end: new Date(2015, 1, 16),
210
+ group: "WRC",
211
+ className: "rally",
212
+ content: "Rally Sweden",
213
+ id: "592@motocal.net"
214
+ },
215
+ {
216
+ start: new Date(2015, 1, 20),
217
+ end: new Date(2015, 1, 23),
218
+ group: "SBK",
219
+ className: "motorcycle",
220
+ content: "Australia",
221
+ id: "616@motocal.net"
222
+ },
223
+ {
224
+ start: new Date(2015, 1, 23),
225
+ end: new Date(2015, 1, 27),
226
+ group: "MotoGP",
227
+ className: "motorcycle",
228
+ content: "Sepang MotoGP Test 2",
229
+ id: "579@motocal.net"
230
+ },
231
+ {
232
+ start: new Date(2015, 1, 26),
233
+ end: new Date(2015, 2, 2),
234
+ group: "V8SC",
235
+ className: "touringcar",
236
+ content: "Clipsal 500 Adelaide",
237
+ id: "659@motocal.net"
238
+ },
239
+ {
240
+ start: new Date(2015, 2, 5),
241
+ end: new Date(2015, 2, 9),
242
+ group: "WRC",
243
+ className: "rally",
244
+ content: "Rally Guanajuato Mexico",
245
+ id: "593@motocal.net"
246
+ },
247
+ {
248
+ start: new Date(2015, 2, 6),
249
+ end: new Date(2015, 2, 9),
250
+ group: "WTCC",
251
+ className: "touringcar",
252
+ content: "Argentina",
253
+ id: "717@motocal.net"
254
+ },
255
+ {
256
+ start: new Date(2015, 2, 12),
257
+ end: new Date(2015, 2, 16),
258
+ group: "V8SC",
259
+ className: "touringcar",
260
+ content: "Australian Grand Prix",
261
+ id: "660@motocal.net"
262
+ },
263
+ {
264
+ start: new Date(2015, 2, 13),
265
+ end: new Date(2015, 2, 16),
266
+ group: "F1",
267
+ className: "openwheel",
268
+ content: "Australia",
269
+ id: "630@motocal.net"
270
+ },
271
+ {
272
+ start: new Date(2015, 2, 14),
273
+ end: new Date(2015, 2, 15),
274
+ group: "Formula E",
275
+ className: "openwheel",
276
+ content: "Miami, USA",
277
+ id: "534@motocal.net"
278
+ },
279
+ {
280
+ start: new Date(2015, 2, 14),
281
+ end: new Date(2015, 2, 17),
282
+ group: "MotoGP",
283
+ className: "motorcycle",
284
+ content: "Qatar MotoGP Test",
285
+ id: "577@motocal.net"
286
+ },
287
+ {
288
+ start: new Date(2015, 2, 20),
289
+ end: new Date(2015, 2, 23),
290
+ group: "SBK",
291
+ className: "motorcycle",
292
+ content: "Thailand",
293
+ id: "617@motocal.net"
294
+ },
295
+ {
296
+ start: new Date(2015, 2, 27),
297
+ end: new Date(2015, 2, 30),
298
+ group: "F1",
299
+ className: "openwheel",
300
+ content: "Malaysia",
301
+ id: "631@motocal.net"
302
+ },
303
+ {
304
+ start: new Date(2015, 2, 27),
305
+ end: new Date(2015, 2, 30),
306
+ group: "V8SC",
307
+ className: "touringcar",
308
+ content: "Tasmania SuperSprint",
309
+ id: "661@motocal.net"
310
+ },
311
+ {
312
+ start: new Date(2015, 2, 27),
313
+ end: new Date(2015, 2, 30),
314
+ group: "IndyCar",
315
+ className: "openwheel",
316
+ content: "Grand Prix of St. Petersburg",
317
+ id: "752@motocal.net"
318
+ },
319
+ {
320
+ start: new Date(2015, 3, 4),
321
+ end: new Date(2015, 3, 7),
322
+ group: "BSB",
323
+ className: "motorcycle",
324
+ content: "Round 1",
325
+ id: "604@motocal.net"
326
+ },
327
+ {
328
+ start: new Date(2015, 3, 4),
329
+ end: new Date(2015, 3, 6),
330
+ group: "BTCC",
331
+ className: "touringcar",
332
+ content: "Rounds 1, 2 & 3",
333
+ id: "581@motocal.net"
334
+ },
335
+ {
336
+ start: new Date(2015, 3, 4),
337
+ end: new Date(2015, 3, 5),
338
+ group: "Formula E",
339
+ className: "openwheel",
340
+ content: "Long Beach, USA",
341
+ id: "535@motocal.net"
342
+ },
343
+ {
344
+ start: new Date(2015, 3, 10),
345
+ end: new Date(2015, 3, 13),
346
+ group: "IndyCar",
347
+ className: "openwheel",
348
+ content: "Indy Grand Prix of Louisiana",
349
+ id: "753@motocal.net"
350
+ },
351
+ {
352
+ start: new Date(2015, 3, 10),
353
+ end: new Date(2015, 3, 13),
354
+ group: "MotoAmerica",
355
+ className: "motorcycle",
356
+ content: "COTA",
357
+ id: "705@motocal.net"
358
+ },
359
+ {
360
+ start: new Date(2015, 3, 10),
361
+ end: new Date(2015, 3, 13),
362
+ group: "SBK",
363
+ className: "motorcycle",
364
+ content: "Aragon",
365
+ id: "618@motocal.net"
366
+ },
367
+ {
368
+ start: new Date(2015, 3, 10),
369
+ end: new Date(2015, 3, 13),
370
+ group: "MotoGP",
371
+ className: "motorcycle",
372
+ content: "Americas",
373
+ id: "540@motocal.net"
374
+ },
375
+ {
376
+ start: new Date(2015, 3, 10),
377
+ end: new Date(2015, 3, 13),
378
+ group: "F1",
379
+ className: "openwheel",
380
+ content: "China",
381
+ id: "632@motocal.net"
382
+ },
383
+ {
384
+ start: new Date(2015, 3, 12),
385
+ end: new Date(2015, 3, 13),
386
+ group: "WEC",
387
+ className: "endurance",
388
+ content: "6 Hours of Silverstone",
389
+ id: "674@motocal.net"
390
+ },
391
+ {
392
+ start: new Date(2015, 3, 17),
393
+ end: new Date(2015, 3, 20),
394
+ group: "BSB",
395
+ className: "motorcycle",
396
+ content: "Round 2",
397
+ id: "605@motocal.net"
398
+ },
399
+ {
400
+ start: new Date(2015, 3, 17),
401
+ end: new Date(2015, 3, 20),
402
+ group: "F1",
403
+ className: "openwheel",
404
+ content: "Bahrain",
405
+ id: "633@motocal.net"
406
+ },
407
+ {
408
+ start: new Date(2015, 3, 17),
409
+ end: new Date(2015, 3, 20),
410
+ group: "IndyCar",
411
+ className: "openwheel",
412
+ content: "Grand Prix of Long Beach",
413
+ id: "754@motocal.net"
414
+ },
415
+ {
416
+ start: new Date(2015, 3, 17),
417
+ end: new Date(2015, 3, 20),
418
+ group: "MotoAmerica",
419
+ className: "motorcycle",
420
+ content: "Road Atlanta",
421
+ id: "706@motocal.net"
422
+ },
423
+ {
424
+ start: new Date(2015, 3, 17),
425
+ end: new Date(2015, 3, 20),
426
+ group: "SBK",
427
+ className: "motorcycle",
428
+ content: "Netherlands",
429
+ id: "619@motocal.net"
430
+ },
431
+ {
432
+ start: new Date(2015, 3, 17),
433
+ end: new Date(2015, 3, 20),
434
+ group: "WTCC",
435
+ className: "touringcar",
436
+ content: "Morocco",
437
+ id: "718@motocal.net"
438
+ },
439
+ {
440
+ start: new Date(2015, 3, 17),
441
+ end: new Date(2015, 3, 20),
442
+ group: "MotoGP",
443
+ className: "motorcycle",
444
+ content: "Argentina",
445
+ id: "559@motocal.net"
446
+ },
447
+ {
448
+ start: new Date(2015, 3, 18),
449
+ end: new Date(2015, 3, 19),
450
+ group: "SGP",
451
+ className: "rally",
452
+ content: "Warsaw",
453
+ id: "729@motocal.net"
454
+ },
455
+ {
456
+ start: new Date(2015, 3, 18),
457
+ end: new Date(2015, 3, 20),
458
+ group: "EWC",
459
+ className: "endurance",
460
+ content: "24 Heures Moto Le Mans",
461
+ id: "701@motocal.net"
462
+ },
463
+ {
464
+ start: new Date(2015, 3, 18),
465
+ end: new Date(2015, 3, 20),
466
+ group: "BTCC",
467
+ className: "touringcar",
468
+ content: "Rounds 4, 5 & 6",
469
+ id: "582@motocal.net"
470
+ },
471
+ {
472
+ start: new Date(2015, 3, 23),
473
+ end: new Date(2015, 3, 27),
474
+ group: "WRC",
475
+ className: "rally",
476
+ content: "Rally Argentina",
477
+ id: "595@motocal.net"
478
+ },
479
+ {
480
+ start: new Date(2015, 3, 24),
481
+ end: new Date(2015, 3, 27),
482
+ group: "WorldRX",
483
+ className: "rally",
484
+ content: "Portugal",
485
+ id: "686@motocal.net"
486
+ },
487
+ {
488
+ start: new Date(2015, 3, 24),
489
+ end: new Date(2015, 3, 27),
490
+ group: "IndyCar",
491
+ className: "openwheel",
492
+ content: "Indy Grand Prix of Alabama",
493
+ id: "755@motocal.net"
494
+ },
495
+ {
496
+ start: new Date(2015, 3, 25),
497
+ end: new Date(2015, 3, 27),
498
+ group: "WSR",
499
+ className: "openwheel",
500
+ content: "Spain",
501
+ id: "742@motocal.net"
502
+ },
503
+ {
504
+ start: new Date(2015, 4, 1),
505
+ end: new Date(2015, 4, 4),
506
+ group: "MotoGP",
507
+ className: "motorcycle",
508
+ content: "Spain",
509
+ id: "542@motocal.net"
510
+ },
511
+ {
512
+ start: new Date(2015, 4, 1),
513
+ end: new Date(2015, 4, 4),
514
+ group: "WorldRX",
515
+ className: "rally",
516
+ content: "Hockenheim",
517
+ id: "768@motocal.net"
518
+ },
519
+ {
520
+ start: new Date(2015, 4, 1),
521
+ end: new Date(2015, 4, 4),
522
+ group: "DTM",
523
+ className: "touringcar",
524
+ content: "Hockenheim",
525
+ id: "650@motocal.net"
526
+ },
527
+ {
528
+ start: new Date(2015, 4, 1),
529
+ end: new Date(2015, 4, 4),
530
+ group: "WTCC",
531
+ className: "touringcar",
532
+ content: "Hungary",
533
+ id: "719@motocal.net"
534
+ },
535
+ {
536
+ start: new Date(2015, 4, 1),
537
+ end: new Date(2015, 4, 4),
538
+ group: "V8SC",
539
+ className: "touringcar",
540
+ content: "Perth SuperSprint",
541
+ id: "662@motocal.net"
542
+ },
543
+ {
544
+ start: new Date(2015, 4, 2),
545
+ end: new Date(2015, 4, 5),
546
+ group: "BSB",
547
+ className: "motorcycle",
548
+ content: "Round 3",
549
+ id: "606@motocal.net"
550
+ },
551
+ {
552
+ start: new Date(2015, 4, 2),
553
+ end: new Date(2015, 4, 3),
554
+ group: "WEC",
555
+ className: "endurance",
556
+ content: "6 Hours of Spa-Francorchamps",
557
+ id: "675@motocal.net"
558
+ },
559
+ {
560
+ start: new Date(2015, 4, 7),
561
+ end: new Date(2015, 4, 10),
562
+ group: "IndyCar",
563
+ className: "openwheel",
564
+ content: "Grand Prix of Indianapolis",
565
+ id: "756@motocal.net"
566
+ },
567
+ {
568
+ start: new Date(2015, 4, 8),
569
+ end: new Date(2015, 4, 11),
570
+ group: "F1",
571
+ className: "openwheel",
572
+ content: "Spain",
573
+ id: "634@motocal.net"
574
+ },
575
+ {
576
+ start: new Date(2015, 4, 8),
577
+ end: new Date(2015, 4, 11),
578
+ group: "SBK",
579
+ className: "motorcycle",
580
+ content: "Italy",
581
+ id: "620@motocal.net"
582
+ },
583
+ {
584
+ start: new Date(2015, 4, 9),
585
+ end: new Date(2015, 4, 10),
586
+ group: "Formula E",
587
+ className: "openwheel",
588
+ content: "Monaco",
589
+ id: "536@motocal.net"
590
+ },
591
+ {
592
+ start: new Date(2015, 4, 9),
593
+ end: new Date(2015, 4, 11),
594
+ group: "BTCC",
595
+ className: "touringcar",
596
+ content: "Rounds 7, 8 & 9",
597
+ id: "583@motocal.net"
598
+ },
599
+ {
600
+ start: new Date(2015, 4, 10),
601
+ end: new Date(2015, 4, 17),
602
+ group: "Roads",
603
+ className: "motorcycle",
604
+ content: "North West 200",
605
+ id: "682@motocal.net"
606
+ },
607
+ {
608
+ start: new Date(2015, 4, 15),
609
+ end: new Date(2015, 4, 17),
610
+ group: "WTCC",
611
+ className: "touringcar",
612
+ content: "Germany",
613
+ id: "720@motocal.net"
614
+ },
615
+ {
616
+ start: new Date(2015, 4, 15),
617
+ end: new Date(2015, 4, 18),
618
+ group: "WorldRX",
619
+ className: "rally",
620
+ content: "Belgium",
621
+ id: "687@motocal.net"
622
+ },
623
+ {
624
+ start: new Date(2015, 4, 15),
625
+ end: new Date(2015, 4, 18),
626
+ group: "V8SC",
627
+ className: "touringcar",
628
+ content: "Winton SuperSprint",
629
+ id: "663@motocal.net"
630
+ },
631
+ {
632
+ start: new Date(2015, 4, 15),
633
+ end: new Date(2015, 4, 18),
634
+ group: "MotoGP",
635
+ className: "motorcycle",
636
+ content: "France",
637
+ id: "543@motocal.net"
638
+ },
639
+ {
640
+ start: new Date(2015, 4, 15),
641
+ end: new Date(2015, 4, 18),
642
+ group: "MotoAmerica",
643
+ className: "motorcycle",
644
+ content: "VIR",
645
+ id: "707@motocal.net"
646
+ },
647
+ {
648
+ start: new Date(2015, 4, 16),
649
+ end: new Date(2015, 4, 17),
650
+ group: "SGP",
651
+ className: "rally",
652
+ content: "Tampere",
653
+ id: "730@motocal.net"
654
+ },
655
+ {
656
+ start: new Date(2015, 4, 21),
657
+ end: new Date(2015, 4, 25),
658
+ group: "WRC",
659
+ className: "rally",
660
+ content: "Rally de Portugal",
661
+ id: "594@motocal.net"
662
+ },
663
+ {
664
+ start: new Date(2015, 4, 21),
665
+ end: new Date(2015, 4, 25),
666
+ group: "F1",
667
+ className: "openwheel",
668
+ content: "Monaco",
669
+ id: "635@motocal.net"
670
+ },
671
+ {
672
+ start: new Date(2015, 4, 22),
673
+ end: new Date(2015, 4, 25),
674
+ group: "WorldRX",
675
+ className: "rally",
676
+ content: "Great Britain",
677
+ id: "688@motocal.net"
678
+ },
679
+ {
680
+ start: new Date(2015, 4, 22),
681
+ end: new Date(2015, 4, 25),
682
+ group: "SBK",
683
+ className: "motorcycle",
684
+ content: "UK",
685
+ id: "621@motocal.net"
686
+ },
687
+ {
688
+ start: new Date(2015, 4, 22),
689
+ end: new Date(2015, 4, 25),
690
+ group: "IndyCar",
691
+ className: "openwheel",
692
+ content: "Indianapolis 500",
693
+ id: "757@motocal.net"
694
+ },
695
+ {
696
+ start: new Date(2015, 4, 23),
697
+ end: new Date(2015, 4, 24),
698
+ group: "SGP",
699
+ className: "rally",
700
+ content: "Prague",
701
+ id: "731@motocal.net"
702
+ },
703
+ {
704
+ start: new Date(2015, 4, 23),
705
+ end: new Date(2015, 4, 24),
706
+ group: "Formula E",
707
+ className: "openwheel",
708
+ content: "Germany",
709
+ id: "537@motocal.net"
710
+ },
711
+ {
712
+ start: new Date(2015, 4, 24),
713
+ end: new Date(2015, 4, 25),
714
+ group: "WSR",
715
+ className: "openwheel",
716
+ content: "Monaco",
717
+ id: "743@motocal.net"
718
+ },
719
+ {
720
+ start: new Date(2015, 4, 29),
721
+ end: new Date(2015, 5, 1),
722
+ group: "MotoAmerica",
723
+ className: "motorcycle",
724
+ content: "Road America",
725
+ id: "708@motocal.net"
726
+ },
727
+ {
728
+ start: new Date(2015, 4, 29),
729
+ end: new Date(2015, 5, 1),
730
+ group: "IndyCar",
731
+ className: "openwheel",
732
+ content: "Dual in Detroit",
733
+ id: "758@motocal.net"
734
+ },
735
+ {
736
+ start: new Date(2015, 4, 29),
737
+ end: new Date(2015, 5, 1),
738
+ group: "MotoGP",
739
+ className: "motorcycle",
740
+ content: "Italy",
741
+ id: "562@motocal.net"
742
+ },
743
+ {
744
+ start: new Date(2015, 4, 29),
745
+ end: new Date(2015, 5, 1),
746
+ group: "DTM",
747
+ className: "touringcar",
748
+ content: "Lausitzring",
749
+ id: "651@motocal.net"
750
+ },
751
+ {
752
+ start: new Date(2015, 4, 30),
753
+ end: new Date(2015, 5, 13),
754
+ group: "Roads",
755
+ className: "motorcycle",
756
+ content: "Isle of Man TT",
757
+ id: "683@motocal.net"
758
+ },
759
+ {
760
+ start: new Date(2015, 4, 30),
761
+ end: new Date(2015, 5, 1),
762
+ group: "WSR",
763
+ className: "openwheel",
764
+ content: "Belgium",
765
+ id: "745@motocal.net"
766
+ },
767
+ {
768
+ start: new Date(2015, 5, 4),
769
+ end: new Date(2015, 5, 7),
770
+ group: "IndyCar",
771
+ className: "openwheel",
772
+ content: "Firestone 600",
773
+ id: "759@motocal.net"
774
+ },
775
+ {
776
+ start: new Date(2015, 5, 5),
777
+ end: new Date(2015, 5, 8),
778
+ group: "SBK",
779
+ className: "motorcycle",
780
+ content: "Portugal",
781
+ id: "622@motocal.net"
782
+ },
783
+ {
784
+ start: new Date(2015, 5, 5),
785
+ end: new Date(2015, 5, 8),
786
+ group: "F1",
787
+ className: "openwheel",
788
+ content: "Canada",
789
+ id: "636@motocal.net"
790
+ },
791
+ {
792
+ start: new Date(2015, 5, 5),
793
+ end: new Date(2015, 5, 8),
794
+ group: "WTCC",
795
+ className: "touringcar",
796
+ content: "Russia",
797
+ id: "721@motocal.net"
798
+ },
799
+ {
800
+ start: new Date(2015, 5, 6),
801
+ end: new Date(2015, 5, 7),
802
+ group: "Formula E",
803
+ className: "openwheel",
804
+ content: "Russia",
805
+ id: "716@motocal.net"
806
+ },
807
+ {
808
+ start: new Date(2015, 5, 6),
809
+ end: new Date(2015, 5, 8),
810
+ group: "BTCC",
811
+ className: "touringcar",
812
+ content: "Rounds 10, 11 & 12",
813
+ id: "584@motocal.net"
814
+ },
815
+ {
816
+ start: new Date(2015, 5, 11),
817
+ end: new Date(2015, 5, 15),
818
+ group: "WRC",
819
+ className: "rally",
820
+ content: "Rally d'Italia Sardegna",
821
+ id: "596@motocal.net"
822
+ },
823
+ {
824
+ start: new Date(2015, 5, 12),
825
+ end: new Date(2015, 5, 15),
826
+ group: "MotoGP",
827
+ className: "motorcycle",
828
+ content: "Catalunya",
829
+ id: "545@motocal.net"
830
+ },
831
+ {
832
+ start: new Date(2015, 5, 12),
833
+ end: new Date(2015, 5, 15),
834
+ group: "IndyCar",
835
+ className: "openwheel",
836
+ content: "Indy Toronto",
837
+ id: "760@motocal.net"
838
+ },
839
+ {
840
+ start: new Date(2015, 5, 12),
841
+ end: new Date(2015, 5, 15),
842
+ group: "MotoAmerica",
843
+ className: "motorcycle",
844
+ content: "Barber",
845
+ id: "709@motocal.net"
846
+ },
847
+ {
848
+ start: new Date(2015, 5, 13),
849
+ end: new Date(2015, 5, 15),
850
+ group: "WSR",
851
+ className: "openwheel",
852
+ content: "Hungary",
853
+ id: "746@motocal.net"
854
+ },
855
+ {
856
+ start: new Date(2015, 5, 13),
857
+ end: new Date(2015, 5, 15),
858
+ group: "WEC",
859
+ className: "endurance",
860
+ content: "24 Heures du Mans",
861
+ id: "676@motocal.net"
862
+ },
863
+ {
864
+ start: new Date(2015, 5, 19),
865
+ end: new Date(2015, 5, 22),
866
+ group: "V8SC",
867
+ className: "touringcar",
868
+ content: "Skycity Triple Crown",
869
+ id: "664@motocal.net"
870
+ },
871
+ {
872
+ start: new Date(2015, 5, 19),
873
+ end: new Date(2015, 5, 22),
874
+ group: "WTCC",
875
+ className: "touringcar",
876
+ content: "Slovakia",
877
+ id: "722@motocal.net"
878
+ },
879
+ {
880
+ start: new Date(2015, 5, 19),
881
+ end: new Date(2015, 5, 22),
882
+ group: "SBK",
883
+ className: "motorcycle",
884
+ content: "Riviera di Rimini",
885
+ id: "623@motocal.net"
886
+ },
887
+ {
888
+ start: new Date(2015, 5, 19),
889
+ end: new Date(2015, 5, 22),
890
+ group: "BSB",
891
+ className: "motorcycle",
892
+ content: "Round 4",
893
+ id: "607@motocal.net"
894
+ },
895
+ {
896
+ start: new Date(2015, 5, 19),
897
+ end: new Date(2015, 5, 22),
898
+ group: "F1",
899
+ className: "openwheel",
900
+ content: "Austria",
901
+ id: "637@motocal.net"
902
+ },
903
+ {
904
+ start: new Date(2015, 5, 19),
905
+ end: new Date(2015, 5, 22),
906
+ group: "WorldRX",
907
+ className: "rally",
908
+ content: "Germany",
909
+ id: "689@motocal.net"
910
+ },
911
+ {
912
+ start: new Date(2015, 5, 25),
913
+ end: new Date(2015, 5, 28),
914
+ group: "MotoGP",
915
+ className: "motorcycle",
916
+ content: "Netherlands",
917
+ id: "546@motocal.net"
918
+ },
919
+ {
920
+ start: new Date(2015, 5, 25),
921
+ end: new Date(2015, 5, 28),
922
+ group: "IndyCar",
923
+ className: "openwheel",
924
+ content: "MAVTV 500",
925
+ id: "761@motocal.net"
926
+ },
927
+ {
928
+ start: new Date(2015, 5, 26),
929
+ end: new Date(2015, 5, 29),
930
+ group: "WTCC",
931
+ className: "touringcar",
932
+ content: "France",
933
+ id: "723@motocal.net"
934
+ },
935
+ {
936
+ start: new Date(2015, 5, 26),
937
+ end: new Date(2015, 5, 29),
938
+ group: "DTM",
939
+ className: "touringcar",
940
+ content: "Norisring",
941
+ id: "652@motocal.net"
942
+ },
943
+ {
944
+ start: new Date(2015, 5, 26),
945
+ end: new Date(2015, 5, 29),
946
+ group: "MotoAmerica",
947
+ className: "motorcycle",
948
+ content: "Miller",
949
+ id: "710@motocal.net"
950
+ },
951
+ {
952
+ start: new Date(2015, 5, 27),
953
+ end: new Date(2015, 5, 29),
954
+ group: "BTCC",
955
+ className: "touringcar",
956
+ content: "Rounds 13, 14 & 15",
957
+ id: "585@motocal.net"
958
+ },
959
+ {
960
+ start: new Date(2015, 5, 27),
961
+ end: new Date(2015, 5, 29),
962
+ group: "Formula E",
963
+ className: "openwheel",
964
+ content: "United Kingdom",
965
+ id: "538@motocal.net"
966
+ },
967
+ {
968
+ start: new Date(2015, 6, 2),
969
+ end: new Date(2015, 6, 6),
970
+ group: "WRC",
971
+ className: "rally",
972
+ content: "Rally Poland",
973
+ id: "597@motocal.net"
974
+ },
975
+ {
976
+ start: new Date(2015, 6, 3),
977
+ end: new Date(2015, 6, 6),
978
+ group: "F1",
979
+ className: "openwheel",
980
+ content: "Britain",
981
+ id: "638@motocal.net"
982
+ },
983
+ {
984
+ start: new Date(2015, 6, 3),
985
+ end: new Date(2015, 6, 6),
986
+ group: "WorldRX",
987
+ className: "rally",
988
+ content: "Sweden",
989
+ id: "690@motocal.net"
990
+ },
991
+ {
992
+ start: new Date(2015, 6, 3),
993
+ end: new Date(2015, 6, 6),
994
+ group: "BSB",
995
+ className: "motorcycle",
996
+ content: "Round 5",
997
+ id: "608@motocal.net"
998
+ },
999
+ {
1000
+ start: new Date(2015, 6, 4),
1001
+ end: new Date(2015, 6, 5),
1002
+ group: "SGP",
1003
+ className: "rally",
1004
+ content: "Cardiff",
1005
+ id: "732@motocal.net"
1006
+ },
1007
+ {
1008
+ start: new Date(2015, 6, 6),
1009
+ end: new Date(2015, 6, 10),
1010
+ group: "Roads",
1011
+ className: "motorcycle",
1012
+ content: "Southern 100",
1013
+ id: "714@motocal.net"
1014
+ },
1015
+ {
1016
+ start: new Date(2015, 6, 10),
1017
+ end: new Date(2015, 6, 13),
1018
+ group: "MotoGP",
1019
+ className: "motorcycle",
1020
+ content: "Germany",
1021
+ id: "565@motocal.net"
1022
+ },
1023
+ {
1024
+ start: new Date(2015, 6, 10),
1025
+ end: new Date(2015, 6, 13),
1026
+ group: "DTM",
1027
+ className: "touringcar",
1028
+ content: "Zandvoort",
1029
+ id: "653@motocal.net"
1030
+ },
1031
+ {
1032
+ start: new Date(2015, 6, 10),
1033
+ end: new Date(2015, 6, 13),
1034
+ group: "IndyCar",
1035
+ className: "openwheel",
1036
+ content: "Wisconsin 250",
1037
+ id: "763@motocal.net"
1038
+ },
1039
+ {
1040
+ start: new Date(2015, 6, 10),
1041
+ end: new Date(2015, 6, 13),
1042
+ group: "V8SC",
1043
+ className: "touringcar",
1044
+ content: "Townsville 400",
1045
+ id: "665@motocal.net"
1046
+ },
1047
+ {
1048
+ start: new Date(2015, 6, 10),
1049
+ end: new Date(2015, 6, 13),
1050
+ group: "WTCC",
1051
+ className: "touringcar",
1052
+ content: "Portugal",
1053
+ id: "724@motocal.net"
1054
+ },
1055
+ {
1056
+ start: new Date(2015, 6, 11),
1057
+ end: new Date(2015, 6, 13),
1058
+ group: "WSR",
1059
+ className: "openwheel",
1060
+ content: "Austria",
1061
+ id: "747@motocal.net"
1062
+ },
1063
+ {
1064
+ start: new Date(2015, 6, 16),
1065
+ end: new Date(2015, 6, 19),
1066
+ group: "IndyCar",
1067
+ className: "openwheel",
1068
+ content: "Iowa Corn Indy 300",
1069
+ id: "764@motocal.net"
1070
+ },
1071
+ {
1072
+ start: new Date(2015, 6, 17),
1073
+ end: new Date(2015, 6, 20),
1074
+ group: "SBK",
1075
+ className: "motorcycle",
1076
+ content: "USA",
1077
+ id: "625@motocal.net"
1078
+ },
1079
+ {
1080
+ start: new Date(2015, 6, 17),
1081
+ end: new Date(2015, 6, 20),
1082
+ group: "BSB",
1083
+ className: "motorcycle",
1084
+ content: "Round 6",
1085
+ id: "609@motocal.net"
1086
+ },
1087
+ {
1088
+ start: new Date(2015, 6, 17),
1089
+ end: new Date(2015, 6, 20),
1090
+ group: "MotoAmerica",
1091
+ className: "motorcycle",
1092
+ content: "Mazda Raceway",
1093
+ id: "711@motocal.net"
1094
+ },
1095
+ {
1096
+ start: new Date(2015, 6, 18),
1097
+ end: new Date(2015, 6, 19),
1098
+ group: "SGP",
1099
+ className: "rally",
1100
+ content: "Daugavpils",
1101
+ id: "733@motocal.net"
1102
+ },
1103
+ {
1104
+ start: new Date(2015, 6, 24),
1105
+ end: new Date(2015, 6, 27),
1106
+ group: "F1",
1107
+ className: "openwheel",
1108
+ content: "Hungary",
1109
+ id: "640@motocal.net"
1110
+ },
1111
+ {
1112
+ start: new Date(2015, 6, 25),
1113
+ end: new Date(2015, 6, 26),
1114
+ group: "SGP",
1115
+ className: "rally",
1116
+ content: "Målilla",
1117
+ id: "734@motocal.net"
1118
+ },
1119
+ {
1120
+ start: new Date(2015, 6, 26),
1121
+ end: new Date(2015, 6, 27),
1122
+ group: "EWC",
1123
+ className: "endurance",
1124
+ content: "Suzuka 8 Hours",
1125
+ id: "702@motocal.net"
1126
+ },
1127
+ {
1128
+ start: new Date(2015, 6, 30),
1129
+ end: new Date(2015, 7, 3),
1130
+ group: "WRC",
1131
+ className: "rally",
1132
+ content: "Rally Finland",
1133
+ id: "598@motocal.net"
1134
+ },
1135
+ {
1136
+ start: new Date(2015, 6, 31),
1137
+ end: new Date(2015, 7, 3),
1138
+ group: "BSB",
1139
+ className: "motorcycle",
1140
+ content: "Round 7",
1141
+ id: "610@motocal.net"
1142
+ },
1143
+ {
1144
+ start: new Date(2015, 6, 31),
1145
+ end: new Date(2015, 7, 3),
1146
+ group: "V8SC",
1147
+ className: "touringcar",
1148
+ content: "Ipswich SuperSprint",
1149
+ id: "666@motocal.net"
1150
+ },
1151
+ {
1152
+ start: new Date(2015, 6, 31),
1153
+ end: new Date(2015, 7, 3),
1154
+ group: "DTM",
1155
+ className: "touringcar",
1156
+ content: "Spielberg",
1157
+ id: "654@motocal.net"
1158
+ },
1159
+ {
1160
+ start: new Date(2015, 6, 31),
1161
+ end: new Date(2015, 7, 3),
1162
+ group: "IndyCar",
1163
+ className: "openwheel",
1164
+ content: "Honda Indy 200",
1165
+ id: "765@motocal.net"
1166
+ },
1167
+ {
1168
+ start: new Date(2015, 6, 31),
1169
+ end: new Date(2015, 7, 3),
1170
+ group: "SBK",
1171
+ className: "motorcycle",
1172
+ content: "Malaysia",
1173
+ id: "626@motocal.net"
1174
+ },
1175
+ {
1176
+ start: new Date(2015, 7, 3),
1177
+ end: new Date(2015, 7, 9),
1178
+ group: "Roads",
1179
+ className: "motorcycle",
1180
+ content: "Ulster Grand Prix",
1181
+ id: "684@motocal.net"
1182
+ },
1183
+ {
1184
+ start: new Date(2015, 7, 7),
1185
+ end: new Date(2015, 7, 9),
1186
+ group: "WorldRX",
1187
+ className: "rally",
1188
+ content: "Canada",
1189
+ id: "691@motocal.net"
1190
+ },
1191
+ {
1192
+ start: new Date(2015, 7, 7),
1193
+ end: new Date(2015, 7, 10),
1194
+ group: "MotoAmerica",
1195
+ className: "motorcycle",
1196
+ content: "INDY",
1197
+ id: "712@motocal.net"
1198
+ },
1199
+ {
1200
+ start: new Date(2015, 7, 7),
1201
+ end: new Date(2015, 7, 10),
1202
+ group: "MotoGP",
1203
+ className: "motorcycle",
1204
+ content: "Indianapolis",
1205
+ id: "548@motocal.net"
1206
+ },
1207
+ {
1208
+ start: new Date(2015, 7, 8),
1209
+ end: new Date(2015, 7, 10),
1210
+ group: "BTCC",
1211
+ className: "touringcar",
1212
+ content: "Rounds 16, 17 & 18",
1213
+ id: "586@motocal.net"
1214
+ },
1215
+ {
1216
+ start: new Date(2015, 7, 8),
1217
+ end: new Date(2015, 7, 9),
1218
+ group: "SGP",
1219
+ className: "rally",
1220
+ content: "Horsens",
1221
+ id: "735@motocal.net"
1222
+ },
1223
+ {
1224
+ start: new Date(2015, 7, 10),
1225
+ end: new Date(2015, 7, 12),
1226
+ group: "Formula E",
1227
+ className: "openwheel",
1228
+ content: "Pre-season test 1",
1229
+ id: "769@motocal.net"
1230
+ },
1231
+ {
1232
+ start: new Date(2015, 7, 14),
1233
+ end: new Date(2015, 7, 17),
1234
+ group: "MotoGP",
1235
+ className: "motorcycle",
1236
+ content: "Czech Republic",
1237
+ id: "549@motocal.net"
1238
+ },
1239
+ {
1240
+ start: new Date(2015, 7, 17),
1241
+ end: new Date(2015, 7, 19),
1242
+ group: "Formula E",
1243
+ className: "openwheel",
1244
+ content: "Pre-season test 2",
1245
+ id: "770@motocal.net"
1246
+ },
1247
+ {
1248
+ start: new Date(2015, 7, 20),
1249
+ end: new Date(2015, 7, 24),
1250
+ group: "WRC",
1251
+ className: "rally",
1252
+ content: "Rallye Deutschland",
1253
+ id: "599@motocal.net"
1254
+ },
1255
+ {
1256
+ start: new Date(2015, 7, 21),
1257
+ end: new Date(2015, 7, 24),
1258
+ group: "IndyCar",
1259
+ className: "openwheel",
1260
+ content: "Pocono IndyCar 500",
1261
+ id: "766@motocal.net"
1262
+ },
1263
+ {
1264
+ start: new Date(2015, 7, 21),
1265
+ end: new Date(2015, 7, 24),
1266
+ group: "BSB",
1267
+ className: "motorcycle",
1268
+ content: "Round 8",
1269
+ id: "611@motocal.net"
1270
+ },
1271
+ {
1272
+ start: new Date(2015, 7, 21),
1273
+ end: new Date(2015, 7, 24),
1274
+ group: "WorldRX",
1275
+ className: "rally",
1276
+ content: "Norway",
1277
+ id: "692@motocal.net"
1278
+ },
1279
+ {
1280
+ start: new Date(2015, 7, 21),
1281
+ end: new Date(2015, 7, 24),
1282
+ group: "F1",
1283
+ className: "openwheel",
1284
+ content: "Belgium",
1285
+ id: "641@motocal.net"
1286
+ },
1287
+ {
1288
+ start: new Date(2015, 7, 21),
1289
+ end: new Date(2015, 7, 24),
1290
+ group: "V8SC",
1291
+ className: "touringcar",
1292
+ content: "Sydney Motorsport Park SuperSprint",
1293
+ id: "667@motocal.net"
1294
+ },
1295
+ {
1296
+ start: new Date(2015, 7, 22),
1297
+ end: new Date(2015, 7, 23),
1298
+ group: "EWC",
1299
+ className: "endurance",
1300
+ content: "Oschersleben 8 Hours",
1301
+ id: "703@motocal.net"
1302
+ },
1303
+ {
1304
+ start: new Date(2015, 7, 22),
1305
+ end: new Date(2015, 8, 5),
1306
+ group: "Roads",
1307
+ className: "motorcycle",
1308
+ content: "Classic TT & Manx GP",
1309
+ id: "715@motocal.net"
1310
+ },
1311
+ {
1312
+ start: new Date(2015, 7, 22),
1313
+ end: new Date(2015, 7, 24),
1314
+ group: "BTCC",
1315
+ className: "touringcar",
1316
+ content: "Rounds 19, 20 & 21",
1317
+ id: "587@motocal.net"
1318
+ },
1319
+ {
1320
+ start: new Date(2015, 7, 24),
1321
+ end: new Date(2015, 7, 26),
1322
+ group: "Formula E",
1323
+ className: "openwheel",
1324
+ content: "Pre-season test 3",
1325
+ id: "771@motocal.net"
1326
+ },
1327
+ {
1328
+ start: new Date(2015, 7, 28),
1329
+ end: new Date(2015, 7, 31),
1330
+ group: "DTM",
1331
+ className: "touringcar",
1332
+ content: "Moscow Raceway",
1333
+ id: "655@motocal.net"
1334
+ },
1335
+ {
1336
+ start: new Date(2015, 7, 28),
1337
+ end: new Date(2015, 7, 31),
1338
+ group: "IndyCar",
1339
+ className: "openwheel",
1340
+ content: "Grand Prix of Sonoma",
1341
+ id: "767@motocal.net"
1342
+ },
1343
+ {
1344
+ start: new Date(2015, 7, 28),
1345
+ end: new Date(2015, 7, 31),
1346
+ group: "MotoGP",
1347
+ className: "motorcycle",
1348
+ content: "Great Britain",
1349
+ id: "568@motocal.net"
1350
+ },
1351
+ {
1352
+ start: new Date(2015, 7, 29),
1353
+ end: new Date(2015, 7, 30),
1354
+ group: "SGP",
1355
+ className: "rally",
1356
+ content: "Gorzów",
1357
+ id: "737@motocal.net"
1358
+ },
1359
+ {
1360
+ start: new Date(2015, 7, 30),
1361
+ end: new Date(2015, 7, 31),
1362
+ group: "WEC",
1363
+ className: "endurance",
1364
+ content: "6 Hours of N&uuml;rburgring",
1365
+ id: "677@motocal.net"
1366
+ },
1367
+ {
1368
+ start: new Date(2015, 8, 4),
1369
+ end: new Date(2015, 8, 7),
1370
+ group: "BSB",
1371
+ className: "motorcycle",
1372
+ content: "Round 9",
1373
+ id: "612@motocal.net"
1374
+ },
1375
+ {
1376
+ start: new Date(2015, 8, 4),
1377
+ end: new Date(2015, 8, 7),
1378
+ group: "WorldRX",
1379
+ className: "rally",
1380
+ content: "France",
1381
+ id: "693@motocal.net"
1382
+ },
1383
+ {
1384
+ start: new Date(2015, 8, 4),
1385
+ end: new Date(2015, 8, 7),
1386
+ group: "F1",
1387
+ className: "openwheel",
1388
+ content: "Italy",
1389
+ id: "642@motocal.net"
1390
+ },
1391
+ {
1392
+ start: new Date(2015, 8, 5),
1393
+ end: new Date(2015, 8, 7),
1394
+ group: "WSR",
1395
+ className: "openwheel",
1396
+ content: "United Kingdom",
1397
+ id: "748@motocal.net"
1398
+ },
1399
+ {
1400
+ start: new Date(2015, 8, 5),
1401
+ end: new Date(2015, 8, 7),
1402
+ group: "BTCC",
1403
+ className: "touringcar",
1404
+ content: "Rounds 22, 23 & 24",
1405
+ id: "588@motocal.net"
1406
+ },
1407
+ {
1408
+ start: new Date(2015, 8, 10),
1409
+ end: new Date(2015, 8, 14),
1410
+ group: "WRC",
1411
+ className: "rally",
1412
+ content: "Rally Australia",
1413
+ id: "600@motocal.net"
1414
+ },
1415
+ {
1416
+ start: new Date(2015, 8, 11),
1417
+ end: new Date(2015, 8, 14),
1418
+ group: "V8SC",
1419
+ className: "touringcar",
1420
+ content: "Sandown 500",
1421
+ id: "668@motocal.net"
1422
+ },
1423
+ {
1424
+ start: new Date(2015, 8, 11),
1425
+ end: new Date(2015, 8, 14),
1426
+ group: "MotoAmerica",
1427
+ className: "motorcycle",
1428
+ content: "New Jersey",
1429
+ id: "713@motocal.net"
1430
+ },
1431
+ {
1432
+ start: new Date(2015, 8, 11),
1433
+ end: new Date(2015, 8, 14),
1434
+ group: "MotoGP",
1435
+ className: "motorcycle",
1436
+ content: "San Marino",
1437
+ id: "551@motocal.net"
1438
+ },
1439
+ {
1440
+ start: new Date(2015, 8, 11),
1441
+ end: new Date(2015, 8, 14),
1442
+ group: "WTCC",
1443
+ className: "touringcar",
1444
+ content: "Japan",
1445
+ id: "725@motocal.net"
1446
+ },
1447
+ {
1448
+ start: new Date(2015, 8, 11),
1449
+ end: new Date(2015, 8, 14),
1450
+ group: "DTM",
1451
+ className: "touringcar",
1452
+ content: "Oschersleben",
1453
+ id: "656@motocal.net"
1454
+ },
1455
+ {
1456
+ start: new Date(2015, 8, 12),
1457
+ end: new Date(2015, 8, 14),
1458
+ group: "WSR",
1459
+ className: "openwheel",
1460
+ content: "Germany",
1461
+ id: "749@motocal.net"
1462
+ },
1463
+ {
1464
+ start: new Date(2015, 8, 12),
1465
+ end: new Date(2015, 8, 13),
1466
+ group: "SGP",
1467
+ className: "rally",
1468
+ content: "Krško",
1469
+ id: "738@motocal.net"
1470
+ },
1471
+ {
1472
+ start: new Date(2015, 8, 18),
1473
+ end: new Date(2015, 8, 21),
1474
+ group: "SBK",
1475
+ className: "motorcycle",
1476
+ content: "Spain",
1477
+ id: "627@motocal.net"
1478
+ },
1479
+ {
1480
+ start: new Date(2015, 8, 18),
1481
+ end: new Date(2015, 8, 21),
1482
+ group: "BSB",
1483
+ className: "motorcycle",
1484
+ content: "Round 10",
1485
+ id: "613@motocal.net"
1486
+ },
1487
+ {
1488
+ start: new Date(2015, 8, 18),
1489
+ end: new Date(2015, 8, 21),
1490
+ group: "F1",
1491
+ className: "openwheel",
1492
+ content: "Singapore",
1493
+ id: "643@motocal.net"
1494
+ },
1495
+ {
1496
+ start: new Date(2015, 8, 18),
1497
+ end: new Date(2015, 8, 21),
1498
+ group: "WorldRX",
1499
+ className: "rally",
1500
+ content: "Barcelona",
1501
+ id: "694@motocal.net"
1502
+ },
1503
+ {
1504
+ start: new Date(2015, 8, 19),
1505
+ end: new Date(2015, 8, 20),
1506
+ group: "WEC",
1507
+ className: "endurance",
1508
+ content: "6 Hours of Circuit of the Americas",
1509
+ id: "678@motocal.net"
1510
+ },
1511
+ {
1512
+ start: new Date(2015, 8, 19),
1513
+ end: new Date(2015, 8, 21),
1514
+ group: "EWC",
1515
+ className: "endurance",
1516
+ content: "Bol d’Or",
1517
+ id: "704@motocal.net"
1518
+ },
1519
+ {
1520
+ start: new Date(2015, 8, 25),
1521
+ end: new Date(2015, 8, 28),
1522
+ group: "MotoGP",
1523
+ className: "motorcycle",
1524
+ content: "Aragon",
1525
+ id: "570@motocal.net"
1526
+ },
1527
+ {
1528
+ start: new Date(2015, 8, 25),
1529
+ end: new Date(2015, 8, 28),
1530
+ group: "DTM",
1531
+ className: "touringcar",
1532
+ content: "N&uuml;rburgring",
1533
+ id: "657@motocal.net"
1534
+ },
1535
+ {
1536
+ start: new Date(2015, 8, 25),
1537
+ end: new Date(2015, 8, 28),
1538
+ group: "WTCC",
1539
+ className: "touringcar",
1540
+ content: "China",
1541
+ id: "726@motocal.net"
1542
+ },
1543
+ {
1544
+ start: new Date(2015, 8, 25),
1545
+ end: new Date(2015, 8, 28),
1546
+ group: "F1",
1547
+ className: "openwheel",
1548
+ content: "Japan",
1549
+ id: "644@motocal.net"
1550
+ },
1551
+ {
1552
+ start: new Date(2015, 8, 26),
1553
+ end: new Date(2015, 8, 28),
1554
+ group: "BTCC",
1555
+ className: "touringcar",
1556
+ content: "Rounds 25, 26 & 27",
1557
+ id: "589@motocal.net"
1558
+ },
1559
+ {
1560
+ start: new Date(2015, 8, 26),
1561
+ end: new Date(2015, 8, 27),
1562
+ group: "SGP",
1563
+ className: "rally",
1564
+ content: "Stockholm",
1565
+ id: "739@motocal.net"
1566
+ },
1567
+ {
1568
+ start: new Date(2015, 8, 26),
1569
+ end: new Date(2015, 8, 28),
1570
+ group: "WSR",
1571
+ className: "openwheel",
1572
+ content: "France",
1573
+ id: "750@motocal.net"
1574
+ },
1575
+ {
1576
+ start: new Date(2015, 9, 1),
1577
+ end: new Date(2015, 9, 5),
1578
+ group: "WRC",
1579
+ className: "rally",
1580
+ content: "Rallye de France",
1581
+ id: "601@motocal.net"
1582
+ },
1583
+ {
1584
+ start: new Date(2015, 9, 2),
1585
+ end: new Date(2015, 9, 5),
1586
+ group: "SBK",
1587
+ className: "motorcycle",
1588
+ content: "France",
1589
+ id: "628@motocal.net"
1590
+ },
1591
+ {
1592
+ start: new Date(2015, 9, 2),
1593
+ end: new Date(2015, 9, 5),
1594
+ group: "BSB",
1595
+ className: "motorcycle",
1596
+ content: "Round 11",
1597
+ id: "614@motocal.net"
1598
+ },
1599
+ {
1600
+ start: new Date(2015, 9, 2),
1601
+ end: new Date(2015, 9, 5),
1602
+ group: "WorldRX",
1603
+ className: "rally",
1604
+ content: "Turkey",
1605
+ id: "695@motocal.net"
1606
+ },
1607
+ {
1608
+ start: new Date(2015, 9, 3),
1609
+ end: new Date(2015, 9, 4),
1610
+ group: "SGP",
1611
+ className: "rally",
1612
+ content: "Toruń",
1613
+ id: "740@motocal.net"
1614
+ },
1615
+ {
1616
+ start: new Date(2015, 9, 8),
1617
+ end: new Date(2015, 9, 12),
1618
+ group: "V8SC",
1619
+ className: "touringcar",
1620
+ content: "Bathurst 1000",
1621
+ id: "669@motocal.net"
1622
+ },
1623
+ {
1624
+ start: new Date(2015, 9, 9),
1625
+ end: new Date(2015, 9, 12),
1626
+ group: "F1",
1627
+ className: "openwheel",
1628
+ content: "Russia",
1629
+ id: "645@motocal.net"
1630
+ },
1631
+ {
1632
+ start: new Date(2015, 9, 9),
1633
+ end: new Date(2015, 9, 12),
1634
+ group: "MotoGP",
1635
+ className: "motorcycle",
1636
+ content: "Japan",
1637
+ id: "553@motocal.net"
1638
+ },
1639
+ {
1640
+ start: new Date(2015, 9, 10),
1641
+ end: new Date(2015, 9, 12),
1642
+ group: "BTCC",
1643
+ className: "touringcar",
1644
+ content: "Rounds 28, 29 & 30",
1645
+ id: "590@motocal.net"
1646
+ },
1647
+ {
1648
+ start: new Date(2015, 9, 11),
1649
+ end: new Date(2015, 9, 12),
1650
+ group: "WEC",
1651
+ className: "endurance",
1652
+ content: "6 Hours of Fuji",
1653
+ id: "679@motocal.net"
1654
+ },
1655
+ {
1656
+ start: new Date(2015, 9, 16),
1657
+ end: new Date(2015, 9, 19),
1658
+ group: "WorldRX",
1659
+ className: "rally",
1660
+ content: "Italy",
1661
+ id: "696@motocal.net"
1662
+ },
1663
+ {
1664
+ start: new Date(2015, 9, 16),
1665
+ end: new Date(2015, 9, 19),
1666
+ group: "MotoGP",
1667
+ className: "motorcycle",
1668
+ content: "Australia",
1669
+ id: "572@motocal.net"
1670
+ },
1671
+ {
1672
+ start: new Date(2015, 9, 16),
1673
+ end: new Date(2015, 9, 19),
1674
+ group: "DTM",
1675
+ className: "touringcar",
1676
+ content: "Hockenheim",
1677
+ id: "658@motocal.net"
1678
+ },
1679
+ {
1680
+ start: new Date(2015, 9, 16),
1681
+ end: new Date(2015, 9, 19),
1682
+ group: "BSB",
1683
+ className: "motorcycle",
1684
+ content: "Round 12",
1685
+ id: "615@motocal.net"
1686
+ },
1687
+ {
1688
+ start: new Date(2015, 9, 16),
1689
+ end: new Date(2015, 9, 19),
1690
+ group: "SBK",
1691
+ className: "motorcycle",
1692
+ content: "Qatar",
1693
+ id: "629@motocal.net"
1694
+ },
1695
+ {
1696
+ start: new Date(2015, 9, 17),
1697
+ end: new Date(2015, 9, 19),
1698
+ group: "WSR",
1699
+ className: "openwheel",
1700
+ content: "Spain",
1701
+ id: "751@motocal.net"
1702
+ },
1703
+ {
1704
+ start: new Date(2015, 9, 22),
1705
+ end: new Date(2015, 9, 26),
1706
+ group: "WRC",
1707
+ className: "rally",
1708
+ content: "Rally de Espana",
1709
+ id: "602@motocal.net"
1710
+ },
1711
+ {
1712
+ start: new Date(2015, 9, 23),
1713
+ end: new Date(2015, 9, 26),
1714
+ group: "V8SC",
1715
+ className: "touringcar",
1716
+ content: "Gold Coast 600",
1717
+ id: "670@motocal.net"
1718
+ },
1719
+ {
1720
+ start: new Date(2015, 9, 23),
1721
+ end: new Date(2015, 9, 26),
1722
+ group: "MotoGP",
1723
+ className: "motorcycle",
1724
+ content: "Malaysia",
1725
+ id: "573@motocal.net"
1726
+ },
1727
+ {
1728
+ start: new Date(2015, 9, 23),
1729
+ end: new Date(2015, 9, 26),
1730
+ group: "F1",
1731
+ className: "openwheel",
1732
+ content: "United States",
1733
+ id: "646@motocal.net"
1734
+ },
1735
+ {
1736
+ start: new Date(2015, 9, 24),
1737
+ end: new Date(2015, 9, 25),
1738
+ group: "SGP",
1739
+ className: "rally",
1740
+ content: "Melbourne",
1741
+ id: "741@motocal.net"
1742
+ },
1743
+ {
1744
+ start: new Date(2015, 9, 30),
1745
+ end: new Date(2015, 10, 2),
1746
+ group: "F1",
1747
+ className: "openwheel",
1748
+ content: "Mexico",
1749
+ id: "647@motocal.net"
1750
+ },
1751
+ {
1752
+ start: new Date(2015, 9, 30),
1753
+ end: new Date(2015, 10, 2),
1754
+ group: "WTCC",
1755
+ className: "touringcar",
1756
+ content: "Thailand",
1757
+ id: "727@motocal.net"
1758
+ },
1759
+ {
1760
+ start: new Date(2015, 10, 1),
1761
+ end: new Date(2015, 10, 2),
1762
+ group: "WEC",
1763
+ className: "endurance",
1764
+ content: "6 Hours of Shanghai",
1765
+ id: "680@motocal.net"
1766
+ },
1767
+ {
1768
+ start: new Date(2015, 10, 6),
1769
+ end: new Date(2015, 10, 9),
1770
+ group: "MotoGP",
1771
+ className: "motorcycle",
1772
+ content: "Valencia",
1773
+ id: "556@motocal.net"
1774
+ },
1775
+ {
1776
+ start: new Date(2015, 10, 6),
1777
+ end: new Date(2015, 10, 9),
1778
+ group: "V8SC",
1779
+ className: "touringcar",
1780
+ content: "ITM 500 Auckland",
1781
+ id: "671@motocal.net"
1782
+ },
1783
+ {
1784
+ start: new Date(2015, 10, 12),
1785
+ end: new Date(2015, 10, 16),
1786
+ group: "WRC",
1787
+ className: "rally",
1788
+ content: "Wales Rally GB",
1789
+ id: "603@motocal.net"
1790
+ },
1791
+ {
1792
+ start: new Date(2015, 10, 13),
1793
+ end: new Date(2015, 10, 16),
1794
+ group: "F1",
1795
+ className: "openwheel",
1796
+ content: "Brazil",
1797
+ id: "648@motocal.net"
1798
+ },
1799
+ {
1800
+ start: new Date(2015, 10, 19),
1801
+ end: new Date(2015, 10, 23),
1802
+ group: "Roads",
1803
+ className: "motorcycle",
1804
+ content: "Macau Grand Prix",
1805
+ id: "685@motocal.net"
1806
+ },
1807
+ {
1808
+ start: new Date(2015, 10, 20),
1809
+ end: new Date(2015, 10, 23),
1810
+ group: "WTCC",
1811
+ className: "touringcar",
1812
+ content: "Qatar",
1813
+ id: "728@motocal.net"
1814
+ },
1815
+ {
1816
+ start: new Date(2015, 10, 20),
1817
+ end: new Date(2015, 10, 23),
1818
+ group: "V8SC",
1819
+ className: "touringcar",
1820
+ content: "Phillip Island SuperSprint",
1821
+ id: "672@motocal.net"
1822
+ },
1823
+ {
1824
+ start: new Date(2015, 10, 21),
1825
+ end: new Date(2015, 10, 22),
1826
+ group: "WEC",
1827
+ className: "endurance",
1828
+ content: "6 Hours of Bahrain",
1829
+ id: "681@motocal.net"
1830
+ },
1831
+ {
1832
+ start: new Date(2015, 10, 27),
1833
+ end: new Date(2015, 10, 30),
1834
+ group: "WorldRX",
1835
+ className: "rally",
1836
+ content: "Argentina",
1837
+ id: "700@motocal.net"
1838
+ },
1839
+ {
1840
+ start: new Date(2015, 10, 27),
1841
+ end: new Date(2015, 10, 30),
1842
+ group: "F1",
1843
+ className: "openwheel",
1844
+ content: "Abu Dhabi",
1845
+ id: "649@motocal.net"
1846
+ },
1847
+ {
1848
+ start: new Date(2015, 11, 4),
1849
+ end: new Date(2015, 11, 7),
1850
+ group: "V8SC",
1851
+ className: "touringcar",
1852
+ content: "Sydney 500",
1853
+ id: "673@motocal.net"
1854
+ },
1855
+ {
1856
+ start: new Date(2015, 2, 9),
1857
+ end: new Date(2015, 2, 11),
1858
+ group: "GP2",
1859
+ className: "openwheel",
1860
+ content: "Yas Marina Test",
1861
+ id: "1@gp2series.com"
1862
+ },
1863
+ {
1864
+ start: new Date(2015, 3, 1),
1865
+ end: new Date(2015, 3, 3),
1866
+ group: "GP2",
1867
+ className: "openwheel",
1868
+ content: "Sakhir Test",
1869
+ id: "2@gp2series.com"
1870
+ },
1871
+ {
1872
+ start: new Date(2015, 3, 17),
1873
+ end: new Date(2015, 3, 19),
1874
+ group: "GP2",
1875
+ className: "openwheel",
1876
+ content: "Sakhir, Bahrain",
1877
+ id: "3@gp2series.com"
1878
+ },
1879
+ {
1880
+ start: new Date(2015, 4, 8),
1881
+ end: new Date(2015, 4, 10),
1882
+ group: "GP2",
1883
+ className: "openwheel",
1884
+ content: "Barcelona, Spain",
1885
+ id: "4@gp2series.com"
1886
+ },
1887
+ {
1888
+ start: new Date(2015, 4, 21),
1889
+ end: new Date(2015, 4, 23),
1890
+ group: "GP2",
1891
+ className: "openwheel",
1892
+ content: "Monte Carlo, Monaco",
1893
+ id: "5@gp2series.com"
1894
+ },
1895
+ {
1896
+ start: new Date(2015, 5, 19),
1897
+ end: new Date(2015, 5, 21),
1898
+ group: "GP2",
1899
+ className: "openwheel",
1900
+ content: "Spielber, Austria",
1901
+ id: "6@gp2series.com"
1902
+ },
1903
+ {
1904
+ start: new Date(2015, 6, 3),
1905
+ end: new Date(2015, 6, 5),
1906
+ group: "GP2",
1907
+ className: "openwheel",
1908
+ content: "Silverstone, Great-Britain",
1909
+ id: "7@gp2series.com"
1910
+ },
1911
+ {
1912
+ start: new Date(2015, 6, 24),
1913
+ end: new Date(2015, 6, 26),
1914
+ group: "GP2",
1915
+ className: "openwheel",
1916
+ content: "Budapest, Hungary",
1917
+ id: "8@gp2series.com"
1918
+ },
1919
+ {
1920
+ start: new Date(2015, 7, 21),
1921
+ end: new Date(2015, 7, 23),
1922
+ group: "GP2",
1923
+ className: "openwheel",
1924
+ content: "Spa-Francorchamps, Belgium",
1925
+ id: "9@gp2series.com"
1926
+ },
1927
+ {
1928
+ start: new Date(2015, 8, 4),
1929
+ end: new Date(2015, 8, 6),
1930
+ group: "GP2",
1931
+ className: "openwheel",
1932
+ content: "Monza, Italy",
1933
+ id: "10@gp2series.com"
1934
+ },
1935
+ {
1936
+ start: new Date(2015, 9, 9),
1937
+ end: new Date(2015, 9, 11),
1938
+ group: "GP2",
1939
+ className: "openwheel",
1940
+ content: "Sochi, Russia",
1941
+ id: "11@gp2series.com"
1942
+ },
1943
+ {
1944
+ start: new Date(2015, 10, 27),
1945
+ end: new Date(2015, 10, 29),
1946
+ group: "GP2",
1947
+ className: "openwheel",
1948
+ content: "Yas Marina, UAE",
1949
+ id: "12@gp2series.com"
1950
+ },
1951
+ ])
1952
+
1953
+
1954
+ // create visualization
1955
+ var container = document.getElementById('visualization');
1956
+ var options = {
1957
+ // option groupOrder can be a property name or a sort function
1958
+ // the sort function must compare two groups and return a value
1959
+ // > 0 when a > b
1960
+ // < 0 when a < b
1961
+ // 0 when a == b
1962
+ groupOrder: function (a, b) {
1963
+ return a.value - b.value;
1964
+ },
1965
+ groupOrderSwap: function (a, b, groups) {
1966
+ var v = a.value;
1967
+ a.value = b.value;
1968
+ b.value = v;
1969
+ },
1970
+ groupTemplate: function (group) {
1971
+ var container = document.createElement('div');
1972
+ var label = document.createElement('span');
1973
+ label.innerHTML = group.content + ' ';
1974
+ container.insertAdjacentElement('afterBegin', label);
1975
+ var hide = document.createElement('button');
1976
+ hide.innerHTML = 'hide';
1977
+ hide.style.fontSize = 'small';
1978
+ hide.addEventListener('click', function () {
1979
+ groups.update({
1980
+ id: group.id,
1981
+ visible: false
1982
+ });
1983
+ });
1984
+ container.insertAdjacentElement('beforeEnd', hide);
1985
+ return container;
1986
+ },
1987
+ orientation: 'both',
1988
+ editable: true,
1989
+ groupEditable: true,
1990
+ start: new Date(2015, 6, 1),
1991
+ end: new Date(2015, 10, 1)
1992
+ };
1993
+
1994
+ var timeline = new vis.Timeline(container);
1995
+ timeline.setOptions(options);
1996
+ timeline.setGroups(groups);
1997
+ timeline.setItems(items);
1998
+ </script>
1999
+ </body>
2000
+
2001
+ </html>