mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-03-16 22:10:25 +00:00
87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
$(function() {
|
|
var symbols = {
|
|
"USD": "$",
|
|
"EUR": "€",
|
|
"GBP": "£",
|
|
"Miles": "m",
|
|
"Kilometer": "km",
|
|
"inch": "\"",
|
|
"centimeter": "cm"
|
|
};
|
|
|
|
function list() {
|
|
var ul = $( "#conversions" ).empty()
|
|
.filter( ":mobile-page" ).page( "destroy" )
|
|
.end(),
|
|
ulEdit = $( "#edit-conversions" ).empty()
|
|
.filter( ":mobile-page" ).page( "destroy" )
|
|
.end();
|
|
$.each( all, function( index, conversion ) {
|
|
// if last update was less then a minute ago, don't update
|
|
if ( conversion.type === "currency" && !conversion.rate || conversion.updated && conversion.updated + 60000 < +new Date) {
|
|
var self = conversion;
|
|
var url = "http://query.yahooapis.com/v1/public/yql?q=select%20rate%2Cname%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes%3Fs%3D" + conversion.from + conversion.to + "%253DX%26f%3Dl1n'%20and%20columns%3D'rate%2Cname'&format=json&diagnostics=true&callback=?";
|
|
$.getJSON( url, function( result ) {
|
|
self.rate = parseFloat( result.query.results.row.rate );
|
|
// TODO trigger a custom event instead of keyup?
|
|
$( "#term" ).keyup();
|
|
self.updated = +new Date;
|
|
conversions.store();
|
|
});
|
|
}
|
|
$( "#conversion-field" ).tmpl( conversion, {
|
|
symbols: symbols
|
|
}).appendTo( ul );
|
|
$( "#conversion-edit-field" ).tmpl( conversion, {
|
|
symbols: symbols
|
|
}).appendTo( ulEdit );
|
|
});
|
|
ul.page();
|
|
// TODO trigger a custom event instead of keyup?
|
|
$( "#term" ).keyup();
|
|
}
|
|
var all = conversions.all();
|
|
$( "#term" ).keyup(function() {
|
|
var value = this.value;
|
|
$.each( all, function( index, conversion ) {
|
|
$( "#" + conversion.from + conversion.to ).text( conversion.rate
|
|
? Math.ceil( value * conversion.rate * 100 ) / 100
|
|
: "Rate not available, yet."
|
|
);
|
|
});
|
|
}).focus();
|
|
list();
|
|
$( "form" ).submit(function() {
|
|
$( "#term" ).blur();
|
|
return false;
|
|
});
|
|
$( "#add" ).click(function() {
|
|
all.push({
|
|
type: "currency",
|
|
from: $( "#currency-options-from" ).val(),
|
|
to: $( "#currency-options-to" ).val()
|
|
});
|
|
conversions.store();
|
|
list();
|
|
return false;
|
|
});
|
|
$( "#clear" ).click(function() {
|
|
conversions.clear();
|
|
list();
|
|
return false;
|
|
});
|
|
$( "#restore" ).click(function() {
|
|
conversions.restore();
|
|
list();
|
|
return false;
|
|
});
|
|
|
|
$( "#edit-conversions" ).click(function( event ) {
|
|
var target = $( event.target ).closest( ".deletebutton" );
|
|
if ( target.length ) {
|
|
conversions.remove( target.prev( "label" ).attr( "for" ) );
|
|
list();
|
|
}
|
|
return false;
|
|
});
|
|
});
|