Init commit
This commit is contained in:
173
js/jquery.flightindicators.js
Normal file
173
js/jquery.flightindicators.js
Normal file
@@ -0,0 +1,173 @@
|
||||
/*
|
||||
* jQuery Flight Indicators plugin
|
||||
* By Sébastien Matton (seb_matton@hotmail.com)
|
||||
* Published under GPLv3 License.
|
||||
*
|
||||
* https://github.com/sebmatton/jQuery-Flight-Indicators
|
||||
*/
|
||||
(function($) {
|
||||
function FlightIndicator( placeholder, type, options ) {
|
||||
// Initial configuration
|
||||
var attitude = this;
|
||||
var settings = $.extend({
|
||||
size : 200,
|
||||
roll : 0,
|
||||
pitch : 0,
|
||||
turn : 0,
|
||||
heading: 0,
|
||||
vario: 0,
|
||||
airspeed: 0,
|
||||
altitude: 0,
|
||||
pressure: 1000,
|
||||
showBox : true,
|
||||
img_directory : 'img/'
|
||||
}, options );
|
||||
|
||||
var constants = {
|
||||
pitch_bound:30,
|
||||
vario_bound : 1.95,
|
||||
airspeed_bound_l : 0,
|
||||
airspeed_bound_h : 160
|
||||
}
|
||||
|
||||
// Creation of the instrument
|
||||
placeholder.each(function(){
|
||||
switch(type){
|
||||
case 'heading':
|
||||
$(this).html('<div class="instrument heading"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><div class="heading box"><img src="' + settings.img_directory + 'heading_yaw.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'heading_mechanics.svg" class="box" alt="" /><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setHeading(settings.heading);
|
||||
break;
|
||||
case 'variometer':
|
||||
$(this).html('<div class="instrument vario"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><img src="' + settings.img_directory + 'vertical_mechanics.svg" class="box" alt="" /><div class="vario box"><img src="' + settings.img_directory + 'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setVario(settings.vario);
|
||||
break;
|
||||
case 'turn_coordinator':
|
||||
$(this).html('<div class="instrument turn_coordinator"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><img src="' + settings.img_directory + 'turn_coordinator.svg" class="box" alt="" /><div class="turn box"><img src="' + settings.img_directory + 'fi_tc_airplane.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setTurn(settings.turn);
|
||||
break;
|
||||
case 'airspeed':
|
||||
$(this).html('<div class="instrument airspeed"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><img src="' + settings.img_directory + 'speed_mechanics.svg" class="box" alt="" /><div class="speed box"><img src="' + settings.img_directory + 'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setAirSpeed(settings.airspeed);
|
||||
break
|
||||
case 'altimeter':
|
||||
$(this).html('<div class="instrument altimeter"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><div class="pressure box"><img src="' + settings.img_directory + 'altitude_pressure.svg" class="box" alt="" /></div><img src="' + settings.img_directory + 'altitude_ticks.svg" class="box" alt="" /><div class="needleSmall box"><img src="' + settings.img_directory + 'fi_needle_small.svg" class="box" alt="" /></div><div class="needle box"><img src="' + settings.img_directory + 'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setAltitude(settings.altitude);
|
||||
_setPressure(settings.pressure);
|
||||
break;
|
||||
default:
|
||||
$(this).html('<div class="instrument attitude"><img src="' + settings.img_directory + 'fi_box.svg" class="background box" alt="" /><div class="roll box"><img src="' + settings.img_directory + 'horizon_back.svg" class="box" alt="" /><div class="pitch box"><img src="' + settings.img_directory + 'horizon_ball.svg" class="box" alt="" /></div><img src="' + settings.img_directory + 'horizon_circle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="' + settings.img_directory + 'horizon_mechanics.svg" class="box" alt="" /><img src="' + settings.img_directory + 'fi_circle.svg" class="box" alt="" /></div></div>');
|
||||
_setRoll(settings.roll);
|
||||
_setPitch(settings.pitch);
|
||||
}
|
||||
$(this).find('div.instrument').css({height : settings.size, width : settings.size});
|
||||
$(this).find('div.instrument img.box.background').toggle(settings.showBox);
|
||||
});
|
||||
|
||||
// Private methods
|
||||
function _setRoll(roll){
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.attitude div.roll').css('transform', 'rotate('+roll+'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setPitch(pitch){
|
||||
// alert(pitch);
|
||||
if(pitch>constants.pitch_bound){pitch = constants.pitch_bound;}
|
||||
else if(pitch<-constants.pitch_bound){pitch = -constants.pitch_bound;}
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.attitude div.roll div.pitch').css('top', pitch*0.7 + '%');
|
||||
});
|
||||
}
|
||||
|
||||
function _setHeading(heading){
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.heading div.heading').css('transform', 'rotate(' + -heading + 'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setTurn(turn){
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.turn_coordinator div.turn').css('transform', 'rotate('+turn+'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setVario(vario){
|
||||
if(vario > constants.vario_bound){vario = constants.vario_bound;}
|
||||
else if(vario < -constants.vario_bound){vario = -constants.vario_bound;}
|
||||
vario = vario*90;
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.vario div.vario').css('transform', 'rotate(' + vario + 'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setAirSpeed(speed){
|
||||
if(speed > constants.airspeed_bound_h){speed = constants.airspeed_bound_h;}
|
||||
else if(speed < constants.airspeed_bound_l){speed = constants.airspeed_bound_l;}
|
||||
speed = 90+speed*2;
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.airspeed div.speed').css('transform', 'rotate(' + speed + 'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setAltitude(altitude){
|
||||
var needle = 90 + altitude%1000 * 360 / 1000;
|
||||
var needleSmall = altitude / 10000 * 360;
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.altimeter div.needle').css('transform', 'rotate(' + needle + 'deg)');
|
||||
$(this).find('div.instrument.altimeter div.needleSmall').css('transform', 'rotate(' + needleSmall + 'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _setPressure(pressure){
|
||||
pressure = 2*pressure - 1980;
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument.altimeter div.pressure').css('transform', 'rotate(' + pressure + 'deg)');
|
||||
});
|
||||
}
|
||||
|
||||
function _resize(size){
|
||||
placeholder.each(function(){
|
||||
$(this).find('div.instrument').css({height : size, width : size});
|
||||
});
|
||||
}
|
||||
|
||||
function _showBox(){
|
||||
placeholder.each(function(){
|
||||
$(this).find('img.box.background').show();
|
||||
});
|
||||
}
|
||||
|
||||
function _hideBox(){
|
||||
placeholder.each(function(){
|
||||
$(this).find('img.box.background').hide();
|
||||
});
|
||||
}
|
||||
|
||||
// Public methods
|
||||
this.setRoll = function(roll){_setRoll(roll);}
|
||||
this.setPitch = function(pitch){_setPitch(pitch);}
|
||||
this.setHeading = function(heading){_setHeading(heading);}
|
||||
this.setTurn = function(turn){_setTurn(turn);}
|
||||
this.setVario = function(vario){_setVario(vario);}
|
||||
this.setAirSpeed = function(speed){_setAirSpeed(speed);}
|
||||
this.setAltitude = function(altitude){_setAltitude(altitude);}
|
||||
this.setPressure = function(pressure){_setPressure(pressure);}
|
||||
this.resize = function(size){_resize(size);}
|
||||
this.showBox = function(){_showBox();}
|
||||
this.hideBox = function(){_hideBox();}
|
||||
|
||||
return attitude;
|
||||
};
|
||||
|
||||
// Extension to jQuery
|
||||
$.flightIndicator = function(placeholder, type, options){
|
||||
var flightIndicator = new FlightIndicator($(placeholder), type, options)
|
||||
return flightIndicator;
|
||||
}
|
||||
|
||||
$.fn.flightIndicator = function(data, type, options){
|
||||
return this.each(function(){
|
||||
$.flightIndicator(this, type, options);
|
||||
});
|
||||
}
|
||||
}( jQuery ));
|
8
js/jquery.flightindicators.min.js
vendored
Normal file
8
js/jquery.flightindicators.min.js
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* jQuery Flight Indicators plugin
|
||||
* By Sébastien Matton (seb_matton@hotmail.com)
|
||||
* Published under GPLv3 License.
|
||||
*
|
||||
* https://github.com/sebmatton/jQuery-Flight-Indicators
|
||||
*/
|
||||
(function(b){function a(n,l,r){var f=this;var h=b.extend({size:200,roll:0,pitch:0,heading:0,vario:0,airspeed:0,altitude:0,pressure:1000,showBox:true,img_directory:"img/"},r);var q={pitch_bound:30,vario_bound:1.95,airspeed_bound_l:0,airspeed_bound_h:160};n.each(function(){switch(l){case"heading":b(this).html('<div class="instrument heading"><img src="'+h.img_directory+'fi_box.svg" class="background box" alt="" /><div class="heading box"><img src="'+h.img_directory+'heading_yaw.svg" class="box" alt="" /></div><div class="mechanics box"><img src="'+h.img_directory+'heading_mechanics.svg" class="box" alt="" /><img src="'+h.img_directory+'fi_circle.svg" class="box" alt="" /></div></div>');p(h.heading);break;case"variometer":b(this).html('<div class="instrument vario"><img src="'+h.img_directory+'fi_box.svg" class="background box" alt="" /><img src="'+h.img_directory+'vertical_mechanics.svg" class="box" alt="" /><div class="vario box"><img src="'+h.img_directory+'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="'+h.img_directory+'fi_circle.svg" class="box" alt="" /></div></div>');i(h.vario);break;case"airspeed":b(this).html('<div class="instrument airspeed"><img src="'+h.img_directory+'fi_box.svg" class="background box" alt="" /><img src="'+h.img_directory+'speed_mechanics.svg" class="box" alt="" /><div class="speed box"><img src="'+h.img_directory+'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="'+h.img_directory+'fi_circle.svg" class="box" alt="" /></div></div>');e(h.airspeed);break;case"altimeter":b(this).html('<div class="instrument altimeter"><img src="'+h.img_directory+'fi_box.svg" class="background box" alt="" /><div class="pressure box"><img src="'+h.img_directory+'altitude_pressure.svg" class="box" alt="" /></div><img src="'+h.img_directory+'altitude_ticks.svg" class="box" alt="" /><div class="needleSmall box"><img src="'+h.img_directory+'fi_needle_small.svg" class="box" alt="" /></div><div class="needle box"><img src="'+h.img_directory+'fi_needle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="'+h.img_directory+'fi_circle.svg" class="box" alt="" /></div></div>');d(h.altitude);k(h.pressure);break;default:b(this).html('<div class="instrument attitude"><img src="'+h.img_directory+'fi_box.svg" class="background box" alt="" /><div class="roll box"><img src="'+h.img_directory+'horizon_back.svg" class="box" alt="" /><div class="pitch box"><img src="'+h.img_directory+'horizon_ball.svg" class="box" alt="" /></div><img src="'+h.img_directory+'horizon_circle.svg" class="box" alt="" /></div><div class="mechanics box"><img src="'+h.img_directory+'horizon_mechanics.svg" class="box" alt="" /><img src="'+h.img_directory+'fi_circle.svg" class="box" alt="" /></div></div>');o(h.roll);m(h.pitch)}b(this).find("div.instrument").css({height:h.size,width:h.size});b(this).find("div.instrument img.box.background").toggle(h.showBox)});function o(s){n.each(function(){b(this).find("div.instrument.attitude div.roll").css("transform","rotate("+s+"deg)")})}function m(s){if(s>q.pitch_bound){s=q.pitch_bound}else{if(s<-q.pitch_bound){s=-q.pitch_bound}}n.each(function(){b(this).find("div.instrument.attitude div.roll div.pitch").css("top",s*0.7+"%")})}function p(s){n.each(function(){b(this).find("div.instrument.heading div.heading").css("transform","rotate("+-s+"deg)")})}function i(s){if(s>q.vario_bound){s=q.vario_bound}else{if(s<-q.vario_bound){s=-q.vario_bound}}s=s*90;n.each(function(){b(this).find("div.instrument.vario div.vario").css("transform","rotate("+s+"deg)")})}function e(s){if(s>q.airspeed_bound_h){s=q.airspeed_bound_h}else{if(s<q.airspeed_bound_l){s=q.airspeed_bound_l}}s=90+s*2;n.each(function(){b(this).find("div.instrument.airspeed div.speed").css("transform","rotate("+s+"deg)")})}function d(s){var u=90+s%1000*360/1000;var t=s/10000*360;n.each(function(){b(this).find("div.instrument.altimeter div.needle").css("transform","rotate("+u+"deg)");b(this).find("div.instrument.altimeter div.needleSmall").css("transform","rotate("+t+"deg)")})}function k(s){s=2*s-1980;n.each(function(){b(this).find("div.instrument.altimeter div.pressure").css("transform","rotate("+s+"deg)")})}function j(s){n.each(function(){b(this).find("div.instrument").css({height:s,width:s})})}function g(){n.each(function(){b(this).find("img.box.background").show()})}function c(){n.each(function(){b(this).find("img.box.background").hide()})}this.setRoll=function(s){o(s)};this.setPitch=function(s){m(s)};this.setHeading=function(s){p(s)};this.setVario=function(s){i(s)};this.setAirSpeed=function(s){e(s)};this.setAltitude=function(s){d(s)};this.setPressure=function(s){k(s)};this.resize=function(s){j(s)};this.showBox=function(){g()};this.hideBox=function(){c()};return f}b.flightIndicator=function(e,d,c){var f=new a(b(e),d,c);return f};b.fn.flightIndicator=function(e,d,c){return this.each(function(){b.flightIndicator(this,d,c)})}}(jQuery));
|
Reference in New Issue
Block a user