The Skyhawk Flight Instrument plugin is a fork of the excellent jQuery Flight Indicators Plugin (https://github.com/sebmatton/jQuery-Flight-Indicators), with several additions and updated graphics. The instruments are modelled after those typically found in a Cessna 172 Skyhawk aircraft.
This plugin allows you to display high quality flight indicators using HTML, CSS3, jQuery and SVG images. The methods make customization and real time implementation really easy. Further, since all the images are vector svg you can resize the indicators to your application without any quality loss!
Currently supported indicators are :
- Air Speed
- Attitude
- Altimeter
- Turn Coordinator
- Heading
- Vertical Speed
Here is an example of a full dashboard:
The image below shows a zoomed altimeter. Vector images allows you to keep high quality render with large indicators.
To use this plugin you need to import a few files in the head of your HTML file :
<script src="js/jquery-1.11.3.js"></script>
<script src="js/d3.min.js"></script>
<script src="js/jquery.flightindicators.js"></script>
<link rel="stylesheet" type="text/css" href="css/flightindicators.css" />
Create a <span>
section to put an indicator in :
<span id="attitude"></span>
Then, when the span is ready in the DOM (maybe you need to wait for document ready), you can run the indicator function :
var indicator = $.flightIndicator('#attitude', type, options);
Where the first argument is the selector, the type value specify the indicator type and the options overwrite the default settings.
To display the most simple indicator, as for example the attitude indicator, we use :
var indicator = $.flightIndicator('#attitude', 'attitude');
The type may be airspeed
, attitude
, altimeter
, turncoordinator
, heading
or variometer
. If the type is not correct, nothing will display.
Initial settings can be modified using the options
parameter. Here are the valid options and the default settings :
var options = {
size : 200, // Sets the size in pixels of the indicator (square)
showBox : true, // Sets the visibility of the box behind the instruments
showScrews: true, // Sets the visibility of the four screws around the instruments
airspeed: 0, // Air speed in knots for an air speed indicator
roll : 0, // Roll angle in degrees for an attitude indicator
pitch : 0, // Pitch angle in degrees for an attitude indicator
off_flag: false // Off flag for an attitude indicator
altitude: 0, // Altitude in feets for an altimeter indicator
pressure: 30, // Pressure in inHg for an altimeter indicator
turn: 0, // Turn direction for turn coordinator
slip: 0, // Slip ball position for turn coordinator (0 to 1; 0.5 is middle)
heading: 0, // Heading angle in degrees for an heading indicator
beaconone: 0, // Angle of first beacon on the heading indicator
beacononeshow: true, // Sets the visibility of the first beacon on the heading indicator
beacontwo: 0, // Angle of second beacon on heading indicator
beacontwoshow: true, // Sets the visibility of the second beacon on the heading indicator
vario: 0, // Variometer in 1000 feets/min for the variometer indicator
img_directory : 'img/' // The directory where the images are saved to
}
The options parameters are optionnals.
Some methods are used to update the indicators, giving the opportunity to create realtime GUI !
The way to use it is really simple.
var attitude = $.flightIndicator('#attitude', 'attitude');
attitude.setRoll(30); // Sets the roll to 30 degrees
Here are the valid methods :
indicator.setAirSpeed(speed); // Set speed of an airspeed indicator
indicator.setRoll(roll); // Set roll of an attitude indicator
indicator.setPitch(pitch); // Set pitch of an attitude indicator
indicator.setOffFlag(visible); // Set visibility of Off flag of an attitude indicator
indicator.setAltitude(altitude); // Set altitude of an altimeter indicator
indicator.setPressure(pressure, milibars); // Set pressure of an altimeter indicator (inHg by default). If the second parameter is true, the units will be set to milibars.
indicator.setTurn(turn); // Set angle of turn of a turn coordinator
indicator.setSlip(slip); // Set position of slip ball of a turn coordinator. Range is between 0 and 1, 0.5 being the middle.
indicator.setHeading(heading); // Set heading of a heading indicator
indicator.setBeaconOne(heading, visibile) // Set angle of the first beacon of a heading indicator and its visibility
indicator.setBeaconTwo(heading, visibile) // Set angle of the second beacon of a heading indicator and its visibility
indicator.setVario(vario); // Set climb speed of a variometer indicator
indicator.resize(size); // Set size in pixels of the indicator
indicator.toggleBox(); // Toggle background box of the indicator
indicator.toggleScrews(); // Toggle background screws of the indicator
In order to allow the slip ball to move smoothly, a path animation was required. Loading of this path is done via D3.js, however this will cause issues in Google Chrome when running a turn coordinator directly from an HTML file (ie file:// path).
To circumvent this issue (for development purposes mainly), the main JS file will inject an SVG path into the DOM. If you modify turn_ball_path.svg make sure to also update the highlighted line below, with your new path:
Authors : Raymond Blaga ([email protected]), Edward Hanna ([email protected]), Pavlo Kuzhel ([email protected]), Sébastien Matton ([email protected])
Skyhawk Flight Instruments was made for use in an online course with the purpose of training future pilots, developed by Seneca College Centre for Development of Open Technology.
The project is published under GPLv3 License. See LICENSE file for more informations
Thanks to Sébastien Matton and everyone involved in the making of the jQuery Flight Indicators Plugin.