From 0cb2824073e87f4b6de4a4110614d5c6343dfd2f Mon Sep 17 00:00:00 2001
From: Mouath Ibrahim
Date: Thu, 6 Sep 2018 02:59:04 -0500
Subject: [PATCH] if cmdr is near a body it'll show the distance from said body
to the main star.
---
.eslintrc.json | 3 +-
.jshintrc | 3 +-
edj.filereader.js | 9 +-
edj.getdistance.js | 19 ++
edj.gui.js | 3 +-
edj.logparser.js | 742 +++++++++++++++++++++++----------------------
edj.main.js | 3 +-
index.html | 10 +-
package.json | 2 +-
start.js | 2 +-
10 files changed, 416 insertions(+), 380 deletions(-)
create mode 100644 edj.getdistance.js
diff --git a/.eslintrc.json b/.eslintrc.json
index 526a45f..36b3aee 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -8,6 +8,7 @@
"edjApp": true,
"edjLogparser": true,
"edScoopables": true,
+ "edjGetdistance": true,
"edj": true,
"console": false,
"process": true,
@@ -105,4 +106,4 @@
"off"
]
}
-}
\ No newline at end of file
+}
diff --git a/.jshintrc b/.jshintrc
index 5ad2377..4e36f45 100644
--- a/.jshintrc
+++ b/.jshintrc
@@ -4,6 +4,7 @@
"edjApp": true,
"edjLogparser": true,
"edScoopables": true,
+ "edjGetdistance": true,
"edj": true,
"console": false,
"process": true,
@@ -17,4 +18,4 @@
"unused": true,
"esversion": 6,
"varstmt": true
-}
\ No newline at end of file
+}
diff --git a/edj.filereader.js b/edj.filereader.js
index d81ccf2..c001fc6 100644
--- a/edj.filereader.js
+++ b/edj.filereader.js
@@ -26,6 +26,7 @@ edj = {
sel.removeAllRanges();
sel.addRange(r2);
document.execCommand('copy');
+ //todo: update on new file selection
}
t.contenteditable = false;
},
@@ -49,6 +50,10 @@ edj = {
edj.fileOnLoad(res.target.result);
};
fr.readAsText(edj.lastFile, 'UTF-8');
+ //one file uploaded, stop monitoring for changes.
+ if (_files.length === 1) {
+ return;
+ }
setTimeout(() => {
edj.monitorChanges(_selDir);
}, 1000);
@@ -109,6 +114,8 @@ edj = {
l++;
}
edj.lastLine = l;
+ // assuming parsing is done, go ahead and get the distance
+ edjGetdistance.request(edjdata.player.pos.Body);
edjGui.updateGui();
},
isJson(line) {
@@ -161,4 +168,4 @@ edj = {
const files = await edj.loadLogFiles();
edj.monitorChanges(files);
}
-}());
\ No newline at end of file
+}());
diff --git a/edj.getdistance.js b/edj.getdistance.js
new file mode 100644
index 0000000..e0942a2
--- /dev/null
+++ b/edj.getdistance.js
@@ -0,0 +1,19 @@
+/* edjGui */
+edjGetdistance = {
+ request(sysname) {
+ const req = new XMLHttpRequest();
+ // true parameter denotes asynchronous
+ req.overrideMimeType('application/json');
+ req.open('GET', `https://elitebgs.kodeblox.com/api/eddb/v3/bodies?name=${sysname.toString()}`, true);
+ req.onreadystatechange = function () {
+ if (req.readyState == 4 && req.status == '200') {
+ const jsonResponse = JSON.parse(req.responseText);
+ console.log(jsonResponse.docs[0].distance_to_arrival);
+ edjdata.player.pos.DistanceToArrival = jsonResponse.docs[0].distance_to_arrival;
+ edjGui.updateGui();
+ }
+ };
+ req.send(null);
+ },
+};
+
diff --git a/edj.gui.js b/edj.gui.js
index 1a3b1c0..a21f5ab 100644
--- a/edj.gui.js
+++ b/edj.gui.js
@@ -12,6 +12,7 @@ const edjGui = {
const playerPos = edjGui.get_cmdr_position();
if (playerPos.length > 0) {
document.getElementById('location').innerText = `in ${playerPos.join(', ')}`;
+ document.getElementById('body').innerText = `${edjdata.player.pos.Body} is ${edjdata.player.pos.DistanceToArrival} LS from the primary star.`;
} else {
document.getElementById('location').innerText = 'at an unknown position';
}
@@ -38,4 +39,4 @@ const edjGui = {
return items;
},
-};
\ No newline at end of file
+};
diff --git a/edj.logparser.js b/edj.logparser.js
index c12177d..ac7e471 100644
--- a/edj.logparser.js
+++ b/edj.logparser.js
@@ -1,374 +1,376 @@
edjLogparser = {
- parseLogLine(line) {
- if (edj.isJson(line)) {
- const logItem = JSON.parse(line);
- switch (logItem.event) {
- case 'Continued':
- // TODO: Handle continued logs
- break;
- case 'AfmuRepairs':
- case 'ApproachBody':
- case 'ApproachSettlement':
- case 'BuyAmmo':
- case 'BuyDrones':
- case 'Bounty':
- case 'BuyExplorationData':
- case 'BuyTradeData':
- case 'CapShipBond':
- case 'Cargo':
- case 'CargoDepot':
- case 'ChangeCrewRole':
- case 'CollectCargo':
- case 'CommunityGoal':
- case 'CommunityGoalDiscard':
- case 'CommunityGoalJoin':
- case 'CommunityGoalReward':
- case 'ClearSavedGame':
- case 'CrewAssign':
- case 'CrewFire':
- case 'CrewHire':
- case 'CrewLaunchFighter':
- case 'CrewMemberJoins':
- case 'CrewMemberQuits':
- case 'CrewMemberRoleChange':
- case 'DatalinkScan':
- case 'DatalinkVoucher':
- case 'DataScanned':
- case 'DockFigher':
- case 'DockSRV':
+ parseLogLine(line) {
+ if (edj.isJson(line)) {
+ const logItem = JSON.parse(line);
+ switch (logItem.event) {
+ case 'Continued':
+ // TODO: Handle continued logs
+ break;
+ case 'AfmuRepairs':
+ case 'ApproachBody':
+ console.log(line);
+ break;
+ case 'ApproachSettlement':
+ case 'BuyAmmo':
+ case 'BuyDrones':
+ case 'Bounty':
+ case 'BuyExplorationData':
+ case 'BuyTradeData':
+ case 'CapShipBond':
+ case 'Cargo':
+ case 'CargoDepot':
+ case 'ChangeCrewRole':
+ case 'CollectCargo':
+ case 'CommunityGoal':
+ case 'CommunityGoalDiscard':
+ case 'CommunityGoalJoin':
+ case 'CommunityGoalReward':
+ case 'ClearSavedGame':
+ case 'CrewAssign':
+ case 'CrewFire':
+ case 'CrewHire':
+ case 'CrewLaunchFighter':
+ case 'CrewMemberJoins':
+ case 'CrewMemberQuits':
+ case 'CrewMemberRoleChange':
+ case 'DatalinkScan':
+ case 'DatalinkVoucher':
+ case 'DataScanned':
+ case 'DockFigher':
+ case 'DockSRV':
- case 'EjectCargo':
- case 'EndCrewSession':
- case 'EngineerApply':
- case 'EngineerContribution':
- case 'EngineerCraft':
- case 'EngineerLegacyConvert':
- case 'EngineerProgress':
- case 'FactionKillBond':
- case 'FetchRemoteModule':
- case 'FighterDestroyed':
- case 'FighterRebuilt':
- case 'Fileheader':
- case 'Friends':
- case 'Interdiction':
- case 'HeatWarning':
- case 'JetConeBoost':
- case 'JetConeDamage':
- case 'JoinACrew':
- case 'KickCrewMember':
- case 'MarketBuy':
- case 'MarketSell':
- case 'MassModuleStore':
- case 'MiningRefined':
- case 'MissionAccepted':
- case 'MissionAbandoned':
- case 'MissionCompleted':
- case 'MissionFailed':
- case 'MissionRedirected':
- case 'Missions':
- case 'ModuleInfo':
- case 'ModuleBuy':
- case 'ModuleRetrieve':
- case 'ModuleSell':
- case 'ModuleSellRemote':
- case 'ModuleStore':
- case 'ModuleSwap':
- case 'NavBeaconScan':
- case 'NewCommander':
- case 'NpcCrewPaidWage':
- case 'NpcCrewRank':
- case 'LaunchDrone':
- case 'LaunchFighter':
- case 'LaunchSRV':
- case 'LeaveBody':
- case 'Outfitting':
- case 'Passengers':
- case 'PayBounties':
- case 'PayFines':
- case 'PayLegacyFines':
- case 'Powerplay':
- case 'PowerplayCollect':
- case 'PowerplayDefect':
- case 'PowerplayDeliver':
- case 'PowerplayFastTrack':
- case 'PowerplayJoin':
- case 'PowerplayLeave':
- case 'PowerplaySalary':
- case 'PowerplayVote':
- case 'PowerplayVoucher':
- case 'Promotion':
- case 'PVPKill':
- case 'QuitACrew':
- case 'RebootRepair':
- case 'RedeemVoucher':
- case 'Repair':
- case 'RepairDrone':
- case 'RepairAll':
- case 'Reputation':
- case 'Ressurect':
- case 'RestockVehicle':
- case 'Scan':
- case 'Scanned':
- case 'ScientificResearch':
- case 'Screenshot':
- case 'SearchAndRescue':
- case 'SellExplorationData':
- case 'SellDrones':
- case 'SellShipOnRebuy':
- case 'SetUserShipName':
- case 'Shipyard':
- case 'ShipyardBuy':
- case 'ShipyardNew':
- case 'ShipyardSell':
- case 'ShipyardTransfer':
- case 'ShipyardSwap':
- case 'ShipTargeted':
- case 'Shutdown':
- case 'Statistics':
- case 'StoredShips':
- case 'StoredModules':
- case 'TechnologyBroker':
- case 'Touchdown':
- case 'UnderAttack':
- case 'USSDrop':
- case 'VehicleSwitch':
- // We'll just ignore these events, since they contain nothing funny at the moment.
- console.log(line);
- break;
- case 'DiscoveryScan':
- case 'Music':
- break;
- case 'Died':
- // TODO: Notification about client dead
- console.log(logItem);
- break;
- case 'EscapeInterdiction':
- console.log(logItem);
- break;
- case 'HeatDamage':
- console.log(logItem);
- break;
- case 'HullDamage':
- console.log(logItem);
- break;
- case 'Interdicted':
- console.log(logItem);
- break;
- case 'Commander':
- edjdata.player.cmdr = {
- Commander: logItem.Name
- };
- break;
- case 'CommitCrime':
- console.log(logItem);
- break;
- case 'CockpitBreached':
- console.log(logItem);
- break;
- case 'LoadGame':
- delete logItem.event;
- delete logItem.timestamp;
- edjdata.player.cmdr = logItem;
- if (typeof logItem.FuelCapacity !== 'undefined') {
- edjdata.player.fuel.max = logItem.FuelCapacity;
- }
- if (typeof logItem.FuelLevel !== 'undefined') {
- edjdata.player.fuel.current = logItem.FuelLevel;
- }
- edjdata.gamemode = logItem.GameMode;
- break;
- case 'Location':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...logItem
- };
- break;
- case 'StartJump':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...logItem
- };
- edjdata.player.pos.Docked = false;
- edjdata.player.pos.Body = null;
- edjdata.player.pos.StarPos = null;
- edjdata.player.pos.BodyType = null;
- edjdata.player.pos.Scoopable = edScoopables.findIndex((item) => item === logItem.StarClass) !== -1;
- break;
- case 'FSDJump':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...logItem
- };
- edjdata.player.pos.Docked = false;
- edjdata.player.pos.Body = null;
- edjdata.player.pos.BodyType = null;
- if (typeof logItem.FuelLevel !== 'undefined') {
- edjdata.player.fuel.current = logItem.FuelLevel;
- }
- break;
- case 'Shipyard':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...{
- StarSystem: logItem.StarSystem,
- Body: logItem.StationName
- }
- };
- break;
- case 'Market':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...{
- StarSystem: logItem.StarSystem,
- Body: logItem.StationName
- }
- };
- break;
- case 'ShieldState':
- console.log(logItem);
- break;
- case 'FuelScoop':
- edjdata.player.fuel.current = logItem.Total;
- break;
- case 'RefuelAll':
- edjdata.player.fuel.current = edjdata.player.fuel.max;
- break;
- case 'RefuelPartial':
- console.log(logItem);
- break;
- case 'SupercruiseEntry':
- edjdata.player.pos.Docked = false;
- edjdata.player.pos.Body = null;
- edjdata.player.pos.BodyType = null;
- edjdata.player.pos.SuperCruise = true;
- break;
- case 'SupercruiseExit':
- edjdata.player.pos.Docked = false;
- edjdata.player.pos.Body = null;
- edjdata.player.pos.BodyType = null;
- edjdata.player.pos.SuperCruise = false;
- break;
- case 'Undocked':
- edjdata.player.pos.Docked = false;
- edjdata.player.pos.Body = null;
- edjdata.player.pos.BodyType = null;
- break;
- case 'Docked':
- edjdata.player.pos = {
- ...edjdata.player.pos,
- ...logItem
- };
- edjdata.player.pos.Docked = true;
- edjdata.player.pos.Body = logItem.StationName;
- edjdata.player.pos.BodyType = logItem.StationType;
- edjdata.player.pos.SuperCruise = false;
- break;
- case 'DockingCancelled':
- console.log(logItem);
- break;
- case 'DockingDenied':
- console.log(logItem);
- break;
- case 'DockingTimeout':
- console.log(logItem);
- break;
- case 'DockingRequested':
- // TODO: Add notification to client-kiwi that they have reached a station
- console.log(logItem);
- break;
- case 'DockingGranted':
- // TODO: See above
- console.log(logItem);
- break;
- case 'Rank':
- edjdata.player.rank.cqc.rank = logItem.CQC;
- edjdata.player.rank.combat.rank = logItem.Combat;
- edjdata.player.rank.empire.rank = logItem.Empire;
- edjdata.player.rank.explore.rank = logItem.Explore;
- edjdata.player.rank.federation.rank = logItem.Federation;
- edjdata.player.rank.trade.rank = logItem.Trade;
- break;
- case 'Progress':
- edjdata.player.rank.cqc.progress = logItem.CQC;
- edjdata.player.rank.combat.progress = logItem.Combat;
- edjdata.player.rank.empire.progress = logItem.Empire;
- edjdata.player.rank.explore.progress = logItem.Explore;
- edjdata.player.rank.federation.progress = logItem.Federation;
- edjdata.player.rank.trade.progress = logItem.Trade;
- break;
- case 'Loadout':
- // We want to see what type of ship the user is using.
- console.log(logItem);
- break;
- case 'SRVDestroyed':
- console.log(logItem);
- break;
- case 'SendText':
- case 'ReceiveText':
- // TODO: Add a chatbox, where you can see all communication
- console.log(logItem);
- break;
- case 'Materials':
- let hasIronForSynth = false;
- let hasNickelForSynth = false;
+ case 'EjectCargo':
+ case 'EndCrewSession':
+ case 'EngineerApply':
+ case 'EngineerContribution':
+ case 'EngineerCraft':
+ case 'EngineerLegacyConvert':
+ case 'EngineerProgress':
+ case 'FactionKillBond':
+ case 'FetchRemoteModule':
+ case 'FighterDestroyed':
+ case 'FighterRebuilt':
+ case 'Fileheader':
+ case 'Friends':
+ case 'Interdiction':
+ case 'HeatWarning':
+ case 'JetConeBoost':
+ case 'JetConeDamage':
+ case 'JoinACrew':
+ case 'KickCrewMember':
+ case 'MarketBuy':
+ case 'MarketSell':
+ case 'MassModuleStore':
+ case 'MiningRefined':
+ case 'MissionAccepted':
+ case 'MissionAbandoned':
+ case 'MissionCompleted':
+ case 'MissionFailed':
+ case 'MissionRedirected':
+ case 'Missions':
+ case 'ModuleInfo':
+ case 'ModuleBuy':
+ case 'ModuleRetrieve':
+ case 'ModuleSell':
+ case 'ModuleSellRemote':
+ case 'ModuleStore':
+ case 'ModuleSwap':
+ case 'NavBeaconScan':
+ case 'NewCommander':
+ case 'NpcCrewPaidWage':
+ case 'NpcCrewRank':
+ case 'LaunchDrone':
+ case 'LaunchFighter':
+ case 'LaunchSRV':
+ case 'LeaveBody':
+ case 'Outfitting':
+ case 'Passengers':
+ case 'PayBounties':
+ case 'PayFines':
+ case 'PayLegacyFines':
+ case 'Powerplay':
+ case 'PowerplayCollect':
+ case 'PowerplayDefect':
+ case 'PowerplayDeliver':
+ case 'PowerplayFastTrack':
+ case 'PowerplayJoin':
+ case 'PowerplayLeave':
+ case 'PowerplaySalary':
+ case 'PowerplayVote':
+ case 'PowerplayVoucher':
+ case 'Promotion':
+ case 'PVPKill':
+ case 'QuitACrew':
+ case 'RebootRepair':
+ case 'RedeemVoucher':
+ case 'Repair':
+ case 'RepairDrone':
+ case 'RepairAll':
+ case 'Reputation':
+ case 'Ressurect':
+ case 'RestockVehicle':
+ case 'Scan':
+ case 'Scanned':
+ case 'ScientificResearch':
+ case 'Screenshot':
+ case 'SearchAndRescue':
+ case 'SellExplorationData':
+ case 'SellDrones':
+ case 'SellShipOnRebuy':
+ case 'SetUserShipName':
+ case 'Shipyard':
+ case 'ShipyardBuy':
+ case 'ShipyardNew':
+ case 'ShipyardSell':
+ case 'ShipyardTransfer':
+ case 'ShipyardSwap':
+ case 'ShipTargeted':
+ case 'Shutdown':
+ case 'Statistics':
+ case 'StoredShips':
+ case 'StoredModules':
+ case 'TechnologyBroker':
+ case 'Touchdown':
+ case 'UnderAttack':
+ case 'USSDrop':
+ case 'VehicleSwitch':
+ // We'll just ignore these events, since they contain nothing funny at the moment.
+ console.log(line);
+ break;
+ case 'DiscoveryScan':
+ case 'Music':
+ break;
+ case 'Died':
+ // TODO: Notification about client dead
+ console.log(logItem);
+ break;
+ case 'EscapeInterdiction':
+ console.log(logItem);
+ break;
+ case 'HeatDamage':
+ console.log(logItem);
+ break;
+ case 'HullDamage':
+ console.log(logItem);
+ break;
+ case 'Interdicted':
+ console.log(logItem);
+ break;
+ case 'Commander':
+ edjdata.player.cmdr = {
+ Commander: logItem.Name,
+ };
+ break;
+ case 'CommitCrime':
+ console.log(logItem);
+ break;
+ case 'CockpitBreached':
+ console.log(logItem);
+ break;
+ case 'LoadGame':
+ delete logItem.event;
+ delete logItem.timestamp;
+ edjdata.player.cmdr = logItem;
+ if (typeof logItem.FuelCapacity !== 'undefined') {
+ edjdata.player.fuel.max = logItem.FuelCapacity;
+ }
+ if (typeof logItem.FuelLevel !== 'undefined') {
+ edjdata.player.fuel.current = logItem.FuelLevel;
+ }
+ edjdata.gamemode = logItem.GameMode;
+ break;
+ case 'Location':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...logItem,
+ };
+ break;
+ case 'StartJump':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...logItem,
+ };
+ edjdata.player.pos.Docked = false;
+ edjdata.player.pos.Body = null;
+ edjdata.player.pos.StarPos = null;
+ edjdata.player.pos.BodyType = null;
+ edjdata.player.pos.Scoopable = edScoopables.findIndex((item) => item === logItem.StarClass) !== -1;
+ break;
+ case 'FSDJump':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...logItem,
+ };
+ edjdata.player.pos.Docked = false;
+ edjdata.player.pos.Body = null;
+ edjdata.player.pos.BodyType = null;
+ if (typeof logItem.FuelLevel !== 'undefined') {
+ edjdata.player.fuel.current = logItem.FuelLevel;
+ }
+ break;
+ case 'Shipyard':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...{
+ StarSystem: logItem.StarSystem,
+ Body: logItem.StationName,
+ },
+ };
+ break;
+ case 'Market':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...{
+ StarSystem: logItem.StarSystem,
+ Body: logItem.StationName,
+ },
+ };
+ break;
+ case 'ShieldState':
+ console.log(logItem);
+ break;
+ case 'FuelScoop':
+ edjdata.player.fuel.current = logItem.Total;
+ break;
+ case 'RefuelAll':
+ edjdata.player.fuel.current = edjdata.player.fuel.max;
+ break;
+ case 'RefuelPartial':
+ console.log(logItem);
+ break;
+ case 'SupercruiseEntry':
+ edjdata.player.pos.Docked = false;
+ edjdata.player.pos.Body = null;
+ edjdata.player.pos.BodyType = null;
+ edjdata.player.pos.SuperCruise = true;
+ break;
+ case 'SupercruiseExit':
+ edjdata.player.pos.Docked = false;
+ edjdata.player.pos.Body = logItem.Body;
+ edjdata.player.pos.BodyType = logItem.BodyType;
+ edjdata.player.pos.SuperCruise = false;
+ break;
+ case 'Undocked':
+ edjdata.player.pos.Docked = false;
+ edjdata.player.pos.Body = null;
+ edjdata.player.pos.BodyType = null;
+ break;
+ case 'Docked':
+ edjdata.player.pos = {
+ ...edjdata.player.pos,
+ ...logItem,
+ };
+ edjdata.player.pos.Docked = true;
+ edjdata.player.pos.Body = logItem.StationName;
+ edjdata.player.pos.BodyType = logItem.StationType;
+ edjdata.player.pos.SuperCruise = false;
+ break;
+ case 'DockingCancelled':
+ console.log(logItem);
+ break;
+ case 'DockingDenied':
+ console.log(logItem);
+ break;
+ case 'DockingTimeout':
+ console.log(logItem);
+ break;
+ case 'DockingRequested':
+ // TODO: Add notification to client-kiwi that they have reached a station
+ console.log(logItem);
+ break;
+ case 'DockingGranted':
+ // TODO: See above
+ console.log(logItem);
+ break;
+ case 'Rank':
+ edjdata.player.rank.cqc.rank = logItem.CQC;
+ edjdata.player.rank.combat.rank = logItem.Combat;
+ edjdata.player.rank.empire.rank = logItem.Empire;
+ edjdata.player.rank.explore.rank = logItem.Explore;
+ edjdata.player.rank.federation.rank = logItem.Federation;
+ edjdata.player.rank.trade.rank = logItem.Trade;
+ break;
+ case 'Progress':
+ edjdata.player.rank.cqc.progress = logItem.CQC;
+ edjdata.player.rank.combat.progress = logItem.Combat;
+ edjdata.player.rank.empire.progress = logItem.Empire;
+ edjdata.player.rank.explore.progress = logItem.Explore;
+ edjdata.player.rank.federation.progress = logItem.Federation;
+ edjdata.player.rank.trade.progress = logItem.Trade;
+ break;
+ case 'Loadout':
+ // We want to see what type of ship the user is using.
+ console.log(logItem);
+ break;
+ case 'SRVDestroyed':
+ console.log(logItem);
+ break;
+ case 'SendText':
+ case 'ReceiveText':
+ // TODO: Add a chatbox, where you can see all communication
+ console.log(logItem);
+ break;
+ case 'Materials':
+ let hasIronForSynth = false;
+ let hasNickelForSynth = false;
- for (let index = 0; index < logItem.Raw.length; index++) {
- const element = logItem.Raw[index];
- if (element.Name === 'iron' && element.Count >= 2) {
- hasIronForSynth = true;
- } else if (element.Name === 'nickel' && element.Count >= 1) {
- hasNickelForSynth = true;
- }
- }
-
- edjdata.cansynthesizelifesupport = (hasIronForSynth && hasNickelForSynth);
- edjdata.player.materials = {
- ...edjdata.player.materials,
- ...{
- Raw: logItem.Raw,
- Manufactured: logItem.Manufactured
- }
- };
- break;
- case 'SelfDestruct':
- console.log(logItem);
- break;
- case 'SystemsShutdown':
- console.log(logItem);
- break;
- case 'MaterialTrade':
- console.log(logItem);
- break;
- case 'MaterialCollected':
- // TODO: Increase the stored materials, and update the `cansynthesizelifesupport`-variable
- console.log(logItem);
- break;
- case 'MaterialDiscovered':
- console.log(logItem);
- break;
- case 'MaterialDiscarded':
- console.log(logItem);
- break;
- case 'Synthesis':
- // TODO: Decrease the stored materials, and update the `cansynthesizelifesupport`-variable
- console.log(logItem);
- break;
- case 'WingAdd':
- console.log(logItem);
- break;
- case 'WingInvite':
- console.log(logItem);
- break;
- case 'WingLeave':
- console.log(logItem);
- break;
- case 'WingJoin':
- console.log(logItem);
- break;
- default:
- console.log(line);
- break;
+ for (let index = 0; index < logItem.Raw.length; index++) {
+ const element = logItem.Raw[index];
+ if (element.Name === 'iron' && element.Count >= 2) {
+ hasIronForSynth = true;
+ } else if (element.Name === 'nickel' && element.Count >= 1) {
+ hasNickelForSynth = true;
}
- }
- },
-};
\ No newline at end of file
+ }
+
+ edjdata.cansynthesizelifesupport = (hasIronForSynth && hasNickelForSynth);
+ edjdata.player.materials = {
+ ...edjdata.player.materials,
+ ...{
+ Raw: logItem.Raw,
+ Manufactured: logItem.Manufactured,
+ },
+ };
+ break;
+ case 'SelfDestruct':
+ console.log(logItem);
+ break;
+ case 'SystemsShutdown':
+ console.log(logItem);
+ break;
+ case 'MaterialTrade':
+ console.log(logItem);
+ break;
+ case 'MaterialCollected':
+ // TODO: Increase the stored materials, and update the `cansynthesizelifesupport`-variable
+ console.log(logItem);
+ break;
+ case 'MaterialDiscovered':
+ console.log(logItem);
+ break;
+ case 'MaterialDiscarded':
+ console.log(logItem);
+ break;
+ case 'Synthesis':
+ // TODO: Decrease the stored materials, and update the `cansynthesizelifesupport`-variable
+ console.log(logItem);
+ break;
+ case 'WingAdd':
+ console.log(logItem);
+ break;
+ case 'WingInvite':
+ console.log(logItem);
+ break;
+ case 'WingLeave':
+ console.log(logItem);
+ break;
+ case 'WingJoin':
+ console.log(logItem);
+ break;
+ default:
+ console.log(line);
+ break;
+ }
+ }
+ },
+};
diff --git a/edj.main.js b/edj.main.js
index d941faa..1a05a62 100644
--- a/edj.main.js
+++ b/edj.main.js
@@ -37,6 +37,7 @@ edjdata = {
Docked: true,
Body: null,
BodyType: null,
+ DistanceToArrival: 0,
StarPos: null,
Scoopable: null,
Supercruise: null,
@@ -62,4 +63,4 @@ if (edjApp.is_electron) {
document.querySelector('.winpathButton').addEventListener('click', () => {
edj.copyFilePath('#winpath');
});
-}
\ No newline at end of file
+}
diff --git a/index.html b/index.html
index 3a3b009..9fa8b4c 100644
--- a/index.html
+++ b/index.html
@@ -2,7 +2,6 @@
-
Elite Dangerous: Journal Reader
@@ -32,9 +31,13 @@ Welcome Commander
CMDR <Load the journal>
<Load the journal>
+
+
+
+
Fuel Level:
+
@@ -44,6 +47,7 @@ Welcome Commander
+
-