cesium 0.13.2 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/Cesium.js +2 -2
- data/app/assets/javascripts/Core/Clock.js +81 -81
- data/app/assets/javascripts/Core/ClockRange.js +5 -3
- data/app/assets/javascripts/Core/ClockStep.js +7 -1
- data/app/assets/javascripts/Core/Event.js +12 -11
- data/app/assets/javascripts/Core/JulianDate.js +16 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +1 -1
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +1 -1
- data/app/assets/javascripts/Renderer/ClearCommand.js +1 -1
- data/app/assets/javascripts/Renderer/Context.js +23 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +1 -1
- data/app/assets/javascripts/Scene/BillboardCollection.js +14 -24
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +8 -31
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +13 -4
- data/app/assets/javascripts/Scene/Tile.js +11 -6
- data/app/assets/javascripts/Scene/ViewportQuad.js +21 -36
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +15 -11
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +47 -27
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +886 -228
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +173 -40
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +17 -14
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +25 -19
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +61 -31
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +5 -4
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +9 -7
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +392 -299
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +12 -8
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +836 -530
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -58
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +7 -6
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +34 -26
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +21 -5
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +19 -11
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +13 -9
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +33 -22
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +24 -17
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +14 -10
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -20
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +11 -6
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +18 -13
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +12 -7
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +9 -6
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +23 -16
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +14 -11
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +10 -8
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +10 -8
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +12 -7
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +21 -12
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +11 -7
- data/app/assets/javascripts/Shaders/Materials/Water.js +46 -45
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +29 -19
- data/app/assets/javascripts/Shaders/Noise.js +408 -173
- data/app/assets/javascripts/Shaders/PolygonFS.js +20 -10
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +3 -3
- data/app/assets/javascripts/Shaders/PolygonVS.js +27 -22
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +23 -19
- data/app/assets/javascripts/Shaders/PolylineFS.js +3 -3
- data/app/assets/javascripts/Shaders/PolylineVS.js +24 -19
- data/app/assets/javascripts/Shaders/Ray.js +496 -315
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +16 -6
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +5 -2
- data/app/assets/javascripts/Shaders/SensorVolume.js +32 -15
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +61 -16
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +106 -53
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +4 -2
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +5 -3
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +14 -10
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +6 -5
- data/app/assets/javascripts/ThirdParty/knockout.js +88 -0
- data/app/assets/javascripts/Widgets/Animation/Animation.css +141 -0
- data/app/assets/javascripts/Widgets/Animation/Animation.js +944 -0
- data/app/assets/javascripts/Widgets/Animation/AnimationViewModel.js +503 -0
- data/app/assets/javascripts/Widgets/Animation/darker.css +69 -0
- data/app/assets/javascripts/Widgets/ClockViewModel.js +167 -0
- data/app/assets/javascripts/Widgets/Command.js +33 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +54 -77
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +6 -27
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +124 -187
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenViewModel.js +88 -0
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.css +16 -0
- data/app/assets/javascripts/Widgets/Fullscreen/FullscreenWidget.js +50 -0
- data/app/assets/javascripts/Widgets/Fullscreen/darker.css +14 -0
- data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/enterFullscreen.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +18 -0
- data/app/assets/javascripts/Widgets/Images/exitFullscreen.svg +18 -0
- data/app/assets/javascripts/Widgets/Observable.js +29 -0
- data/app/assets/javascripts/Widgets/{Timeline.css → Timeline/Timeline.css} +18 -21
- data/app/assets/javascripts/Widgets/{Timeline.js → Timeline/Timeline.js} +12 -7
- data/app/assets/javascripts/Widgets/{TimelineHighlightRange.js → Timeline/TimelineHighlightRange.js} +0 -0
- data/app/assets/javascripts/Widgets/{TimelineTrack.js → Timeline/TimelineTrack.js} +1 -1
- data/app/assets/javascripts/Widgets/Timeline/darker.css +20 -0
- data/app/assets/javascripts/Widgets/ToggleButtonViewModel.js +40 -0
- data/app/assets/javascripts/Widgets/createCommand.js +41 -0
- data/lib/cesium/version.rb +1 -1
- data/test/dummy/log/development.log +3300 -0
- data/test/dummy/tmp/cache/assets/C0D/D90/sprockets%2F297417de8571859510683b028659bf97 +0 -0
- data/test/dummy/tmp/cache/assets/C5E/6E0/sprockets%2F990a847694744e4ac598dc125572a243 +0 -0
- data/test/dummy/tmp/cache/assets/C64/470/sprockets%2Fa605a34504c3a61f1e0309374154a4f2 +0 -0
- data/test/dummy/tmp/cache/assets/C6C/D20/sprockets%2F8214271b512224e3f7a73a322e85b15c +0 -0
- data/test/dummy/tmp/cache/assets/C6E/8C0/sprockets%2F13ad4320ee685ee062033b0806b07756 +0 -0
- data/test/dummy/tmp/cache/assets/C71/D40/sprockets%2F191b5a7162930434c9ea09419d2c0c42 +0 -0
- data/test/dummy/tmp/cache/assets/C75/FC0/sprockets%2F7100611b808c367104f4537af8b467ca +0 -0
- data/test/dummy/tmp/cache/assets/C77/C90/sprockets%2F5c6d277228741022bef80d17b5422c55 +0 -0
- data/test/dummy/tmp/cache/assets/C7B/2E0/sprockets%2F049f5400e934154d876d9e7a110d0b72 +0 -0
- data/test/dummy/tmp/cache/assets/C7D/290/sprockets%2F07b270a59082157be139ee653b4435b9 +0 -0
- data/test/dummy/tmp/cache/assets/C82/860/sprockets%2Fbd185743a7cf9fa41b72715364178414 +0 -0
- data/test/dummy/tmp/cache/assets/C83/5B0/sprockets%2F11288f143903cfc5595d8a5771f51f20 +0 -0
- data/test/dummy/tmp/cache/assets/C84/210/sprockets%2F5e7c3418b40688a85916fd18512fc213 +0 -0
- data/test/dummy/tmp/cache/assets/C85/2A0/sprockets%2F409dfb449462105286e47c6a8c32860e +0 -0
- data/test/dummy/tmp/cache/assets/C87/790/sprockets%2F49d9e234d84217773d540a5b4813fc64 +0 -0
- data/test/dummy/tmp/cache/assets/C8C/C50/sprockets%2F87a1327314e4aa2a3ea44a33a4730420 +0 -0
- data/test/dummy/tmp/cache/assets/C9C/B20/sprockets%2Fc3000c708c2d95253d8a414d6c087d10 +0 -0
- data/test/dummy/tmp/cache/assets/C9E/DC0/sprockets%2F2f7b17e380320fe9d0650d3aa4614432 +0 -0
- data/test/dummy/tmp/cache/assets/C9F/9B0/sprockets%2Faeb280e1126521372c0bd6660e22969b +0 -0
- data/test/dummy/tmp/cache/assets/CA0/9A0/sprockets%2Fc1e9542f7960491862764447bf6d7f9e +0 -0
- data/test/dummy/tmp/cache/assets/CA1/C10/sprockets%2F804602800eb2e183aa91825b5f881b0d +0 -0
- data/test/dummy/tmp/cache/assets/CA6/DD0/sprockets%2F8b2532b8158e7333d5392bb505ca512f +0 -0
- data/test/dummy/tmp/cache/assets/CA8/4C0/sprockets%2Fbe667b320658d0297c210cb43c77b760 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/340/sprockets%2Fd3c10509ea49a62e909622f77f4b3220 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/430/sprockets%2F68e71052d60ebac0303e9e883c541265 +0 -0
- data/test/dummy/tmp/cache/assets/CAB/380/sprockets%2Fc2d6119b9334706b0b40e54f93f431f7 +0 -0
- data/test/dummy/tmp/cache/assets/CAC/820/sprockets%2F6b14c16171e49a1128966926eade622b +0 -0
- data/test/dummy/tmp/cache/assets/CB2/A60/sprockets%2F5583541ee042c37a846d149d80c8a36d +0 -0
- data/test/dummy/tmp/cache/assets/CB2/F30/sprockets%2Fcd4160d432937934435655ca7c56c5fa +0 -0
- data/test/dummy/tmp/cache/assets/CB3/280/sprockets%2F7e73589c2b0009c3748f7a068242cc7a +0 -0
- data/test/dummy/tmp/cache/assets/CB4/A90/sprockets%2F8fa8411bd1707443dcf02695b9a80776 +0 -0
- data/test/dummy/tmp/cache/assets/CB4/F10/sprockets%2F06ee620db145798202a9fd4c1849944b +0 -0
- data/test/dummy/tmp/cache/assets/CB8/3B0/sprockets%2Fd03836e3d10fb91125597086f6dcc848 +0 -0
- data/test/dummy/tmp/cache/assets/CB9/280/sprockets%2F0e4025fc9a78a70774353617a9b7e96a +0 -0
- data/test/dummy/tmp/cache/assets/CBB/3F0/sprockets%2F410c0a86475946a391fc849c9c34e5e4 +0 -0
- data/test/dummy/tmp/cache/assets/CBE/B60/sprockets%2F872738245c2698dd11952e55f1d2cd5f +0 -0
- data/test/dummy/tmp/cache/assets/CC2/090/sprockets%2F1f4c818e07baa8b05de5987748339952 +0 -0
- data/test/dummy/tmp/cache/assets/CC3/D90/sprockets%2Fd7e90e060a9924b61d0b2c6d102c0024 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/310/sprockets%2F3d942c768ca693e08155d8a9b2195e99 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/9F0/sprockets%2Fbc7ef55837e5097405e3f5097fe35961 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/A80/sprockets%2F887a36c292044706f9d58ee02f659eb9 +0 -0
- data/test/dummy/tmp/cache/assets/CC8/E20/sprockets%2F27297a29159534cf493ff55576c9faa5 +0 -0
- data/test/dummy/tmp/cache/assets/CCD/040/sprockets%2Faf449bc1503080d6262424c20bb97b6d +0 -0
- data/test/dummy/tmp/cache/assets/CCD/210/sprockets%2F33c821e4b3b2538af0c79006df1318d0 +0 -0
- data/test/dummy/tmp/cache/assets/CCD/8B0/sprockets%2F738651415c65eb022af5ec9230a6b2b1 +0 -0
- data/test/dummy/tmp/cache/assets/CCF/180/sprockets%2F39ad17e27f30e3d0080675315bdae602 +0 -0
- data/test/dummy/tmp/cache/assets/CD0/CB0/sprockets%2F139767c003a27a8b5da08fc3714c072b +0 -0
- data/test/dummy/tmp/cache/assets/CD2/6E0/sprockets%2F161543077a1e9c52a2d577bbc3d41e62 +0 -0
- data/test/dummy/tmp/cache/assets/CD3/5A0/sprockets%2F3b02ea5d52854a16dea8336c339c5090 +0 -0
- data/test/dummy/tmp/cache/assets/CD5/9F0/sprockets%2F72d2b1b535d37251fb45c4754d62e2a6 +0 -0
- data/test/dummy/tmp/cache/assets/CDA/170/sprockets%2Ffae3735873d2d340da1827ee6246500e +0 -0
- data/test/dummy/tmp/cache/assets/CDA/C40/sprockets%2F1d06e02833dd2620777ee9818ec61bb0 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/080/sprockets%2Fb33c033c645ff28315cc958538cd5b13 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/990/sprockets%2F913dd1f104b8b71495b00d798c2922de +0 -0
- data/test/dummy/tmp/cache/assets/CDD/090/sprockets%2F62a239aa6b1847f0cd82f6e5b7187303 +0 -0
- data/test/dummy/tmp/cache/assets/CDF/E30/sprockets%2F27d4b1eb52518a0667aef8525455b57c +0 -0
- data/test/dummy/tmp/cache/assets/CE6/E20/sprockets%2F0c20945489c7228a66bb54fd7cc449f0 +0 -0
- data/test/dummy/tmp/cache/assets/CE8/F00/sprockets%2Fd5833932a705129ff7ce6072ee0fb945 +0 -0
- data/test/dummy/tmp/cache/assets/CE9/C20/sprockets%2F5c49d701727e703847268f9fffdba020 +0 -0
- data/test/dummy/tmp/cache/assets/CED/610/sprockets%2F678ef9639f922616c1ced8f3b1b12931 +0 -0
- data/test/dummy/tmp/cache/assets/CEE/300/sprockets%2Fc27f86c561d6e1e8c08d5f852857b025 +0 -0
- data/test/dummy/tmp/cache/assets/CEF/B50/sprockets%2F877a93d34cbc7b4cf1837a56398f0185 +0 -0
- data/test/dummy/tmp/cache/assets/CF2/6B0/sprockets%2F8c7e5aab44b8703a6379569d887145be +0 -0
- data/test/dummy/tmp/cache/assets/CF3/2A0/sprockets%2Fcf7fca385a816577b9a3a8583117696d +0 -0
- data/test/dummy/tmp/cache/assets/CF5/5E0/sprockets%2Fdaf7891f7f08019202f8576899bb51ce +0 -0
- data/test/dummy/tmp/cache/assets/CF5/F60/sprockets%2Fbf00d9de7199bf7775c55128a295b677 +0 -0
- data/test/dummy/tmp/cache/assets/CF6/F60/sprockets%2Fc8e90a0ee2521916c1aa1a41b6463a63 +0 -0
- data/test/dummy/tmp/cache/assets/CF8/AB0/sprockets%2F7755643d4dc601cdf47e9886b4f379a5 +0 -0
- data/test/dummy/tmp/cache/assets/CF8/FA0/sprockets%2F853bda27091dea80f5121d20a08b53a7 +0 -0
- data/test/dummy/tmp/cache/assets/CFC/970/sprockets%2Fbe27af53c78bc90a6113a41620a448e1 +0 -0
- data/test/dummy/tmp/cache/assets/D01/160/sprockets%2Fa74c8a20e3158be3fb170499a11093db +0 -0
- data/test/dummy/tmp/cache/assets/D01/4A0/sprockets%2F9e53138a5fa453940a6190c1ba3ac36e +0 -0
- data/test/dummy/tmp/cache/assets/D09/360/sprockets%2Fe5d09aa6884c385437dbb18ca301e353 +0 -0
- data/test/dummy/tmp/cache/assets/D0D/990/sprockets%2F9cbe1835abd85d521b876411a56cb672 +0 -0
- data/test/dummy/tmp/cache/assets/D0E/610/sprockets%2F3e14d0cbb1493615f7d23438bf8fd068 +0 -0
- data/test/dummy/tmp/cache/assets/D0F/870/sprockets%2F7597efb306ce615354e507d02edd14d4 +0 -0
- data/test/dummy/tmp/cache/assets/D10/590/sprockets%2F80386d276f6569b0a12ae1be155f9b3e +0 -0
- data/test/dummy/tmp/cache/assets/D11/060/sprockets%2F6d0bee24e84229bd6014301c878ff6d6 +0 -0
- data/test/dummy/tmp/cache/assets/D11/6A0/sprockets%2Ff21a9f2e8f4075086e68cda0059b25e2 +0 -0
- data/test/dummy/tmp/cache/assets/D11/A30/sprockets%2F210c5ab2fecdef47005c7308685e9297 +0 -0
- data/test/dummy/tmp/cache/assets/D12/460/sprockets%2F9c0db7ab725c7c7b15d2450657fe2369 +0 -0
- data/test/dummy/tmp/cache/assets/D12/760/sprockets%2F03c39aaab0669a6e9670a29f048db686 +0 -0
- data/test/dummy/tmp/cache/assets/D12/A90/sprockets%2F5f4bf0f279ca050491c07688df6d7c02 +0 -0
- data/test/dummy/tmp/cache/assets/D14/020/sprockets%2F0c3544de7e7bd74ee6e2040477f04a88 +0 -0
- data/test/dummy/tmp/cache/assets/D15/9B0/sprockets%2F015d78bcd557b68b039a7abd33b47679 +0 -0
- data/test/dummy/tmp/cache/assets/D19/B40/sprockets%2F1f58b7a260a18bcc697883f96e266a1b +0 -0
- data/test/dummy/tmp/cache/assets/D1A/520/sprockets%2Fe32e6a17fb333c5883939fcb234d2f69 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/6B0/sprockets%2F3c7df42c4a83942ffb31d85d827595b4 +0 -0
- data/test/dummy/tmp/cache/assets/D1C/BD0/sprockets%2Ff389718cb2ba6fe3e0e0c420398f9486 +0 -0
- data/test/dummy/tmp/cache/assets/D21/E90/sprockets%2F2fe752c3566ccd57f7ee339086fc3427 +0 -0
- data/test/dummy/tmp/cache/assets/D23/CD0/sprockets%2F20f79a5d5570f3efef4de79621355e49 +0 -0
- data/test/dummy/tmp/cache/assets/D23/D30/sprockets%2F71867caa2cf28987ed0048cf7d3a7569 +0 -0
- data/test/dummy/tmp/cache/assets/D24/EF0/sprockets%2F776d054d84f539061bd8ddffa66906c8 +0 -0
- data/test/dummy/tmp/cache/assets/D25/4D0/sprockets%2Fde6d162f5e2a587d9564e88d90c773a3 +0 -0
- data/test/dummy/tmp/cache/assets/D27/A90/sprockets%2F1a25693899836d58cad4cbfe8c7a7707 +0 -0
- data/test/dummy/tmp/cache/assets/D2D/F30/sprockets%2Fc75a2beb051b582840cf3800d55b26dc +0 -0
- data/test/dummy/tmp/cache/assets/D2D/F80/sprockets%2F0293aae3c8d8a4fda11a0883c48b5222 +0 -0
- data/test/dummy/tmp/cache/assets/D2E/600/sprockets%2Fda9f7539b9df0aa7d763d14999870d94 +0 -0
- data/test/dummy/tmp/cache/assets/D33/040/sprockets%2F6593d8c52e0b617a12ae2c49aa6e3b07 +0 -0
- data/test/dummy/tmp/cache/assets/D34/7A0/sprockets%2F4b4a0c9775248b2e49c1bae8a72a05c3 +0 -0
- data/test/dummy/tmp/cache/assets/D36/770/sprockets%2F2942b9a5caa50e9107de74eca152619c +0 -0
- data/test/dummy/tmp/cache/assets/D37/9C0/sprockets%2Fdfa99409821a9d0d1d6f30b5461b1ae5 +0 -0
- data/test/dummy/tmp/cache/assets/D38/930/sprockets%2F1dd724d3466a12a84bb248dc7e6d06c6 +0 -0
- data/test/dummy/tmp/cache/assets/D39/7E0/sprockets%2F0a236c2722565068da14f7ecf7b7a8da +0 -0
- data/test/dummy/tmp/cache/assets/D3A/420/sprockets%2Fbd47498d7cbba00ab9c8201883915f2a +0 -0
- data/test/dummy/tmp/cache/assets/D3B/BB0/sprockets%2Ff533a1adca88a3594ec94233f71eb812 +0 -0
- data/test/dummy/tmp/cache/assets/D3B/E20/sprockets%2Fd20320e720f8dc2779b4ec627eb15fb6 +0 -0
- data/test/dummy/tmp/cache/assets/D3D/080/sprockets%2F007ac06f3c784668b28baba6902eec76 +0 -0
- data/test/dummy/tmp/cache/assets/D3D/D30/sprockets%2F5fa8cd221b97c829234dc81721eea60e +0 -0
- data/test/dummy/tmp/cache/assets/D3E/1F0/sprockets%2F6e84e3f3e420bd5ad7f336ce41750d36 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/960/sprockets%2F237931317e014eabd96932637ffadddc +0 -0
- data/test/dummy/tmp/cache/assets/D42/460/sprockets%2Fb195b37929fa63c85fbfb573aa05d209 +0 -0
- data/test/dummy/tmp/cache/assets/D42/F90/sprockets%2F632555653af85b04e418abb9dee238cf +0 -0
- data/test/dummy/tmp/cache/assets/D44/400/sprockets%2F3cdc153bbcae4ac07e75193678d61996 +0 -0
- data/test/dummy/tmp/cache/assets/D46/D10/sprockets%2F3399d1c2c5dbc7c9e0f2106296d82fd7 +0 -0
- data/test/dummy/tmp/cache/assets/D47/A70/sprockets%2F526b1eb3f0c2369b0c16c96ddf775f96 +0 -0
- data/test/dummy/tmp/cache/assets/D48/180/sprockets%2Ffce9aa3720b73d2259e644a2e3a99c89 +0 -0
- data/test/dummy/tmp/cache/assets/D48/6F0/sprockets%2F7a67d797a92f48d3104ecf5e42b5bc71 +0 -0
- data/test/dummy/tmp/cache/assets/D4A/7B0/sprockets%2F8cbd4e8cdea7e3e486565d92b2271561 +0 -0
- data/test/dummy/tmp/cache/assets/D4C/2C0/sprockets%2F096baecb9254aaa68d12c0a3c34a2121 +0 -0
- data/test/dummy/tmp/cache/assets/D4E/440/sprockets%2F141dfe7665828ab1d5ee647d0e797e5a +0 -0
- data/test/dummy/tmp/cache/assets/D4F/D90/sprockets%2F1e4fde9a33bb918796edc96eb0805564 +0 -0
- data/test/dummy/tmp/cache/assets/D50/390/sprockets%2F04f3299f7c28fa65842d4bda257df9d5 +0 -0
- data/test/dummy/tmp/cache/assets/D51/330/sprockets%2F0e113bb1dc7050041be6f8d28c4ebb41 +0 -0
- data/test/dummy/tmp/cache/assets/D57/370/sprockets%2F102e7ebfa287ea2e1b58052b052c1ee2 +0 -0
- data/test/dummy/tmp/cache/assets/D57/C50/sprockets%2F28a22bacabfe4b780402b3ca83a54843 +0 -0
- data/test/dummy/tmp/cache/assets/D57/D00/sprockets%2Fbb9c7666fe4175a054557fff4ccf5983 +0 -0
- data/test/dummy/tmp/cache/assets/D59/E30/sprockets%2Fa8a09c836fc128ee889ce97d72e6444c +0 -0
- data/test/dummy/tmp/cache/assets/D5C/800/sprockets%2Fdd1b21cea3433ac792403e3de4f84f11 +0 -0
- data/test/dummy/tmp/cache/assets/D5D/140/sprockets%2Ffca988958f2a37ce8eb6b77337e793c0 +0 -0
- data/test/dummy/tmp/cache/assets/D5F/630/sprockets%2Ff2df01200f9420db5285f15bbdf4e34e +0 -0
- data/test/dummy/tmp/cache/assets/D61/420/sprockets%2F79102ecb63d32f0f43e46f481acab0c7 +0 -0
- data/test/dummy/tmp/cache/assets/D61/B10/sprockets%2F56a7f22ca114fc32e60a2ca8e5c946e1 +0 -0
- data/test/dummy/tmp/cache/assets/D61/C00/sprockets%2F71ad51ea200867d43de03b8b25eb3e6f +0 -0
- data/test/dummy/tmp/cache/assets/D63/400/sprockets%2F30721d1c6698a64ac1cdc7e8d3ad37a0 +0 -0
- data/test/dummy/tmp/cache/assets/D65/3D0/sprockets%2Fc70f23593414be8a0daf25149ecb06fd +0 -0
- data/test/dummy/tmp/cache/assets/D68/020/sprockets%2Fc393ddcb5c7dbaf1665bc90491523d23 +0 -0
- data/test/dummy/tmp/cache/assets/D68/9F0/sprockets%2F0a2eac996cb10aab983963ec21c9d166 +0 -0
- data/test/dummy/tmp/cache/assets/D68/FA0/sprockets%2F315d926695d2ababc102ded8362e7c7b +0 -0
- data/test/dummy/tmp/cache/assets/D69/810/sprockets%2F8a4fedc6fc72ca37c7403924c01b374d +0 -0
- data/test/dummy/tmp/cache/assets/D6A/400/sprockets%2F7797a681a0c8c541bad4febaa526920e +0 -0
- data/test/dummy/tmp/cache/assets/D6A/800/sprockets%2F9e3ba44ae81df1dc8c541a05e0239c79 +0 -0
- data/test/dummy/tmp/cache/assets/D6B/890/sprockets%2Fdacdb6e192b1709870319bbb0feb3669 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/DD0/sprockets%2Ffbfa79e06a10e3016c741fff74c5e652 +0 -0
- data/test/dummy/tmp/cache/assets/D6E/540/sprockets%2F1ec9a9013efe375e03b9ba538af9b515 +0 -0
- data/test/dummy/tmp/cache/assets/D70/D70/sprockets%2Fd7f6a9d69e31ff706e22c0b283b6a1e4 +0 -0
- data/test/dummy/tmp/cache/assets/D70/F70/sprockets%2Ff296c418125b7be0bc89c34eec50e82d +0 -0
- data/test/dummy/tmp/cache/assets/D71/6E0/sprockets%2F8c3e23061d8826cf63999adbe4a0d5ba +0 -0
- data/test/dummy/tmp/cache/assets/D73/3D0/sprockets%2Fbad4cc5e382119c131bd5947dd7c96e7 +0 -0
- data/test/dummy/tmp/cache/assets/D74/9D0/sprockets%2F1893ad2efa07114b729fd1f09ae97f4e +0 -0
- data/test/dummy/tmp/cache/assets/D74/EE0/sprockets%2Fe68a01853f554a88bb865bc94ba1bbd9 +0 -0
- data/test/dummy/tmp/cache/assets/D75/900/sprockets%2F857ad23ff231bc76bec12fd9a966538a +0 -0
- data/test/dummy/tmp/cache/assets/D76/060/sprockets%2Fd80d293a509fdecc872163f94b8fcc13 +0 -0
- data/test/dummy/tmp/cache/assets/D76/350/sprockets%2F66508d9698453a0ffabcf1368ca7a1fc +0 -0
- data/test/dummy/tmp/cache/assets/D79/820/sprockets%2F99bcacecd3fb76124a968b4b8341e729 +0 -0
- data/test/dummy/tmp/cache/assets/D7E/130/sprockets%2F1affef8c994fdc43ba85491b2724627f +0 -0
- data/test/dummy/tmp/cache/assets/D7E/C00/sprockets%2F8ed69e6fd77505a244caf6dde36822e3 +0 -0
- data/test/dummy/tmp/cache/assets/D80/7A0/sprockets%2F68e74ee988b46d128ff3020bc0e9c7fd +0 -0
- data/test/dummy/tmp/cache/assets/D82/800/sprockets%2F9f0d326f40e88f324ff3a367d9b3fc9f +0 -0
- data/test/dummy/tmp/cache/assets/D84/650/sprockets%2Fea05e644410721afbbd8fd1a3a7a1c08 +0 -0
- data/test/dummy/tmp/cache/assets/D89/3A0/sprockets%2F53ef2870ac0bb142a8322eee9adca207 +0 -0
- data/test/dummy/tmp/cache/assets/D8B/240/sprockets%2Faddf06da0d70aa150d16b97b6816d0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D8B/3B0/sprockets%2Fd0c134b0b275ea2f800380fcaebc95f5 +0 -0
- data/test/dummy/tmp/cache/assets/D8D/F70/sprockets%2F70d5fc5c803f7ba21c3a7374003bfcdd +0 -0
- data/test/dummy/tmp/cache/assets/D8F/B90/sprockets%2F5468bccabc20d4cf562bd110508df3d8 +0 -0
- data/test/dummy/tmp/cache/assets/D92/3B0/sprockets%2Fc03a95a4b2eb432d9f5ceda3fb082860 +0 -0
- data/test/dummy/tmp/cache/assets/D93/FE0/sprockets%2Fac1c5a644564a7fd2861539dbaf2a0fb +0 -0
- data/test/dummy/tmp/cache/assets/D95/500/sprockets%2Fa3c0fdf5260f72d128f7cbb2a64fd408 +0 -0
- data/test/dummy/tmp/cache/assets/D97/2E0/sprockets%2F93c35b873a3c8ea35f1628e1ad2deb2b +0 -0
- data/test/dummy/tmp/cache/assets/D97/4A0/sprockets%2F2fae66f8ad04be7ce8109005c735acf1 +0 -0
- data/test/dummy/tmp/cache/assets/D98/E90/sprockets%2F04cdcb52b072efd49452f2cde9721fb4 +0 -0
- data/test/dummy/tmp/cache/assets/D9C/E90/sprockets%2F7d2da4bd8ee5b4ff754581d41806aba2 +0 -0
- data/test/dummy/tmp/cache/assets/DA0/2C0/sprockets%2F61c0dfd9a973f9891cd3d6b322bc33ea +0 -0
- data/test/dummy/tmp/cache/assets/DA0/C70/sprockets%2Ff29a718bce262c8d86f3abe9443b41cb +0 -0
- data/test/dummy/tmp/cache/assets/DA3/A00/sprockets%2F7e7df285dbb4694a5f1583fba12ab84d +0 -0
- data/test/dummy/tmp/cache/assets/DA3/EC0/sprockets%2F159d528ec53e415cbc9d29be3a2b96fb +0 -0
- data/test/dummy/tmp/cache/assets/DA5/170/sprockets%2F6a564a0e1afd718a07d87f069bc48dff +0 -0
- data/test/dummy/tmp/cache/assets/DA6/730/sprockets%2F5758d9d4ad2c22c9ffd113a78f6d36bb +0 -0
- data/test/dummy/tmp/cache/assets/DA7/6F0/sprockets%2F3e39ce593cda9b3bce9c3c8e014829b5 +0 -0
- data/test/dummy/tmp/cache/assets/DA9/0B0/sprockets%2F66e39ce1e6e7adc58cb01550fe58c93d +0 -0
- data/test/dummy/tmp/cache/assets/DAD/9D0/sprockets%2Fc99ec7c84f8f79200eda8424c6bda6e1 +0 -0
- data/test/dummy/tmp/cache/assets/DAE/B70/sprockets%2F278f525bc64f4ead949d9dfa1f1a37c8 +0 -0
- data/test/dummy/tmp/cache/assets/DB3/740/sprockets%2F3fc2be88f7fa50a9992fe961ffc50a83 +0 -0
- data/test/dummy/tmp/cache/assets/DB3/770/sprockets%2F47998ff4ce9a2b5383b95bd54ded3c3d +0 -0
- data/test/dummy/tmp/cache/assets/DB6/6C0/sprockets%2Fe710d8fbf4ca41d29a742b22a21a0fec +0 -0
- data/test/dummy/tmp/cache/assets/DBC/330/sprockets%2Ffc79d797d11878bc435b668cdfbc94cf +0 -0
- data/test/dummy/tmp/cache/assets/DBF/270/sprockets%2F820ebc60d1be685f4044d1cb8cabdd17 +0 -0
- data/test/dummy/tmp/cache/assets/DBF/E80/sprockets%2F41d82531e91fc1ca0c806beacf0cfc84 +0 -0
- data/test/dummy/tmp/cache/assets/DC1/E40/sprockets%2F57aebd4c69abf9331b4770bd3ced100d +0 -0
- data/test/dummy/tmp/cache/assets/DC1/FD0/sprockets%2Ff97fb61e211912bbc1eaed82c4ad740c +0 -0
- data/test/dummy/tmp/cache/assets/DC2/250/sprockets%2Ffddac1268ff054c12ea32cc6619c46ac +0 -0
- data/test/dummy/tmp/cache/assets/DC2/5F0/sprockets%2F68dc2f8cab31bbd8ab65220c685eb15b +0 -0
- data/test/dummy/tmp/cache/assets/DC3/7C0/sprockets%2Fa78b7c0aa57b250e05d5ad1e56ac9ed5 +0 -0
- data/test/dummy/tmp/cache/assets/DC9/330/sprockets%2Fc5fe138ffe1adb009a407c172fcb9b49 +0 -0
- data/test/dummy/tmp/cache/assets/DCC/F10/sprockets%2F4fb860d9bb2c56165fae6ecc193bd1f2 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/0E0/sprockets%2Fc1845aeaffa0d9c887108b5cf1a77dc2 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/920/sprockets%2F5208ac969dfa6f4dd531ef2d2afb454b +0 -0
- data/test/dummy/tmp/cache/assets/DCE/950/sprockets%2F2d0d1caef1b638f88de704d1eb07be88 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/9C0/sprockets%2Fc6b7fd0b623a5b66692ed21dafe5ee18 +0 -0
- data/test/dummy/tmp/cache/assets/DD2/190/sprockets%2F3662cdc2f2f551c51ec9bddb9177deb7 +0 -0
- data/test/dummy/tmp/cache/assets/DD2/C80/sprockets%2Fe94b85ec5d4eeb0616972dd03cadf06f +0 -0
- data/test/dummy/tmp/cache/assets/DD3/B30/sprockets%2Ff1eab781d903ebdf7d9379cca92533ba +0 -0
- data/test/dummy/tmp/cache/assets/DD5/8F0/sprockets%2F4bfcc6fffb235da87a162efc721985e2 +0 -0
- data/test/dummy/tmp/cache/assets/DD6/8B0/sprockets%2F8ab6728b7ab04dbec482fe5fb7ef8604 +0 -0
- data/test/dummy/tmp/cache/assets/DD6/E50/sprockets%2F1ce8c04cfee001955cf5fd9ed7d59a52 +0 -0
- data/test/dummy/tmp/cache/assets/DD9/D30/sprockets%2F9abfa5c86dbf28fd7be89b650c3d5225 +0 -0
- data/test/dummy/tmp/cache/assets/DE7/E30/sprockets%2F18bca0215ecdc63ba01a2ee5cd7c34f8 +0 -0
- data/test/dummy/tmp/cache/assets/DE8/C20/sprockets%2Fc91409dc1b447ba1beaa0be9b33ef14d +0 -0
- data/test/dummy/tmp/cache/assets/DED/270/sprockets%2Fdee70d8becb01a00e2d7420c6a646dff +0 -0
- data/test/dummy/tmp/cache/assets/DF4/2D0/sprockets%2Ffd83bba93ef8ca1a70c63ee4b625a6b0 +0 -0
- data/test/dummy/tmp/cache/assets/DF8/E50/sprockets%2Fbb1bdc05e895b8c08cb6ca4491ed51cf +0 -0
- data/test/dummy/tmp/cache/assets/DFB/EC0/sprockets%2F94ccf06d9a630eaa4a9865d7e74aaaba +0 -0
- data/test/dummy/tmp/cache/assets/DFC/FC0/sprockets%2Fd8badee5b41f9328df1d3fe153eef401 +0 -0
- data/test/dummy/tmp/cache/assets/DFD/F30/sprockets%2Fd60da4793bab6bff313a6bfc25985dfb +0 -0
- data/test/dummy/tmp/cache/assets/DFE/230/sprockets%2Fd260ce7fb8bf41f914b57c0dde9b0af6 +0 -0
- data/test/dummy/tmp/cache/assets/DFE/2E0/sprockets%2F813f277df6cd78babbdb7f5c34f3ab05 +0 -0
- data/test/dummy/tmp/cache/assets/DFE/E50/sprockets%2F59b3e0cbbf99e92737aab0bcfc205f5f +0 -0
- data/test/dummy/tmp/cache/assets/DFF/9F0/sprockets%2Fb4677ae08ff6f9edaf3b2bcbb115a963 +0 -0
- data/test/dummy/tmp/cache/assets/E05/480/sprockets%2F789f3eb9b0ee9d3fb684066acaebd4a1 +0 -0
- data/test/dummy/tmp/cache/assets/E08/8A0/sprockets%2F3cb6916a9933fdfd43d6defe3e4a6d1d +0 -0
- data/test/dummy/tmp/cache/assets/E09/A00/sprockets%2F77913b88dec083cedb3875beae2efd5a +0 -0
- data/test/dummy/tmp/cache/assets/E16/E60/sprockets%2Ffe5e3c5af908e8cc7ff70976fdc14db7 +0 -0
- data/test/dummy/tmp/cache/assets/E28/B70/sprockets%2Fb2fa75ae01dda6654abd60c78c8bf5cf +0 -0
- data/test/dummy/tmp/cache/assets/E30/8A0/sprockets%2F5d3fccefabad47a78655a5c92adb3c76 +0 -0
- data/test/dummy/tmp/cache/assets/E36/9F0/sprockets%2Fb2bdf95afd8ecf06ce9b8407a2f9b1b8 +0 -0
- data/test/dummy/tmp/cache/assets/E3E/C60/sprockets%2F8b3bfb5dbc23d849d4f2fc6dd7fe45d9 +0 -0
- data/test/dummy/tmp/cache/assets/E3F/B10/sprockets%2F7b1af74e67b27fff762f3cdfebe5f4a7 +0 -0
- data/test/dummy/tmp/cache/assets/E50/740/sprockets%2F0578ebbffb5c27d00cc86b1dd7b1eada +0 -0
- data/test/dummy/tmp/cache/assets/E50/9F0/sprockets%2Fddfa62aba6a56ed6ab5e44ae36b175ad +0 -0
- data/test/dummy/tmp/cache/assets/E5D/160/sprockets%2F44a9be8a9b567fceec2bdc4ab074bbb9 +0 -0
- data/test/dummy/tmp/cache/assets/E61/FB0/sprockets%2F97c2b65cafddc7ac59ae4a5e2a18afe8 +0 -0
- data/test/dummy/tmp/cache/assets/E73/680/sprockets%2F1a4d0b08b6fdbacbfe0d1cb7df5db251 +0 -0
- data/test/dummy/tmp/cache/assets/ED1/C10/sprockets%2Fa9a13ad3bb3a6ccbb6faac3fac0b6c8e +0 -0
- data/test/dummy/tmp/cache/assets/EF0/E30/sprockets%2F3ac422b66adec6cffa8edecf9bdea48d +0 -0
- data/test/dummy/tmp/pids/server.pid +1 -1
- metadata +33 -15
- data/app/assets/javascripts/Core/AnimationController.js +0 -148
- data/app/assets/javascripts/Scene/ImageryProviderError.js +0 -149
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +0 -1
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +0 -47
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +0 -24
@@ -4,11 +4,12 @@ define(function() {
|
|
4
4
|
"use strict";
|
5
5
|
return "attribute vec4 position;\n\
|
6
6
|
attribute vec2 textureCoordinates;\n\
|
7
|
+
\n\
|
7
8
|
varying vec2 v_textureCoordinates;\n\
|
8
|
-
|
9
|
+
\n\
|
10
|
+
void main() \n\
|
9
11
|
{\n\
|
10
|
-
gl_Position = position;\n\
|
11
|
-
v_textureCoordinates = textureCoordinates;\n\
|
12
|
-
}
|
13
|
-
";
|
12
|
+
gl_Position = position;\n\
|
13
|
+
v_textureCoordinates = textureCoordinates;\n\
|
14
|
+
}";
|
14
15
|
});
|
@@ -0,0 +1,88 @@
|
|
1
|
+
/**
|
2
|
+
@license
|
3
|
+
Knockout JavaScript library v2.2.1
|
4
|
+
(c) Steven Sanderson - http://knockoutjs.com/
|
5
|
+
License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
6
|
+
*/
|
7
|
+
|
8
|
+
(function() {function j(w){throw w;}var m=!0,p=null,r=!1;function u(w){return function(){return w}};var x=window,y=document,ga=navigator,F=window.jQuery,I=void 0;
|
9
|
+
function L(w){function ha(a,d,c,e,f){var g=[];a=b.j(function(){var a=d(c,f)||[];0<g.length&&(b.a.Ya(M(g),a),e&&b.r.K(e,p,[c,a,f]));g.splice(0,g.length);b.a.P(g,a)},p,{W:a,Ka:function(){return 0==g.length||!b.a.X(g[0])}});return{M:g,j:a.pa()?a:I}}function M(a){for(;a.length&&!b.a.X(a[0]);)a.splice(0,1);if(1<a.length){for(var d=a[0],c=a[a.length-1],e=[d];d!==c;){d=d.nextSibling;if(!d)return;e.push(d)}Array.prototype.splice.apply(a,[0,a.length].concat(e))}return a}function S(a,b,c,e,f){var g=Math.min,
|
10
|
+
h=Math.max,k=[],l,n=a.length,q,s=b.length,v=s-n||1,G=n+s+1,J,A,z;for(l=0;l<=n;l++){A=J;k.push(J=[]);z=g(s,l+v);for(q=h(0,l-1);q<=z;q++)J[q]=q?l?a[l-1]===b[q-1]?A[q-1]:g(A[q]||G,J[q-1]||G)+1:q+1:l+1}g=[];h=[];v=[];l=n;for(q=s;l||q;)s=k[l][q]-1,q&&s===k[l][q-1]?h.push(g[g.length]={status:c,value:b[--q],index:q}):l&&s===k[l-1][q]?v.push(g[g.length]={status:e,value:a[--l],index:l}):(g.push({status:"retained",value:b[--q]}),--l);if(h.length&&v.length){a=10*n;var t;for(b=c=0;(f||b<a)&&(t=h[c]);c++){for(e=
|
11
|
+
0;k=v[e];e++)if(t.value===k.value){t.moved=k.index;k.moved=t.index;v.splice(e,1);b=e=0;break}b+=e}}return g.reverse()}function T(a,d,c,e,f){f=f||{};var g=a&&N(a),g=g&&g.ownerDocument,h=f.templateEngine||O;b.za.vb(c,h,g);c=h.renderTemplate(c,e,f,g);("number"!=typeof c.length||0<c.length&&"number"!=typeof c[0].nodeType)&&j(Error("Template engine must return an array of DOM nodes"));g=r;switch(d){case "replaceChildren":b.e.N(a,c);g=m;break;case "replaceNode":b.a.Ya(a,c);g=m;break;case "ignoreTargetNode":break;
|
12
|
+
default:j(Error("Unknown renderMode: "+d))}g&&(U(c,e),f.afterRender&&b.r.K(f.afterRender,p,[c,e.$data]));return c}function N(a){return a.nodeType?a:0<a.length?a[0]:p}function U(a,d){if(a.length){var c=a[0],e=a[a.length-1];V(c,e,function(a){b.Da(d,a)});V(c,e,function(a){b.s.ib(a,[d])})}}function V(a,d,c){var e;for(d=b.e.nextSibling(d);a&&(e=a)!==d;)a=b.e.nextSibling(e),(1===e.nodeType||8===e.nodeType)&&c(e)}function W(a,d,c){a=b.g.aa(a);for(var e=b.g.Q,f=0;f<a.length;f++){var g=a[f].key;if(e.hasOwnProperty(g)){var h=
|
13
|
+
e[g];"function"===typeof h?(g=h(a[f].value))&&j(Error(g)):h||j(Error("This template engine does not support the '"+g+"' binding within its templates"))}}a="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+b.g.ba(a)+" } })()})";return c.createJavaScriptEvaluatorBlock(a)+d}function X(a,d,c,e){function f(a){return function(){return k[a]}}function g(){return k}var h=0,k,l;b.j(function(){var n=c&&c instanceof b.z?c:new b.z(b.a.d(c)),q=n.$data;e&&b.eb(a,n);if(k=("function"==typeof d?
|
14
|
+
d(n,a):d)||b.J.instance.getBindings(a,n)){if(0===h){h=1;for(var s in k){var v=b.c[s];v&&8===a.nodeType&&!b.e.I[s]&&j(Error("The binding '"+s+"' cannot be used with virtual elements"));if(v&&"function"==typeof v.init&&(v=(0,v.init)(a,f(s),g,q,n))&&v.controlsDescendantBindings)l!==I&&j(Error("Multiple bindings ("+l+" and "+s+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.")),l=s}h=2}if(2===h)for(s in k)(v=b.c[s])&&"function"==
|
15
|
+
typeof v.update&&(0,v.update)(a,f(s),g,q,n)}},p,{W:a});return{Nb:l===I}}function Y(a,d,c){var e=m,f=1===d.nodeType;f&&b.e.Ta(d);if(f&&c||b.J.instance.nodeHasBindings(d))e=X(d,p,a,c).Nb;e&&Z(a,d,!f)}function Z(a,d,c){for(var e=b.e.firstChild(d);d=e;)e=b.e.nextSibling(d),Y(a,d,c)}function $(a,b){var c=aa(a,b);return c?0<c.length?c[c.length-1].nextSibling:a.nextSibling:p}function aa(a,b){for(var c=a,e=1,f=[];c=c.nextSibling;){if(H(c)&&(e--,0===e))return f;f.push(c);B(c)&&e++}b||j(Error("Cannot find closing comment tag to match: "+
|
16
|
+
a.nodeValue));return p}function H(a){return 8==a.nodeType&&(K?a.text:a.nodeValue).match(ia)}function B(a){return 8==a.nodeType&&(K?a.text:a.nodeValue).match(ja)}function P(a,b){for(var c=p;a!=c;)c=a,a=a.replace(ka,function(a,c){return b[c]});return a}function la(){var a=[],d=[];this.save=function(c,e){var f=b.a.i(a,c);0<=f?d[f]=e:(a.push(c),d.push(e))};this.get=function(c){c=b.a.i(a,c);return 0<=c?d[c]:I}}function ba(a,b,c){function e(e){var g=b(a[e]);switch(typeof g){case "boolean":case "number":case "string":case "function":f[e]=
|
17
|
+
g;break;case "object":case "undefined":var h=c.get(g);f[e]=h!==I?h:ba(g,b,c)}}c=c||new la;a=b(a);if(!("object"==typeof a&&a!==p&&a!==I&&!(a instanceof Date)))return a;var f=a instanceof Array?[]:{};c.save(a,f);var g=a;if(g instanceof Array){for(var h=0;h<g.length;h++)e(h);"function"==typeof g.toJSON&&e("toJSON")}else for(h in g)e(h);return f}function ca(a,d){if(a)if(8==a.nodeType){var c=b.s.Ua(a.nodeValue);c!=p&&d.push({sb:a,Fb:c})}else if(1==a.nodeType)for(var c=0,e=a.childNodes,f=e.length;c<f;c++)ca(e[c],
|
18
|
+
d)}function Q(a,d,c,e){b.c[a]={init:function(a){b.a.f.set(a,da,{});return{controlsDescendantBindings:m}},update:function(a,g,h,k,l){h=b.a.f.get(a,da);g=b.a.d(g());k=!c!==!g;var n=!h.Za;if(n||d||k!==h.qb)n&&(h.Za=b.a.Ia(b.e.childNodes(a),m)),k?(n||b.e.N(a,b.a.Ia(h.Za)),b.Ea(e?e(l,g):l,a)):b.e.Y(a),h.qb=k}};b.g.Q[a]=r;b.e.I[a]=m}function ea(a,d,c){c&&d!==b.k.q(a)&&b.k.T(a,d);d!==b.k.q(a)&&b.r.K(b.a.Ba,p,[a,"change"])}var b="undefined"!==typeof w?w:{};b.b=function(a,d){for(var c=a.split("."),e=b,f=0;f<
|
19
|
+
c.length-1;f++)e=e[c[f]];e[c[c.length-1]]=d};b.p=function(a,b,c){a[b]=c};b.version="2.2.1";b.b("version",b.version);b.a=new function(){function a(a,d){if("input"!==b.a.u(a)||!a.type||"click"!=d.toLowerCase())return r;var c=a.type;return"checkbox"==c||"radio"==c}var d=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,c={},e={};c[/Firefox\/2/i.test(ga.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];c.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");
|
20
|
+
for(var f in c){var g=c[f];if(g.length)for(var h=0,k=g.length;h<k;h++)e[g[h]]=f}var l={propertychange:m},n,c=3;f=y.createElement("div");for(g=f.getElementsByTagName("i");f.innerHTML="\x3c!--[if gt IE "+ ++c+"]><i></i><![endif]--\x3e",g[0];);n=4<c?c:I;return{Na:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],o:function(a,b){for(var d=0,c=a.length;d<c;d++)b(a[d])},i:function(a,b){if("function"==typeof Array.prototype.indexOf)return Array.prototype.indexOf.call(a,b);for(var d=0,c=a.length;d<
|
21
|
+
c;d++)if(a[d]===b)return d;return-1},lb:function(a,b,d){for(var c=0,e=a.length;c<e;c++)if(b.call(d,a[c]))return a[c];return p},ga:function(a,d){var c=b.a.i(a,d);0<=c&&a.splice(c,1)},Ga:function(a){a=a||[];for(var d=[],c=0,e=a.length;c<e;c++)0>b.a.i(d,a[c])&&d.push(a[c]);return d},V:function(a,b){a=a||[];for(var d=[],c=0,e=a.length;c<e;c++)d.push(b(a[c]));return d},fa:function(a,b){a=a||[];for(var d=[],c=0,e=a.length;c<e;c++)b(a[c])&&d.push(a[c]);return d},P:function(a,b){if(b instanceof Array)a.push.apply(a,
|
22
|
+
b);else for(var d=0,c=b.length;d<c;d++)a.push(b[d]);return a},extend:function(a,b){if(b)for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);return a},ka:function(a){for(;a.firstChild;)b.removeNode(a.firstChild)},Hb:function(a){a=b.a.L(a);for(var d=y.createElement("div"),c=0,e=a.length;c<e;c++)d.appendChild(b.A(a[c]));return d},Ia:function(a,d){for(var c=0,e=a.length,g=[];c<e;c++){var f=a[c].cloneNode(m);g.push(d?b.A(f):f)}return g},N:function(a,d){b.a.ka(a);if(d)for(var c=0,e=d.length;c<e;c++)a.appendChild(d[c])},
|
23
|
+
Ya:function(a,d){var c=a.nodeType?[a]:a;if(0<c.length){for(var e=c[0],g=e.parentNode,f=0,h=d.length;f<h;f++)g.insertBefore(d[f],e);f=0;for(h=c.length;f<h;f++)b.removeNode(c[f])}},bb:function(a,b){7>n?a.setAttribute("selected",b):a.selected=b},D:function(a){return(a||"").replace(d,"")},Rb:function(a,d){for(var c=[],e=(a||"").split(d),f=0,g=e.length;f<g;f++){var h=b.a.D(e[f]);""!==h&&c.push(h)}return c},Ob:function(a,b){a=a||"";return b.length>a.length?r:a.substring(0,b.length)===b},tb:function(a,b){if(b.compareDocumentPosition)return 16==
|
24
|
+
(b.compareDocumentPosition(a)&16);for(;a!=p;){if(a==b)return m;a=a.parentNode}return r},X:function(a){return b.a.tb(a,a.ownerDocument)},u:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},n:function(b,d,c){var e=n&&l[d];if(!e&&"undefined"!=typeof F){if(a(b,d)){var f=c;c=function(a,b){var d=this.checked;b&&(this.checked=b.nb!==m);f.call(this,a);this.checked=d}}F(b).bind(d,c)}else!e&&"function"==typeof b.addEventListener?b.addEventListener(d,c,r):"undefined"!=typeof b.attachEvent?b.attachEvent("on"+
|
25
|
+
d,function(a){c.call(b,a)}):j(Error("Browser doesn't support addEventListener or attachEvent"))},Ba:function(b,d){(!b||!b.nodeType)&&j(Error("element must be a DOM node when calling triggerEvent"));if("undefined"!=typeof F){var c=[];a(b,d)&&c.push({nb:b.checked});F(b).trigger(d,c)}else"function"==typeof y.createEvent?"function"==typeof b.dispatchEvent?(c=y.createEvent(e[d]||"HTMLEvents"),c.initEvent(d,m,m,x,0,0,0,0,0,r,r,r,r,0,b),b.dispatchEvent(c)):j(Error("The supplied element doesn't support dispatchEvent")):
|
26
|
+
"undefined"!=typeof b.fireEvent?(a(b,d)&&(b.checked=b.checked!==m),b.fireEvent("on"+d)):j(Error("Browser doesn't support triggering events"))},d:function(a){return b.$(a)?a():a},ua:function(a){return b.$(a)?a.t():a},da:function(a,d,c){if(d){var e=/[\w-]+/g,f=a.className.match(e)||[];b.a.o(d.match(e),function(a){var d=b.a.i(f,a);0<=d?c||f.splice(d,1):c&&f.push(a)});a.className=f.join(" ")}},cb:function(a,d){var c=b.a.d(d);if(c===p||c===I)c="";if(3===a.nodeType)a.data=c;else{var e=b.e.firstChild(a);
|
27
|
+
!e||3!=e.nodeType||b.e.nextSibling(e)?b.e.N(a,[y.createTextNode(c)]):e.data=c;b.a.wb(a)}},ab:function(a,b){a.name=b;if(7>=n)try{a.mergeAttributes(y.createElement("<input name='"+a.name+"'/>"),r)}catch(d){}},wb:function(a){9<=n&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},ub:function(a){if(9<=n){var b=a.style.width;a.style.width=0;a.style.width=b}},Lb:function(a,d){a=b.a.d(a);d=b.a.d(d);for(var c=[],e=a;e<=d;e++)c.push(e);return c},L:function(a){for(var b=[],d=0,c=a.length;d<
|
28
|
+
c;d++)b.push(a[d]);return b},Pb:6===n,Qb:7===n,Z:n,Oa:function(a,d){for(var c=b.a.L(a.getElementsByTagName("input")).concat(b.a.L(a.getElementsByTagName("textarea"))),e="string"==typeof d?function(a){return a.name===d}:function(a){return d.test(a.name)},f=[],g=c.length-1;0<=g;g--)e(c[g])&&f.push(c[g]);return f},Ib:function(a){return"string"==typeof a&&(a=b.a.D(a))?x.JSON&&x.JSON.parse?x.JSON.parse(a):(new Function("return "+a))():p},xa:function(a,d,c){("undefined"==typeof JSON||"undefined"==typeof JSON.stringify)&&
|
29
|
+
j(Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js"));return JSON.stringify(b.a.d(a),d,c)},Jb:function(a,d,c){c=c||{};var e=c.params||{},f=c.includeFields||this.Na,g=a;if("object"==typeof a&&"form"===b.a.u(a))for(var g=a.action,h=f.length-1;0<=h;h--)for(var k=b.a.Oa(a,f[h]),l=k.length-1;0<=l;l--)e[k[l].name]=k[l].value;d=b.a.d(d);var n=y.createElement("form");
|
30
|
+
n.style.display="none";n.action=g;n.method="post";for(var w in d)a=y.createElement("input"),a.name=w,a.value=b.a.xa(b.a.d(d[w])),n.appendChild(a);for(w in e)a=y.createElement("input"),a.name=w,a.value=e[w],n.appendChild(a);y.body.appendChild(n);c.submitter?c.submitter(n):n.submit();setTimeout(function(){n.parentNode.removeChild(n)},0)}}};b.b("utils",b.a);b.b("utils.arrayForEach",b.a.o);b.b("utils.arrayFirst",b.a.lb);b.b("utils.arrayFilter",b.a.fa);b.b("utils.arrayGetDistinctValues",b.a.Ga);b.b("utils.arrayIndexOf",
|
31
|
+
b.a.i);b.b("utils.arrayMap",b.a.V);b.b("utils.arrayPushAll",b.a.P);b.b("utils.arrayRemoveItem",b.a.ga);b.b("utils.extend",b.a.extend);b.b("utils.fieldsIncludedWithJsonPost",b.a.Na);b.b("utils.getFormFields",b.a.Oa);b.b("utils.peekObservable",b.a.ua);b.b("utils.postJson",b.a.Jb);b.b("utils.parseJson",b.a.Ib);b.b("utils.registerEventHandler",b.a.n);b.b("utils.stringifyJson",b.a.xa);b.b("utils.range",b.a.Lb);b.b("utils.toggleDomNodeCssClass",b.a.da);b.b("utils.triggerEvent",b.a.Ba);b.b("utils.unwrapObservable",
|
32
|
+
b.a.d);Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,c=Array.prototype.slice.call(arguments);a=c.shift();return function(){return b.apply(a,c.concat(Array.prototype.slice.call(arguments)))}});b.a.f=new function(){var a=0,d="__ko__"+(new Date).getTime(),c={};return{get:function(a,d){var c=b.a.f.la(a,r);return c===I?I:c[d]},set:function(a,d,c){c===I&&b.a.f.la(a,r)===I||(b.a.f.la(a,m)[d]=c)},la:function(b,f){var g=b[d];if(!g||!("null"!==g&&c[g])){if(!f)return I;g=b[d]="ko"+
|
33
|
+
a++;c[g]={}}return c[g]},clear:function(a){var b=a[d];return b?(delete c[b],a[d]=p,m):r}}};b.b("utils.domData",b.a.f);b.b("utils.domData.clear",b.a.f.clear);b.a.F=new function(){function a(a,d){var e=b.a.f.get(a,c);e===I&&d&&(e=[],b.a.f.set(a,c,e));return e}function d(c){var e=a(c,r);if(e)for(var e=e.slice(0),k=0;k<e.length;k++)e[k](c);b.a.f.clear(c);"function"==typeof F&&"function"==typeof F.cleanData&&F.cleanData([c]);if(f[c.nodeType])for(e=c.firstChild;c=e;)e=c.nextSibling,8===c.nodeType&&d(c)}
|
34
|
+
var c="__ko_domNodeDisposal__"+(new Date).getTime(),e={1:m,8:m,9:m},f={1:m,9:m};return{Ca:function(b,d){"function"!=typeof d&&j(Error("Callback must be a function"));a(b,m).push(d)},Xa:function(d,e){var f=a(d,r);f&&(b.a.ga(f,e),0==f.length&&b.a.f.set(d,c,I))},A:function(a){if(e[a.nodeType]&&(d(a),f[a.nodeType])){var c=[];b.a.P(c,a.getElementsByTagName("*"));for(var k=0,l=c.length;k<l;k++)d(c[k])}return a},removeNode:function(a){b.A(a);a.parentNode&&a.parentNode.removeChild(a)}}};b.A=b.a.F.A;b.removeNode=
|
35
|
+
b.a.F.removeNode;b.b("cleanNode",b.A);b.b("removeNode",b.removeNode);b.b("utils.domNodeDisposal",b.a.F);b.b("utils.domNodeDisposal.addDisposeCallback",b.a.F.Ca);b.b("utils.domNodeDisposal.removeDisposeCallback",b.a.F.Xa);b.a.ta=function(a){var d;if("undefined"!=typeof F)if(F.parseHTML)d=F.parseHTML(a);else{if((d=F.clean([a]))&&d[0]){for(a=d[0];a.parentNode&&11!==a.parentNode.nodeType;)a=a.parentNode;a.parentNode&&a.parentNode.removeChild(a)}}else{var c=b.a.D(a).toLowerCase();d=y.createElement("div");
|
36
|
+
c=c.match(/^<(thead|tbody|tfoot)/)&&[1,"<table>","</table>"]||!c.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!c.indexOf("<td")||!c.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||[0,"",""];a="ignored<div>"+c[1]+a+c[2]+"</div>";for("function"==typeof x.innerShiv?d.appendChild(x.innerShiv(a)):d.innerHTML=a;c[0]--;)d=d.lastChild;d=b.a.L(d.lastChild.childNodes)}return d};b.a.ca=function(a,d){b.a.ka(a);d=b.a.d(d);if(d!==p&&d!==I)if("string"!=typeof d&&(d=d.toString()),
|
37
|
+
"undefined"!=typeof F)F(a).html(d);else for(var c=b.a.ta(d),e=0;e<c.length;e++)a.appendChild(c[e])};b.b("utils.parseHtmlFragment",b.a.ta);b.b("utils.setHtml",b.a.ca);var R={};b.s={ra:function(a){"function"!=typeof a&&j(Error("You can only pass a function to ko.memoization.memoize()"));var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);R[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},hb:function(a,b){var c=R[a];c===I&&j(Error("Couldn't find any memo with ID "+
|
38
|
+
a+". Perhaps it's already been unmemoized."));try{return c.apply(p,b||[]),m}finally{delete R[a]}},ib:function(a,d){var c=[];ca(a,c);for(var e=0,f=c.length;e<f;e++){var g=c[e].sb,h=[g];d&&b.a.P(h,d);b.s.hb(c[e].Fb,h);g.nodeValue="";g.parentNode&&g.parentNode.removeChild(g)}},Ua:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:p}};b.b("memoization",b.s);b.b("memoization.memoize",b.s.ra);b.b("memoization.unmemoize",b.s.hb);b.b("memoization.parseMemoText",b.s.Ua);b.b("memoization.unmemoizeDomNodeAndDescendants",
|
39
|
+
b.s.ib);b.Ma={throttle:function(a,d){a.throttleEvaluation=d;var c=p;return b.j({read:a,write:function(b){clearTimeout(c);c=setTimeout(function(){a(b)},d)}})},notify:function(a,d){a.equalityComparer="always"==d?u(r):b.m.fn.equalityComparer;return a}};b.b("extenders",b.Ma);b.fb=function(a,d,c){this.target=a;this.ha=d;this.rb=c;b.p(this,"dispose",this.B)};b.fb.prototype.B=function(){this.Cb=m;this.rb()};b.S=function(){this.w={};b.a.extend(this,b.S.fn);b.p(this,"subscribe",this.ya);b.p(this,"extend",
|
40
|
+
this.extend);b.p(this,"getSubscriptionsCount",this.yb)};b.S.fn={ya:function(a,d,c){c=c||"change";var e=new b.fb(this,d?a.bind(d):a,function(){b.a.ga(this.w[c],e)}.bind(this));this.w[c]||(this.w[c]=[]);this.w[c].push(e);return e},notifySubscribers:function(a,d){d=d||"change";this.w[d]&&b.r.K(function(){b.a.o(this.w[d].slice(0),function(b){b&&b.Cb!==m&&b.ha(a)})},this)},yb:function(){var a=0,b;for(b in this.w)this.w.hasOwnProperty(b)&&(a+=this.w[b].length);return a},extend:function(a){var d=this;if(a)for(var c in a){var e=
|
41
|
+
b.Ma[c];"function"==typeof e&&(d=e(d,a[c]))}return d}};b.Qa=function(a){return"function"==typeof a.ya&&"function"==typeof a.notifySubscribers};b.b("subscribable",b.S);b.b("isSubscribable",b.Qa);var C=[];b.r={mb:function(a){C.push({ha:a,La:[]})},end:function(){C.pop()},Wa:function(a){b.Qa(a)||j(Error("Only subscribable things can act as dependencies"));if(0<C.length){var d=C[C.length-1];d&&!(0<=b.a.i(d.La,a))&&(d.La.push(a),d.ha(a))}},K:function(a,b,c){try{return C.push(p),a.apply(b,c||[])}finally{C.pop()}}};
|
42
|
+
var ma={undefined:m,"boolean":m,number:m,string:m};b.m=function(a){function d(){if(0<arguments.length){if(!d.equalityComparer||!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return this}b.r.Wa(d);return c}var c=a;b.S.call(d);d.t=function(){return c};d.G=function(){d.notifySubscribers(c)};d.H=function(){d.notifySubscribers(c,"beforeChange")};b.a.extend(d,b.m.fn);b.p(d,"peek",d.t);b.p(d,"valueHasMutated",d.G);b.p(d,"valueWillMutate",d.H);return d};b.m.fn={equalityComparer:function(a,
|
43
|
+
b){return a===p||typeof a in ma?a===b:r}};var E=b.m.Kb="__ko_proto__";b.m.fn[E]=b.m;b.ma=function(a,d){return a===p||a===I||a[E]===I?r:a[E]===d?m:b.ma(a[E],d)};b.$=function(a){return b.ma(a,b.m)};b.Ra=function(a){return"function"==typeof a&&a[E]===b.m||"function"==typeof a&&a[E]===b.j&&a.zb?m:r};b.b("observable",b.m);b.b("isObservable",b.$);b.b("isWriteableObservable",b.Ra);b.R=function(a){0==arguments.length&&(a=[]);a!==p&&(a!==I&&!("length"in a))&&j(Error("The argument passed when initializing an observable array must be an array, or null, or undefined."));
|
44
|
+
var d=b.m(a);b.a.extend(d,b.R.fn);return d};b.R.fn={remove:function(a){for(var b=this.t(),c=[],e="function"==typeof a?a:function(b){return b===a},f=0;f<b.length;f++){var g=b[f];e(g)&&(0===c.length&&this.H(),c.push(g),b.splice(f,1),f--)}c.length&&this.G();return c},removeAll:function(a){if(a===I){var d=this.t(),c=d.slice(0);this.H();d.splice(0,d.length);this.G();return c}return!a?[]:this.remove(function(d){return 0<=b.a.i(a,d)})},destroy:function(a){var b=this.t(),c="function"==typeof a?a:function(b){return b===
|
45
|
+
a};this.H();for(var e=b.length-1;0<=e;e--)c(b[e])&&(b[e]._destroy=m);this.G()},destroyAll:function(a){return a===I?this.destroy(u(m)):!a?[]:this.destroy(function(d){return 0<=b.a.i(a,d)})},indexOf:function(a){var d=this();return b.a.i(d,a)},replace:function(a,b){var c=this.indexOf(a);0<=c&&(this.H(),this.t()[c]=b,this.G())}};b.a.o("pop push reverse shift sort splice unshift".split(" "),function(a){b.R.fn[a]=function(){var b=this.t();this.H();b=b[a].apply(b,arguments);this.G();return b}});b.a.o(["slice"],
|
46
|
+
function(a){b.R.fn[a]=function(){var b=this();return b[a].apply(b,arguments)}});b.b("observableArray",b.R);b.j=function(a,d,c){function e(){b.a.o(z,function(a){a.B()});z=[]}function f(){var a=h.throttleEvaluation;a&&0<=a?(clearTimeout(t),t=setTimeout(g,a)):g()}function g(){if(!q)if(n&&w())A();else{q=m;try{var a=b.a.V(z,function(a){return a.target});b.r.mb(function(c){var d;0<=(d=b.a.i(a,c))?a[d]=I:z.push(c.ya(f))});for(var c=s.call(d),e=a.length-1;0<=e;e--)a[e]&&z.splice(e,1)[0].B();n=m;h.notifySubscribers(l,
|
47
|
+
"beforeChange");l=c}finally{b.r.end()}h.notifySubscribers(l);q=r;z.length||A()}}function h(){if(0<arguments.length)return"function"===typeof v?v.apply(d,arguments):j(Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.")),this;n||g();b.r.Wa(h);return l}function k(){return!n||0<z.length}var l,n=r,q=r,s=a;s&&"object"==typeof s?(c=s,s=c.read):(c=c||{},s||(s=c.read));"function"!=typeof s&&j(Error("Pass a function that returns the value of the ko.computed"));
|
48
|
+
var v=c.write,G=c.disposeWhenNodeIsRemoved||c.W||p,w=c.disposeWhen||c.Ka||u(r),A=e,z=[],t=p;d||(d=c.owner);h.t=function(){n||g();return l};h.xb=function(){return z.length};h.zb="function"===typeof c.write;h.B=function(){A()};h.pa=k;b.S.call(h);b.a.extend(h,b.j.fn);b.p(h,"peek",h.t);b.p(h,"dispose",h.B);b.p(h,"isActive",h.pa);b.p(h,"getDependenciesCount",h.xb);c.deferEvaluation!==m&&g();if(G&&k()){A=function(){b.a.F.Xa(G,arguments.callee);e()};b.a.F.Ca(G,A);var D=w,w=function(){return!b.a.X(G)||D()}}return h};
|
49
|
+
b.Bb=function(a){return b.ma(a,b.j)};w=b.m.Kb;b.j[w]=b.m;b.j.fn={};b.j.fn[w]=b.j;b.b("dependentObservable",b.j);b.b("computed",b.j);b.b("isComputed",b.Bb);b.gb=function(a){0==arguments.length&&j(Error("When calling ko.toJS, pass the object you want to convert."));return ba(a,function(a){for(var c=0;b.$(a)&&10>c;c++)a=a();return a})};b.toJSON=function(a,d,c){a=b.gb(a);return b.a.xa(a,d,c)};b.b("toJS",b.gb);b.b("toJSON",b.toJSON);b.k={q:function(a){switch(b.a.u(a)){case "option":return a.__ko__hasDomDataOptionValue__===
|
50
|
+
m?b.a.f.get(a,b.c.options.sa):7>=b.a.Z?a.getAttributeNode("value").specified?a.value:a.text:a.value;case "select":return 0<=a.selectedIndex?b.k.q(a.options[a.selectedIndex]):I;default:return a.value}},T:function(a,d){switch(b.a.u(a)){case "option":switch(typeof d){case "string":b.a.f.set(a,b.c.options.sa,I);"__ko__hasDomDataOptionValue__"in a&&delete a.__ko__hasDomDataOptionValue__;a.value=d;break;default:b.a.f.set(a,b.c.options.sa,d),a.__ko__hasDomDataOptionValue__=m,a.value="number"===typeof d?
|
51
|
+
d:""}break;case "select":for(var c=a.options.length-1;0<=c;c--)if(b.k.q(a.options[c])==d){a.selectedIndex=c;break}break;default:if(d===p||d===I)d="";a.value=d}}};b.b("selectExtensions",b.k);b.b("selectExtensions.readValue",b.k.q);b.b("selectExtensions.writeValue",b.k.T);var ka=/\@ko_token_(\d+)\@/g,na=["true","false"],oa=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i;b.g={Q:[],aa:function(a){var d=b.a.D(a);if(3>d.length)return[];"{"===d.charAt(0)&&(d=d.substring(1,d.length-1));a=[];for(var c=
|
52
|
+
p,e,f=0;f<d.length;f++){var g=d.charAt(f);if(c===p)switch(g){case '"':case "'":case "/":c=f,e=g}else if(g==e&&"\\"!==d.charAt(f-1)){g=d.substring(c,f+1);a.push(g);var h="@ko_token_"+(a.length-1)+"@",d=d.substring(0,c)+h+d.substring(f+1),f=f-(g.length-h.length),c=p}}e=c=p;for(var k=0,l=p,f=0;f<d.length;f++){g=d.charAt(f);if(c===p)switch(g){case "{":c=f;l=g;e="}";break;case "(":c=f;l=g;e=")";break;case "[":c=f,l=g,e="]"}g===l?k++:g===e&&(k--,0===k&&(g=d.substring(c,f+1),a.push(g),h="@ko_token_"+(a.length-
|
53
|
+
1)+"@",d=d.substring(0,c)+h+d.substring(f+1),f-=g.length-h.length,c=p))}e=[];d=d.split(",");c=0;for(f=d.length;c<f;c++)k=d[c],l=k.indexOf(":"),0<l&&l<k.length-1?(g=k.substring(l+1),e.push({key:P(k.substring(0,l),a),value:P(g,a)})):e.push({unknown:P(k,a)});return e},ba:function(a){var d="string"===typeof a?b.g.aa(a):a,c=[];a=[];for(var e,f=0;e=d[f];f++)if(0<c.length&&c.push(","),e.key){var g;a:{g=e.key;var h=b.a.D(g);switch(h.length&&h.charAt(0)){case "'":case '"':break a;default:g="'"+h+"'"}}e=e.value;
|
54
|
+
c.push(g);c.push(":");c.push(e);e=b.a.D(e);0<=b.a.i(na,b.a.D(e).toLowerCase())?e=r:(h=e.match(oa),e=h===p?r:h[1]?"Object("+h[1]+")"+h[2]:e);e&&(0<a.length&&a.push(", "),a.push(g+" : function(__ko_value) { "+e+" = __ko_value; }"))}else e.unknown&&c.push(e.unknown);d=c.join("");0<a.length&&(d=d+", '_ko_property_writers' : { "+a.join("")+" } ");return d},Eb:function(a,d){for(var c=0;c<a.length;c++)if(b.a.D(a[c].key)==d)return m;return r},ea:function(a,d,c,e,f){if(!a||!b.Ra(a)){if((a=d()._ko_property_writers)&&
|
55
|
+
a[c])a[c](e)}else(!f||a.t()!==e)&&a(e)}};b.b("expressionRewriting",b.g);b.b("expressionRewriting.bindingRewriteValidators",b.g.Q);b.b("expressionRewriting.parseObjectLiteral",b.g.aa);b.b("expressionRewriting.preProcessBindings",b.g.ba);b.b("jsonExpressionRewriting",b.g);b.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",b.g.ba);var K="\x3c!--test--\x3e"===y.createComment("test").text,ja=K?/^\x3c!--\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*--\x3e$/:/^\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*$/,ia=K?/^\x3c!--\s*\/ko\s*--\x3e$/:
|
56
|
+
/^\s*\/ko\s*$/,pa={ul:m,ol:m};b.e={I:{},childNodes:function(a){return B(a)?aa(a):a.childNodes},Y:function(a){if(B(a)){a=b.e.childNodes(a);for(var d=0,c=a.length;d<c;d++)b.removeNode(a[d])}else b.a.ka(a)},N:function(a,d){if(B(a)){b.e.Y(a);for(var c=a.nextSibling,e=0,f=d.length;e<f;e++)c.parentNode.insertBefore(d[e],c)}else b.a.N(a,d)},Va:function(a,b){B(a)?a.parentNode.insertBefore(b,a.nextSibling):a.firstChild?a.insertBefore(b,a.firstChild):a.appendChild(b)},Pa:function(a,d,c){c?B(a)?a.parentNode.insertBefore(d,
|
57
|
+
c.nextSibling):c.nextSibling?a.insertBefore(d,c.nextSibling):a.appendChild(d):b.e.Va(a,d)},firstChild:function(a){return!B(a)?a.firstChild:!a.nextSibling||H(a.nextSibling)?p:a.nextSibling},nextSibling:function(a){B(a)&&(a=$(a));return a.nextSibling&&H(a.nextSibling)?p:a.nextSibling},jb:function(a){return(a=B(a))?a[1]:p},Ta:function(a){if(pa[b.a.u(a)]){var d=a.firstChild;if(d){do if(1===d.nodeType){var c;c=d.firstChild;var e=p;if(c){do if(e)e.push(c);else if(B(c)){var f=$(c,m);f?c=f:e=[c]}else H(c)&&
|
58
|
+
(e=[c]);while(c=c.nextSibling)}if(c=e){e=d.nextSibling;for(f=0;f<c.length;f++)e?a.insertBefore(c[f],e):a.appendChild(c[f])}}while(d=d.nextSibling)}}}};b.b("virtualElements",b.e);b.b("virtualElements.allowedBindings",b.e.I);b.b("virtualElements.emptyNode",b.e.Y);b.b("virtualElements.insertAfter",b.e.Pa);b.b("virtualElements.prepend",b.e.Va);b.b("virtualElements.setDomNodeChildren",b.e.N);b.J=function(){this.Ha={}};b.a.extend(b.J.prototype,{nodeHasBindings:function(a){switch(a.nodeType){case 1:return a.getAttribute("data-bind")!=
|
59
|
+
p;case 8:return b.e.jb(a)!=p;default:return r}},getBindings:function(a,b){var c=this.getBindingsString(a,b);return c?this.parseBindingsString(c,b,a):p},getBindingsString:function(a){switch(a.nodeType){case 1:return a.getAttribute("data-bind");case 8:return b.e.jb(a);default:return p}},parseBindingsString:function(a,d,c){try{var e;if(!(e=this.Ha[a])){var f=this.Ha,g,h="with($context){with($data||{}){return{"+b.g.ba(a)+"}}}";g=new Function("$context","$element",h);e=f[a]=g}return e(d,c)}catch(k){j(Error("Unable to parse bindings.\nMessage: "+
|
60
|
+
k+";\nBindings value: "+a))}}});b.J.instance=new b.J;b.b("bindingProvider",b.J);b.c={};b.z=function(a,d,c){d?(b.a.extend(this,d),this.$parentContext=d,this.$parent=d.$data,this.$parents=(d.$parents||[]).slice(0),this.$parents.unshift(this.$parent)):(this.$parents=[],this.$root=a,this.ko=b);this.$data=a;c&&(this[c]=a)};b.z.prototype.createChildContext=function(a,d){return new b.z(a,this,d)};b.z.prototype.extend=function(a){var d=b.a.extend(new b.z,this);return b.a.extend(d,a)};b.eb=function(a,d){if(2==
|
61
|
+
arguments.length)b.a.f.set(a,"__ko_bindingContext__",d);else return b.a.f.get(a,"__ko_bindingContext__")};b.Fa=function(a,d,c){1===a.nodeType&&b.e.Ta(a);return X(a,d,c,m)};b.Ea=function(a,b){(1===b.nodeType||8===b.nodeType)&&Z(a,b,m)};b.Da=function(a,b){b&&(1!==b.nodeType&&8!==b.nodeType)&&j(Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node"));b=b||x.document.body;Y(a,b,m)};b.ja=function(a){switch(a.nodeType){case 1:case 8:var d=b.eb(a);if(d)return d;
|
62
|
+
if(a.parentNode)return b.ja(a.parentNode)}return I};b.pb=function(a){return(a=b.ja(a))?a.$data:I};b.b("bindingHandlers",b.c);b.b("applyBindings",b.Da);b.b("applyBindingsToDescendants",b.Ea);b.b("applyBindingsToNode",b.Fa);b.b("contextFor",b.ja);b.b("dataFor",b.pb);var fa={"class":"className","for":"htmlFor"};b.c.attr={update:function(a,d){var c=b.a.d(d())||{},e;for(e in c)if("string"==typeof e){var f=b.a.d(c[e]),g=f===r||f===p||f===I;g&&a.removeAttribute(e);8>=b.a.Z&&e in fa?(e=fa[e],g?a.removeAttribute(e):
|
63
|
+
a[e]=f):g||a.setAttribute(e,f.toString());"name"===e&&b.a.ab(a,g?"":f.toString())}}};b.c.checked={init:function(a,d,c){b.a.n(a,"click",function(){var e;if("checkbox"==a.type)e=a.checked;else if("radio"==a.type&&a.checked)e=a.value;else return;var f=d(),g=b.a.d(f);"checkbox"==a.type&&g instanceof Array?(e=b.a.i(g,a.value),a.checked&&0>e?f.push(a.value):!a.checked&&0<=e&&f.splice(e,1)):b.g.ea(f,c,"checked",e,m)});"radio"==a.type&&!a.name&&b.c.uniqueName.init(a,u(m))},update:function(a,d){var c=b.a.d(d());
|
64
|
+
"checkbox"==a.type?a.checked=c instanceof Array?0<=b.a.i(c,a.value):c:"radio"==a.type&&(a.checked=a.value==c)}};b.c.css={update:function(a,d){var c=b.a.d(d());if("object"==typeof c)for(var e in c){var f=b.a.d(c[e]);b.a.da(a,e,f)}else c=String(c||""),b.a.da(a,a.__ko__cssValue,r),a.__ko__cssValue=c,b.a.da(a,c,m)}};b.c.enable={update:function(a,d){var c=b.a.d(d());c&&a.disabled?a.removeAttribute("disabled"):!c&&!a.disabled&&(a.disabled=m)}};b.c.disable={update:function(a,d){b.c.enable.update(a,function(){return!b.a.d(d())})}};
|
65
|
+
b.c.event={init:function(a,d,c,e){var f=d()||{},g;for(g in f)(function(){var f=g;"string"==typeof f&&b.a.n(a,f,function(a){var g,n=d()[f];if(n){var q=c();try{var s=b.a.L(arguments);s.unshift(e);g=n.apply(e,s)}finally{g!==m&&(a.preventDefault?a.preventDefault():a.returnValue=r)}q[f+"Bubble"]===r&&(a.cancelBubble=m,a.stopPropagation&&a.stopPropagation())}})})()}};b.c.foreach={Sa:function(a){return function(){var d=a(),c=b.a.ua(d);if(!c||"number"==typeof c.length)return{foreach:d,templateEngine:b.C.oa};
|
66
|
+
b.a.d(d);return{foreach:c.data,as:c.as,includeDestroyed:c.includeDestroyed,afterAdd:c.afterAdd,beforeRemove:c.beforeRemove,afterRender:c.afterRender,beforeMove:c.beforeMove,afterMove:c.afterMove,templateEngine:b.C.oa}}},init:function(a,d){return b.c.template.init(a,b.c.foreach.Sa(d))},update:function(a,d,c,e,f){return b.c.template.update(a,b.c.foreach.Sa(d),c,e,f)}};b.g.Q.foreach=r;b.e.I.foreach=m;b.c.hasfocus={init:function(a,d,c){function e(e){a.__ko_hasfocusUpdating=m;var f=a.ownerDocument;"activeElement"in
|
67
|
+
f&&(e=f.activeElement===a);f=d();b.g.ea(f,c,"hasfocus",e,m);a.__ko_hasfocusUpdating=r}var f=e.bind(p,m),g=e.bind(p,r);b.a.n(a,"focus",f);b.a.n(a,"focusin",f);b.a.n(a,"blur",g);b.a.n(a,"focusout",g)},update:function(a,d){var c=b.a.d(d());a.__ko_hasfocusUpdating||(c?a.focus():a.blur(),b.r.K(b.a.Ba,p,[a,c?"focusin":"focusout"]))}};b.c.html={init:function(){return{controlsDescendantBindings:m}},update:function(a,d){b.a.ca(a,d())}};var da="__ko_withIfBindingData";Q("if");Q("ifnot",r,m);Q("with",m,r,function(a,
|
68
|
+
b){return a.createChildContext(b)});b.c.options={update:function(a,d,c){"select"!==b.a.u(a)&&j(Error("options binding applies only to SELECT elements"));for(var e=0==a.length,f=b.a.V(b.a.fa(a.childNodes,function(a){return a.tagName&&"option"===b.a.u(a)&&a.selected}),function(a){return b.k.q(a)||a.innerText||a.textContent}),g=a.scrollTop,h=b.a.d(d());0<a.length;)b.A(a.options[0]),a.remove(0);if(h){c=c();var k=c.optionsIncludeDestroyed;"number"!=typeof h.length&&(h=[h]);if(c.optionsCaption){var l=y.createElement("option");
|
69
|
+
b.a.ca(l,c.optionsCaption);b.k.T(l,I);a.appendChild(l)}d=0;for(var n=h.length;d<n;d++){var q=h[d];if(!q||!q._destroy||k){var l=y.createElement("option"),s=function(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c},v=s(q,c.optionsValue,q);b.k.T(l,b.a.d(v));q=s(q,c.optionsText,v);b.a.cb(l,q);a.appendChild(l)}}h=a.getElementsByTagName("option");d=k=0;for(n=h.length;d<n;d++)0<=b.a.i(f,b.k.q(h[d]))&&(b.a.bb(h[d],m),k++);a.scrollTop=g;e&&"value"in c&&ea(a,b.a.ua(c.value),m);b.a.ub(a)}}};
|
70
|
+
b.c.options.sa="__ko.optionValueDomData__";b.c.selectedOptions={init:function(a,d,c){b.a.n(a,"change",function(){var e=d(),f=[];b.a.o(a.getElementsByTagName("option"),function(a){a.selected&&f.push(b.k.q(a))});b.g.ea(e,c,"value",f)})},update:function(a,d){"select"!=b.a.u(a)&&j(Error("values binding applies only to SELECT elements"));var c=b.a.d(d());c&&"number"==typeof c.length&&b.a.o(a.getElementsByTagName("option"),function(a){var d=0<=b.a.i(c,b.k.q(a));b.a.bb(a,d)})}};b.c.style={update:function(a,
|
71
|
+
d){var c=b.a.d(d()||{}),e;for(e in c)if("string"==typeof e){var f=b.a.d(c[e]);a.style[e]=f||""}}};b.c.submit={init:function(a,d,c,e){"function"!=typeof d()&&j(Error("The value for a submit binding must be a function"));b.a.n(a,"submit",function(b){var c,h=d();try{c=h.call(e,a)}finally{c!==m&&(b.preventDefault?b.preventDefault():b.returnValue=r)}})}};b.c.text={update:function(a,d){b.a.cb(a,d())}};b.e.I.text=m;b.c.uniqueName={init:function(a,d){if(d()){var c="ko_unique_"+ ++b.c.uniqueName.ob;b.a.ab(a,
|
72
|
+
c)}}};b.c.uniqueName.ob=0;b.c.value={init:function(a,d,c){function e(){h=r;var e=d(),f=b.k.q(a);b.g.ea(e,c,"value",f)}var f=["change"],g=c().valueUpdate,h=r;g&&("string"==typeof g&&(g=[g]),b.a.P(f,g),f=b.a.Ga(f));if(b.a.Z&&("input"==a.tagName.toLowerCase()&&"text"==a.type&&"off"!=a.autocomplete&&(!a.form||"off"!=a.form.autocomplete))&&-1==b.a.i(f,"propertychange"))b.a.n(a,"propertychange",function(){h=m}),b.a.n(a,"blur",function(){h&&e()});b.a.o(f,function(c){var d=e;b.a.Ob(c,"after")&&(d=function(){setTimeout(e,
|
73
|
+
0)},c=c.substring(5));b.a.n(a,c,d)})},update:function(a,d){var c="select"===b.a.u(a),e=b.a.d(d()),f=b.k.q(a),g=e!=f;0===e&&(0!==f&&"0"!==f)&&(g=m);g&&(f=function(){b.k.T(a,e)},f(),c&&setTimeout(f,0));c&&0<a.length&&ea(a,e,r)}};b.c.visible={update:function(a,d){var c=b.a.d(d()),e="none"!=a.style.display;c&&!e?a.style.display="":!c&&e&&(a.style.display="none")}};b.c.click={init:function(a,d,c,e){return b.c.event.init.call(this,a,function(){var a={};a.click=d();return a},c,e)}};b.v=function(){};b.v.prototype.renderTemplateSource=
|
74
|
+
function(){j(Error("Override renderTemplateSource"))};b.v.prototype.createJavaScriptEvaluatorBlock=function(){j(Error("Override createJavaScriptEvaluatorBlock"))};b.v.prototype.makeTemplateSource=function(a,d){if("string"==typeof a){d=d||y;var c=d.getElementById(a);c||j(Error("Cannot find template with ID "+a));return new b.l.h(c)}if(1==a.nodeType||8==a.nodeType)return new b.l.O(a);j(Error("Unknown template type: "+a))};b.v.prototype.renderTemplate=function(a,b,c,e){a=this.makeTemplateSource(a,e);
|
75
|
+
return this.renderTemplateSource(a,b,c)};b.v.prototype.isTemplateRewritten=function(a,b){return this.allowTemplateRewriting===r?m:this.makeTemplateSource(a,b).data("isRewritten")};b.v.prototype.rewriteTemplate=function(a,b,c){a=this.makeTemplateSource(a,c);b=b(a.text());a.text(b);a.data("isRewritten",m)};b.b("templateEngine",b.v);var qa=/(<[a-z]+\d*(\s+(?!data-bind=)[a-z0-9\-]+(=(\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind=(["'])([\s\S]*?)\5/gi,ra=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;b.za={vb:function(a,
|
76
|
+
d,c){d.isTemplateRewritten(a,c)||d.rewriteTemplate(a,function(a){return b.za.Gb(a,d)},c)},Gb:function(a,b){return a.replace(qa,function(a,e,f,g,h,k,l){return W(l,e,b)}).replace(ra,function(a,e){return W(e,"\x3c!-- ko --\x3e",b)})},kb:function(a){return b.s.ra(function(d,c){d.nextSibling&&b.Fa(d.nextSibling,a,c)})}};b.b("__tr_ambtns",b.za.kb);b.l={};b.l.h=function(a){this.h=a};b.l.h.prototype.text=function(){var a=b.a.u(this.h),a="script"===a?"text":"textarea"===a?"value":"innerHTML";if(0==arguments.length)return this.h[a];
|
77
|
+
var d=arguments[0];"innerHTML"===a?b.a.ca(this.h,d):this.h[a]=d};b.l.h.prototype.data=function(a){if(1===arguments.length)return b.a.f.get(this.h,"templateSourceData_"+a);b.a.f.set(this.h,"templateSourceData_"+a,arguments[1])};b.l.O=function(a){this.h=a};b.l.O.prototype=new b.l.h;b.l.O.prototype.text=function(){if(0==arguments.length){var a=b.a.f.get(this.h,"__ko_anon_template__")||{};a.Aa===I&&a.ia&&(a.Aa=a.ia.innerHTML);return a.Aa}b.a.f.set(this.h,"__ko_anon_template__",{Aa:arguments[0]})};b.l.h.prototype.nodes=
|
78
|
+
function(){if(0==arguments.length)return(b.a.f.get(this.h,"__ko_anon_template__")||{}).ia;b.a.f.set(this.h,"__ko_anon_template__",{ia:arguments[0]})};b.b("templateSources",b.l);b.b("templateSources.domElement",b.l.h);b.b("templateSources.anonymousTemplate",b.l.O);var O;b.wa=function(a){a!=I&&!(a instanceof b.v)&&j(Error("templateEngine must inherit from ko.templateEngine"));O=a};b.va=function(a,d,c,e,f){c=c||{};(c.templateEngine||O)==I&&j(Error("Set a template engine before calling renderTemplate"));
|
79
|
+
f=f||"replaceChildren";if(e){var g=N(e);return b.j(function(){var h=d&&d instanceof b.z?d:new b.z(b.a.d(d)),k="function"==typeof a?a(h.$data,h):a,h=T(e,f,k,h,c);"replaceNode"==f&&(e=h,g=N(e))},p,{Ka:function(){return!g||!b.a.X(g)},W:g&&"replaceNode"==f?g.parentNode:g})}return b.s.ra(function(e){b.va(a,d,c,e,"replaceNode")})};b.Mb=function(a,d,c,e,f){function g(a,b){U(b,k);c.afterRender&&c.afterRender(b,a)}function h(d,e){k=f.createChildContext(b.a.d(d),c.as);k.$index=e;var g="function"==typeof a?
|
80
|
+
a(d,k):a;return T(p,"ignoreTargetNode",g,k,c)}var k;return b.j(function(){var a=b.a.d(d)||[];"undefined"==typeof a.length&&(a=[a]);a=b.a.fa(a,function(a){return c.includeDestroyed||a===I||a===p||!b.a.d(a._destroy)});b.r.K(b.a.$a,p,[e,a,h,c,g])},p,{W:e})};b.c.template={init:function(a,d){var c=b.a.d(d());if("string"!=typeof c&&!c.name&&(1==a.nodeType||8==a.nodeType))c=1==a.nodeType?a.childNodes:b.e.childNodes(a),c=b.a.Hb(c),(new b.l.O(a)).nodes(c);return{controlsDescendantBindings:m}},update:function(a,
|
81
|
+
d,c,e,f){d=b.a.d(d());c={};e=m;var g,h=p;"string"!=typeof d&&(c=d,d=c.name,"if"in c&&(e=b.a.d(c["if"])),e&&"ifnot"in c&&(e=!b.a.d(c.ifnot)),g=b.a.d(c.data));"foreach"in c?h=b.Mb(d||a,e&&c.foreach||[],c,a,f):e?(f="data"in c?f.createChildContext(g,c.as):f,h=b.va(d||a,f,c,a)):b.e.Y(a);f=h;(g=b.a.f.get(a,"__ko__templateComputedDomDataKey__"))&&"function"==typeof g.B&&g.B();b.a.f.set(a,"__ko__templateComputedDomDataKey__",f&&f.pa()?f:I)}};b.g.Q.template=function(a){a=b.g.aa(a);return 1==a.length&&a[0].unknown||
|
82
|
+
b.g.Eb(a,"name")?p:"This template engine does not support anonymous templates nested within its templates"};b.e.I.template=m;b.b("setTemplateEngine",b.wa);b.b("renderTemplate",b.va);b.a.Ja=function(a,b,c){a=a||[];b=b||[];return a.length<=b.length?S(a,b,"added","deleted",c):S(b,a,"deleted","added",c)};b.b("utils.compareArrays",b.a.Ja);b.a.$a=function(a,d,c,e,f){function g(a,b){t=l[b];w!==b&&(z[a]=t);t.na(w++);M(t.M);s.push(t);A.push(t)}function h(a,c){if(a)for(var d=0,e=c.length;d<e;d++)c[d]&&b.a.o(c[d].M,
|
83
|
+
function(b){a(b,d,c[d].U)})}d=d||[];e=e||{};var k=b.a.f.get(a,"setDomNodeChildrenFromArrayMapping_lastMappingResult")===I,l=b.a.f.get(a,"setDomNodeChildrenFromArrayMapping_lastMappingResult")||[],n=b.a.V(l,function(a){return a.U}),q=b.a.Ja(n,d),s=[],v=0,w=0,B=[],A=[];d=[];for(var z=[],n=[],t,D=0,C,E;C=q[D];D++)switch(E=C.moved,C.status){case "deleted":E===I&&(t=l[v],t.j&&t.j.B(),B.push.apply(B,M(t.M)),e.beforeRemove&&(d[D]=t,A.push(t)));v++;break;case "retained":g(D,v++);break;case "added":E!==I?
|
84
|
+
g(D,E):(t={U:C.value,na:b.m(w++)},s.push(t),A.push(t),k||(n[D]=t))}h(e.beforeMove,z);b.a.o(B,e.beforeRemove?b.A:b.removeNode);for(var D=0,k=b.e.firstChild(a),H;t=A[D];D++){t.M||b.a.extend(t,ha(a,c,t.U,f,t.na));for(v=0;q=t.M[v];k=q.nextSibling,H=q,v++)q!==k&&b.e.Pa(a,q,H);!t.Ab&&f&&(f(t.U,t.M,t.na),t.Ab=m)}h(e.beforeRemove,d);h(e.afterMove,z);h(e.afterAdd,n);b.a.f.set(a,"setDomNodeChildrenFromArrayMapping_lastMappingResult",s)};b.b("utils.setDomNodeChildrenFromArrayMapping",b.a.$a);b.C=function(){this.allowTemplateRewriting=
|
85
|
+
r};b.C.prototype=new b.v;b.C.prototype.renderTemplateSource=function(a){var d=!(9>b.a.Z)&&a.nodes?a.nodes():p;if(d)return b.a.L(d.cloneNode(m).childNodes);a=a.text();return b.a.ta(a)};b.C.oa=new b.C;b.wa(b.C.oa);b.b("nativeTemplateEngine",b.C);b.qa=function(){var a=this.Db=function(){if("undefined"==typeof F||!F.tmpl)return 0;try{if(0<=F.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,c,e){e=e||{};2>a&&j(Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later."));
|
86
|
+
var f=b.data("precompiled");f||(f=b.text()||"",f=F.template(p,"{{ko_with $item.koBindingContext}}"+f+"{{/ko_with}}"),b.data("precompiled",f));b=[c.$data];c=F.extend({koBindingContext:c},e.templateOptions);c=F.tmpl(f,b,c);c.appendTo(y.createElement("div"));F.fragments={};return c};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){y.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(F.tmpl.tag.ko_code=
|
87
|
+
{open:"__.push($1 || '');"},F.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};b.qa.prototype=new b.v;w=new b.qa;0<w.Db&&b.wa(w);b.b("jqueryTmplTemplateEngine",b.qa)}"function"===typeof require&&"object"===typeof exports&&"object"===typeof module?L(module.exports||exports):"function"===typeof define&&define.amd?define(["exports"],L):L(x.ko={});m;
|
88
|
+
})();
|
@@ -0,0 +1,141 @@
|
|
1
|
+
.animation-theme {
|
2
|
+
visibility: hidden;
|
3
|
+
display: block;
|
4
|
+
position: absolute;
|
5
|
+
z-index: -100;
|
6
|
+
}
|
7
|
+
.animation-themeNormal {
|
8
|
+
color: #E5F2FE;
|
9
|
+
}
|
10
|
+
.animation-themeHover {
|
11
|
+
color: #ABD6FF;
|
12
|
+
}
|
13
|
+
.animation-themeSelect {
|
14
|
+
color: #E5F2FE;
|
15
|
+
}
|
16
|
+
.animation-themeDisabled {
|
17
|
+
color: #EFEFEF;
|
18
|
+
}
|
19
|
+
.animation-themeKnob {
|
20
|
+
color: #E1E2E3;
|
21
|
+
}
|
22
|
+
.animation-themePointer {
|
23
|
+
color: #FA5;
|
24
|
+
}
|
25
|
+
.animation-themeSwoosh {
|
26
|
+
color: #ACE;
|
27
|
+
}
|
28
|
+
.animation-themeSwooshHover {
|
29
|
+
color: #BDF;
|
30
|
+
}
|
31
|
+
.animation-svgText {
|
32
|
+
fill: #111;
|
33
|
+
font-family: Sans-Serif;
|
34
|
+
font-size: 15px;
|
35
|
+
text-anchor: middle;
|
36
|
+
}
|
37
|
+
.animation-blank {
|
38
|
+
fill: #000;
|
39
|
+
fill-opacity: 0.01; /* This must be clickable, so it can't be 'fill: none'. */
|
40
|
+
stroke: none;
|
41
|
+
}
|
42
|
+
.animation-rectButton {
|
43
|
+
cursor: pointer;
|
44
|
+
-moz-user-select: none;
|
45
|
+
-webkit-user-select: none;
|
46
|
+
user-select: none;
|
47
|
+
}
|
48
|
+
.animation-rectButton .animation-buttonPath {
|
49
|
+
fill: #111;
|
50
|
+
}
|
51
|
+
.animation-rectButton .animation-buttonGlow {
|
52
|
+
fill: #fff;
|
53
|
+
stroke: none;
|
54
|
+
/* Widget will add: filter: url(#animation_blurred); */
|
55
|
+
display: none;
|
56
|
+
}
|
57
|
+
.animation-rectButton .animation-buttonMain {
|
58
|
+
/* Widget will add: fill: url(#animation_buttonNormal); */
|
59
|
+
stroke: #759DC0;
|
60
|
+
stroke-width: 1.2;
|
61
|
+
}
|
62
|
+
.animation-buttonToggled .animation-buttonGlow {
|
63
|
+
display: block;
|
64
|
+
fill: #FFAA2A;
|
65
|
+
}
|
66
|
+
.animation-buttonToggled .animation-buttonMain {
|
67
|
+
/* Widget will add: fill: url(#animation_buttonToggled); */
|
68
|
+
stroke: #EA0;
|
69
|
+
}
|
70
|
+
.animation-rectButton:hover .animation-buttonGlow {
|
71
|
+
display: block;
|
72
|
+
}
|
73
|
+
.animation-rectButton:hover .animation-buttonMain {
|
74
|
+
/* Widget will add: fill: url(#animation_buttonHovered); */
|
75
|
+
stroke: #759DC0;
|
76
|
+
}
|
77
|
+
.animation-buttonToggled:hover .animation-buttonGlow {
|
78
|
+
fill: #fff;
|
79
|
+
}
|
80
|
+
.animation-buttonToggled:hover .animation-buttonMain {
|
81
|
+
stroke: #EA0;
|
82
|
+
}
|
83
|
+
.animation-rectButton:active .animation-buttonMain {
|
84
|
+
fill: #ABD6FF;
|
85
|
+
}
|
86
|
+
.animation-buttonDisabled {
|
87
|
+
-moz-user-select: none;
|
88
|
+
-webkit-user-select: none;
|
89
|
+
user-select: none;
|
90
|
+
}
|
91
|
+
.animation-buttonDisabled .animation-buttonMain {
|
92
|
+
/* Widget will add: fill: url(#animation_buttonDisabled); */
|
93
|
+
stroke: #D3D3D3;
|
94
|
+
}
|
95
|
+
.animation-buttonDisabled .animation-buttonPath {
|
96
|
+
fill: #818181;
|
97
|
+
}
|
98
|
+
.animation-buttonDisabled .animation-buttonGlow {
|
99
|
+
display: none;
|
100
|
+
}
|
101
|
+
.animation-shuttleRingBack {
|
102
|
+
fill: #FAFAFA;
|
103
|
+
fill-opacity: 1;
|
104
|
+
stroke: #AEAEAE;
|
105
|
+
stroke-width: 1.2;
|
106
|
+
}
|
107
|
+
.animation-shuttleRingG {
|
108
|
+
cursor: pointer;
|
109
|
+
}
|
110
|
+
.animation-shuttleRingSwoosh line {
|
111
|
+
stroke: #8AC;
|
112
|
+
stroke-width: 3;
|
113
|
+
stroke-opacity: 0.2;
|
114
|
+
stroke-linecap: round;
|
115
|
+
}
|
116
|
+
/* Widget will add:
|
117
|
+
.animation-shuttleRingG .animation-shuttleRingSwoosh {
|
118
|
+
fill: url(#animation_shuttleRingSwooshGradient);
|
119
|
+
}
|
120
|
+
.animation-shuttleRingG:hover .animation-shuttleRingSwoosh {
|
121
|
+
fill: url(#animation_shuttleRingSwooshHovered);
|
122
|
+
}
|
123
|
+
*/
|
124
|
+
.animation-shuttleRingPointer {
|
125
|
+
/* Widget will add: fill: url(#animation_shuttleRingPointerGradient); */
|
126
|
+
cursor: pointer;
|
127
|
+
}
|
128
|
+
.animation-shuttleRingPausePointer {
|
129
|
+
/* Widget will add: fill: url(#animation_shuttleRingPointerPaused); */
|
130
|
+
cursor: pointer;
|
131
|
+
}
|
132
|
+
.animation-knobOuter {
|
133
|
+
/* Widget will add: fill: url(#animation_knobOuter); */
|
134
|
+
cursor: pointer;
|
135
|
+
stroke: #A5A5A5;
|
136
|
+
stroke-width: 1.2;
|
137
|
+
}
|
138
|
+
.animation-knobInner {
|
139
|
+
/* Widget will add: fill: url(#animation_knobInner); */
|
140
|
+
cursor: pointer;
|
141
|
+
}
|
@@ -0,0 +1,944 @@
|
|
1
|
+
/*global define*/
|
2
|
+
define(['../../Core/destroyObject',
|
3
|
+
'../../Core/DeveloperError',
|
4
|
+
'../../Core/ClockStep',
|
5
|
+
'../../Core/Color',
|
6
|
+
'../../Core/defaultValue',
|
7
|
+
'../../ThirdParty/sprintf'
|
8
|
+
], function(
|
9
|
+
destroyObject,
|
10
|
+
DeveloperError,
|
11
|
+
ClockStep,
|
12
|
+
Color,
|
13
|
+
defaultValue,
|
14
|
+
sprintf) {
|
15
|
+
"use strict";
|
16
|
+
|
17
|
+
var svgNS = "http://www.w3.org/2000/svg";
|
18
|
+
var xlinkNS = "http://www.w3.org/1999/xlink";
|
19
|
+
|
20
|
+
var widgetForDrag;
|
21
|
+
|
22
|
+
var gradientEnabledColor0 = Color.fromCssColorString('rgba(247,250,255,0.384)');
|
23
|
+
var gradientEnabledColor1 = Color.fromCssColorString('rgba(143,191,255,0.216)');
|
24
|
+
var gradientEnabledColor2 = Color.fromCssColorString('rgba(153,197,255,0.098)');
|
25
|
+
var gradientEnabledColor3 = Color.fromCssColorString('rgba(255,255,255,0.086)');
|
26
|
+
|
27
|
+
var gradientDisabledColor0 = Color.fromCssColorString('rgba(255,255,255,0.267)');
|
28
|
+
var gradientDisabledColor1 = Color.fromCssColorString('rgba(255,255,255,0)');
|
29
|
+
|
30
|
+
var gradientKnobColor = Color.fromCssColorString('rgba(66,67,68,0.3)');
|
31
|
+
var gradientPointerColor = Color.fromCssColorString('rgba(0,0,0,0.5)');
|
32
|
+
|
33
|
+
function getElementColor(element) {
|
34
|
+
return Color.fromCssColorString(window.getComputedStyle(element).getPropertyValue('color'));
|
35
|
+
}
|
36
|
+
|
37
|
+
function subscribeAndEvaluate(observable, callback, target) {
|
38
|
+
callback.call(target, observable());
|
39
|
+
return observable.subscribe(callback, target);
|
40
|
+
}
|
41
|
+
|
42
|
+
//Dynamically builds an SVG element from a JSON object.
|
43
|
+
function svgFromObject(obj) {
|
44
|
+
var ele = document.createElementNS(svgNS, obj.tagName);
|
45
|
+
for ( var field in obj) {
|
46
|
+
if (obj.hasOwnProperty(field) && field !== 'tagName') {
|
47
|
+
if (field === 'children') {
|
48
|
+
var i;
|
49
|
+
var len = obj.children.length;
|
50
|
+
for (i = 0; i < len; ++i) {
|
51
|
+
ele.appendChild(svgFromObject(obj.children[i]));
|
52
|
+
}
|
53
|
+
} else if (field.indexOf('xlink:') === 0) {
|
54
|
+
ele.setAttributeNS(xlinkNS, field.substring(6), obj[field]);
|
55
|
+
} else if (field === 'textContent') {
|
56
|
+
ele.textContent = obj[field];
|
57
|
+
} else {
|
58
|
+
ele.setAttribute(field, obj[field]);
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
62
|
+
return ele;
|
63
|
+
}
|
64
|
+
|
65
|
+
function svgText(x, y, msg) {
|
66
|
+
var text = document.createElementNS(svgNS, 'text');
|
67
|
+
text.setAttribute('x', x);
|
68
|
+
text.setAttribute('y', y);
|
69
|
+
text.setAttribute('class', 'animation-svgText');
|
70
|
+
|
71
|
+
var tspan = document.createElementNS(svgNS, 'tspan');
|
72
|
+
tspan.textContent = msg;
|
73
|
+
text.appendChild(tspan);
|
74
|
+
return text;
|
75
|
+
}
|
76
|
+
|
77
|
+
function setShuttleRingPointer(shuttleRingPointer, knobOuter, angle) {
|
78
|
+
shuttleRingPointer.setAttribute('transform', 'translate(100,100) rotate(' + angle + ')');
|
79
|
+
knobOuter.setAttribute('transform', 'rotate(' + angle + ')');
|
80
|
+
}
|
81
|
+
|
82
|
+
var makeColorStringScratch = new Color();
|
83
|
+
function makeColorString(background, gradient) {
|
84
|
+
var gradientAlpha = gradient.alpha;
|
85
|
+
var backgroundAlpha = 1.0 - gradientAlpha;
|
86
|
+
makeColorStringScratch.red = (background.red * backgroundAlpha) + (gradient.red * gradientAlpha);
|
87
|
+
makeColorStringScratch.green = (background.green * backgroundAlpha) + (gradient.green * gradientAlpha);
|
88
|
+
makeColorStringScratch.blue = (background.blue * backgroundAlpha) + (gradient.blue * gradientAlpha);
|
89
|
+
return makeColorStringScratch.toCssColorString();
|
90
|
+
}
|
91
|
+
|
92
|
+
function rectButton(x, y, path) {
|
93
|
+
var button = {
|
94
|
+
tagName : 'g',
|
95
|
+
'class' : 'animation-rectButton',
|
96
|
+
transform : 'translate(' + x + ',' + y + ')',
|
97
|
+
children : [{
|
98
|
+
tagName : 'rect',
|
99
|
+
'class' : 'animation-buttonGlow',
|
100
|
+
width : 32,
|
101
|
+
height : 32,
|
102
|
+
rx : 2,
|
103
|
+
ry : 2
|
104
|
+
}, {
|
105
|
+
tagName : 'rect',
|
106
|
+
'class' : 'animation-buttonMain',
|
107
|
+
width : 32,
|
108
|
+
height : 32,
|
109
|
+
rx : 4,
|
110
|
+
ry : 4
|
111
|
+
}, {
|
112
|
+
tagName : 'use',
|
113
|
+
'class' : 'animation-buttonPath',
|
114
|
+
'xlink:href' : path
|
115
|
+
}, {
|
116
|
+
tagName : 'title',
|
117
|
+
textContent : ''
|
118
|
+
}]
|
119
|
+
};
|
120
|
+
return svgFromObject(button);
|
121
|
+
}
|
122
|
+
|
123
|
+
function wingButton(x, y, path) {
|
124
|
+
var button = {
|
125
|
+
tagName : 'g',
|
126
|
+
'class' : 'animation-rectButton',
|
127
|
+
transform : 'translate(' + x + ',' + y + ')',
|
128
|
+
children : [{
|
129
|
+
tagName : 'use',
|
130
|
+
'class' : 'animation-buttonGlow',
|
131
|
+
'xlink:href' : '#animation_pathWingButton'
|
132
|
+
}, {
|
133
|
+
tagName : 'use',
|
134
|
+
'class' : 'animation-buttonMain',
|
135
|
+
'xlink:href' : '#animation_pathWingButton'
|
136
|
+
}, {
|
137
|
+
tagName : 'use',
|
138
|
+
'class' : 'animation-buttonPath',
|
139
|
+
'xlink:href' : path
|
140
|
+
}, {
|
141
|
+
tagName : 'title',
|
142
|
+
textContent : ''
|
143
|
+
}]
|
144
|
+
};
|
145
|
+
return svgFromObject(button);
|
146
|
+
}
|
147
|
+
|
148
|
+
function setShuttleRingFromMouseOrTouch(widget, e) {
|
149
|
+
var viewModel = widget.viewModel;
|
150
|
+
var shuttleRingDragging = viewModel.shuttleRingDragging();
|
151
|
+
|
152
|
+
if (shuttleRingDragging && (widgetForDrag !== widget)) {
|
153
|
+
return;
|
154
|
+
}
|
155
|
+
|
156
|
+
if (e.type === 'mousedown' || (shuttleRingDragging && e.type === 'mousemove') ||
|
157
|
+
(e.type === 'touchstart' && e.touches.length === 1) ||
|
158
|
+
(shuttleRingDragging && e.type === 'touchmove' && e.touches.length === 1)) {
|
159
|
+
var centerX = widget._centerX;
|
160
|
+
var centerY = widget._centerY;
|
161
|
+
var svg = widget._svgNode;
|
162
|
+
var rect = svg.getBoundingClientRect();
|
163
|
+
var clientX;
|
164
|
+
var clientY;
|
165
|
+
if (e.type === 'touchstart' || e.type === 'touchmove') {
|
166
|
+
clientX = e.touches[0].clientX;
|
167
|
+
clientY = e.touches[0].clientY;
|
168
|
+
} else {
|
169
|
+
clientX = e.clientX;
|
170
|
+
clientY = e.clientY;
|
171
|
+
}
|
172
|
+
|
173
|
+
if (!shuttleRingDragging &&
|
174
|
+
(clientX > rect.right ||
|
175
|
+
clientX < rect.left ||
|
176
|
+
clientY < rect.top ||
|
177
|
+
clientY > rect.bottom)) {
|
178
|
+
return;
|
179
|
+
}
|
180
|
+
|
181
|
+
var pointerRect = widget._shuttleRingPointer.getBoundingClientRect();
|
182
|
+
|
183
|
+
var x = clientX - centerX - rect.left;
|
184
|
+
var y = clientY - centerY - rect.top;
|
185
|
+
|
186
|
+
var angle = Math.atan2(y, x) * 180 / Math.PI + 90;
|
187
|
+
if (angle > 180) {
|
188
|
+
angle -= 360;
|
189
|
+
}
|
190
|
+
var shuttleRingAngle = viewModel.shuttleRingAngle();
|
191
|
+
if (shuttleRingDragging || (clientX < pointerRect.right && clientX > pointerRect.left && clientY > pointerRect.top && clientY < pointerRect.bottom)) {
|
192
|
+
widgetForDrag = widget;
|
193
|
+
viewModel.shuttleRingDragging(true);
|
194
|
+
viewModel.shuttleRingAngle(angle);
|
195
|
+
} else if (angle < shuttleRingAngle) {
|
196
|
+
viewModel.slower();
|
197
|
+
} else if (angle > shuttleRingAngle) {
|
198
|
+
viewModel.faster();
|
199
|
+
}
|
200
|
+
e.preventDefault();
|
201
|
+
e.stopPropagation();
|
202
|
+
} else {
|
203
|
+
widgetForDrag = undefined;
|
204
|
+
viewModel.shuttleRingDragging(false);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
//This is a private class for treating an SVG element like a button.
|
209
|
+
//If we ever need a general purpose SVG button, we can make this generic.
|
210
|
+
var SvgButton = function(svgElement, viewModel) {
|
211
|
+
this.viewModel = viewModel;
|
212
|
+
this.svgElement = svgElement;
|
213
|
+
this._enabled = undefined;
|
214
|
+
this._toggled = undefined;
|
215
|
+
|
216
|
+
var that = this;
|
217
|
+
svgElement.addEventListener('click', function() {
|
218
|
+
var command = that.viewModel.command;
|
219
|
+
if (command.canExecute()) {
|
220
|
+
command();
|
221
|
+
}
|
222
|
+
}, true);
|
223
|
+
|
224
|
+
//TODO: Since the animation widget uses SVG and has no HTML backing,
|
225
|
+
//we need to wire everything up manually. Knockout can supposedly
|
226
|
+
//bind to SVG, so we we figure that out we can modify our SVG
|
227
|
+
//to include the binding information directly.
|
228
|
+
|
229
|
+
this._subscriptions = [//
|
230
|
+
subscribeAndEvaluate(viewModel.toggled, this.setToggled, this),//
|
231
|
+
subscribeAndEvaluate(viewModel.tooltip, this.setToolTip, this),//
|
232
|
+
subscribeAndEvaluate(viewModel.command.canExecute, this.setEnabled, this)];
|
233
|
+
};
|
234
|
+
|
235
|
+
SvgButton.prototype.destroy = function() {
|
236
|
+
var subscriptions = this._subscriptions;
|
237
|
+
for ( var i = 0, len = subscriptions.length; i < len; i++) {
|
238
|
+
subscriptions[i].dispose();
|
239
|
+
}
|
240
|
+
destroyObject(this);
|
241
|
+
};
|
242
|
+
|
243
|
+
SvgButton.prototype.isDestroyed = function() {
|
244
|
+
return false;
|
245
|
+
};
|
246
|
+
|
247
|
+
SvgButton.prototype.setEnabled = function(enabled) {
|
248
|
+
if (this._enabled !== enabled) {
|
249
|
+
this._enabled = enabled;
|
250
|
+
|
251
|
+
if (!enabled) {
|
252
|
+
this.svgElement.setAttribute('class', 'animation-buttonDisabled');
|
253
|
+
return;
|
254
|
+
}
|
255
|
+
|
256
|
+
if (this._toggled) {
|
257
|
+
this.svgElement.setAttribute('class', 'animation-rectButton animation-buttonToggled');
|
258
|
+
return;
|
259
|
+
}
|
260
|
+
|
261
|
+
this.svgElement.setAttribute('class', 'animation-rectButton');
|
262
|
+
}
|
263
|
+
};
|
264
|
+
|
265
|
+
SvgButton.prototype.setToggled = function(toggled) {
|
266
|
+
if (this._toggled !== toggled) {
|
267
|
+
this._toggled = toggled;
|
268
|
+
|
269
|
+
if (this._enabled) {
|
270
|
+
if (toggled) {
|
271
|
+
this.svgElement.setAttribute('class', 'animation-rectButton animation-buttonToggled');
|
272
|
+
} else {
|
273
|
+
this.svgElement.setAttribute('class', 'animation-rectButton');
|
274
|
+
}
|
275
|
+
}
|
276
|
+
}
|
277
|
+
};
|
278
|
+
|
279
|
+
SvgButton.prototype.setToolTip = function(tooltip) {
|
280
|
+
this.svgElement.getElementsByTagName('title')[0].textContent = tooltip;
|
281
|
+
};
|
282
|
+
|
283
|
+
function resize(that) {
|
284
|
+
var svg = that._svgNode;
|
285
|
+
|
286
|
+
//The width and height as the SVG was originally drawn.
|
287
|
+
var baseWidth = 200;
|
288
|
+
var baseHeight = 132;
|
289
|
+
|
290
|
+
var parentWidth = defaultValue(that.parentNode.clientWidth, 0);
|
291
|
+
var parentHeight = defaultValue(that.parentNode.clientHeight, 0);
|
292
|
+
|
293
|
+
var width = parentWidth;
|
294
|
+
var height = parentHeight;
|
295
|
+
|
296
|
+
if (parentWidth === 0 && parentHeight === 0) {
|
297
|
+
width = baseWidth;
|
298
|
+
height = baseHeight;
|
299
|
+
} else if (parentWidth === 0) {
|
300
|
+
height = parentHeight;
|
301
|
+
width = baseWidth * (parentHeight / baseHeight);
|
302
|
+
} else if (parentHeight === 0) {
|
303
|
+
width = parentWidth;
|
304
|
+
height = baseHeight * (parentWidth / baseWidth);
|
305
|
+
}
|
306
|
+
|
307
|
+
var scaleX = width / baseWidth;
|
308
|
+
var scaleY = height / baseHeight;
|
309
|
+
|
310
|
+
svg.style.cssText = 'width: ' + width + 'px; height: ' + height + 'px; position: absolute; bottom: 0; left: 0;';
|
311
|
+
svg.setAttribute('width', width);
|
312
|
+
svg.setAttribute('height', height);
|
313
|
+
svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
|
314
|
+
|
315
|
+
that._topG.setAttribute('transform', 'scale(' + scaleX + ',' + scaleY + ')');
|
316
|
+
|
317
|
+
that._centerX = Math.max(1, 100.0 * scaleX);
|
318
|
+
that._centerY = Math.max(1, 100.0 * scaleY);
|
319
|
+
}
|
320
|
+
|
321
|
+
/**
|
322
|
+
* <span style="display: block; text-align: center;">
|
323
|
+
* <img src="images/AnimationWidget.png" width="211" height="142" alt="" style="border: none; border-radius: 5px;" />
|
324
|
+
* <br />Animation widget
|
325
|
+
* </span>
|
326
|
+
* <br /><br />
|
327
|
+
* The Animation widget provides buttons for play, pause, and reverse, along with the
|
328
|
+
* current time and date, surrounded by a "shuttle ring" for controlling the speed of animation.
|
329
|
+
* <br /><br />
|
330
|
+
* The "shuttle ring" concept is borrowed from video editing, where typically a
|
331
|
+
* "jog wheel" can be rotated to move past individual animation frames very slowly, and
|
332
|
+
* a surrounding shuttle ring can be twisted to control direction and speed of fast playback.
|
333
|
+
* Cesium typically treats time as continuous (not broken into pre-defined animation frames),
|
334
|
+
* so this widget offers no jog wheel. Instead, the shuttle ring is capable of both fast and
|
335
|
+
* very slow playback. Click and drag the shuttle ring pointer itself (shown above in green),
|
336
|
+
* or click in the rest of the ring area to nudge the pointer to the next preset speed in that direction.
|
337
|
+
* <br /><br />
|
338
|
+
* The Animation widget also provides a "realtime" button (in the upper-left) that keeps
|
339
|
+
* animation time in sync with the end user's system clock, typically displaying
|
340
|
+
* "today" or "right now." This mode is not available in {@link ClockRange.CLAMPED} or
|
341
|
+
* {@link ClockRange.LOOP_STOP} mode if the current time is outside of {@link Clock}'s startTime and endTime.
|
342
|
+
*
|
343
|
+
* @alias Animation
|
344
|
+
* @constructor
|
345
|
+
*
|
346
|
+
* @param {DOM Node} parentNode The parent HTML DOM node for this widget.
|
347
|
+
* @param {AnimationViewModel} viewModel The ViewModel used by this widget.
|
348
|
+
*
|
349
|
+
* @exception {DeveloperError} parentNode is required.
|
350
|
+
* @exception {DeveloperError} viewModel is required.
|
351
|
+
*
|
352
|
+
* @see AnimationViewModel
|
353
|
+
* @see Clock
|
354
|
+
*
|
355
|
+
* @example
|
356
|
+
* // In HTML head, include a link to Animation.css stylesheet,
|
357
|
+
* // and in the body, include: <div id="animationWidget"></div>
|
358
|
+
*
|
359
|
+
* var clock = new Clock();
|
360
|
+
* var clockViewModel = new ClockViewModel(clock);
|
361
|
+
* var viewModel = new AnimationViewModel(clockViewModel);
|
362
|
+
* var parentNode = document.getElementById("animationWidget");
|
363
|
+
* var widget = new Animation(parentNode, viewModel);
|
364
|
+
*
|
365
|
+
* function tick() {
|
366
|
+
* clock.tick();
|
367
|
+
* Cesium.requestAnimationFrame(tick);
|
368
|
+
* }
|
369
|
+
* Cesium.requestAnimationFrame(tick);
|
370
|
+
*/
|
371
|
+
var Animation = function(parentNode, viewModel) {
|
372
|
+
if (typeof parentNode === 'undefined') {
|
373
|
+
throw new DeveloperError('parentNode is required.');
|
374
|
+
}
|
375
|
+
|
376
|
+
if (typeof viewModel === 'undefined') {
|
377
|
+
throw new DeveloperError('viewModel is required.');
|
378
|
+
}
|
379
|
+
|
380
|
+
/**
|
381
|
+
* The viewModel
|
382
|
+
*/
|
383
|
+
this.viewModel = viewModel;
|
384
|
+
|
385
|
+
/**
|
386
|
+
* The parent HTML DOM node for this widget.
|
387
|
+
*/
|
388
|
+
this.parentNode = parentNode;
|
389
|
+
|
390
|
+
this._centerX = 0;
|
391
|
+
this._centerY = 0;
|
392
|
+
this._defsElement = undefined;
|
393
|
+
this._svgNode = undefined;
|
394
|
+
this._topG = undefined;
|
395
|
+
|
396
|
+
// Firefox requires SVG references to be included directly, not imported from external CSS.
|
397
|
+
// Also, CSS minifiers get confused by this being in an external CSS file.
|
398
|
+
var cssStyle = document.createElement('style');
|
399
|
+
cssStyle.textContent = //
|
400
|
+
'.animation-rectButton .animation-buttonGlow { filter: url(#animation_blurred); }\n' + //
|
401
|
+
'.animation-rectButton .animation-buttonMain { fill: url(#animation_buttonNormal); }\n' + //
|
402
|
+
'.animation-buttonToggled .animation-buttonMain { fill: url(#animation_buttonToggled); }\n' + //
|
403
|
+
'.animation-rectButton:hover .animation-buttonMain { fill: url(#animation_buttonHovered); }\n' + //
|
404
|
+
'.animation-buttonDisabled .animation-buttonMain { fill: url(#animation_buttonDisabled); }\n' + //
|
405
|
+
'.animation-shuttleRingG .animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }\n' + //
|
406
|
+
'.animation-shuttleRingG:hover .animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }\n' + //
|
407
|
+
'.animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }\n' + //
|
408
|
+
'.animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }\n' + //
|
409
|
+
'.animation-knobOuter { fill: url(#animation_knobOuter); }\n' + //
|
410
|
+
'.animation-knobInner { fill: url(#animation_knobInner); }\n';
|
411
|
+
|
412
|
+
document.head.insertBefore(cssStyle, document.head.childNodes[0]);
|
413
|
+
|
414
|
+
var themeEle = document.createElement('div');
|
415
|
+
themeEle.className = 'animation-theme';
|
416
|
+
themeEle.innerHTML = '<div class="animation-themeNormal"></div>' + //
|
417
|
+
'<div class="animation-themeHover"></div>' + //
|
418
|
+
'<div class="animation-themeSelect"></div>' + //
|
419
|
+
'<div class="animation-themeDisabled"></div>' + //
|
420
|
+
'<div class="animation-themeKnob"></div>' + //
|
421
|
+
'<div class="animation-themePointer"></div>' + //
|
422
|
+
'<div class="animation-themeSwoosh"></div>' + //
|
423
|
+
'<div class="animation-themeSwooshHover"></div>';
|
424
|
+
|
425
|
+
this._theme = themeEle;
|
426
|
+
this._themeNormal = themeEle.childNodes[0];
|
427
|
+
this._themeHover = themeEle.childNodes[1];
|
428
|
+
this._themeSelect = themeEle.childNodes[2];
|
429
|
+
this._themeDisabled = themeEle.childNodes[3];
|
430
|
+
this._themeKnob = themeEle.childNodes[4];
|
431
|
+
this._themePointer = themeEle.childNodes[5];
|
432
|
+
this._themeSwoosh = themeEle.childNodes[6];
|
433
|
+
this._themeSwooshHover = themeEle.childNodes[7];
|
434
|
+
|
435
|
+
var svg = document.createElementNS(svgNS, 'svg:svg');
|
436
|
+
this._svgNode = svg;
|
437
|
+
|
438
|
+
// Define the XLink namespace that SVG uses
|
439
|
+
svg.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xlink', xlinkNS);
|
440
|
+
|
441
|
+
var topG = document.createElementNS(svgNS, 'g');
|
442
|
+
this._topG = topG;
|
443
|
+
|
444
|
+
this._realtimeSVG = new SvgButton(wingButton(3, 4, '#animation_pathClock'), viewModel.playRealtimeViewModel);
|
445
|
+
this._playReverseSVG = new SvgButton(rectButton(44, 99, '#animation_pathPlayReverse'), viewModel.playReverseViewModel);
|
446
|
+
this._playForwardSVG = new SvgButton(rectButton(124, 99, '#animation_pathPlay'), viewModel.playForwardViewModel);
|
447
|
+
this._pauseSVG = new SvgButton(rectButton(84, 99, '#animation_pathPause'), viewModel.pauseViewModel);
|
448
|
+
|
449
|
+
var buttonsG = document.createElementNS(svgNS, 'g');
|
450
|
+
buttonsG.appendChild(this._realtimeSVG.svgElement);
|
451
|
+
buttonsG.appendChild(this._playReverseSVG.svgElement);
|
452
|
+
buttonsG.appendChild(this._playForwardSVG.svgElement);
|
453
|
+
buttonsG.appendChild(this._pauseSVG.svgElement);
|
454
|
+
|
455
|
+
var shuttleRingBackPanel = svgFromObject({
|
456
|
+
tagName : 'circle',
|
457
|
+
'class' : 'animation-shuttleRingBack',
|
458
|
+
cx : 100,
|
459
|
+
cy : 100,
|
460
|
+
r : 99
|
461
|
+
});
|
462
|
+
|
463
|
+
var shuttleRingSwooshG = svgFromObject({
|
464
|
+
tagName : 'g',
|
465
|
+
'class' : 'animation-shuttleRingSwoosh',
|
466
|
+
children : [{
|
467
|
+
tagName : 'use',
|
468
|
+
transform : 'translate(100,97) scale(-1,1)',
|
469
|
+
'xlink:href' : '#animation_pathSwooshFX'
|
470
|
+
}, {
|
471
|
+
tagName : 'use',
|
472
|
+
transform : 'translate(100,97)',
|
473
|
+
'xlink:href' : '#animation_pathSwooshFX'
|
474
|
+
}, {
|
475
|
+
tagName : 'line',
|
476
|
+
x1 : 100,
|
477
|
+
y1 : 8,
|
478
|
+
x2 : 100,
|
479
|
+
y2 : 22
|
480
|
+
}]
|
481
|
+
});
|
482
|
+
|
483
|
+
this._shuttleRingPointer = svgFromObject({
|
484
|
+
tagName : 'use',
|
485
|
+
'class' : 'animation-shuttleRingPointer',
|
486
|
+
'xlink:href' : '#animation_pathPointer'
|
487
|
+
});
|
488
|
+
|
489
|
+
var knobG = svgFromObject({
|
490
|
+
tagName : 'g',
|
491
|
+
transform : 'translate(100,100)'
|
492
|
+
});
|
493
|
+
|
494
|
+
this._knobOuter = svgFromObject({
|
495
|
+
tagName : 'circle',
|
496
|
+
'class' : 'animation-knobOuter',
|
497
|
+
cx : 0,
|
498
|
+
cy : 0,
|
499
|
+
r : 71
|
500
|
+
});
|
501
|
+
|
502
|
+
var knobInnerAndShieldSize = 61;
|
503
|
+
|
504
|
+
var knobInner = svgFromObject({
|
505
|
+
tagName : 'circle',
|
506
|
+
'class' : 'animation-knobInner',
|
507
|
+
cx : 0,
|
508
|
+
cy : 0,
|
509
|
+
r : knobInnerAndShieldSize
|
510
|
+
});
|
511
|
+
|
512
|
+
this._knobDate = svgText(0, -24, '');
|
513
|
+
this._knobTime = svgText(0, -7, '');
|
514
|
+
this._knobStatus = svgText(0, -41, '');
|
515
|
+
|
516
|
+
// widget shield catches clicks on the knob itself (even while DOM elements underneath are changing).
|
517
|
+
var knobShield = svgFromObject({
|
518
|
+
tagName : 'circle',
|
519
|
+
'class' : 'animation-blank',
|
520
|
+
cx : 0,
|
521
|
+
cy : 0,
|
522
|
+
r : knobInnerAndShieldSize
|
523
|
+
});
|
524
|
+
|
525
|
+
var shuttleRingBackG = document.createElementNS(svgNS, 'g');
|
526
|
+
shuttleRingBackG.setAttribute('class', 'animation-shuttleRingG');
|
527
|
+
|
528
|
+
parentNode.appendChild(themeEle);
|
529
|
+
topG.appendChild(shuttleRingBackG);
|
530
|
+
topG.appendChild(knobG);
|
531
|
+
topG.appendChild(buttonsG);
|
532
|
+
|
533
|
+
shuttleRingBackG.appendChild(shuttleRingBackPanel);
|
534
|
+
shuttleRingBackG.appendChild(shuttleRingSwooshG);
|
535
|
+
shuttleRingBackG.appendChild(this._shuttleRingPointer);
|
536
|
+
|
537
|
+
knobG.appendChild(this._knobOuter);
|
538
|
+
knobG.appendChild(knobInner);
|
539
|
+
knobG.appendChild(this._knobDate);
|
540
|
+
knobG.appendChild(this._knobTime);
|
541
|
+
knobG.appendChild(this._knobStatus);
|
542
|
+
knobG.appendChild(knobShield);
|
543
|
+
|
544
|
+
svg.appendChild(topG);
|
545
|
+
parentNode.appendChild(svg);
|
546
|
+
|
547
|
+
var that = this;
|
548
|
+
|
549
|
+
window.addEventListener('resize', function() {
|
550
|
+
resize(that);
|
551
|
+
}, true);
|
552
|
+
|
553
|
+
var callBack = function(e) {
|
554
|
+
setShuttleRingFromMouseOrTouch(that, e);
|
555
|
+
};
|
556
|
+
shuttleRingBackPanel.addEventListener('mousedown', callBack, true);
|
557
|
+
shuttleRingBackPanel.addEventListener('touchstart', callBack, true);
|
558
|
+
shuttleRingSwooshG.addEventListener('mousedown', callBack, true);
|
559
|
+
shuttleRingSwooshG.addEventListener('touchstart', callBack, true);
|
560
|
+
document.addEventListener('mousemove', callBack, true);
|
561
|
+
document.addEventListener('touchmove', callBack, true);
|
562
|
+
document.addEventListener('mouseup', callBack, true);
|
563
|
+
document.addEventListener('touchend', callBack, true);
|
564
|
+
this._shuttleRingPointer.addEventListener('mousedown', callBack, true);
|
565
|
+
this._shuttleRingPointer.addEventListener('touchstart', callBack, true);
|
566
|
+
this._knobOuter.addEventListener('mousedown', callBack, true);
|
567
|
+
this._knobOuter.addEventListener('touchstart', callBack, true);
|
568
|
+
|
569
|
+
//TODO: Since the animation widget uses SVG and has no HTML backing,
|
570
|
+
//we need to wire everything up manually. Knockout can supposedly
|
571
|
+
//bind to SVG, so we we figure that out we can modify our SVG
|
572
|
+
//to include the binding information directly.
|
573
|
+
|
574
|
+
this._subscriptions = [//
|
575
|
+
subscribeAndEvaluate(viewModel.pauseViewModel.toggled, function(value) {
|
576
|
+
if (value) {
|
577
|
+
that._shuttleRingPointer.setAttribute('class', 'animation-shuttleRingPausePointer');
|
578
|
+
} else {
|
579
|
+
that._shuttleRingPointer.setAttribute('class', 'animation-shuttleRingPointer');
|
580
|
+
}
|
581
|
+
}),
|
582
|
+
|
583
|
+
subscribeAndEvaluate(viewModel.shuttleRingAngle, function(value) {
|
584
|
+
setShuttleRingPointer(that._shuttleRingPointer, that._knobOuter, value);
|
585
|
+
}),
|
586
|
+
|
587
|
+
subscribeAndEvaluate(viewModel.dateLabel, function(value) {
|
588
|
+
that._knobDate.childNodes[0].textContent = value;
|
589
|
+
}),
|
590
|
+
|
591
|
+
subscribeAndEvaluate(viewModel.timeLabel, function(value) {
|
592
|
+
that._knobTime.childNodes[0].textContent = value;
|
593
|
+
}),
|
594
|
+
|
595
|
+
subscribeAndEvaluate(viewModel.multiplierLabel, function(value) {
|
596
|
+
that._knobStatus.childNodes[0].textContent = value;
|
597
|
+
})];
|
598
|
+
|
599
|
+
this.applyThemeChanges();
|
600
|
+
resize(this);
|
601
|
+
};
|
602
|
+
|
603
|
+
/**
|
604
|
+
* Destroys the animation widget. Should be called if permanently
|
605
|
+
* removing the widget from layout.
|
606
|
+
* @memberof Animation
|
607
|
+
*/
|
608
|
+
Animation.prototype.destroy = function() {
|
609
|
+
this.parentNode.removeChild(this._svgNode);
|
610
|
+
this.parentNode.removeChild(this._theme);
|
611
|
+
this._realtimeSVG.destroy();
|
612
|
+
this._playReverseSVG.destroy();
|
613
|
+
this._playForwardSVG.destroy();
|
614
|
+
this._pauseSVG.destroy();
|
615
|
+
|
616
|
+
var subscriptions = this._subscriptions;
|
617
|
+
for ( var i = 0, len = subscriptions.length; i < len; i++) {
|
618
|
+
subscriptions[i].dispose();
|
619
|
+
}
|
620
|
+
|
621
|
+
return destroyObject(this);
|
622
|
+
};
|
623
|
+
|
624
|
+
/**
|
625
|
+
* @memberof Animation
|
626
|
+
*
|
627
|
+
* @returns {Boolean} true if the object has been destroyed, false otherwise.
|
628
|
+
*/
|
629
|
+
Animation.prototype.isDestroyed = function() {
|
630
|
+
return false;
|
631
|
+
};
|
632
|
+
|
633
|
+
/**
|
634
|
+
* Updates the widget to reflect any modified CSS fules for themeing.
|
635
|
+
* @memberof Animation
|
636
|
+
*
|
637
|
+
* @example
|
638
|
+
* //Switch to the cesium-darker theme.
|
639
|
+
* document.body.className = 'cesium-darker';
|
640
|
+
* animation.applyThemeChanges();
|
641
|
+
*/
|
642
|
+
Animation.prototype.applyThemeChanges = function() {
|
643
|
+
var buttonNormalBackColor = getElementColor(this._themeNormal);
|
644
|
+
var buttonHoverBackColor = getElementColor(this._themeHover);
|
645
|
+
var buttonToggledBackColor = getElementColor(this._themeSelect);
|
646
|
+
var buttonDisabledBackColor = getElementColor(this._themeDisabled);
|
647
|
+
var knobBackColor = getElementColor(this._themeKnob);
|
648
|
+
var pointerColor = getElementColor(this._themePointer);
|
649
|
+
var swooshColor = getElementColor(this._themeSwoosh);
|
650
|
+
var swooshHoverColor = getElementColor(this._themeSwooshHover);
|
651
|
+
|
652
|
+
var defsElement = svgFromObject({
|
653
|
+
tagName : 'defs',
|
654
|
+
children : [{
|
655
|
+
id : 'animation_buttonNormal',
|
656
|
+
tagName : 'linearGradient',
|
657
|
+
x1 : '50%',
|
658
|
+
y1 : '0%',
|
659
|
+
x2 : '50%',
|
660
|
+
y2 : '100%',
|
661
|
+
children : [
|
662
|
+
//add a 'stop-opacity' field to make translucent.
|
663
|
+
{
|
664
|
+
tagName : 'stop',
|
665
|
+
offset : '0%',
|
666
|
+
'stop-color' : makeColorString(buttonNormalBackColor, gradientEnabledColor0)
|
667
|
+
}, {
|
668
|
+
tagName : 'stop',
|
669
|
+
offset : '12%',
|
670
|
+
'stop-color' : makeColorString(buttonNormalBackColor, gradientEnabledColor1)
|
671
|
+
}, {
|
672
|
+
tagName : 'stop',
|
673
|
+
offset : '46%',
|
674
|
+
'stop-color' : makeColorString(buttonNormalBackColor, gradientEnabledColor2)
|
675
|
+
}, {
|
676
|
+
tagName : 'stop',
|
677
|
+
offset : '81%',
|
678
|
+
'stop-color' : makeColorString(buttonNormalBackColor, gradientEnabledColor3)
|
679
|
+
}]
|
680
|
+
}, {
|
681
|
+
id : 'animation_buttonHovered',
|
682
|
+
tagName : 'linearGradient',
|
683
|
+
x1 : '50%',
|
684
|
+
y1 : '0%',
|
685
|
+
x2 : '50%',
|
686
|
+
y2 : '100%',
|
687
|
+
children : [{
|
688
|
+
tagName : 'stop',
|
689
|
+
offset : '0%',
|
690
|
+
'stop-color' : makeColorString(buttonHoverBackColor, gradientEnabledColor0)
|
691
|
+
}, {
|
692
|
+
tagName : 'stop',
|
693
|
+
offset : '12%',
|
694
|
+
'stop-color' : makeColorString(buttonHoverBackColor, gradientEnabledColor1)
|
695
|
+
}, {
|
696
|
+
tagName : 'stop',
|
697
|
+
offset : '46%',
|
698
|
+
'stop-color' : makeColorString(buttonHoverBackColor, gradientEnabledColor2)
|
699
|
+
}, {
|
700
|
+
tagName : 'stop',
|
701
|
+
offset : '81%',
|
702
|
+
'stop-color' : makeColorString(buttonHoverBackColor, gradientEnabledColor3)
|
703
|
+
}]
|
704
|
+
}, {
|
705
|
+
id : 'animation_buttonToggled',
|
706
|
+
tagName : 'linearGradient',
|
707
|
+
x1 : '50%',
|
708
|
+
y1 : '0%',
|
709
|
+
x2 : '50%',
|
710
|
+
y2 : '100%',
|
711
|
+
children : [{
|
712
|
+
tagName : 'stop',
|
713
|
+
offset : '0%',
|
714
|
+
'stop-color' : makeColorString(buttonToggledBackColor, gradientEnabledColor0)
|
715
|
+
}, {
|
716
|
+
tagName : 'stop',
|
717
|
+
offset : '12%',
|
718
|
+
'stop-color' : makeColorString(buttonToggledBackColor, gradientEnabledColor1)
|
719
|
+
}, {
|
720
|
+
tagName : 'stop',
|
721
|
+
offset : '46%',
|
722
|
+
'stop-color' : makeColorString(buttonToggledBackColor, gradientEnabledColor2)
|
723
|
+
}, {
|
724
|
+
tagName : 'stop',
|
725
|
+
offset : '81%',
|
726
|
+
'stop-color' : makeColorString(buttonToggledBackColor, gradientEnabledColor3)
|
727
|
+
}]
|
728
|
+
}, {
|
729
|
+
id : 'animation_buttonDisabled',
|
730
|
+
tagName : 'linearGradient',
|
731
|
+
x1 : '50%',
|
732
|
+
y1 : '0%',
|
733
|
+
x2 : '50%',
|
734
|
+
y2 : '100%',
|
735
|
+
children : [{
|
736
|
+
tagName : 'stop',
|
737
|
+
offset : '0%',
|
738
|
+
'stop-color' : makeColorString(buttonDisabledBackColor, gradientDisabledColor0)
|
739
|
+
}, {
|
740
|
+
tagName : 'stop',
|
741
|
+
offset : '75%',
|
742
|
+
'stop-color' : makeColorString(buttonDisabledBackColor, gradientDisabledColor1)
|
743
|
+
}]
|
744
|
+
}, {
|
745
|
+
id : 'animation_blurred',
|
746
|
+
tagName : 'filter',
|
747
|
+
width : '200%',
|
748
|
+
height : '200%',
|
749
|
+
x : '-50%',
|
750
|
+
y : '-50%',
|
751
|
+
children : [{
|
752
|
+
tagName : 'feGaussianBlur',
|
753
|
+
stdDeviation : 4,
|
754
|
+
'in' : 'SourceGraphic'
|
755
|
+
}]
|
756
|
+
}, {
|
757
|
+
id : 'animation_shuttleRingSwooshGradient',
|
758
|
+
tagName : 'linearGradient',
|
759
|
+
x1 : '50%',
|
760
|
+
y1 : '0%',
|
761
|
+
x2 : '50%',
|
762
|
+
y2 : '100%',
|
763
|
+
children : [{
|
764
|
+
tagName : 'stop',
|
765
|
+
offset : '0%',
|
766
|
+
'stop-opacity' : 0.2,
|
767
|
+
'stop-color' : swooshColor.toCssColorString()
|
768
|
+
}, {
|
769
|
+
tagName : 'stop',
|
770
|
+
offset : '85%',
|
771
|
+
'stop-opacity' : 0.85,
|
772
|
+
'stop-color' : swooshColor.toCssColorString()
|
773
|
+
}, {
|
774
|
+
tagName : 'stop',
|
775
|
+
offset : '95%',
|
776
|
+
'stop-opacity' : 0.05,
|
777
|
+
'stop-color' : swooshColor.toCssColorString()
|
778
|
+
}]
|
779
|
+
}, {
|
780
|
+
id : 'animation_shuttleRingSwooshHovered',
|
781
|
+
tagName : 'linearGradient',
|
782
|
+
x1 : '50%',
|
783
|
+
y1 : '0%',
|
784
|
+
x2 : '50%',
|
785
|
+
y2 : '100%',
|
786
|
+
children : [{
|
787
|
+
tagName : 'stop',
|
788
|
+
offset : '0%',
|
789
|
+
'stop-opacity' : 0.2,
|
790
|
+
'stop-color' : swooshHoverColor.toCssColorString()
|
791
|
+
}, {
|
792
|
+
tagName : 'stop',
|
793
|
+
offset : '85%',
|
794
|
+
'stop-opacity' : 0.85,
|
795
|
+
'stop-color' : swooshHoverColor.toCssColorString()
|
796
|
+
}, {
|
797
|
+
tagName : 'stop',
|
798
|
+
offset : '95%',
|
799
|
+
'stop-opacity' : 0.05,
|
800
|
+
'stop-color' : swooshHoverColor.toCssColorString()
|
801
|
+
}]
|
802
|
+
}, {
|
803
|
+
id : 'animation_shuttleRingPointerGradient',
|
804
|
+
tagName : 'linearGradient',
|
805
|
+
x1 : '0%',
|
806
|
+
y1 : '50%',
|
807
|
+
x2 : '100%',
|
808
|
+
y2 : '50%',
|
809
|
+
children : [{
|
810
|
+
tagName : 'stop',
|
811
|
+
offset : '0%',
|
812
|
+
'stop-color' : pointerColor.toCssColorString()
|
813
|
+
}, {
|
814
|
+
tagName : 'stop',
|
815
|
+
offset : '40%',
|
816
|
+
'stop-color' : pointerColor.toCssColorString()
|
817
|
+
}, {
|
818
|
+
tagName : 'stop',
|
819
|
+
offset : '60%',
|
820
|
+
'stop-color' : makeColorString(pointerColor, gradientPointerColor)
|
821
|
+
}, {
|
822
|
+
tagName : 'stop',
|
823
|
+
offset : '100%',
|
824
|
+
'stop-color' : makeColorString(pointerColor, gradientPointerColor)
|
825
|
+
}]
|
826
|
+
}, {
|
827
|
+
id : 'animation_shuttleRingPointerPaused',
|
828
|
+
tagName : 'linearGradient',
|
829
|
+
x1 : '0%',
|
830
|
+
y1 : '50%',
|
831
|
+
x2 : '100%',
|
832
|
+
y2 : '50%',
|
833
|
+
children : [{
|
834
|
+
tagName : 'stop',
|
835
|
+
offset : '0%',
|
836
|
+
'stop-color' : '#CCC'
|
837
|
+
}, {
|
838
|
+
tagName : 'stop',
|
839
|
+
offset : '40%',
|
840
|
+
'stop-color' : '#CCC'
|
841
|
+
}, {
|
842
|
+
tagName : 'stop',
|
843
|
+
offset : '60%',
|
844
|
+
'stop-color' : '#555'
|
845
|
+
}, {
|
846
|
+
tagName : 'stop',
|
847
|
+
offset : '100%',
|
848
|
+
'stop-color' : '#555'
|
849
|
+
}]
|
850
|
+
}, {
|
851
|
+
id : 'animation_knobOuter',
|
852
|
+
tagName : 'linearGradient',
|
853
|
+
x1 : '20%',
|
854
|
+
y1 : '0%',
|
855
|
+
x2 : '90%',
|
856
|
+
y2 : '100%',
|
857
|
+
children : [{
|
858
|
+
tagName : 'stop',
|
859
|
+
offset : '5%',
|
860
|
+
'stop-color' : makeColorString(knobBackColor, gradientEnabledColor0)
|
861
|
+
}, {
|
862
|
+
tagName : 'stop',
|
863
|
+
offset : '60%',
|
864
|
+
'stop-color' : makeColorString(knobBackColor, gradientKnobColor)
|
865
|
+
}, {
|
866
|
+
tagName : 'stop',
|
867
|
+
offset : '85%',
|
868
|
+
'stop-color' : makeColorString(knobBackColor, gradientEnabledColor1)
|
869
|
+
}]
|
870
|
+
}, {
|
871
|
+
id : 'animation_knobInner',
|
872
|
+
tagName : 'linearGradient',
|
873
|
+
x1 : '20%',
|
874
|
+
y1 : '0%',
|
875
|
+
x2 : '90%',
|
876
|
+
y2 : '100%',
|
877
|
+
children : [{
|
878
|
+
tagName : 'stop',
|
879
|
+
offset : '5%',
|
880
|
+
'stop-color' : makeColorString(knobBackColor, gradientKnobColor)
|
881
|
+
}, {
|
882
|
+
tagName : 'stop',
|
883
|
+
offset : '60%',
|
884
|
+
'stop-color' : makeColorString(knobBackColor, gradientEnabledColor0)
|
885
|
+
}, {
|
886
|
+
tagName : 'stop',
|
887
|
+
offset : '85%',
|
888
|
+
'stop-color' : makeColorString(knobBackColor, gradientEnabledColor3)
|
889
|
+
}]
|
890
|
+
}, {
|
891
|
+
id : 'animation_pathReset',
|
892
|
+
tagName : 'path',
|
893
|
+
transform : 'translate(16,16) scale(0.85) translate(-16,-16)',
|
894
|
+
d : 'M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z'
|
895
|
+
}, {
|
896
|
+
id : 'animation_pathPause',
|
897
|
+
tagName : 'path',
|
898
|
+
transform : 'translate(16,16) scale(0.85) translate(-16,-16)',
|
899
|
+
d : 'M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z'
|
900
|
+
}, {
|
901
|
+
id : 'animation_pathPlay',
|
902
|
+
tagName : 'path',
|
903
|
+
transform : 'translate(16,16) scale(0.85) translate(-16,-16)',
|
904
|
+
d : 'M6.684,25.682L24.316,15.5L6.684,5.318V25.682z'
|
905
|
+
}, {
|
906
|
+
id : 'animation_pathPlayReverse',
|
907
|
+
tagName : 'path',
|
908
|
+
transform : 'translate(16,16) scale(-0.85,0.85) translate(-16,-16)',
|
909
|
+
d : 'M6.684,25.682L24.316,15.5L6.684,5.318V25.682z'
|
910
|
+
}, {
|
911
|
+
id : 'animation_pathLoop',
|
912
|
+
tagName : 'path',
|
913
|
+
transform : 'translate(16,16) scale(0.85) translate(-16,-16)',
|
914
|
+
d : 'M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z'
|
915
|
+
}, {
|
916
|
+
id : 'animation_pathClock',
|
917
|
+
tagName : 'path',
|
918
|
+
transform : 'translate(16,16) scale(0.85) translate(-16,-15.5)',
|
919
|
+
d : 'M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z'
|
920
|
+
}, {
|
921
|
+
id : 'animation_pathWingButton',
|
922
|
+
tagName : 'path',
|
923
|
+
d : 'm 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z'
|
924
|
+
}, {
|
925
|
+
id : 'animation_pathPointer',
|
926
|
+
tagName : 'path',
|
927
|
+
d : 'M-15,-65,-15,-55,15,-55,15,-65,0,-95z'
|
928
|
+
}, {
|
929
|
+
id : 'animation_pathSwooshFX',
|
930
|
+
tagName : 'path',
|
931
|
+
d : 'm 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z'
|
932
|
+
}]
|
933
|
+
});
|
934
|
+
|
935
|
+
if (typeof this._defsElement === 'undefined') {
|
936
|
+
this._svgNode.appendChild(defsElement);
|
937
|
+
} else {
|
938
|
+
this._svgNode.replaceChild(defsElement, this._defsElement);
|
939
|
+
}
|
940
|
+
this._defsElement = defsElement;
|
941
|
+
};
|
942
|
+
|
943
|
+
return Animation;
|
944
|
+
});
|