You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.9 KiB
JavaScript

'use strict';
const dotty = require("dotty");
const asciiDataTable = require("ascii-data-table");
const defaultValue = require("default-value");
const buffertrim = require("buffertrim");
const renderBytes = require("./bytes");
function formatCreationDate(creationDate) {
if (creationDate != null) {
return creationDate.format("llll");
} else {
return "";
}
}
function formatVolumePosition(sequenceNumber, setSize) {
if (sequenceNumber != null) {
return `${sequenceNumber}/${setSize}`;
} else {
return "";
}
}
function formatEncodings(encodings) {
if (encodings != null) {
return encodings.join(", ");
} else {
return "";
}
}
let headers = [
"ID",
"Type",
"System",
"Volume",
"Volume identifier",
"Encoding",
"Extent",
"Creation date"
];
module.exports = function renderVolumeTable(volumeDescriptors) {
let tableData = volumeDescriptors.map((descriptor, i) => {
let volumeIndex = descriptor.volumeDescriptorIndex;
let volumeType = descriptor.type;
let systemIdentifier = defaultValue(descriptor.data.systemIdentifier, "");
let volumeIdentifier = defaultValue(descriptor.data.volumeIdentifier, "");
let extentSector = defaultValue(dotty.get(descriptor, "data.rootDirectory.extentLocation"), "");
let creationDate = formatCreationDate(descriptor.data.creationDate);
let volumePosition = formatVolumePosition(descriptor.data.sequenceNumber, descriptor.data.setSize);
let encodings = formatEncodings(descriptor.data.encodings);
return [
volumeIndex,
volumeType,
systemIdentifier,
volumePosition,
volumeIdentifier,
encodings,
extentSector,
creationDate
];
});
let tableDataWithHeaders = [headers].concat(tableData);
return asciiDataTable.default.run(tableDataWithHeaders);
};