cesium 0.13.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. data/app/assets/javascripts/Cesium.js +2 -2
  2. data/app/assets/javascripts/Core/Clock.js +81 -81
  3. data/app/assets/javascripts/Core/ClockRange.js +5 -3
  4. data/app/assets/javascripts/Core/ClockStep.js +7 -1
  5. data/app/assets/javascripts/Core/Event.js +12 -11
  6. data/app/assets/javascripts/Core/JulianDate.js +16 -0
  7. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +1 -1
  8. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +1 -1
  9. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +1 -1
  10. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +1 -1
  11. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +1 -1
  12. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +1 -1
  13. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +1 -1
  14. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +1 -1
  15. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +1 -1
  16. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +1 -1
  17. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +1 -1
  18. data/app/assets/javascripts/Renderer/ClearCommand.js +1 -1
  19. data/app/assets/javascripts/Renderer/Context.js +23 -0
  20. data/app/assets/javascripts/Renderer/DrawCommand.js +1 -1
  21. data/app/assets/javascripts/Scene/BillboardCollection.js +14 -24
  22. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +8 -31
  23. data/app/assets/javascripts/Scene/PerformanceDisplay.js +13 -4
  24. data/app/assets/javascripts/Scene/Tile.js +11 -6
  25. data/app/assets/javascripts/Scene/ViewportQuad.js +21 -36
  26. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +15 -11
  27. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +47 -27
  28. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +886 -228
  29. data/app/assets/javascripts/Shaders/CentralBodyFS.js +173 -40
  30. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +17 -14
  31. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +25 -19
  32. data/app/assets/javascripts/Shaders/CentralBodyVS.js +61 -31
  33. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +5 -4
  34. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +9 -7
  35. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +392 -299
  36. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +12 -8
  37. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +836 -530
  38. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -58
  39. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +7 -6
  40. data/app/assets/javascripts/Shaders/EllipsoidFS.js +34 -26
  41. data/app/assets/javascripts/Shaders/EllipsoidVS.js +21 -5
  42. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +19 -11
  43. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +13 -9
  44. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +33 -22
  45. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +24 -17
  46. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +14 -10
  47. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -20
  48. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +11 -6
  49. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +18 -13
  50. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +12 -7
  51. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +9 -6
  52. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +23 -16
  53. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +14 -11
  54. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +10 -8
  55. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +10 -8
  56. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +12 -7
  57. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +21 -12
  58. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +11 -7
  59. data/app/assets/javascripts/Shaders/Materials/Water.js +46 -45
  60. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +29 -19
  61. data/app/assets/javascripts/Shaders/Noise.js +408 -173
  62. data/app/assets/javascripts/Shaders/PolygonFS.js +20 -10
  63. data/app/assets/javascripts/Shaders/PolygonFSPick.js +3 -3
  64. data/app/assets/javascripts/Shaders/PolygonVS.js +27 -22
  65. data/app/assets/javascripts/Shaders/PolygonVSPick.js +23 -19
  66. data/app/assets/javascripts/Shaders/PolylineFS.js +3 -3
  67. data/app/assets/javascripts/Shaders/PolylineVS.js +24 -19
  68. data/app/assets/javascripts/Shaders/Ray.js +496 -315
  69. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +16 -6
  70. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +5 -2
  71. data/app/assets/javascripts/Shaders/SensorVolume.js +32 -15
  72. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +61 -16
  73. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +106 -53
  74. data/app/assets/javascripts/Shaders/SkyBoxFS.js +4 -2
  75. data/app/assets/javascripts/Shaders/SkyBoxVS.js +5 -3
  76. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +14 -10
  77. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +6 -5
  78. data/app/assets/javascripts/ThirdParty/knockout.js +88 -0
  79. data/app/assets/javascripts/Widgets/Animation/Animation.css +141 -0
  80. data/app/assets/javascripts/Widgets/Animation/Animation.js +944 -0
  81. data/app/assets/javascripts/Widgets/Animation/AnimationViewModel.js +503 -0
  82. data/app/assets/javascripts/Widgets/Animation/darker.css +69 -0
  83. data/app/assets/javascripts/Widgets/ClockViewModel.js +167 -0
  84. data/app/assets/javascripts/Widgets/Command.js +33 -0
  85. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +54 -77
  86. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +6 -27
  87. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +124 -187
  88. data/app/assets/javascripts/Widgets/Fullscreen/FullscreenViewModel.js +88 -0
  89. data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.css +16 -0
  90. data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.js +50 -0
  91. data/app/assets/javascripts/Widgets/Fullscreen/darker.css +14 -0
  92. data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +18 -0
  93. data/app/assets/javascripts/Widgets/Images/enterFullscreen.svg +18 -0
  94. data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +18 -0
  95. data/app/assets/javascripts/Widgets/Images/exitFullscreen.svg +18 -0
  96. data/app/assets/javascripts/Widgets/Observable.js +29 -0
  97. data/app/assets/javascripts/Widgets/{Timeline.css → Timeline/Timeline.css} +18 -21
  98. data/app/assets/javascripts/Widgets/{Timeline.js → Timeline/Timeline.js} +12 -7
  99. data/app/assets/javascripts/Widgets/{TimelineHighlightRange.js → Timeline/TimelineHighlightRange.js} +0 -0
  100. data/app/assets/javascripts/Widgets/{TimelineTrack.js → Timeline/TimelineTrack.js} +1 -1
  101. data/app/assets/javascripts/Widgets/Timeline/darker.css +20 -0
  102. data/app/assets/javascripts/Widgets/ToggleButtonViewModel.js +40 -0
  103. data/app/assets/javascripts/Widgets/createCommand.js +41 -0
  104. data/lib/cesium/version.rb +1 -1
  105. data/test/dummy/log/development.log +3300 -0
  106. data/test/dummy/tmp/cache/assets/C0D/D90/sprockets%2F297417de8571859510683b028659bf97 +0 -0
  107. data/test/dummy/tmp/cache/assets/C5E/6E0/sprockets%2F990a847694744e4ac598dc125572a243 +0 -0
  108. data/test/dummy/tmp/cache/assets/C64/470/sprockets%2Fa605a34504c3a61f1e0309374154a4f2 +0 -0
  109. data/test/dummy/tmp/cache/assets/C6C/D20/sprockets%2F8214271b512224e3f7a73a322e85b15c +0 -0
  110. data/test/dummy/tmp/cache/assets/C6E/8C0/sprockets%2F13ad4320ee685ee062033b0806b07756 +0 -0
  111. data/test/dummy/tmp/cache/assets/C71/D40/sprockets%2F191b5a7162930434c9ea09419d2c0c42 +0 -0
  112. data/test/dummy/tmp/cache/assets/C75/FC0/sprockets%2F7100611b808c367104f4537af8b467ca +0 -0
  113. data/test/dummy/tmp/cache/assets/C77/C90/sprockets%2F5c6d277228741022bef80d17b5422c55 +0 -0
  114. data/test/dummy/tmp/cache/assets/C7B/2E0/sprockets%2F049f5400e934154d876d9e7a110d0b72 +0 -0
  115. data/test/dummy/tmp/cache/assets/C7D/290/sprockets%2F07b270a59082157be139ee653b4435b9 +0 -0
  116. data/test/dummy/tmp/cache/assets/C82/860/sprockets%2Fbd185743a7cf9fa41b72715364178414 +0 -0
  117. data/test/dummy/tmp/cache/assets/C83/5B0/sprockets%2F11288f143903cfc5595d8a5771f51f20 +0 -0
  118. data/test/dummy/tmp/cache/assets/C84/210/sprockets%2F5e7c3418b40688a85916fd18512fc213 +0 -0
  119. data/test/dummy/tmp/cache/assets/C85/2A0/sprockets%2F409dfb449462105286e47c6a8c32860e +0 -0
  120. data/test/dummy/tmp/cache/assets/C87/790/sprockets%2F49d9e234d84217773d540a5b4813fc64 +0 -0
  121. data/test/dummy/tmp/cache/assets/C8C/C50/sprockets%2F87a1327314e4aa2a3ea44a33a4730420 +0 -0
  122. data/test/dummy/tmp/cache/assets/C9C/B20/sprockets%2Fc3000c708c2d95253d8a414d6c087d10 +0 -0
  123. data/test/dummy/tmp/cache/assets/C9E/DC0/sprockets%2F2f7b17e380320fe9d0650d3aa4614432 +0 -0
  124. data/test/dummy/tmp/cache/assets/C9F/9B0/sprockets%2Faeb280e1126521372c0bd6660e22969b +0 -0
  125. data/test/dummy/tmp/cache/assets/CA0/9A0/sprockets%2Fc1e9542f7960491862764447bf6d7f9e +0 -0
  126. data/test/dummy/tmp/cache/assets/CA1/C10/sprockets%2F804602800eb2e183aa91825b5f881b0d +0 -0
  127. data/test/dummy/tmp/cache/assets/CA6/DD0/sprockets%2F8b2532b8158e7333d5392bb505ca512f +0 -0
  128. data/test/dummy/tmp/cache/assets/CA8/4C0/sprockets%2Fbe667b320658d0297c210cb43c77b760 +0 -0
  129. data/test/dummy/tmp/cache/assets/CA9/340/sprockets%2Fd3c10509ea49a62e909622f77f4b3220 +0 -0
  130. data/test/dummy/tmp/cache/assets/CA9/430/sprockets%2F68e71052d60ebac0303e9e883c541265 +0 -0
  131. data/test/dummy/tmp/cache/assets/CAB/380/sprockets%2Fc2d6119b9334706b0b40e54f93f431f7 +0 -0
  132. data/test/dummy/tmp/cache/assets/CAC/820/sprockets%2F6b14c16171e49a1128966926eade622b +0 -0
  133. data/test/dummy/tmp/cache/assets/CB2/A60/sprockets%2F5583541ee042c37a846d149d80c8a36d +0 -0
  134. data/test/dummy/tmp/cache/assets/CB2/F30/sprockets%2Fcd4160d432937934435655ca7c56c5fa +0 -0
  135. data/test/dummy/tmp/cache/assets/CB3/280/sprockets%2F7e73589c2b0009c3748f7a068242cc7a +0 -0
  136. data/test/dummy/tmp/cache/assets/CB4/A90/sprockets%2F8fa8411bd1707443dcf02695b9a80776 +0 -0
  137. data/test/dummy/tmp/cache/assets/CB4/F10/sprockets%2F06ee620db145798202a9fd4c1849944b +0 -0
  138. data/test/dummy/tmp/cache/assets/CB8/3B0/sprockets%2Fd03836e3d10fb91125597086f6dcc848 +0 -0
  139. data/test/dummy/tmp/cache/assets/CB9/280/sprockets%2F0e4025fc9a78a70774353617a9b7e96a +0 -0
  140. data/test/dummy/tmp/cache/assets/CBB/3F0/sprockets%2F410c0a86475946a391fc849c9c34e5e4 +0 -0
  141. data/test/dummy/tmp/cache/assets/CBE/B60/sprockets%2F872738245c2698dd11952e55f1d2cd5f +0 -0
  142. data/test/dummy/tmp/cache/assets/CC2/090/sprockets%2F1f4c818e07baa8b05de5987748339952 +0 -0
  143. data/test/dummy/tmp/cache/assets/CC3/D90/sprockets%2Fd7e90e060a9924b61d0b2c6d102c0024 +0 -0
  144. data/test/dummy/tmp/cache/assets/CC8/310/sprockets%2F3d942c768ca693e08155d8a9b2195e99 +0 -0
  145. data/test/dummy/tmp/cache/assets/CC8/9F0/sprockets%2Fbc7ef55837e5097405e3f5097fe35961 +0 -0
  146. data/test/dummy/tmp/cache/assets/CC8/A80/sprockets%2F887a36c292044706f9d58ee02f659eb9 +0 -0
  147. data/test/dummy/tmp/cache/assets/CC8/E20/sprockets%2F27297a29159534cf493ff55576c9faa5 +0 -0
  148. data/test/dummy/tmp/cache/assets/CCD/040/sprockets%2Faf449bc1503080d6262424c20bb97b6d +0 -0
  149. data/test/dummy/tmp/cache/assets/CCD/210/sprockets%2F33c821e4b3b2538af0c79006df1318d0 +0 -0
  150. data/test/dummy/tmp/cache/assets/CCD/8B0/sprockets%2F738651415c65eb022af5ec9230a6b2b1 +0 -0
  151. data/test/dummy/tmp/cache/assets/CCF/180/sprockets%2F39ad17e27f30e3d0080675315bdae602 +0 -0
  152. data/test/dummy/tmp/cache/assets/CD0/CB0/sprockets%2F139767c003a27a8b5da08fc3714c072b +0 -0
  153. data/test/dummy/tmp/cache/assets/CD2/6E0/sprockets%2F161543077a1e9c52a2d577bbc3d41e62 +0 -0
  154. data/test/dummy/tmp/cache/assets/CD3/5A0/sprockets%2F3b02ea5d52854a16dea8336c339c5090 +0 -0
  155. data/test/dummy/tmp/cache/assets/CD5/9F0/sprockets%2F72d2b1b535d37251fb45c4754d62e2a6 +0 -0
  156. data/test/dummy/tmp/cache/assets/CDA/170/sprockets%2Ffae3735873d2d340da1827ee6246500e +0 -0
  157. data/test/dummy/tmp/cache/assets/CDA/C40/sprockets%2F1d06e02833dd2620777ee9818ec61bb0 +0 -0
  158. data/test/dummy/tmp/cache/assets/CDC/080/sprockets%2Fb33c033c645ff28315cc958538cd5b13 +0 -0
  159. data/test/dummy/tmp/cache/assets/CDC/990/sprockets%2F913dd1f104b8b71495b00d798c2922de +0 -0
  160. data/test/dummy/tmp/cache/assets/CDD/090/sprockets%2F62a239aa6b1847f0cd82f6e5b7187303 +0 -0
  161. data/test/dummy/tmp/cache/assets/CDF/E30/sprockets%2F27d4b1eb52518a0667aef8525455b57c +0 -0
  162. data/test/dummy/tmp/cache/assets/CE6/E20/sprockets%2F0c20945489c7228a66bb54fd7cc449f0 +0 -0
  163. data/test/dummy/tmp/cache/assets/CE8/F00/sprockets%2Fd5833932a705129ff7ce6072ee0fb945 +0 -0
  164. data/test/dummy/tmp/cache/assets/CE9/C20/sprockets%2F5c49d701727e703847268f9fffdba020 +0 -0
  165. data/test/dummy/tmp/cache/assets/CED/610/sprockets%2F678ef9639f922616c1ced8f3b1b12931 +0 -0
  166. data/test/dummy/tmp/cache/assets/CEE/300/sprockets%2Fc27f86c561d6e1e8c08d5f852857b025 +0 -0
  167. data/test/dummy/tmp/cache/assets/CEF/B50/sprockets%2F877a93d34cbc7b4cf1837a56398f0185 +0 -0
  168. data/test/dummy/tmp/cache/assets/CF2/6B0/sprockets%2F8c7e5aab44b8703a6379569d887145be +0 -0
  169. data/test/dummy/tmp/cache/assets/CF3/2A0/sprockets%2Fcf7fca385a816577b9a3a8583117696d +0 -0
  170. data/test/dummy/tmp/cache/assets/CF5/5E0/sprockets%2Fdaf7891f7f08019202f8576899bb51ce +0 -0
  171. data/test/dummy/tmp/cache/assets/CF5/F60/sprockets%2Fbf00d9de7199bf7775c55128a295b677 +0 -0
  172. data/test/dummy/tmp/cache/assets/CF6/F60/sprockets%2Fc8e90a0ee2521916c1aa1a41b6463a63 +0 -0
  173. data/test/dummy/tmp/cache/assets/CF8/AB0/sprockets%2F7755643d4dc601cdf47e9886b4f379a5 +0 -0
  174. data/test/dummy/tmp/cache/assets/CF8/FA0/sprockets%2F853bda27091dea80f5121d20a08b53a7 +0 -0
  175. data/test/dummy/tmp/cache/assets/CFC/970/sprockets%2Fbe27af53c78bc90a6113a41620a448e1 +0 -0
  176. data/test/dummy/tmp/cache/assets/D01/160/sprockets%2Fa74c8a20e3158be3fb170499a11093db +0 -0
  177. data/test/dummy/tmp/cache/assets/D01/4A0/sprockets%2F9e53138a5fa453940a6190c1ba3ac36e +0 -0
  178. data/test/dummy/tmp/cache/assets/D09/360/sprockets%2Fe5d09aa6884c385437dbb18ca301e353 +0 -0
  179. data/test/dummy/tmp/cache/assets/D0D/990/sprockets%2F9cbe1835abd85d521b876411a56cb672 +0 -0
  180. data/test/dummy/tmp/cache/assets/D0E/610/sprockets%2F3e14d0cbb1493615f7d23438bf8fd068 +0 -0
  181. data/test/dummy/tmp/cache/assets/D0F/870/sprockets%2F7597efb306ce615354e507d02edd14d4 +0 -0
  182. data/test/dummy/tmp/cache/assets/D10/590/sprockets%2F80386d276f6569b0a12ae1be155f9b3e +0 -0
  183. data/test/dummy/tmp/cache/assets/D11/060/sprockets%2F6d0bee24e84229bd6014301c878ff6d6 +0 -0
  184. data/test/dummy/tmp/cache/assets/D11/6A0/sprockets%2Ff21a9f2e8f4075086e68cda0059b25e2 +0 -0
  185. data/test/dummy/tmp/cache/assets/D11/A30/sprockets%2F210c5ab2fecdef47005c7308685e9297 +0 -0
  186. data/test/dummy/tmp/cache/assets/D12/460/sprockets%2F9c0db7ab725c7c7b15d2450657fe2369 +0 -0
  187. data/test/dummy/tmp/cache/assets/D12/760/sprockets%2F03c39aaab0669a6e9670a29f048db686 +0 -0
  188. data/test/dummy/tmp/cache/assets/D12/A90/sprockets%2F5f4bf0f279ca050491c07688df6d7c02 +0 -0
  189. data/test/dummy/tmp/cache/assets/D14/020/sprockets%2F0c3544de7e7bd74ee6e2040477f04a88 +0 -0
  190. data/test/dummy/tmp/cache/assets/D15/9B0/sprockets%2F015d78bcd557b68b039a7abd33b47679 +0 -0
  191. data/test/dummy/tmp/cache/assets/D19/B40/sprockets%2F1f58b7a260a18bcc697883f96e266a1b +0 -0
  192. data/test/dummy/tmp/cache/assets/D1A/520/sprockets%2Fe32e6a17fb333c5883939fcb234d2f69 +0 -0
  193. data/test/dummy/tmp/cache/assets/D1C/6B0/sprockets%2F3c7df42c4a83942ffb31d85d827595b4 +0 -0
  194. data/test/dummy/tmp/cache/assets/D1C/BD0/sprockets%2Ff389718cb2ba6fe3e0e0c420398f9486 +0 -0
  195. data/test/dummy/tmp/cache/assets/D21/E90/sprockets%2F2fe752c3566ccd57f7ee339086fc3427 +0 -0
  196. data/test/dummy/tmp/cache/assets/D23/CD0/sprockets%2F20f79a5d5570f3efef4de79621355e49 +0 -0
  197. data/test/dummy/tmp/cache/assets/D23/D30/sprockets%2F71867caa2cf28987ed0048cf7d3a7569 +0 -0
  198. data/test/dummy/tmp/cache/assets/D24/EF0/sprockets%2F776d054d84f539061bd8ddffa66906c8 +0 -0
  199. data/test/dummy/tmp/cache/assets/D25/4D0/sprockets%2Fde6d162f5e2a587d9564e88d90c773a3 +0 -0
  200. data/test/dummy/tmp/cache/assets/D27/A90/sprockets%2F1a25693899836d58cad4cbfe8c7a7707 +0 -0
  201. data/test/dummy/tmp/cache/assets/D2D/F30/sprockets%2Fc75a2beb051b582840cf3800d55b26dc +0 -0
  202. data/test/dummy/tmp/cache/assets/D2D/F80/sprockets%2F0293aae3c8d8a4fda11a0883c48b5222 +0 -0
  203. data/test/dummy/tmp/cache/assets/D2E/600/sprockets%2Fda9f7539b9df0aa7d763d14999870d94 +0 -0
  204. data/test/dummy/tmp/cache/assets/D33/040/sprockets%2F6593d8c52e0b617a12ae2c49aa6e3b07 +0 -0
  205. data/test/dummy/tmp/cache/assets/D34/7A0/sprockets%2F4b4a0c9775248b2e49c1bae8a72a05c3 +0 -0
  206. data/test/dummy/tmp/cache/assets/D36/770/sprockets%2F2942b9a5caa50e9107de74eca152619c +0 -0
  207. data/test/dummy/tmp/cache/assets/D37/9C0/sprockets%2Fdfa99409821a9d0d1d6f30b5461b1ae5 +0 -0
  208. data/test/dummy/tmp/cache/assets/D38/930/sprockets%2F1dd724d3466a12a84bb248dc7e6d06c6 +0 -0
  209. data/test/dummy/tmp/cache/assets/D39/7E0/sprockets%2F0a236c2722565068da14f7ecf7b7a8da +0 -0
  210. data/test/dummy/tmp/cache/assets/D3A/420/sprockets%2Fbd47498d7cbba00ab9c8201883915f2a +0 -0
  211. data/test/dummy/tmp/cache/assets/D3B/BB0/sprockets%2Ff533a1adca88a3594ec94233f71eb812 +0 -0
  212. data/test/dummy/tmp/cache/assets/D3B/E20/sprockets%2Fd20320e720f8dc2779b4ec627eb15fb6 +0 -0
  213. data/test/dummy/tmp/cache/assets/D3D/080/sprockets%2F007ac06f3c784668b28baba6902eec76 +0 -0
  214. data/test/dummy/tmp/cache/assets/D3D/D30/sprockets%2F5fa8cd221b97c829234dc81721eea60e +0 -0
  215. data/test/dummy/tmp/cache/assets/D3E/1F0/sprockets%2F6e84e3f3e420bd5ad7f336ce41750d36 +0 -0
  216. data/test/dummy/tmp/cache/assets/D3F/960/sprockets%2F237931317e014eabd96932637ffadddc +0 -0
  217. data/test/dummy/tmp/cache/assets/D42/460/sprockets%2Fb195b37929fa63c85fbfb573aa05d209 +0 -0
  218. data/test/dummy/tmp/cache/assets/D42/F90/sprockets%2F632555653af85b04e418abb9dee238cf +0 -0
  219. data/test/dummy/tmp/cache/assets/D44/400/sprockets%2F3cdc153bbcae4ac07e75193678d61996 +0 -0
  220. data/test/dummy/tmp/cache/assets/D46/D10/sprockets%2F3399d1c2c5dbc7c9e0f2106296d82fd7 +0 -0
  221. data/test/dummy/tmp/cache/assets/D47/A70/sprockets%2F526b1eb3f0c2369b0c16c96ddf775f96 +0 -0
  222. data/test/dummy/tmp/cache/assets/D48/180/sprockets%2Ffce9aa3720b73d2259e644a2e3a99c89 +0 -0
  223. data/test/dummy/tmp/cache/assets/D48/6F0/sprockets%2F7a67d797a92f48d3104ecf5e42b5bc71 +0 -0
  224. data/test/dummy/tmp/cache/assets/D4A/7B0/sprockets%2F8cbd4e8cdea7e3e486565d92b2271561 +0 -0
  225. data/test/dummy/tmp/cache/assets/D4C/2C0/sprockets%2F096baecb9254aaa68d12c0a3c34a2121 +0 -0
  226. data/test/dummy/tmp/cache/assets/D4E/440/sprockets%2F141dfe7665828ab1d5ee647d0e797e5a +0 -0
  227. data/test/dummy/tmp/cache/assets/D4F/D90/sprockets%2F1e4fde9a33bb918796edc96eb0805564 +0 -0
  228. data/test/dummy/tmp/cache/assets/D50/390/sprockets%2F04f3299f7c28fa65842d4bda257df9d5 +0 -0
  229. data/test/dummy/tmp/cache/assets/D51/330/sprockets%2F0e113bb1dc7050041be6f8d28c4ebb41 +0 -0
  230. data/test/dummy/tmp/cache/assets/D57/370/sprockets%2F102e7ebfa287ea2e1b58052b052c1ee2 +0 -0
  231. data/test/dummy/tmp/cache/assets/D57/C50/sprockets%2F28a22bacabfe4b780402b3ca83a54843 +0 -0
  232. data/test/dummy/tmp/cache/assets/D57/D00/sprockets%2Fbb9c7666fe4175a054557fff4ccf5983 +0 -0
  233. data/test/dummy/tmp/cache/assets/D59/E30/sprockets%2Fa8a09c836fc128ee889ce97d72e6444c +0 -0
  234. data/test/dummy/tmp/cache/assets/D5C/800/sprockets%2Fdd1b21cea3433ac792403e3de4f84f11 +0 -0
  235. data/test/dummy/tmp/cache/assets/D5D/140/sprockets%2Ffca988958f2a37ce8eb6b77337e793c0 +0 -0
  236. data/test/dummy/tmp/cache/assets/D5F/630/sprockets%2Ff2df01200f9420db5285f15bbdf4e34e +0 -0
  237. data/test/dummy/tmp/cache/assets/D61/420/sprockets%2F79102ecb63d32f0f43e46f481acab0c7 +0 -0
  238. data/test/dummy/tmp/cache/assets/D61/B10/sprockets%2F56a7f22ca114fc32e60a2ca8e5c946e1 +0 -0
  239. data/test/dummy/tmp/cache/assets/D61/C00/sprockets%2F71ad51ea200867d43de03b8b25eb3e6f +0 -0
  240. data/test/dummy/tmp/cache/assets/D63/400/sprockets%2F30721d1c6698a64ac1cdc7e8d3ad37a0 +0 -0
  241. data/test/dummy/tmp/cache/assets/D65/3D0/sprockets%2Fc70f23593414be8a0daf25149ecb06fd +0 -0
  242. data/test/dummy/tmp/cache/assets/D68/020/sprockets%2Fc393ddcb5c7dbaf1665bc90491523d23 +0 -0
  243. data/test/dummy/tmp/cache/assets/D68/9F0/sprockets%2F0a2eac996cb10aab983963ec21c9d166 +0 -0
  244. data/test/dummy/tmp/cache/assets/D68/FA0/sprockets%2F315d926695d2ababc102ded8362e7c7b +0 -0
  245. data/test/dummy/tmp/cache/assets/D69/810/sprockets%2F8a4fedc6fc72ca37c7403924c01b374d +0 -0
  246. data/test/dummy/tmp/cache/assets/D6A/400/sprockets%2F7797a681a0c8c541bad4febaa526920e +0 -0
  247. data/test/dummy/tmp/cache/assets/D6A/800/sprockets%2F9e3ba44ae81df1dc8c541a05e0239c79 +0 -0
  248. data/test/dummy/tmp/cache/assets/D6B/890/sprockets%2Fdacdb6e192b1709870319bbb0feb3669 +0 -0
  249. data/test/dummy/tmp/cache/assets/D6D/DD0/sprockets%2Ffbfa79e06a10e3016c741fff74c5e652 +0 -0
  250. data/test/dummy/tmp/cache/assets/D6E/540/sprockets%2F1ec9a9013efe375e03b9ba538af9b515 +0 -0
  251. data/test/dummy/tmp/cache/assets/D70/D70/sprockets%2Fd7f6a9d69e31ff706e22c0b283b6a1e4 +0 -0
  252. data/test/dummy/tmp/cache/assets/D70/F70/sprockets%2Ff296c418125b7be0bc89c34eec50e82d +0 -0
  253. data/test/dummy/tmp/cache/assets/D71/6E0/sprockets%2F8c3e23061d8826cf63999adbe4a0d5ba +0 -0
  254. data/test/dummy/tmp/cache/assets/D73/3D0/sprockets%2Fbad4cc5e382119c131bd5947dd7c96e7 +0 -0
  255. data/test/dummy/tmp/cache/assets/D74/9D0/sprockets%2F1893ad2efa07114b729fd1f09ae97f4e +0 -0
  256. data/test/dummy/tmp/cache/assets/D74/EE0/sprockets%2Fe68a01853f554a88bb865bc94ba1bbd9 +0 -0
  257. data/test/dummy/tmp/cache/assets/D75/900/sprockets%2F857ad23ff231bc76bec12fd9a966538a +0 -0
  258. data/test/dummy/tmp/cache/assets/D76/060/sprockets%2Fd80d293a509fdecc872163f94b8fcc13 +0 -0
  259. data/test/dummy/tmp/cache/assets/D76/350/sprockets%2F66508d9698453a0ffabcf1368ca7a1fc +0 -0
  260. data/test/dummy/tmp/cache/assets/D79/820/sprockets%2F99bcacecd3fb76124a968b4b8341e729 +0 -0
  261. data/test/dummy/tmp/cache/assets/D7E/130/sprockets%2F1affef8c994fdc43ba85491b2724627f +0 -0
  262. data/test/dummy/tmp/cache/assets/D7E/C00/sprockets%2F8ed69e6fd77505a244caf6dde36822e3 +0 -0
  263. data/test/dummy/tmp/cache/assets/D80/7A0/sprockets%2F68e74ee988b46d128ff3020bc0e9c7fd +0 -0
  264. data/test/dummy/tmp/cache/assets/D82/800/sprockets%2F9f0d326f40e88f324ff3a367d9b3fc9f +0 -0
  265. data/test/dummy/tmp/cache/assets/D84/650/sprockets%2Fea05e644410721afbbd8fd1a3a7a1c08 +0 -0
  266. data/test/dummy/tmp/cache/assets/D89/3A0/sprockets%2F53ef2870ac0bb142a8322eee9adca207 +0 -0
  267. data/test/dummy/tmp/cache/assets/D8B/240/sprockets%2Faddf06da0d70aa150d16b97b6816d0d6 +0 -0
  268. data/test/dummy/tmp/cache/assets/D8B/3B0/sprockets%2Fd0c134b0b275ea2f800380fcaebc95f5 +0 -0
  269. data/test/dummy/tmp/cache/assets/D8D/F70/sprockets%2F70d5fc5c803f7ba21c3a7374003bfcdd +0 -0
  270. data/test/dummy/tmp/cache/assets/D8F/B90/sprockets%2F5468bccabc20d4cf562bd110508df3d8 +0 -0
  271. data/test/dummy/tmp/cache/assets/D92/3B0/sprockets%2Fc03a95a4b2eb432d9f5ceda3fb082860 +0 -0
  272. data/test/dummy/tmp/cache/assets/D93/FE0/sprockets%2Fac1c5a644564a7fd2861539dbaf2a0fb +0 -0
  273. data/test/dummy/tmp/cache/assets/D95/500/sprockets%2Fa3c0fdf5260f72d128f7cbb2a64fd408 +0 -0
  274. data/test/dummy/tmp/cache/assets/D97/2E0/sprockets%2F93c35b873a3c8ea35f1628e1ad2deb2b +0 -0
  275. data/test/dummy/tmp/cache/assets/D97/4A0/sprockets%2F2fae66f8ad04be7ce8109005c735acf1 +0 -0
  276. data/test/dummy/tmp/cache/assets/D98/E90/sprockets%2F04cdcb52b072efd49452f2cde9721fb4 +0 -0
  277. data/test/dummy/tmp/cache/assets/D9C/E90/sprockets%2F7d2da4bd8ee5b4ff754581d41806aba2 +0 -0
  278. data/test/dummy/tmp/cache/assets/DA0/2C0/sprockets%2F61c0dfd9a973f9891cd3d6b322bc33ea +0 -0
  279. data/test/dummy/tmp/cache/assets/DA0/C70/sprockets%2Ff29a718bce262c8d86f3abe9443b41cb +0 -0
  280. data/test/dummy/tmp/cache/assets/DA3/A00/sprockets%2F7e7df285dbb4694a5f1583fba12ab84d +0 -0
  281. data/test/dummy/tmp/cache/assets/DA3/EC0/sprockets%2F159d528ec53e415cbc9d29be3a2b96fb +0 -0
  282. data/test/dummy/tmp/cache/assets/DA5/170/sprockets%2F6a564a0e1afd718a07d87f069bc48dff +0 -0
  283. data/test/dummy/tmp/cache/assets/DA6/730/sprockets%2F5758d9d4ad2c22c9ffd113a78f6d36bb +0 -0
  284. data/test/dummy/tmp/cache/assets/DA7/6F0/sprockets%2F3e39ce593cda9b3bce9c3c8e014829b5 +0 -0
  285. data/test/dummy/tmp/cache/assets/DA9/0B0/sprockets%2F66e39ce1e6e7adc58cb01550fe58c93d +0 -0
  286. data/test/dummy/tmp/cache/assets/DAD/9D0/sprockets%2Fc99ec7c84f8f79200eda8424c6bda6e1 +0 -0
  287. data/test/dummy/tmp/cache/assets/DAE/B70/sprockets%2F278f525bc64f4ead949d9dfa1f1a37c8 +0 -0
  288. data/test/dummy/tmp/cache/assets/DB3/740/sprockets%2F3fc2be88f7fa50a9992fe961ffc50a83 +0 -0
  289. data/test/dummy/tmp/cache/assets/DB3/770/sprockets%2F47998ff4ce9a2b5383b95bd54ded3c3d +0 -0
  290. data/test/dummy/tmp/cache/assets/DB6/6C0/sprockets%2Fe710d8fbf4ca41d29a742b22a21a0fec +0 -0
  291. data/test/dummy/tmp/cache/assets/DBC/330/sprockets%2Ffc79d797d11878bc435b668cdfbc94cf +0 -0
  292. data/test/dummy/tmp/cache/assets/DBF/270/sprockets%2F820ebc60d1be685f4044d1cb8cabdd17 +0 -0
  293. data/test/dummy/tmp/cache/assets/DBF/E80/sprockets%2F41d82531e91fc1ca0c806beacf0cfc84 +0 -0
  294. data/test/dummy/tmp/cache/assets/DC1/E40/sprockets%2F57aebd4c69abf9331b4770bd3ced100d +0 -0
  295. data/test/dummy/tmp/cache/assets/DC1/FD0/sprockets%2Ff97fb61e211912bbc1eaed82c4ad740c +0 -0
  296. data/test/dummy/tmp/cache/assets/DC2/250/sprockets%2Ffddac1268ff054c12ea32cc6619c46ac +0 -0
  297. data/test/dummy/tmp/cache/assets/DC2/5F0/sprockets%2F68dc2f8cab31bbd8ab65220c685eb15b +0 -0
  298. data/test/dummy/tmp/cache/assets/DC3/7C0/sprockets%2Fa78b7c0aa57b250e05d5ad1e56ac9ed5 +0 -0
  299. data/test/dummy/tmp/cache/assets/DC9/330/sprockets%2Fc5fe138ffe1adb009a407c172fcb9b49 +0 -0
  300. data/test/dummy/tmp/cache/assets/DCC/F10/sprockets%2F4fb860d9bb2c56165fae6ecc193bd1f2 +0 -0
  301. data/test/dummy/tmp/cache/assets/DCE/0E0/sprockets%2Fc1845aeaffa0d9c887108b5cf1a77dc2 +0 -0
  302. data/test/dummy/tmp/cache/assets/DCE/920/sprockets%2F5208ac969dfa6f4dd531ef2d2afb454b +0 -0
  303. data/test/dummy/tmp/cache/assets/DCE/950/sprockets%2F2d0d1caef1b638f88de704d1eb07be88 +0 -0
  304. data/test/dummy/tmp/cache/assets/DCE/9C0/sprockets%2Fc6b7fd0b623a5b66692ed21dafe5ee18 +0 -0
  305. data/test/dummy/tmp/cache/assets/DD2/190/sprockets%2F3662cdc2f2f551c51ec9bddb9177deb7 +0 -0
  306. data/test/dummy/tmp/cache/assets/DD2/C80/sprockets%2Fe94b85ec5d4eeb0616972dd03cadf06f +0 -0
  307. data/test/dummy/tmp/cache/assets/DD3/B30/sprockets%2Ff1eab781d903ebdf7d9379cca92533ba +0 -0
  308. data/test/dummy/tmp/cache/assets/DD5/8F0/sprockets%2F4bfcc6fffb235da87a162efc721985e2 +0 -0
  309. data/test/dummy/tmp/cache/assets/DD6/8B0/sprockets%2F8ab6728b7ab04dbec482fe5fb7ef8604 +0 -0
  310. data/test/dummy/tmp/cache/assets/DD6/E50/sprockets%2F1ce8c04cfee001955cf5fd9ed7d59a52 +0 -0
  311. data/test/dummy/tmp/cache/assets/DD9/D30/sprockets%2F9abfa5c86dbf28fd7be89b650c3d5225 +0 -0
  312. data/test/dummy/tmp/cache/assets/DE7/E30/sprockets%2F18bca0215ecdc63ba01a2ee5cd7c34f8 +0 -0
  313. data/test/dummy/tmp/cache/assets/DE8/C20/sprockets%2Fc91409dc1b447ba1beaa0be9b33ef14d +0 -0
  314. data/test/dummy/tmp/cache/assets/DED/270/sprockets%2Fdee70d8becb01a00e2d7420c6a646dff +0 -0
  315. data/test/dummy/tmp/cache/assets/DF4/2D0/sprockets%2Ffd83bba93ef8ca1a70c63ee4b625a6b0 +0 -0
  316. data/test/dummy/tmp/cache/assets/DF8/E50/sprockets%2Fbb1bdc05e895b8c08cb6ca4491ed51cf +0 -0
  317. data/test/dummy/tmp/cache/assets/DFB/EC0/sprockets%2F94ccf06d9a630eaa4a9865d7e74aaaba +0 -0
  318. data/test/dummy/tmp/cache/assets/DFC/FC0/sprockets%2Fd8badee5b41f9328df1d3fe153eef401 +0 -0
  319. data/test/dummy/tmp/cache/assets/DFD/F30/sprockets%2Fd60da4793bab6bff313a6bfc25985dfb +0 -0
  320. data/test/dummy/tmp/cache/assets/DFE/230/sprockets%2Fd260ce7fb8bf41f914b57c0dde9b0af6 +0 -0
  321. data/test/dummy/tmp/cache/assets/DFE/2E0/sprockets%2F813f277df6cd78babbdb7f5c34f3ab05 +0 -0
  322. data/test/dummy/tmp/cache/assets/DFE/E50/sprockets%2F59b3e0cbbf99e92737aab0bcfc205f5f +0 -0
  323. data/test/dummy/tmp/cache/assets/DFF/9F0/sprockets%2Fb4677ae08ff6f9edaf3b2bcbb115a963 +0 -0
  324. data/test/dummy/tmp/cache/assets/E05/480/sprockets%2F789f3eb9b0ee9d3fb684066acaebd4a1 +0 -0
  325. data/test/dummy/tmp/cache/assets/E08/8A0/sprockets%2F3cb6916a9933fdfd43d6defe3e4a6d1d +0 -0
  326. data/test/dummy/tmp/cache/assets/E09/A00/sprockets%2F77913b88dec083cedb3875beae2efd5a +0 -0
  327. data/test/dummy/tmp/cache/assets/E16/E60/sprockets%2Ffe5e3c5af908e8cc7ff70976fdc14db7 +0 -0
  328. data/test/dummy/tmp/cache/assets/E28/B70/sprockets%2Fb2fa75ae01dda6654abd60c78c8bf5cf +0 -0
  329. data/test/dummy/tmp/cache/assets/E30/8A0/sprockets%2F5d3fccefabad47a78655a5c92adb3c76 +0 -0
  330. data/test/dummy/tmp/cache/assets/E36/9F0/sprockets%2Fb2bdf95afd8ecf06ce9b8407a2f9b1b8 +0 -0
  331. data/test/dummy/tmp/cache/assets/E3E/C60/sprockets%2F8b3bfb5dbc23d849d4f2fc6dd7fe45d9 +0 -0
  332. data/test/dummy/tmp/cache/assets/E3F/B10/sprockets%2F7b1af74e67b27fff762f3cdfebe5f4a7 +0 -0
  333. data/test/dummy/tmp/cache/assets/E50/740/sprockets%2F0578ebbffb5c27d00cc86b1dd7b1eada +0 -0
  334. data/test/dummy/tmp/cache/assets/E50/9F0/sprockets%2Fddfa62aba6a56ed6ab5e44ae36b175ad +0 -0
  335. data/test/dummy/tmp/cache/assets/E5D/160/sprockets%2F44a9be8a9b567fceec2bdc4ab074bbb9 +0 -0
  336. data/test/dummy/tmp/cache/assets/E61/FB0/sprockets%2F97c2b65cafddc7ac59ae4a5e2a18afe8 +0 -0
  337. data/test/dummy/tmp/cache/assets/E73/680/sprockets%2F1a4d0b08b6fdbacbfe0d1cb7df5db251 +0 -0
  338. data/test/dummy/tmp/cache/assets/ED1/C10/sprockets%2Fa9a13ad3bb3a6ccbb6faac3fac0b6c8e +0 -0
  339. data/test/dummy/tmp/cache/assets/EF0/E30/sprockets%2F3ac422b66adec6cffa8edecf9bdea48d +0 -0
  340. data/test/dummy/tmp/pids/server.pid +1 -1
  341. metadata +33 -15
  342. data/app/assets/javascripts/Core/AnimationController.js +0 -148
  343. data/app/assets/javascripts/Scene/ImageryProviderError.js +0 -149
  344. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +0 -1
  345. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +0 -47
  346. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  347. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  348. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +0 -24
