From 09397edef9863cc3b3cf8cf39d9eaf81e4d4965a Mon Sep 17 00:00:00 2001 From: Kilian Hofmann Date: Thu, 3 Jul 2025 21:22:06 +0200 Subject: [PATCH] Integration finished --- PackageSources/js-bundle/package.json | 8 +- PackageSources/js-bundle/src/App.tsx | 2 +- .../src/components/SBEntry/SBEntryF.tsx | 203 ++++++++-------- .../src/components/SBEntry/SBEntryPax.tsx | 165 ++++++------- .../src/components/actionbar/ActionBar.tsx | 17 +- .../src/components/freighter/Freighter.tsx | 7 +- .../src/components/options/OptionsPax.tsx | 40 ++-- .../js-bundle/src/components/pax/Pax.tsx | 7 +- .../components/stationEntry/StationEntryF.tsx | 221 ++++++++++-------- .../stationEntry/StationEntryPax.tsx | 221 ++++++++++-------- .../src/components/zfwEntry/ZFWEntryF.tsx | 171 +++++++------- .../src/components/zfwEntry/ZFWEntryPax.tsx | 171 +++++++------- .../js-bundle/src/utils/TFDISBImport.ts | 14 +- README.md | 7 - insert-efb.js | 35 ++- 15 files changed, 678 insertions(+), 611 deletions(-) diff --git a/PackageSources/js-bundle/package.json b/PackageSources/js-bundle/package.json index 9cb5c7f..95b6586 100644 --- a/PackageSources/js-bundle/package.json +++ b/PackageSources/js-bundle/package.json @@ -1,6 +1,6 @@ { "name": "tfdidesign-md11-load-manager", - "version": "0.1.46", + "version": "0.1.63", "description": "", "main": "index.js", "type": "module", @@ -10,9 +10,11 @@ "licenses": "license-report --output=markdown > ./src/assets/licenses_node.md", "debugger": "cd \"%MSFS_SDK%\\Tools\\CoherentGT Debugger\" && Debugger.exe", "locale": "cd \"%MSFS_SDK%\\Tools\\MSFS_Localization\" && MSFSLocalizationManager.exe", + "clean": "rimraf ..\\html_ui\\Pages\\VCockpit\\Instruments\\aircraft_efb\\TFDi_MD11_efb", "dev": "npx rollup -c -w", - "build": "npm version patch && npx rollup -c", - "release": "pnpm types && pnpm lint && pnpm run licenses && pnpm clean && npm version patch && cross-env NODE_ENV=production npx rollup -c" + "build": "npm version patch && npx rollup -c && pnpm efb", + "release": "pnpm types && pnpm lint && pnpm run licenses && pnpm clean && npm version patch && cross-env NODE_ENV=production npx rollup -c && pnpm efb", + "efb": "cd ..\\.. && node insert-efb" }, "engines": { "node": ">=22" diff --git a/PackageSources/js-bundle/src/App.tsx b/PackageSources/js-bundle/src/App.tsx index 6953a0f..4f2793a 100644 --- a/PackageSources/js-bundle/src/App.tsx +++ b/PackageSources/js-bundle/src/App.tsx @@ -45,7 +45,7 @@ const App: FC = () => { }, []); return ( -
+
{isReady && WASMData ? ( WASMData.userData.isCargo ? ( diff --git a/PackageSources/js-bundle/src/components/SBEntry/SBEntryF.tsx b/PackageSources/js-bundle/src/components/SBEntry/SBEntryF.tsx index 5d09046..c9faf46 100644 --- a/PackageSources/js-bundle/src/components/SBEntry/SBEntryF.tsx +++ b/PackageSources/js-bundle/src/components/SBEntry/SBEntryF.tsx @@ -10,18 +10,17 @@ import ActionBar from '../actionbar/ActionBar'; interface SBEntryProps { WASMData: WASMDataF; loadingState: LoadingState; - username: string; setLoadingState: (newState: LoadingState) => void; } -const SBEntryF: FC = ({ WASMData, loadingState, username, setLoadingState }) => { +const SBEntryF: FC = ({ WASMData, loadingState, setLoadingState }) => { const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget); const [fuel, setFuel] = useState(Math.round(WASMData.livePayload.fuel)); const [fuelEnabled, setFuelEnabled] = useState(true); const [SBInFlight, setSBInFlight] = useState(false); // FROM EFB - const simBrief = useSelector((state) => state.simbrief); + const simBrief = useSelector((state) => state.simbrief.plan); const ZFW = () => { if (loadingState !== 'loaded' && !GSXActive()) return Math.round(WASMData.targetPayload.total); @@ -59,10 +58,12 @@ const SBEntryF: FC = ({ WASMData, loadingState, username, setLoadi } }; - const handleSB = async () => { + useEffect(() => { + if (!simBrief) return; + setSBInFlight(true); - const SBResponse = await ImportFlightPlanKH( + const SBResponse = ImportFlightPlanKH( simBrief, WASMData.limits.maxZFW, WASMData.limits.maxTOW, @@ -75,11 +76,11 @@ const SBEntryF: FC = ({ WASMData, loadingState, username, setLoadi return; } - updateData(undefined, SBResponse.message); + updateData(undefined, SBResponse.message as SimBrief); - setFuel(parseFloat(SBResponse.message.fuel as unknown as string) ?? 0); + setFuel(parseFloat((SBResponse.message as SimBrief).fuel as unknown as string) ?? 0); setSBInFlight(false); - }; + }, [simBrief]); useEffect( () => @@ -101,108 +102,120 @@ const SBEntryF: FC = ({ WASMData, loadingState, username, setLoadi <>
- - handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} - disabled={loadingState !== 'preview' || GSXActive()} - /> - +
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview' || GSXActive()} + /> + +
- - +
+ + +
- - +
+ + +
- - - setCGTarget((prev) => { - const _new = prev + 0.1; - updateData(_new); - return _new; - }) - } - decrease={() => - setCGTarget((prev) => { - const _new = prev - 0.1; - updateData(_new); - return _new; - }) - } - /> +
+ + + setCGTarget((prev) => { + const _new = prev + 0.1; + updateData(_new); + return _new; + }) + } + decrease={() => + setCGTarget((prev) => { + const _new = prev - 0.1; + updateData(_new); + return _new; + }) + } + /> +
- - +
+ + +
- - +
+ + +
@@ -210,8 +223,6 @@ const SBEntryF: FC = ({ WASMData, loadingState, username, setLoadi loadingState={loadingState} loadDisabled={!GWValid() || SBInFlight} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} - importSB={handleSB} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/components/SBEntry/SBEntryPax.tsx b/PackageSources/js-bundle/src/components/SBEntry/SBEntryPax.tsx index 4703ee3..9a0fc43 100644 --- a/PackageSources/js-bundle/src/components/SBEntry/SBEntryPax.tsx +++ b/PackageSources/js-bundle/src/components/SBEntry/SBEntryPax.tsx @@ -10,18 +10,17 @@ import ActionBar from '../actionbar/ActionBar'; interface SBEntryProps { WASMData: WASMDataPax; loadingState: LoadingState; - username: string; setLoadingState: (newState: LoadingState) => void; } -const SBEntryPax: FC = ({ WASMData, loadingState, username, setLoadingState }) => { +const SBEntryPax: FC = ({ WASMData, loadingState, setLoadingState }) => { const [CGTarget, setCGTarget] = useState(WASMData.targetPayload.CGTarget); const [fuel, setFuel] = useState(Math.round(WASMData.livePayload.fuel)); const [fuelEnabled, setFuelEnabled] = useState(true); const [SBInFlight, setSBInFlight] = useState(false); // FROM EFB - const simBrief = useSelector((state) => state.simbrief); + const simBrief = useSelector((state) => state.simbrief.plan); const ZFW = () => { if (loadingState !== 'loaded' && !GSXActive()) return Math.round(WASMData.targetPayload.total); @@ -59,10 +58,12 @@ const SBEntryPax: FC = ({ WASMData, loadingState, username, setLoa } }; - const handleSB = async () => { + useEffect(() => { + if (!simBrief) return; + setSBInFlight(true); - const SBResponse = await ImportFlightPlanKH( + const SBResponse = ImportFlightPlanKH( simBrief, WASMData.limits.maxZFW, WASMData.limits.maxTOW, @@ -75,11 +76,11 @@ const SBEntryPax: FC = ({ WASMData, loadingState, username, setLoa return; } - updateData(undefined, SBResponse.message); + updateData(undefined, SBResponse.message as SimBrief); - setFuel(parseFloat(SBResponse.message.fuel as unknown as string) ?? 0); + setFuel(parseFloat((SBResponse.message as SimBrief).fuel as unknown as string) ?? 0); setSBInFlight(false); - }; + }, [simBrief]); useEffect( () => @@ -100,8 +101,8 @@ const SBEntryPax: FC = ({ WASMData, loadingState, username, setLoa return ( <>
-
-
+
+
= ({ WASMData, loadingState, username, setLoa
-
- - +
+
+ + +
-
- - +
+
+ + +
-
- - - setCGTarget((prev) => { - const _new = prev + 0.1; - updateData(_new); - return _new; - }) - } - decrease={() => - setCGTarget((prev) => { - const _new = prev - 0.1; - updateData(_new); - return _new; - }) - } - /> +
+
+ + + setCGTarget((prev) => { + const _new = prev + 0.1; + updateData(_new); + return _new; + }) + } + decrease={() => + setCGTarget((prev) => { + const _new = prev - 0.1; + updateData(_new); + return _new; + }) + } + /> +
-
- - +
+
+ + +
-
- - +
+
+ + +
@@ -212,8 +223,6 @@ const SBEntryPax: FC = ({ WASMData, loadingState, username, setLoa loadingState={loadingState} loadDisabled={!GWValid() || SBInFlight} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} - importSB={handleSB} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/components/actionbar/ActionBar.tsx b/PackageSources/js-bundle/src/components/actionbar/ActionBar.tsx index 5406b82..f875486 100644 --- a/PackageSources/js-bundle/src/components/actionbar/ActionBar.tsx +++ b/PackageSources/js-bundle/src/components/actionbar/ActionBar.tsx @@ -5,13 +5,11 @@ interface ActionBarProps { loadingState: LoadingState; loadDisabled: boolean; GSXSync: boolean; - GSXActive: boolean; - importSB?: () => void; load: () => void; unload: () => void; } -const ActionBar: FC = ({ loadingState, loadDisabled, GSXSync, GSXActive, importSB, load, unload }) => { +const ActionBar: FC = ({ loadingState, loadDisabled, GSXSync, load, unload }) => { return (
{loadingState === 'preview' && !GSXSync && ( @@ -33,19 +31,6 @@ const ActionBar: FC = ({ loadingState, loadDisabled, GSXSync, GS Unload )} - -
- - {!!importSB && loadingState === 'preview' && ( - - )}
); }; diff --git a/PackageSources/js-bundle/src/components/freighter/Freighter.tsx b/PackageSources/js-bundle/src/components/freighter/Freighter.tsx index 0cb5cd3..2c67179 100644 --- a/PackageSources/js-bundle/src/components/freighter/Freighter.tsx +++ b/PackageSources/js-bundle/src/components/freighter/Freighter.tsx @@ -109,12 +109,7 @@ const Freighter: FC = ({ WASMData, username }) => { setSelectedTab={setSelectedTab} /> {username && selectedTab === 0 && ( - + )} {((username && selectedTab === 1) || (!username && selectedTab === 0)) && ( diff --git a/PackageSources/js-bundle/src/components/options/OptionsPax.tsx b/PackageSources/js-bundle/src/components/options/OptionsPax.tsx index 14bc110..4009d3b 100644 --- a/PackageSources/js-bundle/src/components/options/OptionsPax.tsx +++ b/PackageSources/js-bundle/src/components/options/OptionsPax.tsx @@ -61,26 +61,30 @@ const OptionsPax: FC = ({ WASMData, loadingState }) => {
- - handleInput(e.target.value, Number.MAX_VALUE, setPaxWeight)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, Number.MAX_VALUE, setPaxWeight)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, Number.MAX_VALUE, setBagWeight)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, Number.MAX_VALUE, setBagWeight)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
diff --git a/PackageSources/js-bundle/src/components/pax/Pax.tsx b/PackageSources/js-bundle/src/components/pax/Pax.tsx index ee2c20e..2ef75a2 100644 --- a/PackageSources/js-bundle/src/components/pax/Pax.tsx +++ b/PackageSources/js-bundle/src/components/pax/Pax.tsx @@ -113,12 +113,7 @@ const Pax: FC = ({ WASMData, username }) => { setSelectedTab={setSelectedTab} /> {username && selectedTab === 0 && ( - + )} {((username && selectedTab === 1) || (!username && selectedTab === 0)) && ( diff --git a/PackageSources/js-bundle/src/components/stationEntry/StationEntryF.tsx b/PackageSources/js-bundle/src/components/stationEntry/StationEntryF.tsx index 439a812..c7c5413 100644 --- a/PackageSources/js-bundle/src/components/stationEntry/StationEntryF.tsx +++ b/PackageSources/js-bundle/src/components/stationEntry/StationEntryF.tsx @@ -78,129 +78,147 @@ const StationEntryF: FC = ({ WASMData, loadingState, setLoadi <>
- - handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} - disabled={loadingState !== 'preview' || GSXActive()} - /> - +
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview' || GSXActive()} + /> + +
- - handleInput(e.target.value, WASMData.limits.upper1, setUpper1)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.upper1, setUpper1)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.upper2, setUpper2)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.upper2, setUpper2)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.upper3, setUpper3)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.upper3, setUpper3)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.upper4, setUpper4)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.upper4, setUpper4)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.lowerForward, setLowerForward)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.lowerForward, setLowerForward)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.lowerRear, setLowerRear)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.lowerRear, setLowerRear)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - +
+ + +
- - +
+ + +
@@ -208,7 +226,6 @@ const StationEntryF: FC = ({ WASMData, loadingState, setLoadi loadingState={loadingState} loadDisabled={!ZFWValid() || !GWValid()} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx b/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx index 05ac3cd..ba58829 100644 --- a/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx +++ b/PackageSources/js-bundle/src/components/stationEntry/StationEntryPax.tsx @@ -78,129 +78,147 @@ const StationEntryPax: FC = ({ WASMData, loadingState, setLoa <>
- - handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} - disabled={loadingState !== 'preview' || GSXActive()} - /> - +
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview' || GSXActive()} + /> + +
- - handleInput(e.target.value, WASMData.limits.business1, setBusiness1)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.business1, setBusiness1)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.business2, setBusiness2)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.business2, setBusiness2)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.economy1, setEconomy1)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.economy1, setEconomy1)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.economy2, setEconomy2)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.economy2, setEconomy2)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.forwardCargo, setForwardCargo)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.forwardCargo, setForwardCargo)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - handleInput(e.target.value, WASMData.limits.rearCargo, setRearCargo)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInput(e.target.value, WASMData.limits.rearCargo, setRearCargo)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - +
+ + +
- - +
+ + +
@@ -208,7 +226,6 @@ const StationEntryPax: FC = ({ WASMData, loadingState, setLoa loadingState={loadingState} loadDisabled={!ZFWValid() || !GWValid()} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryF.tsx b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryF.tsx index 16bdda7..77baf8f 100644 --- a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryF.tsx +++ b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryF.tsx @@ -101,100 +101,110 @@ const ZFWEntryF: FC = ({ WASMData, loadingState, setLoadingState <>
- - handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} - disabled={loadingState !== 'preview' || GSXActive()} - /> - +
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview' || GSXActive()} + /> + +
- - handleInputZFW(e.target.value)} - onBlur={(e) => handleBlur(e.target.value)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInputZFW(e.target.value)} + onBlur={(e) => handleBlur(e.target.value)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - - setCGTarget((prev) => { - const _new = prev + 0.1; - updateData(undefined, _new); - return _new; - }) - } - decrease={() => - setCGTarget((prev) => { - const _new = prev - 0.1; - updateData(undefined, _new); - return _new; - }) - } - /> +
+ + + setCGTarget((prev) => { + const _new = prev + 0.1; + updateData(undefined, _new); + return _new; + }) + } + decrease={() => + setCGTarget((prev) => { + const _new = prev - 0.1; + updateData(undefined, _new); + return _new; + }) + } + /> +
- - +
+ + +
- - +
+ + +
@@ -202,7 +212,6 @@ const ZFWEntryF: FC = ({ WASMData, loadingState, setLoadingState loadingState={loadingState} loadDisabled={!GWValid()} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx index b261588..137a806 100644 --- a/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx +++ b/PackageSources/js-bundle/src/components/zfwEntry/ZFWEntryPax.tsx @@ -101,100 +101,110 @@ const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoadingStat <>
- - handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} - disabled={loadingState !== 'preview' || GSXActive()} - /> - +
+ + handleInput(e.target.value, WASMData.limits.maxFuel, setFuel)} + disabled={loadingState !== 'preview' || GSXActive()} + /> + +
- - handleInputZFW(e.target.value)} - onBlur={(e) => handleBlur(e.target.value)} - disabled={loadingState !== 'preview' || GSXActive()} - /> +
+ + handleInputZFW(e.target.value)} + onBlur={(e) => handleBlur(e.target.value)} + disabled={loadingState !== 'preview' || GSXActive()} + /> +
- - - setCGTarget((prev) => { - const _new = prev + 0.1; - updateData(undefined, _new); - return _new; - }) - } - decrease={() => - setCGTarget((prev) => { - const _new = prev - 0.1; - updateData(undefined, _new); - return _new; - }) - } - /> +
+ + + setCGTarget((prev) => { + const _new = prev + 0.1; + updateData(undefined, _new); + return _new; + }) + } + decrease={() => + setCGTarget((prev) => { + const _new = prev - 0.1; + updateData(undefined, _new); + return _new; + }) + } + /> +
- - +
+ + +
- - +
+ + +
@@ -202,7 +212,6 @@ const ZFWEntryPax: FC = ({ WASMData, loadingState, setLoadingStat loadingState={loadingState} loadDisabled={!GWValid()} GSXSync={WASMData.options.GSXSync} - GSXActive={GSXActive()} load={() => { setLoadingState('loaded'); diff --git a/PackageSources/js-bundle/src/utils/TFDISBImport.ts b/PackageSources/js-bundle/src/utils/TFDISBImport.ts index 9b1c0d6..3f91bf8 100644 --- a/PackageSources/js-bundle/src/utils/TFDISBImport.ts +++ b/PackageSources/js-bundle/src/utils/TFDISBImport.ts @@ -1,10 +1,8 @@ -export const ImportFlightPlanKH = async ( - plan: any, - maxZFW: number, - maxTOW: number, - maxFuel: number, - isImperial: boolean -) => { +import { SimBrief } from '../types/general'; + +export const ImportFlightPlanKH = (plan: any, maxZFW: number, maxTOW: number, maxFuel: number, isImperial: boolean) => { + if (!plan) return { type: 'error', message: 'Empty plan' }; + let convFactor = 1; if (plan.params.units === 'kgs' && isImperial) convFactor = 2.20462262185; if (plan.params.units === 'lbs' && !isImperial) convFactor = 1 / 2.20462262185; @@ -17,6 +15,6 @@ export const ImportFlightPlanKH = async ( pax: plan.weights.pax_count_actual, cargo: Math.round(plan.weights.freight_added * convFactor), fuel: Math.min(maxFuel, Math.round(plan.fuel.plan_ramp * convFactor)), - }, + } as SimBrief, }; }; diff --git a/README.md b/README.md index ac21d60..349c025 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,3 @@ Build in sim - LAMM - https://www.satco-inc.com/product-pallet/?part_number=31086-595 - https://www.satco-inc.com/product-container/?part_number=34124-901 - -TODO: - -- Fix duplicate names -- Fix SB import (move to TFDi function proper) -- Adj. Dispatch page to navigate to Payload page -- TEST diff --git a/insert-efb.js b/insert-efb.js index 137a7c2..3778e97 100644 --- a/insert-efb.js +++ b/insert-efb.js @@ -1,13 +1,36 @@ const fs = require("fs"); const util = require("node:util"); const exec = util.promisify(require("node:child_process").exec); +const readline = require("readline"); -const outFile = - "./PackageSources/html_ui/Pages/VCockpit/Instruments/aircraft_efb/TFDi_MD11_efb/efb.js"; +const outPath = + "./PackageSources/html_ui/Pages/VCockpit/Instruments/aircraft_efb/TFDi_MD11_efb"; -fs.copyFileSync("./efb.js", outFile); +fs.copyFileSync("./EFB/efb.js", `${outPath}/efb.js`); +fs.copyFileSync("./EFB/efb.html", `${outPath}/efb.html`); +console.log("Files transferred."); -exec("git apply efb.patch").then(({stdout, stderr}) => { - console.log("stdout:", stdout); - console.error("stderr:", stderr); +exec("git apply ./EFB/efb-js.patch").then(({ stdout, stderr }) => { + console.log("Patches efb.js applied."); +}); +exec("git apply ./EFB/efb-html.patch").then(({ stdout, stderr }) => { + console.log("Patches efb.html applied."); +}); + +var output = ""; +var lineReader = readline.createInterface({ + input: fs.createReadStream(`${outPath}/App.js`), +}); +lineReader.on("line", (line) => { + if (line.startsWith("import") || line.startsWith("export")) { + output += "// " + line + "\n"; + } else { + output += line + "\n"; + } +}); +lineReader.on("close", () => { + fs.writeFile(`${outPath}/App.js`, output, (err) => { + if (err) console.log(err); + console.log("Import/Export removed."); + }); });