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
JavaScript
;
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';
}
};