Skip to content

Commit e85a381

Browse files
committed
Merge branch 'chore/ui-improvements' of https://github.com/Navigraph/msfs-navdata-interface into chore/ui-improvements
2 parents b5db01c + 93b96aa commit e85a381

25 files changed

+542
-138
lines changed

.github/workflows/pr.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
example: ${{ steps.changes.outputs.example }}
2323
steps:
2424
- uses: actions/checkout@v4
25-
- uses: dorny/paths-filter@v2
25+
- uses: dorny/paths-filter@v3
2626
id: changes
2727
with:
2828
filters: |
@@ -46,7 +46,7 @@ jobs:
4646
run: npm ci
4747

4848
- name: Run linting
49-
run: npm run lint:js -- -- --max-warnings 0
49+
run: npm run lint:js -- --max-warnings 0
5050

5151
build-test:
5252
name: Build & test 🛠️

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ If you bundle outdated navigation data in your aircraft and you want this module
3636

3737
## Where is the Navigation Data Stored?
3838

39-
The default location for navigation data is `work/NavigationData`. If you have bundled navigation data, its located in the `NavigationData` folder in the root of your project. You can use the `GetActiveDatabasePath` function from the interface to find the most up to date version installed.
39+
The default location for navigation data is `work/NavigationData`. If you have bundled navigation data, its located in the `NavigationData` folder in the root of your project.
4040