@@ -1,7 +1,5 @@
1
1
  <div data-dojo-attach-point="cesiumNode" class="cw-node">
2
2
  <canvas data-dojo-attach-point="canvas" class="cw-canvas"></canvas>
3
- <div data-dojo-type="dijit.form.Button" data-dojo-attach-point="timeLabel"
4
- data-dojo-props="'class':'cw-timeLabel', showLabel: true, label:''"></div>
5
3
  <div class="cw-viewButtons">
6
4
  <div data-dojo-attach-point="viewHomeButton" data-dojo-type="dijit.form.Button"
7
5
  data-dojo-props="iconClass: 'cw-viewIcon', showLabel: false, label:'Home View'"></div>
@@ -11,10 +9,8 @@
11
9
  data-dojo-props="iconClass: 'cw-viewIcon cw-view3D', showLabel: false, checked: true, label:'3D View'"></div>
12
10
  <div data-dojo-attach-point="viewColumbus" data-dojo-type="dijit.form.ToggleButton"
13
11
  data-dojo-props="iconClass: 'cw-viewIcon cw-viewColumbus', showLabel: false, label:'Columbus View'"></div>
14
- <div data-dojo-attach-point="viewFullscreen" data-dojo-type="dijit.form.Button"
15
- data-dojo-props="iconClass: 'cw-viewIcon cw-viewFullscreen', showLabel: false, label:'Toggle Full Screen'"></div>
16
12
  <div data-dojo-attach-point="imagery" data-dojo-type="dijit.form.DropDownButton"
