Coder Social home page Coder Social logo

euroscope-aman's Introduction

Arrival manager for EuroScope

A simple arrival manager plugin for EuroScope. Uses the position predictions provided by EuroScope to visualize the arrival flow for a given airport or waypoint.

Download

The plugin .dll-file can be found under Releases. The AMAN-display will appear in a separate window once the plugin has been loaded.

Plugin configuration

Timelines are loaded from aman-config.json which must be placed in the same directory as the plugin dll. The file content can be reloaded at run time through the menu.

Example aman-config.json:

{
    "openAutomatically": false,
    "timelines": {
        "19R/19L": {
            "targetFixes": [ "GSW40", "GME40" ],
            "viaFixes": [ "ADOPI", "LUNIP", "ESEBA", "INREX", "RIPAM", "BELGU" ],
            "tagLayout": "myLayout",
            "destinationAirports": [ "ENGM" ]
        },
        "...": {
            "targetFixes": [ "....", "...." ],
            "viaFixes": [ "..." ],
            "tagLayout": "simpleLayout",
            "defaultTimeSpan": 60,
            "destinationAirports": [ "....", "...." ]
        }
    },
    "tagLayouts": {
        "myLayout": [
            { "source": "assignedRunway", "width": 4 },
            { "source": "callsign", "width": 8 },
            { "source": "static", "defaultValue": "¤", "width": 2, "isViaFixIndicator": true },
            { "source": "aircraftType", "width": 5 },
            { "source": "aircraftWtc", "width": 2 },
            { "source": "timeBehindPreceeding", "width": 5, "rightAligned": true },
            { "source": "remainingDistance", "width": 4, "rightAligned": true },
            { "source": "static", "width": 1 },
            { "source": "directRouting", "width": 5, "rightAligned": true, "defaultValue": "-----" },
            { "source": "static", "width": 1 },
            { "source": "scratchPad", "width": 4 }
        ],
        "simpleLayout": [
            { "source": "assignedRunway", "width": 4 },
            { "source": "callsign", "width": 8 }
        ]
    }
}

Note: the plugin uses the EuroScope font which is based on the ANSI/Windows-1252 character encoding. If you want to use special symbols like ¶, ¤, •, |, ©, ®, ¬, ‡ or º in your "static" tag fields you must save the JSON-file using that encoding (select "ANSI" encoding in notepad). Also note that some of these symbols have a custom representation in the EuroScope font - like ¶ which is displayed as a telephone, and ¤ which is a filled rectangle.

Timelines

Property Description
targetFixes Based on the assigned route, any aircraft expected to pass one of these fixes are shown in the timeline. When exactly two fixes are specified, a dual timeline is shown with the first fix on the left side and the second on the right side.
tagLayout The id of the tag-layout that should be used for this timeline.
viaFixes (optional) Each fix will be assigned a color, and aircraft with a route initially (any direct routings ignored) going through one of these fixes will be marked with the color. For example, this can give a better overview of which direction each aircraft is coming from. Only eight different colors are available at the moment.
defaultTimeSpan (optional) If used, this will be the initial "zoom"-level (in minutes) when the timeline is loaded.
destinationAirports (optional) If used, aircraft whose destination is not in destinationAirports will not be included.

Tag layouts

A tag layout has a set of tag values, which will be drawn in the specified order. Each tag value is configured using the following properties:

Property Description
source Where to get the value from (see table below).
width The number of characters that the value should "reserve". If the value is longer than width it will be truncated.
rightAligned (optional) Defaults to false.
isViaFixIndicator (optional) If true, the value will be colored based on the "via fix". Defaults to false.
defaultValue (optional) Can only be used if source is directRouting or static. Defaults to "".

The following sources are available:

Name Description
callsign Aircraft call sign.
assignedRunway Assigned landing runway.
assignedStar Assigned STAR.
aircraftType ICAO aircraft code.
aircraftWtc Wake turbulence category (L/M/H/S).
minutesBehindPreceedingRounded Time behind preceeding aircraft (rounded to nearest minute).
timeBehindPreceeding Time behind preceeding aircraft (mm:ss).
remainingDistance Distance to target fix (nautical miles).
estimatedLandingTime Estimated landing time (hh:mm).
directRouting Direct routing (if any) given by ATC.
groundSpeed Calculated ground speed.
groundSpeed10 Calculated ground speed (in tens).
altitude Altitude (pressure altitude or FL).
scratchPad Scratch pad value.
static A static text, specified in the defaultValue property.

Available dot-commands

Command Description
.aman open Opens the window
.aman close Closes the window

Building the project

Microsoft Visual Studio Community can be used to build and debug the plugin. Note that it must be compiled as x86 (32 bit) which is the architecture EuroScope is based on.

Screenshot

Window

euroscope-aman's People

Contributors

evenar avatar martja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

euroscope-aman's Issues

Can't close the menu

Hi,
When the menu is open the only possibility to close it is to scroll a timeline. Can you make it that the menu closes when left click on the menu titel? Thx

1.4.0 missing

image

Hey, I'v download 1.4.0 plugin, but it show still 1.3.0

