Skip to content

Commit 7fb7216

Browse files
committed
v0.16 Beta Test
Update Log of v0.16 (2025/02/04) Beta Test This update is an experimental performance optimization. [Changed] Replaced "setInterval" with "setTimeout". [Changed] Smoother heading indication. [Fixed] Very slow text color transition when switching theme on Google Chrome. [Fixed] Heading indicator showing "360". [Fixed] Decision altitude indicator sometimes does not stop blinking.
1 parent 0d1f3f1 commit 7fb7216

File tree

8 files changed

+29
-26
lines changed

8 files changed

+29
-26
lines changed

PROJECT/GPS-PFD/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
<link rel="icon" type="image/png" href="images/Icon_Small.png" />
1111
<title>GPS-PFD</title>
1212
<meta name="author" content="SAM TOKI STUDIO" />
13-
<meta name="version" content="v0.15 (2025/01/22) Beta Test. Since 2024/12/01." />
13+
<meta name="version" content="v0.16 (2025/02/04) Beta Test. Since 2024/12/01." />
1414
<meta name="description" content="利用 GPS 与加速计,在移动设备上模拟飞机驾驶舱的 PFD。" />
1515
<meta name="copyright" content="© 2025 SAM TOKI STUDIO" />
1616

1717
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#FFFFFF">
1818
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#303030">
19-
<meta name="viewport" content="width=device-width, initial-scale=1" />
19+
<meta name="viewport" content="width=device-width, initial-scale=1, interactive-widget=resizes-content" />
2020
<link rel="stylesheet" href="../styles/common.css" />
2121
<link id="ThemeVariant_Common" rel="stylesheet" href="../styles/common_Dark.css" media="(prefers-color-scheme: dark)" />
2222
<link id="ThemeVariant_Common_HighContrast" rel="stylesheet" href="../styles/common_HighContrast.css" media="(prefers-contrast: more)" />
@@ -2140,7 +2140,7 @@ <h4>音频</h4>
21402140
<legend>关于</legend>
21412141
<p>GPS-PFD</p>
21422142
<p>by SAM TOKI STUDIO</p>
2143-
<p>版本 v0.15 (<time datetime="2025-01-22" pubdate="pubdate">2025/01/22</time>) Beta Test<br />
2143+
<p>版本 v0.16 (<time datetime="2025-02-04" pubdate="pubdate">2025/02/04</time>) Beta Test<br />
21442144
始于 2024/12/01</p>
21452145
<p class="GreenText Hidden" id="Label_HelpPWANewVersionReady" inert="true">新版本已就绪,将在下次启动时生效。</p>
21462146
<ul class="CtrlGroup BelowParagraph">

PROJECT/GPS-PFD/script_ServiceWorker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// Declare variables
77
"use strict";
88
// Unsaved
9-
const CacheName = "GPS-PFD_v0.15";
9+
const CacheName = "GPS-PFD_v0.16";
1010

1111
// Listeners
1212
// Service worker (https://learn.microsoft.com/en-us/microsoft-edge/progressive-web-apps-chromium/how-to/#step-5---add-a-service-worker)

PROJECT/GPS-PFD/scripts/script.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// Declare variables
77
"use strict";
88
// Unsaved
9-
const CurrentVersion = 0.15,
9+
const CurrentVersion = 0.16,
1010
GeolocationAPIOptions = {
1111
enableHighAccuracy: true
1212
};
@@ -239,6 +239,7 @@
239239
}
240240

241241
// Refresh
242+
HighlightActiveSectionInNav();
242243
RefreshSystem();
243244
RefreshSubsystem();
244245
RefreshPFD();
@@ -798,6 +799,10 @@
798799