17
- data-dojo-props="iconClass: 'cw-bingIcon', showLabel: false, label:'Bing'">
13
+ data-dojo-props="showLabel: true, label:'Imagery'">
18
14
  <div data-dojo-type="dijit.TooltipDialog">
19
15
  <span data-dojo-type="dijit.form.ToggleButton" data-dojo-attach-point="imageryAerial"
20
16
  data-dojo-props="'class':'cw-imagerySelector', showLabel: true, checked: true, label:'Bing Maps Aerial'">
@@ -23,30 +19,13 @@
23
19
  <span data-dojo-type="dijit.form.ToggleButton" data-dojo-attach-point="imageryRoad"
24
20
  data-dojo-props="'class':'cw-imagerySelector', showLabel: true, label:'Bing Maps Road'"></span> <span
25
21
  data-dojo-type="dijit.form.ToggleButton" data-dojo-attach-point="imagerySingleTile"
26
- data-dojo-props="'class':'cw-imagerySelector', showLabel: true, label:'No Streaming Imagery'"></span>
22
+ data-dojo-props="'class':'cw-imagerySelector', showLabel: true, label:'Single Tile'"></span>
27
23
  </div>
28
24
  </div>
29
25
  </div>
30
- <div class="cw-timelineContainer">
31
- <div data-dojo-attach-point="timelineWidget" data-dojo-type="Cesium.TimelineWidget"
32
- data-dojo-props="'class':'cw-timeline'"></div>
33
- </div>
34
- <div class="cw-animButtons">
35
- <div data-dojo-attach-point="animReset" data-dojo-type="dijit.form.Button"
36
- data-dojo-props="iconClass: 'cw-animationIcon', showLabel: false, label:'Reset'"></div>
37
- <div data-dojo-attach-point="animReverse" data-dojo-type="dijit.form.ToggleButton"
38
- data-dojo-props="iconClass: 'cw-animationIcon cw-animReverse', showLabel: false, label:'Play Reverse'"></div>
39
- <div data-dojo-attach-point="animPause" data-dojo-type="dijit.form.ToggleButton"
40
- data-dojo-props="iconClass: 'cw-animationIcon cw-animPause', showLabel: false, label:'Pause'"></div>
41
- <div data-dojo-attach-point="animPlay" data-dojo-type="dijit.form.ToggleButton"
42
- data-dojo-props="iconClass: 'cw-animationIcon cw-animPlay', showLabel: false, checked: true, label:'Play'"></div>
43
- <div data-dojo-attach-point="animSlow" data-dojo-type="dijit.form.Button"
44
- data-dojo-props="iconClass: 'cw-animationIcon cw-animSlow', showLabel: false, label:'Play Slower'"></div>
45
- <div data-dojo-attach-point="animFast" data-dojo-type="dijit.form.Button"
46
- data-dojo-props="iconClass: 'cw-animationIcon cw-animFast', showLabel: false, label:'Play Faster'"></div>
47
- <span data-dojo-attach-point="speedIndicator" class="cw-speedIndicator"></span>
48
- </div>
49
- <a class="cw-cesiumLogo" data-dojo-attach-point="cesiumLogo" href="http://cesium.agi.com/" target="_blank"></a> <span
50
- data-dojo-attach-point="containerNode"></span>
26
+ <div data-dojo-attach-point="timelineContainer" class="cw-timelineContainer"></div>
27
+ <div data-dojo-attach-point="animationContainer" class="cw-animationContainer"></div>
28
+ <div data-dojo-attach-point="fullscreenContainer" class="cw-fullscreenContainer"></div>
29
+ <a class="cw-cesiumLogo" data-dojo-attach-point="cesiumLogo" href="http://cesium.agi.com/" target="_blank"></a>
51
30
  <div class="cw-loading" data-dojo-attach-point="loading"></div>
