UNPKG

@engine2/efa-utils

Version:

Library for EFA Apps utility functions

147 lines (133 loc) 7.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calcFuelConsumpted = calcFuelConsumpted; exports.default = getFuellingCalculation; var _round = _interopRequireDefault(require("lodash/round")); var _last = _interopRequireDefault(require("lodash/last")); var _mapValues = _interopRequireDefault(require("lodash/fp/mapValues")); var _calcFuelling = _interopRequireDefault(require("./calcFuelling")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function calcFuelConsumpted(prevFob, fobLeftover) { var diff = Number(prevFob) - Number(fobLeftover); if (diff <= 0) { return 0; } else { return (0, _round.default)(diff, 1); } } function generateFuellingInfo(_ref) { var fuelResult = _ref.fuelResult, weightUnitSymbol = _ref.weightUnitSymbol, fuelQuantityDepLeftover = _ref.fuelQuantityDepLeftover, rcmdFuel = _ref.rcmdFuel, prevFobQuantity = _ref.prevFobQuantity, fuelQuantityRequested = _ref.fuelQuantityRequested; return { rcmdFuel: "".concat(rcmdFuel || 'N/A', " ").concat(weightUnitSymbol), fobAtStartOfFuelling: "".concat(fuelQuantityDepLeftover, " ").concat(weightUnitSymbol), fuelQuantityRequested: "".concat(fuelQuantityRequested, " ").concat(weightUnitSymbol), calcRqstUplift: "".concat(fuelResult.fuelWantedConverted, " L / ").concat(fuelResult.fuelWanted, " ").concat(weightUnitSymbol), fuelQuantityConverted: "".concat(fuelResult.fuelActualConverted, " ").concat(weightUnitSymbol), fuelQuantityDiscrepancy: "".concat(fuelResult.discrepancySign, " ").concat(fuelResult.discrepancyPerc, " % / ").concat(fuelResult.discrepancySign, " ").concat(fuelResult.discrepancy, " ").concat(weightUnitSymbol), fuelConsumpted: "".concat(calcFuelConsumpted(prevFobQuantity, fuelQuantityDepLeftover), " ").concat(weightUnitSymbol) }; } function generateDepFuelInfo(_ref2) { var depResults = _ref2.depResults, weightUnitSymbol = _ref2.weightUnitSymbol, fuelQuantityDep = _ref2.fuelQuantityDep, fuelQuantityArr = _ref2.fuelQuantityArr, fuelLeftover = _ref2.fuelLeftover; return { departureFob: "".concat(fuelQuantityDep, " ").concat(weightUnitSymbol), fuelUplift: "".concat(depResults.fuelUplift, " ").concat(weightUnitSymbol), fobAtStartOfFuelling2: "".concat(fuelLeftover, " ").concat(weightUnitSymbol), calcDeparture: "".concat(depResults.departureCalculated, " ").concat(weightUnitSymbol), departureDiscrepancy: "".concat(Math.abs(depResults.depDiscrepancyPerc), " % / ").concat(Math.abs(depResults.depDiscrepancy), " ").concat(weightUnitSymbol), blockFuelConsumption: "".concat(Number(fuelQuantityDep) - Number(fuelQuantityArr), " ").concat(weightUnitSymbol), extraFuel: depResults.extraFuel > 0 ? "".concat(depResults.extraFuel, " ").concat(weightUnitSymbol) : ' - ' }; } function getFuellingCalculation(_ref3) { var fuelQuantityRequested = _ref3.fuelQuantityRequested, fuelQuantityDepLeftover = _ref3.fuelQuantityDepLeftover, fuelQuantity = _ref3.fuelQuantity, fuelDensityCoeficient = _ref3.fuelDensityCoeficient, fuelUnit = _ref3.fuelUnit, weightUnitSymbol = _ref3.weightUnitSymbol, rcmdFuel = _ref3.rcmdFuel, fuelQuantityDep = _ref3.fuelQuantityDep, fuelQuantityArr = _ref3.fuelQuantityArr, _ref3$additionalFuel = _ref3.additionalFuel, additionalFuel = _ref3$additionalFuel === void 0 ? [] : _ref3$additionalFuel; var baseResults = (0, _calcFuelling.default)({ fuelRef: fuelQuantityRequested, fuelPrev: fuelQuantityDepLeftover, convertingCoef: fuelDensityCoeficient, fuelActual: fuelQuantity, fuelActualUnit: fuelUnit, weightUnit: weightUnitSymbol }); var baseInfo = generateFuellingInfo({ rcmdFuel: rcmdFuel, fuelResult: baseResults, fuelQuantityRequested: fuelQuantityRequested, weightUnitSymbol: weightUnitSymbol, prevFobQuantity: 0, fuelQuantityDepLeftover: fuelQuantityDepLeftover }); var baseFobQuantity = Number(baseResults.fuelActualConverted) + Number(fuelQuantityDepLeftover); var additionalFuelResults = additionalFuel.map(function (item) { return (0, _calcFuelling.default)({ fuelRef: fuelQuantityRequested, fuelPrev: item.fuelQuantityDepLeftover, convertingCoef: item.fuelDensityCoeficient, fuelActual: item.fuelQuantity, fuelActualUnit: item.fuelUnit, weightUnit: weightUnitSymbol }); }); var additionalFuelInfo = additionalFuelResults.map(function (item, index) { return generateFuellingInfo({ rcmdFuel: rcmdFuel, fuelResult: item, fuelQuantityRequested: fuelQuantityRequested, weightUnitSymbol: weightUnitSymbol, prevFobQuantity: index > 0 ? Number(additionalFuelResults[index - 1].fuelActualConverted) + Number(additionalFuel[index - 1].fuelQuantityDepLeftover) : baseFobQuantity, fuelQuantityDepLeftover: additionalFuel[index].fuelQuantityDepLeftover }); }); // Calc departure fuel var lastAdditional = (0, _last.default)(additionalFuel); var lastAdditionalResults = (0, _last.default)(additionalFuelResults); var lastLeftover = lastAdditional ? lastAdditional.fuelQuantityDepLeftover : fuelQuantityDepLeftover; var lastUpliftConverted = lastAdditional ? lastAdditionalResults.fuelActualConverted : baseResults.fuelActualConverted; var departureCalculated = Number(lastLeftover) + Number(lastUpliftConverted); var depDiscrepancy = Number(fuelQuantityDep) - departureCalculated; var depDiscrepancyPerc = departureCalculated ? depDiscrepancy / departureCalculated * 100 : 0; var discrepancySign = depDiscrepancy > 0 ? '+' : ''; var extraFuel = Number(fuelQuantityDep) - Number(rcmdFuel); var depResults = (0, _mapValues.default)(function (val) { return typeof val === 'number' ? (0, _round.default)(val, 1) : val; }, { fuelUplift: lastUpliftConverted, departureCalculated: departureCalculated, depDiscrepancy: depDiscrepancy, depDiscrepancyPerc: depDiscrepancyPerc, discrepancySign: discrepancySign, extraFuel: extraFuel > 0 ? extraFuel : 0 }); var depInfo = generateDepFuelInfo({ depResults: depResults, weightUnitSymbol: weightUnitSymbol, fuelQuantityDep: fuelQuantityDep, fuelQuantityArr: fuelQuantityArr, fuelLeftover: lastAdditional ? lastAdditional.fuelQuantityDepLeftover : fuelQuantityDepLeftover }); return _objectSpread({}, baseInfo, { additionalFuel: additionalFuelInfo }, depInfo); }