799800
// PFD
800801
function ClockPFD() {
802+
// Automation
803+
clearTimeout(Automation.ClockPFD);
804+
Automation.ClockPFD = setTimeout(ClockPFD, 20);
805+
801806
// Update essentials
802807
PFD0.Stats.ClockTime = Date.now();
803808

@@ -935,7 +940,7 @@
935940
if(PFD0.Status.GPS.IsHeadingAvailable == true) {
936941
PFD0.Stats.Heading.Heading = PFD0.RawData.GPS.Heading;
937942
}
938-
PFD0.Stats.Heading.Display += (PFD0.Stats.Heading.Heading - PFD0.Stats.Heading.Display) / 5;
943+
PFD0.Stats.Heading.Display += (PFD0.Stats.Heading.Heading - PFD0.Stats.Heading.Display) / 50;
939944

940945
// Speed
941946
switch(true) {
@@ -1598,7 +1603,7 @@
15981603
case "Land":
15991604
case "ArrivalGround":
16001605
Show("Ctrl_PFDDefaultPanelDecisionAltitude");
1601-
ChangeBottom("Ctrl_PFDDefaultPanelDecisionAltitude", 0.75 * (ConvertUnit(PFD.Altitude.AirportElevation.Arrival + PFD.Altitude.DecisionHeight, "Meter", Subsystem.I18n.AltitudeUnit) + 2000) - 35 + "px");
1606+
ChangeBottom("Ctrl_PFDDefaultPanelDecisionAltitude", 0.75 * (ConvertUnit(PFD.Altitude.AirportElevation.Arrival + PFD.Altitude.DecisionHeight, "Meter", Subsystem.I18n.AltitudeUnit) + 2000) - 10 + "px");
16021607
if(PFD0.Status.IsDecisionAltitudeActive == true) {
16031608
AddClass("Ctrl_PFDDefaultPanelDecisionAltitude", "Active");
16041609
} else {
@@ -1607,7 +1612,7 @@
16071612
break;
16081613
case "EmergencyReturn":
16091614
Show("Ctrl_PFDDefaultPanelDecisionAltitude");
1610-
ChangeBottom("Ctrl_PFDDefaultPanelDecisionAltitude", 0.75 * (ConvertUnit(PFD.Altitude.AirportElevation.Departure + PFD.Altitude.DecisionHeight, "Meter", Subsystem.I18n.AltitudeUnit) + 2000) - 35 + "px");
1615+
ChangeBottom("Ctrl_PFDDefaultPanelDecisionAltitude", 0.75 * (ConvertUnit(PFD.Altitude.AirportElevation.Departure + PFD.Altitude.DecisionHeight, "Meter", Subsystem.I18n.AltitudeUnit) + 2000) - 10 + "px");
16111616
if(PFD0.Status.IsDecisionAltitudeActive == true) {
16121617
AddClass("Ctrl_PFDDefaultPanelDecisionAltitude", "Active");
16131618
} else {
@@ -1829,7 +1834,7 @@
18291834
ChangeAnim("Ctrl_PFDDefaultPanelHeadingTape", "");
18301835
}
18311836
ChangeRotate("CtrlGroup_PFDDefaultPanelHeadingTape", -PFD0.Stats.Heading.Display);
1832-
ChangeText("Label_PFDDefaultPanelHeadingBalloon", PFD0.Stats.Heading.Display.toFixed(0).padStart(3, "0"));
1837+
ChangeText("Label_PFDDefaultPanelHeadingBalloon", Math.trunc(PFD0.Stats.Heading.Display).padStart(3, "0"));
18331838
} else {
18341839
Show("Ctrl_PFDDefaultPanelHeadingStatus");
18351840
ChangeText("Label_PFDDefaultPanelHeadingStatus", Translate("HeadingUnavailable"));
@@ -1957,6 +1962,7 @@
19571962
}
19581963
} else {
19591964
RemoveClass("Ctnr_PFDDefaultPanelDecisionAltitude", "Active");
1965+
RemoveClass("Ctnr_PFDDefaultPanelDecisionAltitude", "Caution");
19601966
}
19611967
break;
19621968
case "EmergencyReturn":
@@ -1971,6 +1977,7 @@
19711977
}
19721978
} else {
19731979
RemoveClass("Ctnr_PFDDefaultPanelDecisionAltitude", "Active");
1980+
RemoveClass("Ctnr_PFDDefaultPanelDecisionAltitude", "Caution");
19741981
}
19751982
break;
19761983
default:
@@ -3322,7 +3329,7 @@
33223329
break;
33233330
case 2:
33243331
Object.keys(Automation).forEach(function(AutomationName) {
3325-
clearInterval(Automation[AutomationName]);
3332+
clearTimeout(Automation[AutomationName]);
33263333
});
33273334
break;
33283335
case 3:
@@ -3477,9 +3484,6 @@
34773484
// Device motion API
34783485
window.addEventListener("devicemotion", RefreshAccelData);
34793486

