[SU5] 1.7.7 - potential annoying issue for users - EFB apps with no compatibleAircraftModels function

Version: *1.7.7
Frequency: /Consistently

Severity: *Low
(Low - quality of life, workflow optimization, rare enough to not impact production, etc…
High - critical but workarounds are available, important feature not working as expected, frequent enough to impact production
Blocker - prevents from working on the project, prevents from releasing the product)

Marketplace package name: if applicable

Context: What package? When editing or mounted from Community? In main menu or in flight? etc…

Similar MSFS 2020 issue: insert url here if applicable

Bug description:

As more and more developers make apps for the EFB, we get into a potential issue like we did with XML - being overwritten. Well, not overwritten now, but if developers do not have a compatibleAircraftModels function in their templateApp then you get an app in every aircraft that shows an annoying message that it’s not compatible, rather than just greyed out as the js/tsx comments show.

  /**
   * Optional method
   * Allows to specify an array of compatible ATC MODELS.
   * Your app will be visible but greyed out if the aircraft is not compatible.
   * if undefined or method not implemented, the app will be visible for all aircrafts.
   * @returns string[] | undefined
   */
  public get compatibleAircraftModels(): string[] | undefined {
    return undefined;
  }

resulting tsx

    /**
     * Aircraft models list compatible with the App. If not defined, the App is compatible with all aircraft models.
     * example: ['Cabri G2', 'H125']
     * @returns a list of aircraft models compatible with the App or undefined
     */
    get compatibleAircraftModels() {
      return void 0;
    }

So all you devs out there add the list to your TemplateApp

aircraft.cfg

[general]
atc_type = "Cabri"
atc_model = "Cabri G2"

SDK docs should add a recommendation that this function be properly set. Maybe an enhancement that the app not show at all if not compatible. ( I know debug … why does my app not show - well it defaults to that if you don’t add a proper compatibleAircraftModels function)

Repro steps:

Attachments:

Private attachments: Send a PM to @PrivateContent with the link to this topic and the link to download your content

It seems to me that ATC MODEL would not be sufficient if multiple devs make the same aircraft as well. We have multiple instances of that already.

2 Likes

Would it not be better to implement plane specific “plugins” ? Similar to how the Avionics plugins work? Have a section in the simobject? Add a EFB folder so you can have an EFB.cfg and xml file maybe with a “plugin” that is then loaded with the plane and not globally?

For G3X and G3000 plugins this works really well for creating plane specific changes that only load with those planes.

3 Likes

That’s an excellent idea!

I agree with @LesOReilly4451. Having the EFB plugins only load with the source aircraft, the same as any other plugins which extend the current avionics for it’s host aircraft, would be a logical improvement.

1 Like

+1! Great idea

@LesOReilly4451 Maybe add it as an idea so we can all vote on it?

1 Like

All of these Topics can now be voted on here.

Topics yes, however I feel your great suggestion is broader than the original topic and warrants a separate post.

Hello @DA40CGDFQ

Are you sure you checked this on a SU5 Beta build?
My colleagues told me incompatible apps are no longer showing in the EFB starting from SU5.

Regards,
Sylvain

Yes confirmed that I no longer see my TemplateApp if the corresponding aircraft is not selected. And if the aircraft is selected then I see my TemplateApp.

Sorry I was back and forth in the Beta/non-Beta due to a constant CTD with the original release of the SU5 Beta.

Secondary question:
How does this work with a @TT macro for the atc_type and atc_model. Do we have to list all the different localizations of those parameters?

No, you can check the setAppAvailabilityOnAircraft in efb_os.js but the simvar are read as is, and are not localized.
So if the aircraft.cfg contains a TT: string, you need to provide it as is in your compatibleAircraftModels function.

For example, for the C208B, this would look like this:

public get compatibleAircraftModels(): string[] {
  return ['TT:ATCCOM.AC_MODEL C208.0.text'];
}

Regards,
Sylvain

1 Like