2 Commits
Author SHA1 Message Date
Kilian b4ddfc4736 Update to 1.1.31 2026-08-28 02:17:27 +02:00
Kilian f0efa84610 Fix log
Defuling enabled
2026-08-27 22:00:44 +02:00
10 changed files with 90 additions and 53 deletions
+6 -4
View File
@@ -2,7 +2,7 @@ Index: EFB.js
===================================================================
--- EFB.js
+++ EFB.js
@@ -50833,11 +50833,11 @@
@@ -50844,11 +50844,11 @@
),
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
"button",
@@ -16,12 +16,13 @@ Index: EFB.js
),
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
"button",
@@ -51343,8 +51343,27 @@
@@ -51354,9 +51354,28 @@
] })
] }) }) });
}
+// Exports for add. script
- // src/components/Router.tsx
+ // Exports for add. script
+ window.reactExports = __toESM(require_react());
+ window.reactDomExports = __toESM(require_react_dom());
+ window.jsxRuntimeExports = __toESM(require_jsx_runtime());
@@ -40,7 +41,8 @@ Index: EFB.js
+ script.src = "/Pages/VCockpit/Instruments/aircraft_efb/KH_TFDi_MD11_efb/App.js";
+ document.head.appendChild(script); //or something of the likes
+
// src/components/Router.tsx
+// src/components/Router.tsx
init_common();
var import_jsx_runtime15 = __toESM(require_jsx_runtime());
var routes = {
"/dispatch": {
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<AssetPackage Version="1.3.0">
<AssetPackage Version="1.4.3">
<ItemSettings>
<ContentType>MISC</ContentType>
<Title>TFDi Design MD-11 Load Manager</Title>
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "js-bundle",
"version": "0.2.34",
"version": "0.2.50",
"description": "",
"main": "index.js",
"type": "module",
@@ -1,9 +1,9 @@
| Department | Related to | Name | License period | Material not material | License type | Link | Remote version | Installed version | Defined version | Author |
| :--------- | :--------- | :------------------------------- | :------------- | :-------------------- | :------------ | :------------------------------------------------------------------------ | :------------- | :---------------- | :-------------- | :---------------------------------------------------------- |
| kessler | stuff | lucide-react | perpetual | material | ISC | git+https://github.com/lucide-icons/lucide.git | 0.555.0 | 0.555.0 | ^0.555.0 | Eric Fennis |
| kessler | stuff | react | perpetual | material | MIT | git+https://github.com/facebook/react.git | 19.2.4 | 19.2.4 | ^19.1.0 | n/a |
| kessler | stuff | react-dom | perpetual | material | MIT | git+https://github.com/facebook/react.git | 19.2.4 | 19.2.4 | ^19.1.0 | n/a |
| kessler | stuff | uuid | perpetual | material | MIT | git+https://github.com/uuidjs/uuid.git | 11.1.0 | 11.1.0 | ^11.1.0 | n/a |
| kessler | stuff | react | perpetual | material | MIT | git+https://github.com/react/react.git | 19.2.8 | 19.2.4 | ^19.1.0 | n/a |
| kessler | stuff | react-dom | perpetual | material | MIT | git+https://github.com/react/react.git | 19.2.8 | 19.2.4 | ^19.1.0 | n/a |
| kessler | stuff | uuid | perpetual | material | MIT | git+https://github.com/uuidjs/uuid.git | 11.1.1 | 11.1.0 | ^11.1.0 | n/a |
| kessler | stuff | @microsoft/msfs-types | perpetual | material | MIT | git+https://github.com/microsoft/msfs-avionics-mirror.git | 1.14.6 | 1.14.6 | ^1.14.6 | Asobo Studio / Working Title Simulations |
| kessler | stuff | @rollup/plugin-commonjs | perpetual | material | MIT | git+https://github.com/rollup/plugins.git | 28.0.9 | 28.0.9 | ^28.0.3 | Rich Harris <richard.a.harris@gmail.com> |
| kessler | stuff | @rollup/plugin-json | perpetual | material | MIT | git+https://github.com/rollup/plugins.git | 6.1.0 | 6.1.0 | ^6.1.0 | rollup |
@@ -11,30 +11,30 @@
| kessler | stuff | @rollup/plugin-replace | perpetual | material | MIT | git+https://github.com/rollup/plugins.git | 6.0.3 | 6.0.3 | ^6.0.2 | Rich Harris <richard.a.harris@gmail.com> |
| kessler | stuff | @rollup/plugin-terser | perpetual | material | MIT | git+https://github.com/rollup/plugins.git | 0.4.4 | 0.4.4 | ^0.4.4 | Peter Placzek <peter.placzek1996@gmail.com> |
| kessler | stuff | @rollup/plugin-typescript | perpetual | material | MIT | git+https://github.com/rollup/plugins.git | 12.3.0 | 12.3.0 | ^12.1.2 | Oskar Segersvärd |
| kessler | stuff | @types/node | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 24.12.2 | 24.12.0 | ^24.3.1 | n/a |
| kessler | stuff | @types/react | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 19.2.14 | 19.2.14 | ^19.1.6 | n/a |
| kessler | stuff | @types/react-dom | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 19.2.3 | 19.2.3 | ^19.1.6 | n/a |
| kessler | stuff | @types/node | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 24.13.3 | 24.12.0 | ^24.3.1 | n/a |
| kessler | stuff | @types/react | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 19.2.18 | 19.2.14 | ^19.1.6 | n/a |
| kessler | stuff | @types/react-dom | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 19.2.5 | 19.2.3 | ^19.1.6 | n/a |
| kessler | stuff | @types/uuid | perpetual | material | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git | 10.0.0 | 10.0.0 | ^10.0.0 | n/a |
| kessler | stuff | @typescript-eslint/eslint-plugin | perpetual | material | MIT | git+https://github.com/typescript-eslint/typescript-eslint.git | 6.21.0 | 6.21.0 | ^6.21.0 | n/a |
| kessler | stuff | @typescript-eslint/parser | perpetual | material | BSD-2-Clause | git+https://github.com/typescript-eslint/typescript-eslint.git | 6.21.0 | 6.21.0 | ^6.21.0 | n/a |
| kessler | stuff | autoprefixer | perpetual | material | MIT | git+https://github.com/postcss/autoprefixer.git | 10.4.27 | 10.4.27 | ^10.4.21 | Andrey Sitnik <andrey@sitnik.ru> |
| kessler | stuff | autoprefixer | perpetual | material | MIT | git+https://github.com/postcss/autoprefixer.git | 10.5.4 | 10.4.27 | ^10.4.21 | Andrey Sitnik <andrey@sitnik.ru> |
| kessler | stuff | cross-env | perpetual | material | MIT | git+https://github.com/kentcdodds/cross-env.git | 7.0.3 | 7.0.3 | ^7.0.3 | Kent C. Dodds <me@kentcdodds.com> (https://kentcdodds.com) |
| kessler | stuff | eslint | perpetual | material | MIT | git+https://github.com/eslint/eslint.git | 8.57.1 | 8.57.1 | ^8.57.1 | Nicholas C. Zakas <nicholas+npm@nczconsulting.com> |
| kessler | stuff | eslint-plugin-import | perpetual | material | MIT | git+https://github.com/import-js/eslint-plugin-import.git | 2.32.0 | 2.32.0 | ^2.31.0 | Ben Mosher <me@benmosher.com> |
| kessler | stuff | eslint-plugin-react | perpetual | material | MIT | git+https://github.com/jsx-eslint/eslint-plugin-react.git | 7.37.5 | 7.37.5 | ^7.37.5 | Yannick Croissant <yannick.croissant+npm@gmail.com> |
| kessler | stuff | eslint-plugin-react-hooks | perpetual | material | MIT | git+https://github.com/facebook/react.git | 4.6.2 | 4.6.2 | ^4.6.2 | n/a |
| kessler | stuff | license-report | perpetual | material | MIT | git+https://github.com/kessler/license-report.git | 6.8.2 | 6.8.2 | ^6.7.2 | Yaniv Kessler |
| kessler | stuff | postcss | perpetual | material | MIT | git+https://github.com/postcss/postcss.git | 8.5.8 | 8.5.8 | ^8.5.4 | Andrey Sitnik <andrey@sitnik.ru> |
| kessler | stuff | postcss-import | perpetual | material | MIT | git+https://github.com/postcss/postcss-import.git | 16.1.1 | 16.1.1 | ^16.1.0 | Maxime Thirouin |
| kessler | stuff | prettier | perpetual | material | MIT | git+https://github.com/prettier/prettier.git | 3.8.1 | 3.8.1 | ^3.5.3 | James Long |
| kessler | stuff | license-report | perpetual | material | MIT | git+https://github.com/bepo65/license-report.git | 6.8.5 | 6.8.2 | ^6.7.2 | Yaniv Kessler |
| kessler | stuff | postcss | perpetual | material | MIT | git+https://github.com/postcss/postcss.git | 8.5.26 | 8.5.8 | ^8.5.4 | Andrey Sitnik <andrey@sitnik.ru> |
| kessler | stuff | postcss-import | perpetual | material | MIT | git+https://github.com/postcss/postcss-import.git | 16.2.0 | 16.1.1 | ^16.1.0 | Maxime Thirouin |
| kessler | stuff | prettier | perpetual | material | MIT | git+https://github.com/prettier/prettier.git | 3.9.6 | 3.8.1 | ^3.5.3 | James Long |
| kessler | stuff | prettier-plugin-organize-imports | perpetual | material | MIT | git+https://github.com/simonhaenisch/prettier-plugin-organize-imports.git | 4.3.0 | 4.3.0 | ^4.1.0 | Simon Haenisch (https://github.com/simonhaenisch) |
| kessler | stuff | rimraf | perpetual | material | BlueOak-1.0.0 | git+ssh://git@github.com/isaacs/rimraf.git | 6.1.3 | 6.1.3 | ^6.0.1 | Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/) |
| kessler | stuff | rollup | perpetual | material | MIT | git+https://github.com/rollup/rollup.git | 4.60.1 | 4.60.0 | ^4.42.0 | Rich Harris |
| kessler | stuff | rollup | perpetual | material | MIT | git+https://github.com/rollup/rollup.git | 4.63.0 | 4.60.0 | ^4.42.0 | Rich Harris |
| kessler | stuff | rollup-plugin-copy | perpetual | material | MIT | git+https://github.com/vladshcherbin/rollup-plugin-copy.git | 3.5.0 | 3.5.0 | ^3.5.0 | Vlad Shcherbin <vlad.shcherbin@gmail.com> |
| kessler | stuff | rollup-plugin-postcss | perpetual | material | MIT | git+https://github.com/egoist/rollup-plugin-postcss.git | 4.0.2 | 4.0.2 | ^4.0.2 | EGOIST <0x142857@gmail.com> |
| kessler | stuff | rollup-plugin-react-svg | perpetual | material | MIT | git+https://github.com/boopathi/react-svg-loader.git | 3.0.3 | 3.0.3 | ^3.0.3 | boopathi |
| kessler | stuff | rollup-plugin-version-injector | perpetual | material | ISC | git+https://github.com/djhouseknecht/rollup-plugin-version-injector.git | 1.3.3 | 1.3.3 | ^1.3.3 | David Houseknecht <david.j.houseknecht@gmail.com> |
| kessler | stuff | sass | perpetual | material | MIT | git+https://github.com/sass/dart-sass.git | 1.99.0 | 1.98.0 | ^1.89.1 | Natalie Weizenbaum nweiz@google.com https://github.com/nex3 |
| kessler | stuff | sass | perpetual | material | MIT | git+https://github.com/sass/dart-sass.git | 1.103.1 | 1.98.0 | ^1.89.1 | Natalie Weizenbaum nweiz@google.com https://github.com/nex3 |
| kessler | stuff | tslib | perpetual | material | 0BSD | git+https://github.com/Microsoft/tslib.git | 2.8.1 | 2.8.1 | ^2.8.1 | Microsoft Corp. |
| kessler | stuff | typed-scss-modules | perpetual | material | MIT | git+https://github.com/skovy/typed-scss-modules.git | 8.1.1 | 8.1.1 | ^8.1.1 | Spencer Miskoviak <smiskoviak@gmail.com> |
| kessler | stuff | typescript | perpetual | material | Apache-2.0 | git+https://github.com/microsoft/TypeScript.git | 5.8.3 | 5.8.3 | 5.8.3 | Microsoft Corp. |
@@ -1,4 +1,4 @@
import { useEffect, useRef, useState } from 'react';
import { useCallback, useEffect, useRef, useState } from 'react';
import { v4 } from 'uuid';
import Keyboard from '../keyboard/Keyboard';
@@ -21,33 +21,42 @@ export default function Input(props: {
const blurRef = useRef<boolean>(false);
const [isFocused, setFocused] = useState(false);
const [showKeyboard, setShowKeyboard] = useState(false);
const [unfocusTimer, setUnfocusTimer] = useState<NodeJS.Timeout | null>(null);
const unfocusTimerRef = useRef<NodeJS.Timeout | null>(null);
const clearUnfocusTimer = useCallback(() => {
if (unfocusTimerRef.current !== null) {
clearTimeout(unfocusTimerRef.current);
unfocusTimerRef.current = null;
}
}, []);
const scheduleUnfocus = useCallback(() => {
clearUnfocusTimer();
unfocusTimerRef.current = setTimeout(() => {
blurRef.current = false;
ref.current?.blur();
}, 5e3);
}, [clearUnfocusTimer]);
useEffect(() => {
if (unfocusTimer) {
clearTimeout(unfocusTimer);
setUnfocusTimer(null);
}
if (isFocused) {
setUnfocusTimer(setTimeout(() => ref.current?.blur(), 5e3));
scheduleUnfocus();
Coherent.trigger('FOCUS_INPUT_FIELD', guid, '', '', '', false);
} else {
console.log('UNFOCUS_INPUT_FIELD');
clearUnfocusTimer();
Coherent.trigger('UNFOCUS_INPUT_FIELD', guid);
}
return () => {
if (unfocusTimer) {
clearTimeout(unfocusTimer);
setUnfocusTimer(null);
}
clearUnfocusTimer();
};
}, [isFocused, guid]);
}, [isFocused, guid, scheduleUnfocus, clearUnfocusTimer]);
return (
<>
<input
id={guid}
ref={ref}
type={props.type ? props.type : 'text'}
min={props.min}
@@ -63,8 +72,9 @@ export default function Input(props: {
}
}}
onBlur={(e) => {
if (blurRef.current && isFocused) ref.current?.focus();
else {
if (blurRef.current && isFocused) {
ref.current?.focus();
} else {
props.onBlur?.(e.target.value);
setShowKeyboard(false);
setFocused(false);
@@ -73,12 +83,12 @@ export default function Input(props: {
blurRef.current = false;
}}
onChange={(e) => {
if (props.onChange) props.onChange(e.target.value);
if (unfocusTimer) {
clearTimeout(unfocusTimer);
setUnfocusTimer(null);
if (props.onChange) {
props.onChange(e.target.value);
}
if (isFocused) {
scheduleUnfocus();
}
if (isFocused) setUnfocusTimer(setTimeout(() => ref.current?.blur(), 5e3));
}}
value={props.value}
className={props.className}
@@ -89,7 +99,13 @@ export default function Input(props: {
top={props.topKeyboard}
value={String(props.value)}
blurRef={blurRef}
onInput={(value) => props.onChange && props.onChange(value)}
onInput={(value) => {
props.onChange && props.onChange(value);
if (isFocused) {
scheduleUnfocus();
}
}}
onClose={() => {
setShowKeyboard(false);
setFocused(false);
@@ -1,5 +1,5 @@
import { ArrowBigUp, Delete, Space, X } from 'lucide-react';
import { forwardRef, RefObject, useState } from 'react';
import { forwardRef, RefObject, useRef, useState } from 'react';
import { createPortal } from 'react-dom';
const defaultLayout = {
@@ -18,6 +18,7 @@ const defaultLayout = {
'{space} {close}',
],
};
const KEY_DEBOUNCE_MS = 150;
const Keyboard = forwardRef<
HTMLDivElement,
@@ -30,11 +31,15 @@ const Keyboard = forwardRef<
}
>(({ value, top, blurRef, onInput, onClose }, ref) => {
const [shift, setShift] = useState(false);
const lastPressAtRef = useRef(0);
const layout = shift ? defaultLayout.shift : defaultLayout.default;
const handleKeyPress = (key: string) => {
console.log('KEY PRESSED', key);
const now = Date.now();
if (now - lastPressAtRef.current < KEY_DEBOUNCE_MS) {
return;
}
lastPressAtRef.current = now;
if (key === '{close}') {
onClose();
@@ -91,9 +96,13 @@ const Keyboard = forwardRef<
className={`flex justify-center rounded-md p-4 ${
key === '{close}' ? 'bg-zinc-700 px-12 focus:bg-zinc-600' : 'flex-1 bg-zinc-600'
}`}
onMouseDown={() => handleKeyPress(key)}
onMouseDown={(e) => {
e.preventDefault();
e.stopPropagation();
handleKeyPress(key);
}}
>
{keyIdent}
<span className='my-auto'></span>{keyIdent}
</button>
);
})}
@@ -103,6 +112,6 @@ const Keyboard = forwardRef<
document.body
);
});
Keyboard.displayName = "Keyboard"
Keyboard.displayName = 'Keyboard';
export default Keyboard;
+1 -1
View File
@@ -20,6 +20,6 @@
/******************************** Constants ********************************/
// Module identification
#define MODULE_NAME "[KHOFMANN TFDi MD-11 Load Manager] "
#define VERSION_STRING "2.40"
#define VERSION_STRING "2.53"
void toLog(FILE *file, const char *format, double *optional = nullptr);
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wasm-module",
"version": "0.0.16",
"version": "0.0.32",
"description": "Load Manager WASM module",
"scripts": {
"clean": "rimraf ../SimObjects/Airplanes/TFDi_Design_MD-11/panel/load-manager.wasm && rimraf MSFS",
@@ -625,26 +625,34 @@ extern "C" MSFS_CALLBACK bool Load_Manager_gauge_update(FsContext ctx, float dT)
if (GSXData->fuelingState == FUELING_STATE_FUELING && abs(liveFuelData->total - targetFuelData->total) < 1) {
GSXData->fuelingState = FUELING_STATE_FUELED;
fuel(targetFuelData, simConnect);
toLog(stdout, "Mainloop: Fueling completed.\n");
}
FuelData_t toSet = {};
// Force set to lower before connection
/*
if (GSXData->fuelingState == FUELING_STATE_CALLED && targetFuelData->total <= liveFuelData->total) {
distribute(&toSet, max(0, targetFuelData->total - 10000), true, UserData->isER);
fuel(&toSet, simConnect);
}
// Fuel
else if (GSXData->fuelingState == FUELING_STATE_FUELING && GSXData->fuelConnected > 0) {
else */
if (GSXData->fuelingState == FUELING_STATE_FUELING && GSXData->fuelConnected > 0) {
if (fuelTimer >= 0.5) {
double step = min(max(abs(targetFuelData->total - liveFuelData->total), 1), FUELING_RATE) * fuelTimer;
distribute(&toSet,
min(targetFuelData->total,
liveFuelData->total + min(max(targetFuelData->total - liveFuelData->total, 1), FUELING_RATE) * fuelTimer),
(targetFuelData->total - liveFuelData->total) > 0 ? min(targetFuelData->total, liveFuelData->total + step)
: max(targetFuelData->total, liveFuelData->total - step),
true, UserData->isER);
fuel(&toSet, simConnect);
toLog(stdout, "Mainloop: Fueling step: %f\n", &step);
fuelTimer = 0;
} else {
fuelTimer += dT;
@@ -1310,6 +1318,8 @@ void CALLBACK MyDispatchProc(SIMCONNECT_RECV *pData, DWORD cbData, void *pContex
GSXData->fuelingState = FUELING_STATE_FUELED;
fuel(targetFuelData, simConnect);
toLog(stdout, "GSX fueling finished, fuel set to plan\n");
break;
}
default:
+1 -1
View File
@@ -5,7 +5,7 @@ void toLog(FILE *file, const char *format, double *optional) {
static bool logFileFailed = false;
if (logFile == NULL) {
logFile = fopen("\\work\\toLog.txt", "w");
logFile = fopen("\\work\\log.txt", "w");
if (logFile == NULL) {
logFileFailed = true;