3480-
// Automations
3481-
Automation.ClockPFD = setInterval(ClockPFD, 20);
3482-
34833487
// Features
34843488
// Converters
34853489
function ConvertUnit(Value, InputUnit, OutputUnit) {

PROJECT/GPS-PFD/styles/style.css

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@
366366
}
367367
#Ctrl_PFDDefaultPanelSpeedBalloon .CtrlGroup .BalloonTail {
368368
right: 0;
369-
width: 20px; clip-path: polygon(100% 50%, 0 70%, 0 30%);
369+
width: 25px; clip-path: polygon(100% 50%, 0 67.85714%, 0 32.14286%);
370370
}
371371
#Ctrl_PFDDefaultPanelSpeedBalloon .CtrlGroup .Balloon .CtrlGroup {
372372
width: 100%; height: 100%; padding: 5px;
@@ -465,8 +465,8 @@
465465
pointer-events: auto;
466466
}
467467
#CtrlGroup_PFDDefaultPanelOtherAltitudes #Ctrl_PFDDefaultPanelDecisionAltitude {
468-
bottom: 1652.5px; /* Default decision height is 250ft. */
469-
width: 20px; height: 70px; clip-path: polygon(100% 50%, 0 70%, 0 30%);
468+
bottom: 1677.5px; /* Default decision height is 250ft. */
469+
width: 20px; height: 20px; clip-path: polygon(100% 50%, 0 100%, 0 0);
470470
background-color: #0090D0;
471471
}
472472
#CtrlGroup_PFDDefaultPanelOtherAltitudes #Ctrl_PFDDefaultPanelDecisionAltitude.Active {
@@ -498,7 +498,7 @@
498498
}
499499
#Ctrl_PFDDefaultPanelAltitudeBalloon .CtrlGroup .BalloonTail {
500500
left: 0;
501-
width: 20px; clip-path: polygon(100% 30%, 100% 70%, 0 50%);
501+
width: 25px; clip-path: polygon(100% 32.14286%, 100% 67.85714%, 0 50%);
502502
}
503503
#Ctrl_PFDDefaultPanelAltitudeBalloon .CtrlGroup .Balloon .CtrlGroup {
504504
width: 100%; height: 100%; padding: 5px;
@@ -650,13 +650,13 @@
650650
}
651651
#Ctrl_PFDDefaultPanelHeadingBalloon .CtrlGroup .Balloon {
652652
top: 20px;
653-
height: 40px; border-radius: 5px;
653+
height: 40px; border-radius: 5px; padding: 5px;
654654
text-align: center;
655655
display: flex; justify-content: center; align-items: center;
656656
}
657657
#Ctrl_PFDDefaultPanelHeadingBalloon .CtrlGroup .BalloonTail {
658658
top: 0;
659-
height: 20px; clip-path: polygon(50% 0, 70% 100%, 30% 100%);
659+
height: 25px; clip-path: polygon(50% 0, 67.85714% 100%, 32.14286% 100%);
660660
}
661661
#Label_PFDDefaultPanelHeadingBalloon {
662662
font-size: 2.25em;

PROJECT/scripts/common.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -632,9 +632,6 @@
632632
ChangeDisabled("Button_SettingsInstallPWA", false);
633633
});
634634

635-
// Automations
636-
Automation.HighlightActiveSectionInNav = setInterval(HighlightActiveSectionInNav, 500);
637-
638635
// Features
639636
// Maths
640637
function Randomize(Min, Max) { // Return an integer between two integers.
@@ -643,6 +640,11 @@ Automation.HighlightActiveSectionInNav = setInterval(HighlightActiveSectionInNav
643640

644641
// Highlight active section in nav
645642
function HighlightActiveSectionInNav() {
643+
// Automation
644+
clearTimeout(Automation.HighlightActiveSectionInNav);
645+
Automation.HighlightActiveSectionInNav = setTimeout(HighlightActiveSectionInNav, 500);
646+
647+
// Main
646648
for(let Looper = 0; Looper < Document.Sections.length; Looper++) {
647649
if(scrollY >= Document.Sections[Looper].offsetTop - 200) {
648650
Document.ActiveSectionID = Document.Sections[Looper].getAttribute("id");

PROJECT/styles/common.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* {
2121
transform-origin: inherit;
2222
box-sizing: inherit; padding: 0; margin: 0;
23-
font-family: inherit; font-size: inherit; font-style: inherit; /* These 3 properties need to be set as inherit due to buttons. */
23+
color: inherit; font-family: inherit; font-size: inherit; font-style: inherit; /* "Color" needs to be set as inherit for Google Chrome compatibility. The latter 3 properties need to be set as inherit due to buttons. */
2424
transition: inherit; scroll-behavior: inherit;
2525
}
2626
#Html {
@@ -318,7 +318,6 @@
318318
.Textbox {
319319
width: 100%; height: 100%; border: 1px solid #00000040; border-radius: 5px; padding: 5px;
320320
background-color: #FFFFE8;
321-
color: #000000;
322321
}
323322
.Textbox.ShownAsLabel {
324323
border: none;

PROJECT/styles/common_Dark.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@
8383
.Textbox {
8484
border: 1px solid #FFFFFF40;
8585
background-color: #303018;
86-
color: #FFFFFF;
8786
}
8887

8988
/* Floating ctrls */

PROJECT/styles/common_HighContrast.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@
8383
.Textbox {
8484
border: 1px solid #FFFFFF;
8585
background-color: #202008;
86-
color: #FFFFFF;
8786
}
8887

8988
/* Floating ctrls */

0 commit comments

Comments
 (0)