UNPKG

diving-decompression

Version:

Exposes methods for defining/calculating diving decompression schedules/protocols based on the US Navy dive manual revision 7

130 lines (129 loc) 4.71 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = __importDefault(require("lodash")); const usnavy_deco_rev7_1 = __importDefault(require("./tables/usnavy-deco-rev7")); const usnavy_nodeco_rev7_1 = __importDefault(require("./tables/usnavy-nodeco-rev7")); const usnavy_repetGroupLetter_1 = __importDefault(require("./tables/usnavy-repetGroupLetter")); const usnavy_rnt_1 = __importDefault(require("./tables/usnavy-rnt")); exports.noDecompressionLimit = ({ depth }) => { const row = lodash_1.default.find(usnavy_nodeco_rev7_1.default.tableData, (element) => { return element.minfsw <= depth && depth <= element.maxfsw; }); if (row) { return row.noStopLimit; } else { return undefined; } }; exports.groupLetter = ({ depth, bottomTime }) => { const row = lodash_1.default.find(usnavy_nodeco_rev7_1.default.tableData, (element) => { return element.minfsw <= depth && depth <= element.maxfsw; }); if (row) { const group = lodash_1.default.find(row.values, (element) => { return element.minTime <= bottomTime && bottomTime <= element.maxTime; }); if (group) { return group.groupLetter; } else { return undefined; } } else { return undefined; } }; exports.repetLetter = ({ bottomTime, depth, sit }) => { const row = lodash_1.default.find(usnavy_nodeco_rev7_1.default.tableData, (element) => { return element.minfsw <= depth && depth <= element.maxfsw; }); if (row) { const group = lodash_1.default.find(row.values, (element) => { return element.minTime <= bottomTime && bottomTime <= element.maxTime; }); if (group) { const repet = lodash_1.default.find(usnavy_repetGroupLetter_1.default.tableData, (element) => { return element.groupLetter === group.groupLetter && element.minTime <= sit && sit <= element.maxTime; }); if (repet) { return repet.repetLetter; } else { return undefined; } } else { return undefined; } } else { return undefined; } }; exports.residualNitrogenTime = ({ bottomTime, depth, sit, nextDepth }) => { const row = lodash_1.default.find(usnavy_nodeco_rev7_1.default.tableData, (element) => { return element.minfsw <= depth && depth <= element.maxfsw; }); if (row) { const group = lodash_1.default.find(row.values, (element) => { return element.minTime <= bottomTime && bottomTime <= element.maxTime; }); if (group) { const repet = lodash_1.default.find(usnavy_repetGroupLetter_1.default.tableData, (element) => { return element.groupLetter === group.groupLetter && element.minTime <= sit && sit <= element.maxTime; }); if (repet) { const column = lodash_1.default.find(usnavy_rnt_1.default.tableData, (element) => { return element.repetLetter === repet.repetLetter; }); if (column) { const rnt = lodash_1.default.find(column.rnt, (element) => { return element.minDepth <= nextDepth && nextDepth <= element.maxDepth; }); if (rnt && rnt.rnt === 0) { return usnavy_rnt_1.default.tableNote9981; } else if (rnt && rnt.rnt > 0) { return rnt.rnt; } } else { return undefined; } } else { return undefined; } } else { return undefined; } } else { return undefined; } }; exports.decoDive = ({ bottomTime, depth }) => { const table = lodash_1.default.find(usnavy_deco_rev7_1.default.tableData, (element) => { return element.minfsw <= depth && depth <= element.maxfsw; }); if (table) { const decoProfile = lodash_1.default.find(table.rows, (element) => { return element.minTime <= bottomTime && bottomTime <= element.maxTime; }); if (decoProfile) { return decoProfile; } else { return 'no deco profile Found'; } } else { return 'No Table Found'; } };