4141
## Building the Sample Aircraft
4242

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<Project Version="2" Name="NavigationDataInterfaceAircraftProject" FolderName="Packages" PublishingGroupFolderName="PublishingGroupsContent" MetadataFolderName="PackagesMetadata" PublishingGroupMetadataFolderName="PublishingGroupsMetadata">
3-
<OutputDirectory>.</OutputDirectory>
4-
<TemporaryOutputDirectory>_PackageInt</TemporaryOutputDirectory>
5-
<PublishingGroupTemporaryOutputDirectory>_PublishingGroupInt</PublishingGroupTemporaryOutputDirectory>
6-
<Packages>
7-
<Package>PackageDefinitions\navigraph-aircraft-navigation-data-interface-sample.xml</Package>
8-
</Packages>
9-
<PublishingGroups/>
10-
</Project>
11-
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project Version="2" Name="NavigationDataInterfaceAircraftProject" FolderName="Packages" PublishingGroupFolderName="PublishingGroupsContent" MetadataFolderName="PackagesMetadata" PublishingGroupMetadataFolderName="PublishingGroupsMetadata">
3+
<OutputDirectory>.</OutputDirectory>
4+
<TemporaryOutputDirectory>_PackageInt</TemporaryOutputDirectory>
5+
<PublishingGroupTemporaryOutputDirectory>_PublishingGroupInt</PublishingGroupTemporaryOutputDirectory>
6+
<Packages>
7+
<Package>PackageDefinitions\navigraph-aircraft-navigation-data-interface-sample.xml</Package>
8+
</Packages>
9+
<PublishingGroups/>
10+
</Project>
11+
Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,56 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<AssetPackage Version="0.1.0">
3-
<ItemSettings>
4-
<ContentType>AIRCRAFT</ContentType>
5-
<Title>Navigraph Navigation Data Interface Sample Aircraft</Title>
6-
<Manufacturer>My Manufacturer</Manufacturer>
7-
<Creator>Navigraph</Creator>
8-
</ItemSettings>
9-
<Flags>
10-
<VisibleInStore>true</VisibleInStore>
11-
<CanBeReferenced>true</CanBeReferenced>
12-
</Flags>
13-
<AssetGroups>
14-
<AssetGroup Name="ContentInfo">
15-
<Type>Copy</Type>
16-
<Flags>
17-
<FSXCompatibility>false</FSXCompatibility>
18-
</Flags>
19-
<AssetDir>PackageDefinitions\navigraph-aircraft-navigation-data-interface-sample\ContentInfo\</AssetDir>
20-
<OutputDir>ContentInfo\navigraph-aircraft-navigation-data-interface-sample\</OutputDir>
21-
</AssetGroup>
22-
<AssetGroup Name="Data">
23-
<Type>Copy</Type>
24-
<Flags>
25-
<FSXCompatibility>false</FSXCompatibility>
26-
</Flags>
27-
<AssetDir>PackageSources\Data\</AssetDir>
28-
<OutputDir>Data\</OutputDir>
29-
</AssetGroup>
30-
<AssetGroup Name="SimObject">
31-
<Type>SimObject</Type>
32-
<Flags>
33-
<FSXCompatibility>false</FSXCompatibility>
34-
</Flags>
35-
<AssetDir>PackageSources\SimObjects\Airplanes\Navigraph_Navigation_Data_Interface_Aircraft\</AssetDir>
36-
<OutputDir>SimObjects\Airplanes\Navigraph_Navigation_Data_Interface_Aircraft\</OutputDir>
37-
</AssetGroup>
38-
<AssetGroup Name="html_ui">
39-
<Type>Copy</Type>
40-
<Flags>
41-
<FSXCompatibility>false</FSXCompatibility>
42-
</Flags>
43-
<AssetDir>PackageSources\html_ui\</AssetDir>
44-
<OutputDir>html_ui\</OutputDir>
45-
</AssetGroup>
46-
<AssetGroup Name="NavigationData">
47-
<Type>Copy</Type>
48-
<Flags>
49-
<FSXCompatibility>false</FSXCompatibility>
50-
</Flags>
51-
<AssetDir>PackageSources\NavigationData\</AssetDir>
52-
<OutputDir>NavigationData\</OutputDir>
53-
</AssetGroup>
54-
</AssetGroups>
55-
</AssetPackage>
56-
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<AssetPackage Version="0.1.0">
3+
<ItemSettings>
4+
<ContentType>AIRCRAFT</ContentType>
5+
<Title>Navigraph Navigation Data Interface Sample Aircraft</Title>
6+
<Manufacturer>My Manufacturer</Manufacturer>
7+
<Creator>Navigraph</Creator>
8+
</ItemSettings>
9+
<Flags>
10+
<VisibleInStore>true</VisibleInStore>
11+
<CanBeReferenced>true</CanBeReferenced>
12+
</Flags>
13+
<AssetGroups>
14+
<AssetGroup Name="ContentInfo">
15+
<Type>Copy</Type>
16+
<Flags>
17+
<FSXCompatibility>false</FSXCompatibility>
18+
</Flags>
19+
<AssetDir>PackageDefinitions\navigraph-aircraft-navigation-data-interface-sample\ContentInfo\</AssetDir>
20+
<OutputDir>ContentInfo\navigraph-aircraft-navigation-data-interface-sample\</OutputDir>
21+
</AssetGroup>
22+
<AssetGroup Name="Data">
23+
<Type>Copy</Type>
24+
<Flags>
25+
<FSXCompatibility>false</FSXCompatibility>
26+
</Flags>
27+
<AssetDir>PackageSources\Data\</AssetDir>
28+
<OutputDir>Data\</OutputDir>
29+
</AssetGroup>
30+
<AssetGroup Name="NavigationData">
31+
<Type>Copy</Type>
32+
<Flags>
33+
<FSXCompatibility>false</FSXCompatibility>
34+
</Flags>
35+
<AssetDir>PackageSources\NavigationData\</AssetDir>
36+
<OutputDir>NavigationData\</OutputDir>
37+
</AssetGroup>
38+
<AssetGroup Name="SimObject">
39+
<Type>SimObject</Type>
40+
<Flags>
41+
<FSXCompatibility>false</FSXCompatibility>
42+
</Flags>
43+
<AssetDir>PackageSources\SimObjects\Airplanes\Navigraph_Navigation_Data_Interface_Aircraft\</AssetDir>
44+
<OutputDir>SimObjects\Airplanes\Navigraph_Navigation_Data_Interface_Aircraft\</OutputDir>
45+
</AssetGroup>
46+
<AssetGroup Name="html_ui">
47+
<Type>Copy</Type>
48+
<Flags>
49+
<FSXCompatibility>false</FSXCompatibility>
50+
</Flags>
51+
<AssetDir>PackageSources\html_ui\</AssetDir>
52+
<OutputDir>html_ui\</OutputDir>
53+
</AssetGroup>
54+
</AssetGroups>
55+
</AssetPackage>
56+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"cycle":"2101","revision":"1","name":"Navigraph Avionics", "format": "dfd", "validityPeriod": "2021-01-25/2021-02-20"}
Binary file not shown.

examples/aircraft/PackageSources/NavigationData/outdated-cycle/ESSA.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

