Initial GSX Sync for fuel

This commit is contained in:
2026-02-13 02:50:43 +01:00
parent 122a93461d
commit 69680ced03
20 changed files with 153 additions and 62 deletions
@@ -11,10 +11,11 @@ interface SBEntryProps {
WASMData: WASMDataF;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const SBEntryF: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const SBEntryF: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, gsxFuelActive, setLoadingState }) => {
const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget);
const [fuel, setFuel] = useState(Math.round(WASMData.targetPayload.fuel));
const [SBInFlight, setSBInFlight] = useState(false);
@@ -102,7 +103,7 @@ const SBEntryF: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, setLoad
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -11,13 +11,13 @@ interface SBEntryProps {
WASMData: WASMDataPax;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const SBEntryPax: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const SBEntryPax: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, gsxFuelActive, setLoadingState }) => {
const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget);
const [fuel, setFuel] = useState(Math.round(WASMData.targetPayload.fuel));
const [fuelEnabled, setFuelEnabled] = useState(true);
const [SBInFlight, setSBInFlight] = useState(false);
// FROM EFB
@@ -106,7 +106,7 @@ const SBEntryPax: FC<SBEntryProps> = ({ WASMData, loadingState, gsxActive, setLo
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -1,6 +1,6 @@
import { FC, useEffect, useState } from 'react';
import { LoadingState } from '../../types/general';
import { GSXLoadingState, WASMDataF } from '../../types/WASMData';
import { GSXFuelingState, GSXLoadingState, WASMDataF } from '../../types/WASMData';
import OptionsF from '../options/OptionsF';
import Profile from '../profile/Profile';
import SBEntryF from '../SBEntry/SBEntryF';
@@ -65,6 +65,9 @@ const Freighter: FC<FreighterProps> = ({ WASMData, username }) => {
WASMData.GSX.loadingState !== GSXLoadingState.DEBOARDED
);
};
const GSXFuelActive = () => {
return WASMData.GSX.couatlStarted && WASMData.GSX.fuelingState !== GSXFuelingState.IDLE;
};
const CGs = (): [string, boolean, string, boolean] => {
if (loadingState !== 'loaded' && !GSXActive()) {
@@ -118,9 +121,7 @@ const Freighter: FC<FreighterProps> = ({ WASMData, username }) => {
}
/>
<Tabbar
tabs={
username ? ['Simbrief', 'ZFW', 'Cargo', 'Options'] : ['ZFW', 'Cargo', 'Options']
}
tabs={username ? ['Simbrief', 'ZFW', 'Cargo', 'Options'] : ['ZFW', 'Cargo', 'Options']}
selectedTab={selectedTab}
setSelectedTab={setSelectedTab}
/>
@@ -130,6 +131,7 @@ const Freighter: FC<FreighterProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 1) || (!username && selectedTab === 0)) && (
@@ -138,6 +140,7 @@ const Freighter: FC<FreighterProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 2) || (!username && selectedTab === 1)) && (
@@ -146,6 +149,7 @@ const Freighter: FC<FreighterProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 3) || (!username && selectedTab === 2)) && (
@@ -1,6 +1,6 @@
import { FC, useEffect, useState } from 'react';
import { LoadingState } from '../../types/general';
import { GSXLoadingState, WASMDataPax } from '../../types/WASMData';
import { GSXFuelingState, GSXLoadingState, WASMDataPax } from '../../types/WASMData';
import OptionsPax from '../options/OptionsPax';
import Profile from '../profile/Profile';
import SBEntryPax from '../SBEntry/SBEntryPax';
@@ -65,6 +65,9 @@ const Pax: FC<PaxProps> = ({ WASMData, username }) => {
WASMData.GSX.loadingState !== GSXLoadingState.DEBOARDED
);
};
const GSXFuelActive = () => {
return WASMData.GSX.couatlStarted && WASMData.GSX.fuelingState !== GSXFuelingState.IDLE;
};
const CGs = (): [string, boolean, string, boolean] => {
if (loadingState !== 'loaded' && !GSXActive()) {
@@ -134,6 +137,7 @@ const Pax: FC<PaxProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 1) || (!username && selectedTab === 0)) && (
@@ -142,6 +146,7 @@ const Pax: FC<PaxProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 2) || (!username && selectedTab === 1)) && (
@@ -150,6 +155,7 @@ const Pax: FC<PaxProps> = ({ WASMData, username }) => {
loadingState={loadingState}
setLoadingState={setLoadingState}
gsxActive={GSXActive()}
gsxFuelActive={GSXFuelActive()}
/>
)}
{((username && selectedTab === 3) || (!username && selectedTab === 2)) && (
@@ -9,10 +9,11 @@ interface StationEntryProps {
WASMData: WASMDataF;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const StationEntryF: FC<StationEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const StationEntryF: FC<StationEntryProps> = ({ WASMData, loadingState, gsxActive, gsxFuelActive, setLoadingState }) => {
const [upper1, setUpper1] = useState(WASMData.targetPayload.upper1);
const [upper2, setUpper2] = useState(WASMData.targetPayload.upper2);
const [upper3, setUpper3] = useState(WASMData.targetPayload.upper3);
@@ -76,7 +77,7 @@ const StationEntryF: FC<StationEntryProps> = ({ WASMData, loadingState, gsxActiv
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -9,10 +9,17 @@ interface StationEntryProps {
WASMData: WASMDataPax;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const StationEntryPax: FC<StationEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const StationEntryPax: FC<StationEntryProps> = ({
WASMData,
loadingState,
gsxActive,
gsxFuelActive,
setLoadingState,
}) => {
const [business1, setBusiness1] = useState(WASMData.targetPayload.business1);
const [business2, setBusiness2] = useState(WASMData.targetPayload.business2);
const [economy1, setEconomy1] = useState(WASMData.targetPayload.economy1);
@@ -76,7 +83,7 @@ const StationEntryPax: FC<StationEntryProps> = ({ WASMData, loadingState, gsxAct
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -10,10 +10,11 @@ interface ZFWEntryProps {
WASMData: WASMDataF;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const ZFWEntryF: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const ZFWEntryF: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, gsxFuelActive, setLoadingState }) => {
const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget);
const [fuel, setFuel] = useState(Math.round(WASMData.targetPayload.fuel));
const [ZFWTarget, setZFWTarget] = useState(Math.round(WASMData.targetPayload.total));
@@ -102,7 +103,7 @@ const ZFWEntryF: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, setLo
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -10,10 +10,11 @@ interface ZFWEntryProps {
WASMData: WASMDataPax;
loadingState: LoadingState;
gsxActive: boolean;
gsxFuelActive: boolean;
setLoadingState: (newState: LoadingState) => void;
}
const ZFWEntryPax: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, setLoadingState }) => {
const ZFWEntryPax: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, gsxFuelActive, setLoadingState }) => {
const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget);
const [fuel, setFuel] = useState(Math.round(WASMData.targetPayload.fuel));
const [ZFWTarget, setZFWTarget] = useState(Math.round(WASMData.targetPayload.total));
@@ -102,7 +103,7 @@ const ZFWEntryPax: FC<ZFWEntryProps> = ({ WASMData, loadingState, gsxActive, set
className={`w-1/2 rounded-lg border border-white bg-zinc-700 px-3 py-2 text-right`}
value={fuel}
onChange={(value) => handleInput(value, WASMData.limits.maxFuel, setFuel)}
disabled={loadingState !== 'preview' || gsxActive}
disabled={loadingState !== 'preview' || gsxFuelActive}
/>
</div>
</div>
@@ -59,6 +59,7 @@ type LivePayloadF = TargetPayloadF;
interface GSX {
couatlStarted: boolean;
loadingState: GSXLoadingState;
fuelingState: GSXFuelingState;
}
interface Limits {
@@ -107,3 +108,8 @@ export enum GSXLoadingState {
DEBOARDING = 3,
DEBOARDED = 4,
}
export enum GSXFuelingState {
IDLE = 0,
FUELING = 1,
}