Phi: add a scale to map
[fg:fgdata.git] / webgui / widgets / metar.js
1 define([
2         'jquery', 'knockout', 'text!./metar.html' 
3 ], function(jquery, ko, htmlString) {
4
5     function ViewModel(params) {
6       var NO_METAR = "no METAR";
7       self.scrolledMetar = ko.observable("");
8       self.textStart = 0;
9       self.metar = ko.observable(NO_METAR);
10       self.valid = ko.observable(false).extend({ fgprop: 'metar-valid' });
11       self.valid.subscribe(function(newValue) {
12         self.textStart = 0;
13         if( false == newValue ) {
14           self.metar(NO_METAR);
15           return;
16         }
17         self.metar("Wait..");
18         jquery.get('/json/environment/metar/data', null, function(data) {
19           self.textStart = 0;
20           self.metar(data.value);
21         });
22       });
23
24       self.textLength = 20;
25       self.timeout = 300;
26       self.timerId = setInterval(function() {
27           var t = self.metar() + " " + self.metar();
28           var a = self.textStart;
29           var b = a+self.textLength;
30           self.scrolledMetar( t.substring(a,b) );
31           if( ++a  >= self.metar().length )
32             a = 0;
33           self.textStart = a;
34       }, self.timeout );
35     }
36
37     ViewModel.prototype.dispose = function() {
38       clearInterval( self.timerId );
39     }
40
41     // Return component definition
42     return {
43         viewModel : ViewModel,
44         template : htmlString
45     };
46 });