examples/gauge/Components/Input.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class Input extends DisplayComponent<InputProps> {
4747
render() {
4848
if (this.props.textarea)
4949
return (
50-
<textarea style="width:350px;height:180px;" ref={this.inputRef} {...this.getInputProps()}>
50+
<textarea style="width:350px;height:100px;" ref={this.inputRef} {...this.getInputProps()}>
5151
{this.props.value}
5252
</textarea>
5353
)

examples/gauge/Components/InterfaceSample.tsx

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
import { ComponentProps, DisplayComponent, EventBus, FSComponent, VNode } from "@microsoft/msfs-sdk"
1+
import {
2+
ComponentProps,
3+
DisplayComponent,
4+
EventBus,
5+
FSComponent,
6+
MappedSubject,
7+
ObjectSubject,
8+
Subject,
9+
VNode,
10+
} from "@microsoft/msfs-sdk"
211
import { CancelToken } from "navigraph/auth"
312
import { packages } from "../Lib/navigraph"
413
import { AuthService } from "../Services/AuthService"
@@ -8,6 +17,7 @@ import {
817
NavigraphEventType,
918
NavigraphNavigationDataInterface,
1019
} from "@navigraph/msfs-navigation-data-interface"
20+
import { NavigationDataStatus } from "@navigraph/msfs-navigation-data-interface/types/meta"
1121
import { Dropdown } from "./Dropdown"
1222
import { Input } from "./Input"
1323

@@ -28,6 +38,8 @@ export class InterfaceSample extends DisplayComponent<InterfaceSampleProps> {
2838
private readonly executeSqlButtonRef = FSComponent.createRef<HTMLButtonElement>()
2939
private readonly outputRef = FSComponent.createRef<HTMLPreElement>()
3040

41+
private readonly navigationDataStatus = Subject.create<NavigationDataStatus | null>(null)
42+
3143
private cancelSource = CancelToken.source()
3244

3345
private navigationDataInterface: NavigraphNavigationDataInterface
@@ -57,6 +69,36 @@ export class InterfaceSample extends DisplayComponent<InterfaceSampleProps> {
5769
})
5870
}
5971

72+
public renderDatabaseStatus(): VNode | void {
73+
return (
74+
<>
75+
<div
76+
class={MappedSubject.create(([status]) => {
77+
return status ? "vertical" : "hidden"
78+
}, this.navigationDataStatus)}
79+
>
80+
<div>{this.navigationDataStatus.map(s => `Install method: ${s?.status}`)}</div>
81+
<div>
82+
{this.navigationDataStatus.map(
83+
s => `Installed format: ${s?.installedFormat} revision ${s?.installedRevision}`,
84+
)}
85+
</div>
86+
<div>{this.navigationDataStatus.map(s => `Installed path: ${s?.installedPath}`)}</div>
87+
<div>{this.navigationDataStatus.map(s => `Installed cycle: ${s?.installedCycle}`)}</div>
88+
<div>{this.navigationDataStatus.map(s => `Latest cycle: ${s?.latestCycle}`)}</div>
89+
<div>{this.navigationDataStatus.map(s => `Validity period: ${s?.validityPeriod}`)}</div>
90+
</div>
91+
<div
92+
class={MappedSubject.create(([status]) => {
93+
return status ? "hidden" : "visible"
94+
}, this.navigationDataStatus)}
95+
>
96+
Loading status...
97+
</div>
98+
</>
99+
)
100+
}
101+
60102
public render(): VNode {
61103
return (
62104
<div class="auth-container">
@@ -74,6 +116,7 @@ export class InterfaceSample extends DisplayComponent<InterfaceSampleProps> {
74116
<div ref={this.downloadButtonRef} class="button">
75117
Download
76118
</div>
119+
{this.renderDatabaseStatus()}
77120
</div>
78121
</div>
79122

@@ -109,6 +152,16 @@ export class InterfaceSample extends DisplayComponent<InterfaceSampleProps> {
109152
this.loginButtonRef.instance.addEventListener("click", () => this.handleClick())
110153
this.downloadButtonRef.instance.addEventListener("click", () => this.handleDownloadClick())
111154

155+
// Populate status when ready
156+
this.navigationDataInterface.onReady(() => {
157+
this.navigationDataInterface
158+
.get_navigation_data_install_status()
159+
.then(status => {
160+
this.navigationDataStatus.set(status)
161+
})
162+
.catch(e => console.error(e))
163+
})
164+
112165
this.executeIcaoButtonRef.instance.addEventListener("click", () => {
113166
console.time("query")
114167
this.navigationDataInterface
@@ -197,6 +250,15 @@ export class InterfaceSample extends DisplayComponent<InterfaceSampleProps> {
197250

198251
// Download navigation data to work dir
199252
await this.navigationDataInterface.download_navigation_data(pkg.file.url)
253+
254+
// Update navigation data status
255+
this.navigationDataInterface
256+
.get_navigation_data_install_status()
257+
.then(status => {
258+
this.navigationDataStatus.set(status)
259+
})
260+
.catch(e => console.error(e))
261+
200262
this.displayMessage("Navigation data downloaded")
201263
} catch (err) {
202264
if (err instanceof Error) this.displayError(err.message)

package-lock.json

Lines changed: 29 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)