Configurable aircraft labels

I got this request from a user:

My team has been using your AMAN Plugin for the past few months and it has been fantastic to integrate it with our operations. We were wondering if it was possible to release another version of the AMAN which is configured to Singapore's Real-World ATC.

image

Example shown is

<Callsign>
<Wake Category>
<Distance from Runway>
<minutes behind preceding aircraft>
<gate> or in our case, the scratchpad

I think the best would be to make the labels configurable through a config file, unless there's a clever way to do it with the tag editor? 🤔

Crash to desktop issues

During testing of implementation of the plugin in the Norwegian sectorfile, we had 3 controllers using it last Tuesday during an event at ENVA.

All 3 controllers during the event experienced CTD on the ES session which had the AMAN running. The crashes seemed random and were not happening to multiple controllers simultaneously. It was also happening when I was running a replay from the event today, but I am unable to figure out why it is happening.

The other EuroScope windows which were running but did not have the aman opened (.aman open) were unaffected.

Any tips in troubleshooting here?

Closing timeline window

Hi,

first of all, thanks for the great ES plugin, highly appreciate your work, especially the latest 2.0.0 update!

By default, I have loaded AMAN in most of my profile, ranging from TWR to CTR positions, howeverr, I end up mostly using it when controlling an APP sector. During other session, I usually hardly use it, if at all, and thus tried closing the timeline in order to free up some screen space.

Before the update of 2.0.0, I was able to close the timeline by right-clicking the Windows taskbar entry and selecting "Close window", since the timeline itself unfortunately only has a minimize, but no close button. After the update, closing via taskbar seems to have stopped working - the window just remains unchanged.

Would it be possible to either add a control to the timeline window itself to close it (maybe even have a plugin setting to have it hidden by default, only displaying on demand, e.g. via a chat command)? If adding an extra button is not an option, could you restore the previous behaviour allowing to close via the taskbar?

Tags do not show om aman ES 3.2.a(R28)

Screenshot_1

{
"openAutomatically": false,
"timelines": {
"19R/19L": {
"targetFixes": [ "GSW40", "GME40" ],
"viaFixes": [ "ADOPI", "LUNIP", "ESEBA", "INREX", "RIPAM", "BELGU" ],
"tagLayout": ""simpleLayout",
"destinationAirports": [ "ENGM" ]
},
"01L/01R": {
"targetFixes": [ "OBW40", "ONE40" ],
"viaFixes": [ "ADOPI", "LUNIP", "ESEBA", "INREX", "RIPAM", "BELGU" ],
"tagLayout": "myLayout",
"destinationAirports": [ "ENGM" ]
}
},
"tagLayouts": {
"myLayout": [
{ "source": "assignedRunway", "width": 4 },
{ "source": "callsign", "width": 8 },
{ "source": "static", "defaultValue": "¤", "width": 2, "isViaFixIndicator": true },
{ "source": "aircraftType", "width": 5 },
{ "source": "aircraftWtc", "width": 2 },
{ "source": "timeBehindPreceeding", "width": 5, "rightAligned": true },
{ "source": "remainingDistance", "width": 4, "rightAligned": true },
{ "source": "static", "width": 1 },
{ "source": "directRouting", "width": 5, "rightAligned": true, "defaultValue": "-----" },
{ "source": "static", "width": 1 },
{ "source": "scratchPad", "width": 4 }
],
"simpleLayout": [
{ "source": "assignedRunway", "width": 4, "isViaFixIndicator": true },
{ "source": "callsign", "width": 8 }
]
}
}

Time to next aircraft calculated incorrectly.

If my interpretation of the variable timeToNextAircraft is correct, it should represent how much time will pass from the current aircraft has passed the fix to the succeeding passes the fix. The current calculation of curr->eta - next->eta will calculate the time from the preceeding aircraft to the current aircraft.

Horizontal window resize

When you resize the AMAN window, changing it's width, the "approach strip" keeps it's position, not adjusting for the center of the new width.

Add conditions.

Hello,

Is it possible to add arrival conditions?
I'm a Brussels ATCO and we have 2 feeder fixes for Amsterdam HELEN & DENUT. But those fixes are not only feeder fixes but also on an airway. If I make a config for those fixes I see all traffic that is crossing those fixes. I like to see only traffic inbound EHAM, EHEH, EHRD.... in the AMAN and not traffic on the airway above.
Thx
Erik

Save settings

Hello!
Any chance you can save the X & Y position, height and width of the window?

thx

E.

Multiple on one timeline

Hi,

Is it possible to program it in a way that multiple (i.e. TMA entries) are on one timeline? It's exactly how it looks like in real life on one of our airports: https://ibb.co/QcMkVWX
You see it's color-coded on entries to TMA. Would love to see it, however I can't really get into your code, as C++ is not my main lang...

initialHorizon

Hi,
Thanks for the plugin, I really enjoy it.
What should the initialHorizon do exactely? My AMAN-window remains at 30 minutes, regardless of what I enter for the initialHorizon. I'm using 2.0.1 and the latest Beta of ES.
Yours,
Michael

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.