52
31
  </div>
@@ -14,18 +14,21 @@ define([
14
14
  'dijit/form/ToggleButton',
15
15
  'dijit/form/DropDownButton',
16
16
  'dijit/TooltipDialog',
17
- './TimelineWidget',
17
+ '../Timeline/Timeline',
18
+ '../Animation/Animation',
19
+ '../Animation/AnimationViewModel',
20
+ '../Fullscreen/FullscreenWidget',
21
+ '../ClockViewModel',
18
22
  '../../Core/defaultValue',
19
23
  '../../Core/loadJson',
24
+ '../../Core/binarySearch',
20
25
  '../../Core/BoundingRectangle',
21
26
  '../../Core/Clock',
22
27
  '../../Core/ClockStep',
23
28
  '../../Core/ClockRange',
24
29
  '../../Core/Extent',
25
- '../../Core/AnimationController',
26
30
  '../../Core/Ellipsoid',
27
31
  '../../Core/Iso8601',
28
- '../../Core/Fullscreen',
29
32
  '../../Core/computeSunPosition',
30
33
  '../../Core/ScreenSpaceEventHandler',
31
34
  '../../Core/FeatureDetection',
@@ -72,18 +75,21 @@ define([
72
75
  ToggleButton,
73
76
  DropDownButton,
74
77
  TooltipDialog,
75
- TimelineWidget,
78
+ Timeline,
79
+ Animation,
80
+ AnimationViewModel,
81
+ FullscreenWidget,
82
+ ClockViewModel,
76
83
  defaultValue,
77
84
  loadJson,
85
+ binarySearch,
78
86
  BoundingRectangle,
79
87
  Clock,
80
88
  ClockStep,
81
89
  ClockRange,
82
90
  Extent,
83
- AnimationController,
84
91
  Ellipsoid,
85
92
  Iso8601,
86
- Fullscreen,
87
93
  computeSunPosition,
88
94
  ScreenSpaceEventHandler,
89
95
  FeatureDetection,
@@ -187,6 +193,8 @@ define([
187
193
  * var endUserOptions = {
188
194
  * 'source' : 'file.czml', // The relative URL of the CZML file to load at startup.
189
195
  * 'lookAt' : '123abc', // The CZML ID of the object to track at startup.
196
+ * 'theme' : 'light', // Use the dark-text-on-light-background theme.
197
+ * 'loop' : 0, // Disable looping at end time, pause there instead.
190
198
  * 'stats' : 1, // Enable the FPS performance display.
191
199
  * 'debug' : 1, // Full WebGL error reporting at substantial performance cost.
192
200
  * };
@@ -232,18 +240,31 @@ define([
232
240
  * @see CesiumViewerWidget#resize
233
241
  */
234
242
  resizeWidgetOnWindowResize: true,
243
+
235
244
  /**
236
- * The HTML element to place into fullscreen mode when the corresponding
237
- * button is pressed. If undefined, only the widget itself will
238
- * go into fullscreen mode. By specifying another container, such
239
- * as document.body, this property allows an application to retain
240
- * any overlaid or surrounding elements when in fullscreen.
245
+ * The fullscreen widget, configured to put only the viewer widget
246
+ * into fullscreen mode by default.
241
247
  *
242
- * @type {Object}
248
+ * @type {FullscreenWidget}
249
+ * @memberof CesiumViewerWidget.prototype
250
+ */
251
+ fullscreen: undefined,
252
+
253
+ /**
254
+ * The animation widget.
255
+ *
256
+ * @type {Animation}
257
+ * @memberof CesiumViewerWidget.prototype
258
+ */
259
+ animation: undefined,
260
+
261
+ /**
262
+ * The timeline widget.
263
+ *
264
+ * @type {Timeline}
243
265
  * @memberof CesiumViewerWidget.prototype
244
- * @default undefined
245
266
  */
246
- fullscreenElement : undefined,
267
+ timeline: undefined,
247
268
 
248
269
  // for Dojo use only
249
270
  constructor : function() {
@@ -288,6 +309,8 @@ define([
288
309
  frustum.top = frustum.right * (height / width);
289
310
  frustum.bottom = -frustum.top;
290
311
  }
312
+
313
+ this.setLogoOffset(this.cesiumLogo.offsetWidth + this.cesiumLogo.offsetLeft + 10, 28);
291
314
  },
292
315
 
293
316
  /**
@@ -483,14 +506,6 @@ define([
483
506
  }
484
507
  },
485
508
 
486
- _updateSpeedIndicator : function() {
487
- if (this.animationController.isAnimating()) {
488
- this.speedIndicator.innerHTML = this.clock.multiplier + 'x realtime';
489
- } else {
490
- this.speedIndicator.innerHTML = this.clock.multiplier + 'x realtime (paused)';
491
- }
492
- },
493
-
494
509
  /**
495
510
  * Apply the animation settings from a CZML buffer.
496
511
  * @function
@@ -498,25 +513,52 @@ define([
498
513
  */
499
514
  setTimeFromBuffer : function() {
500
515
  var clock = this.clock;
501
-
502
- this.animReverse.set('checked', false);
503
- this.animPause.set('checked', true);
504
- this.animPlay.set('checked', false);
516
+ var shuttleRingTicks = AnimationViewModel.defaultTicks.slice(0);
505
517
 
506
518
  var availability = this.dynamicObjectCollection.computeAvailability();
507
519
  if (availability.start.equals(Iso8601.MINIMUM_VALUE)) {
508
520
  clock.startTime = new JulianDate();
509
521
  clock.stopTime = clock.startTime.addDays(1);
510
522
  clock.clockRange = ClockRange.UNBOUNDED;
523
+ clock.multiplier = 60.0;
511
524
  } else {
512
525
  clock.startTime = availability.start;
513
526
  clock.stopTime = availability.stop;
514
- clock.clockRange = ClockRange.LOOP;
527
+ if (typeof this.endUserOptions.loop === 'undefined' || this.endUserOptions.loop === '1') {
528
+ clock.clockRange = ClockRange.LOOP_STOP;
529
+ } else {
530
+ clock.clockRange = ClockRange.CLAMPED;
531
+ }
532
+ var totalSeconds = clock.startTime.getSecondsDifference(clock.stopTime);
533
+ var multiplier = Math.round(totalSeconds / 120.0);
534
+ if (multiplier < 1) {
535
+ multiplier = 1;
536
+ }
537
+
538
+ var index = binarySearch(shuttleRingTicks, multiplier, function(left, right) {
539
+ return left - right;
540
+ });
541
+ if (index < 0) {
542
+ index = ~index;
543
+ }
544
+ if (index !== shuttleRingTicks.length) {
545
+ clock.multiplier = shuttleRingTicks[index];
546
+ } else {
547
+ shuttleRingTicks.push(multiplier);
548
+ clock.multiplier = multiplier;
549
+ }
550
+
551
+ var fastestSpeed = Math.round(totalSeconds / 10.0);
552
+ if (fastestSpeed > shuttleRingTicks[shuttleRingTicks.length - 1]) {
553
+ shuttleRingTicks.push(fastestSpeed);
554
+ }
515
555
  }
516
556
 
517
- clock.multiplier = 60;
557
+ this.animationViewModel.setShuttleRingTicks(shuttleRingTicks);
558
+
518
559
  clock.currentTime = clock.startTime;
519
- this.timelineControl.zoomTo(clock.startTime, clock.stopTime);
560
+ clock.clockStep = ClockStep.SYSTEM_CLOCK_MULTIPLIER;
561
+ this.timeline.zoomTo(clock.startTime, clock.stopTime);
520
562
  },
521
563
 
522
564
  /**
@@ -628,11 +670,13 @@ define([
628
670
  }
629
671
  this._started = true;
630
672
 
631
- this.resize();
632
-
633
673
  on(canvas, 'contextmenu', event.stop);
634
674
  on(canvas, 'selectstart', event.stop);
635
675
 
676
+ if (typeof widget.endUserOptions.theme === 'undefined' || widget.endUserOptions.theme !== 'light') {
677
+ widget.cesiumNode.className += ' cesium-darker';
678
+ }
679
+
636
680
  if (typeof widget.endUserOptions.debug !== 'undefined' && widget.endUserOptions.debug) {
637
681
  this.enableWebGLDebugging = true;
638
682
  }
@@ -651,9 +695,6 @@ define([
651
695
 
652
696
  var centralBody = this.centralBody = new CentralBody(ellipsoid);
653
697
 
654
- // This logo is replicated by the imagery selector button, so it's hidden here.
655
- centralBody.logoOffset = new Cartesian2(-100, -100);
656
-
657
698
  this._configureCentralBodyImagery();
658
699
 
659
700
  scene.getPrimitives().setCentralBody(centralBody);
@@ -712,25 +753,24 @@ define([
712
753
  on(dropBox, 'dragexit', event.stop);
713
754
  }
714
755
 
715
- var currentTime = new JulianDate();
716
- if (typeof this.animationController === 'undefined') {
717
- if (typeof this.clock === 'undefined') {
718
- this.clock = new Clock({
719
- startTime : currentTime.addDays(-0.5),
720
- stopTime : currentTime.addDays(0.5),
721
- currentTime : currentTime,
722
- clockStep : ClockStep.SYSTEM_CLOCK_DEPENDENT,
723
- multiplier : 1
724
- });
725
- }
726
- this.animationController = new AnimationController(this.clock);
727
- } else {
728
- this.clock = this.animationController.clock;
756
+ this.fullscreen = new FullscreenWidget(this.fullscreenContainer, this.cesiumNode);
757
+
758
+ var animationViewModel = this.animationViewModel;
759
+ if (typeof animationViewModel === 'undefined') {
760
+ var clockViewModel = new ClockViewModel();
761
+ clockViewModel.owner = this;
762
+ clockViewModel.shouldAnimate(true);
763
+ animationViewModel = new AnimationViewModel(clockViewModel);
729
764
  }
765
+ this.animationViewModel = animationViewModel;
766
+ this.clockViewModel = animationViewModel.clockViewModel;
730
767
 
731
- var animationController = this.animationController;
732
- var dynamicObjectCollection = this.dynamicObjectCollection = new DynamicObjectCollection();
768
+ this.clock = this.clockViewModel.clock;
733
769
  var clock = this.clock;
770
+
771
+ this.animation = new Animation(this.animationContainer, animationViewModel);
772
+
773
+ var dynamicObjectCollection = this.dynamicObjectCollection = new DynamicObjectCollection();
734
774
  var transitioner = this.sceneTransitioner = new SceneTransitioner(scene);
735
775
  this.visualizers = VisualizerCollection.createCzmlStandardCollection(scene, dynamicObjectCollection);
736
776
 
@@ -742,93 +782,25 @@ define([
742
782
  widget.enableStatistics(true);
743
783
  }
744
784
 
745
- this._lastTimeLabelClock = clock.currentTime;
746
- this._lastTimeLabelDate = Date.now();
747
- this.timeLabelElement = this.timeLabel.containerNode;
748
- this.timeLabelElement.innerHTML = clock.currentTime.toDate().toUTCString();
749
-
750
- var animReverse = this.animReverse;
751
- var animPause = this.animPause;
752
- var animPlay = this.animPlay;
753
-
754
- on(this.animReset, 'Click', function() {
755
- animationController.reset();
756
- animReverse.set('checked', false);
757
- animPause.set('checked', true);
758
- animPlay.set('checked', false);
759
- });
760
-
761
- function onAnimPause() {
762
- animationController.pause();
763
- animReverse.set('checked', false);
764
- animPause.set('checked', true);
765
- animPlay.set('checked', false);
766
- }
767
-
768
- on(animPause, 'Click', onAnimPause);
769
-
770
- on(animReverse, 'Click', function() {
771
- animationController.playReverse();
772
- animReverse.set('checked', true);
773
- animPause.set('checked', false);
774
- animPlay.set('checked', false);
775
- });
776
-
777
- on(animPlay, 'Click', function() {
778
- animationController.play();
779
- animReverse.set('checked', false);
780
- animPause.set('checked', false);
781
- animPlay.set('checked', true);
782
- });
783
-
784
- on(widget.animSlow, 'Click', function() {
785
- animationController.slower();
786
- });
787
-
788
- on(widget.animFast, 'Click', function() {
789
- animationController.faster();
790
- });
791
-
792
785
  function onTimelineScrub(e) {
793
786
  widget.clock.currentTime = e.timeJulian;
794
- onAnimPause();
787
+ widget.clock.shouldAnimate = false;
795
788
  }
796
789
 
797
- var timelineWidget = widget.timelineWidget;
798
- timelineWidget.clock = widget.clock;
799
- timelineWidget.setupCallback = function(t) {
800
- widget.timelineControl = t;
801
- t.addEventListener('settime', onTimelineScrub, false);
802
- t.zoomTo(clock.startTime, clock.stopTime);
803
- };
804
- timelineWidget.setupTimeline();
790
+ var timeline = new Timeline(this.timelineContainer, widget.clock);
791
+ widget.timeline = timeline;
792
+ timeline.addEventListener('settime', onTimelineScrub, false);
793
+ timeline.zoomTo(clock.startTime, clock.stopTime);
805
794
 
806
795
  var viewHomeButton = widget.viewHomeButton;
807
796
  var view2D = widget.view2D;
808
797
  var view3D = widget.view3D;
809
798
  var viewColumbus = widget.viewColumbus;
810
- var viewFullscreen = widget.viewFullscreen;
811
799
 
812
800
  view2D.set('checked', false);
813
801
  view3D.set('checked', true);
814
802
  viewColumbus.set('checked', false);
815
803
 
816
- if (Fullscreen.isFullscreenEnabled()) {
817
- on(document, Fullscreen.getFullscreenChangeEventName(), function() {
818
- widget.resize();
819
- });
820
-
821
- on(viewFullscreen, 'Click', function() {
822
- if (Fullscreen.isFullscreen()) {
823
- Fullscreen.exitFullscreen();
824
- } else {
825
- Fullscreen.requestFullscreen(defaultValue(widget.fullscreenElement, widget.cesiumNode));
826
- }
827
- });
828
- } else {
829
- domStyle.set(viewFullscreen.domNode, 'display', 'none');
830
- }
831
-
832
804
  on(viewHomeButton, 'Click', function() {
833
805
  widget.viewHome();
834
806
  });
@@ -857,7 +829,6 @@ define([
857
829
  var imageryRoad = widget.imageryRoad;
858
830
  var imagerySingleTile = widget.imagerySingleTile;
859
831
  var imageryOptions = [imageryAerial, imageryAerialWithLabels, imageryRoad, imagerySingleTile];
860
- var bingHtml = imagery.containerNode.innerHTML;
861
832
 
862
833
  imagery.startup();
863
834
 
@@ -865,10 +836,8 @@ define([
865
836
  return function() {
866
837
  if (style) {
867
838
  widget.setStreamingImageryMapStyle(style);
868
- imagery.containerNode.innerHTML = bingHtml;
869
839
  } else {
870
840
  widget.enableStreamingImagery(false);
871
- imagery.containerNode.innerHTML = 'Imagery';
872
841
  }
873
842
 
874
843
  imageryOptions.forEach(function(o) {
@@ -892,6 +861,8 @@ define([
892
861
 
893
862
  this._camera3D = this.scene.getCamera().clone();
894
863
 
864
+ this.resize();
865
+
895
866
  if (this.autoStartRenderLoop) {
896
867
  this.startRenderLoop();
897
868
  }
@@ -1079,24 +1050,21 @@ define([
1079
1050
  * @memberof CesiumViewerWidget.prototype
1080
1051
  * @param {JulianDate} currentTime - The date and time in the scene of the frame to be rendered
1081
1052
  */
1082
- update : function(currentTime) {
1083
-
1084
- this._updateSpeedIndicator();
1085
- this.timelineControl.updateFromClock();
1086
- this.visualizers.update(currentTime);
1087
-
1088
- if ((Math.abs(currentTime.getSecondsDifference(this._lastTimeLabelClock)) >= 1.0) ||
1089
- ((Date.now() - this._lastTimeLabelDate) > 200)) {
1090
- this.timeLabelElement.innerHTML = currentTime.toDate().toUTCString();
1091
- this._lastTimeLabelClock = currentTime;
1092
- this._lastTimeLabelDate = Date.now();
1053
+ update : function() {
1054
+ var currentTime;
1055
+ if (this.clockViewModel.owner === this) {
1056
+ currentTime = this.clock.tick();
1057
+ } else {
1058
+ currentTime = this.clock.currentTime;
1093
1059
  }
1060
+ this.visualizers.update(currentTime);
1094
1061
 
1095
1062
  // Update the camera to stay centered on the selected object, if any.
1096
1063
  var viewFromTo = this._viewFromTo;
1097
1064
  if (typeof viewFromTo !== 'undefined') {
1098
1065
  viewFromTo.update(currentTime);
1099
1066
  }
1067
+ return currentTime;
1100
1068
  },
1101
1069
 
1102
1070
  /**
@@ -1164,10 +1132,21 @@ define([
1164
1132
  */
1165
1133
  autoStartRenderLoop : true,
1166
1134
 
1135
+ /**
1136
+ * Updates and renders the scene to reflect the current time.
1137
+ *
1138
+ * @function
1139
+ * @memberof CesiumViewerWidget.prototype
1140
+ */
1141
+ updateAndRender : function() {
1142
+ this.initializeFrame();
1143
+ this.render(this.update());
1144
+ },
1145
+
1167
1146
  /**
1168
1147
  * This is a simple render loop that can be started if there is only one <code>CesiumViewerWidget</code>
1169
1148
  * on your page. If you wish to customize your render loop, avoid this function and instead
1170
- * use code similar to one of the following examples.
1149
+ * use code similar to the following example.
1171
1150
  *
1172
1151
  * @function
1173
1152
  * @memberof CesiumViewerWidget.prototype
@@ -1175,61 +1154,19 @@ define([
1175
1154
  * @see CesiumViewerWidget#autoStartRenderLoop
1176
1155
  * @example
1177
1156
  * // This takes the place of startRenderLoop for a single widget.
1178
- *
1179
- * var animationController = widget.animationController;
1180
- * function updateAndRender() {
1181
- * var currentTime = animationController.update();
1182
- * widget.initializeFrame();
1183
- * widget.update(currentTime);
1184
- * widget.render(currentTime);
1185
- * requestAnimationFrame(updateAndRender);
1186
- * }
1187
- * requestAnimationFrame(updateAndRender);
1188
- * @example
1189
- * // This example requires widget1 and widget2 to share an animationController
1190
- * // (for example, widget2's constructor was called with a copy of widget1's
1191
- * // animationController).
1192
- *
1193
- * function updateAndRender() {
1194
- * var currentTime = animationController.update();
1195
- * widget1.initializeFrame();
1196
- * widget2.initializeFrame();
1197
- * widget1.update(currentTime);
1198
- * widget2.update(currentTime);
1199
- * widget1.render(currentTime);
1200
- * widget2.render(currentTime);
1201
- * requestAnimationFrame(updateAndRender);
1202
- * }
1203
- * requestAnimationFrame(updateAndRender);
1204
- * @example
1205
- * // This example uses separate animationControllers for widget1 and widget2.
1206
- * // These widgets can animate at different rates and pause individually.
1207
- *
1208
- * function updateAndRender() {
1209
- * var time1 = widget1.animationController.update();
1210
- * var time2 = widget2.animationController.update();
1211
- * widget1.initializeFrame();
1212
- * widget2.initializeFrame();
1213
- * widget1.update(time1);
1214
- * widget2.update(time2);
1215
- * widget1.render(time1);
1216
- * widget2.render(time2);
1217
- * requestAnimationFrame(updateAndRender);
1218
- * }
1219
- * requestAnimationFrame(updateAndRender);
1157
+ * var widget = this;
1158
+ * function updateAndRender() {
1159
+ * widget.updateAndRender();
1160
+ * requestAnimationFrame(updateAndRender);
1161
+ * }
1162
+ * requestAnimationFrame(updateAndRender);
1220
1163
  */
1221
1164
  startRenderLoop : function() {
1222
1165
  var widget = this;
1223
- var animationController = widget.animationController;
1224
-
1225
1166
  function updateAndRender() {
1226
- var currentTime = animationController.update();
1227
- widget.initializeFrame();
1228
- widget.update(currentTime);
1229
- widget.render(currentTime);
1167
+ widget.updateAndRender();
1230
1168
  requestAnimationFrame(updateAndRender);
1231
1169
  }
1232
-
1233
1170
  requestAnimationFrame(updateAndRender);
1234
1171
  }
1235
1172
  });