47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
|
define([
|
||
|
'jquery', 'knockout', 'text!./metar.html'
|
||
|
], function(jquery, ko, htmlString) {
|
||
|
|
||
|
function ViewModel(params) {
|
||
|
var NO_METAR = "no METAR";
|
||
|
self.scrolledMetar = ko.observable("");
|
||
|
self.textStart = 0;
|
||
|
self.metar = ko.observable(NO_METAR);
|
||
|
self.valid = ko.observable(false).extend({ fgprop: 'metar-valid' });
|
||
|
self.valid.subscribe(function(newValue) {
|
||
|
self.textStart = 0;
|
||
|
if( false == newValue ) {
|
||
|
self.metar(NO_METAR);
|
||
|
return;
|
||
|
}
|
||
|
self.metar("Wait..");
|
||
|
jquery.get('/json/environment/metar/data', null, function(data) {
|
||
|
self.textStart = 0;
|
||
|
self.metar(data.value);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
self.textLength = 20;
|
||
|
self.timeout = 300;
|
||
|
self.timerId = setInterval(function() {
|
||
|
var t = self.metar() + " " + self.metar();
|
||
|
var a = self.textStart;
|
||
|
var b = a+self.textLength;
|
||
|
self.scrolledMetar( t.substring(a,b) );
|
||
|
if( ++a >= self.metar().length )
|
||
|
a = 0;
|
||
|
self.textStart = a;
|
||
|
}, self.timeout );
|
||
|
}
|
||
|
|
||
|
ViewModel.prototype.dispose = function() {
|
||
|
clearInterval( self.timerId );
|
||
|
}
|
||
|
|
||
|
// Return component definition
|
||
|
return {
|
||
|
viewModel : ViewModel,
|
||
|
template : htmlString
|
||
|
};
|
||
|
});
|