@fboes/horizontal-situation-indicator
v1.2.5
Published
A Vanilla JavaScript web component which displays a self-contained Horizontal Situation Indicator
Downloads
40
Maintainers
Readme
Horizontal Situation Indicator
A Vanilla JavaScript web component which displays a self-contained Horizontal Situation Indicator, an airplane cockpit instrument used for instrument navigation.
For a demo see https://3960.org/webcomponent-hsi/.
Installation
Either download the horizontal-situation-indicator.js
to a sensible location in your web project, or do a NPM installation:
npm install @fboes/horizontal-situation-indicator --save
Instead of a local installation you may also load the library from https://unpkg.com/. Beware: This makes https://unpkg.com/ a dependency of your project and may pose data protection issues.
<script type="module" src="https://unpkg.com/@fboes/horizontal-situation-indicator@latest/horizontal-situation-indicator.js"></script>
Everything required for the frontend functionality of this web component is contained in horizontal-situation-indicator.js
.
Usage
Loading the library prior to use:
<!-- load element library -->
<script type="module" src="horizontal-situation-indicator.js"></script>
Invoke a new instance by placing this into your HTML source code:
<!-- use element -->
<horizontal-situation-indicator heading="45.0" heading-select="0.0"></horizontal-situation-indicator>
Simple compass
<horizontal-situation-indicator heading="45.0" heading-select="0.0"></horizontal-situation-indicator>
HSI with NAV1 tuned to ADF
<horizontal-situation-indicator heading="45.0" heading-select="0.0"
nav1-bearing="10.0"></horizontal-situation-indicator>
HSI with NAV2 tuned to VOR
<horizontal-situation-indicator heading="45.0" heading-select="0.0"
nav2-course="0.0" nav2-deviation="0.0" nav2-to="-1"></horizontal-situation-indicator>
Properties
Properties can be set on initialization via HTML attributes, or selecting the DOM node via JavaScript and setting the properties of the DOM node.
If a property is not set or unset, the corresponding HSI component will be hidden.
| Name | Type | Default | Description |
| ---------------- | ------------ | ------- | -------------------------- |
| heading
| ?degree
| null
| |
| heading-select
| ?degree
| null
| |
| nav1-label
| ?string
| null
| |
| nav1-course
| ?degree
| null
| |
| nav1-deviation
| ?deviation
| null
| Only visible when nav1-course
is set. |
| nav1-bearing
| ?degree
| null
| This will also set nav1-to
and nav1-deviation
accordingly. |
| nav1-to
| ?switch
| null
| If set to 1
will show the TO-flag, if set to -1
will show the FROM-flag. |
| nav2-label
| ?string
| null
| |
| nav2-course
| ?degree
| null
| |
| nav2-deviation
| ?deviation
| null
| Only visible when nav2-course
is set. |
| nav2-bearing
| ?degree
| null
| This will also set nav2-to
and nav2-deviation
accordingly. |
| nav2-to
| ?switch
| null
| If set to 1
will show the TO-flag, if set to -1
will show the FROM-flag. |
| fix-north
| ?switch
| null
| If set to 1
the compass card will be locked to north, while the plane and lubber line rotate. |
Types prefixed with ?
allow setting value to null
as well.
Special types:
| Type | Description |
| ----------- | ----------- |
| degree
| A float number with 0 ≤ degree
< 360. degree
out of this range will be converted to a corresponding value in this range, e.g. -1.0
will be 359.0
. |
| deviation
| A float number with -180 ≤ deviation
< 180. deviation
out of this range will be converted to a corresponding value in this range. deviation
> 0 showing the the chosen course to be right / above, deviation
< 0 showing the the chosen course to be left / below. A value of ±5.0
(±175
) will move the marker to the first dot, a value of ±10.0
(±170
) will move the marker to the second dot. |
Methods
There are no public methods.
Events
There are no events.
Styling
To change the layout of the HSI component use CSS variables. There is a set of defined CSS variables which you may use:
horizontal-situation-indicator {
--background-outer-color: black;
--background-color: black;
--foreground-color: white;
--lubber-color: darkorange;
--heading-select-color: cyan;
--nav1-color: magenta;
--nav1-bearing-color: var(--nav1-color);
--nav2-color: cyan;
--nav2-bearing-color: var(--nav2-color);
--stroke-width: 0.5;
}
Browser compatibility
See compatibility chart:
- Google Chrome 67+
- Mozilla Firefox 63+
- Microsoft Edge 79+
- Opera 64+
If you need extended compatibility, search for Web Components Polyfills.
Development
- Run
npm run build
to copy files fromsrc
directory into main JavaScript file. - Run
npm run serve
to launch a development web server. - The property
debug="1"
will activate additional output toconsole
.
Status
Legal stuff
Author: Frank Boës
Copyright & license: See LICENSE.txt