react-native-console-table
Version:
Display an array of objects (with the same interface) as a table in the terminal.
50 lines (37 loc) • 1.77 kB
text/typescript
import { formationLine } from './formationLine';
import { IPrint } from '../types';
import { signObj } from './dataForTable';
import { formationTitle } from './formationTitle';
/**
* `Вывод таблицы в терминал.`
*/
export const print = (
data: IPrint
) => {
let fullTable: string = '\n';
let sign: string =
data?.options?.sing ? signObj[data.options.sing]
:
'';
const headerLine = data?.options?.sing ? data.dashUp.slice(2) : data.dashUp;
//* Если, есть Title, показываем его.
const titleObj = formationTitle(data.dashCenter, data.options);
if(titleObj && titleObj.title && titleObj.dashTitle) {
const headerTitle = data?.options?.sing ? titleObj.dashTitle.slice(2) : titleObj.dashTitle;
fullTable += sign + headerTitle + '\n'; // + верхняя линия Title
fullTable += titleObj.title + '\n'; // + Title
fullTable += data.dashIfExistTitle + '\n'; // + линия, если есть Title
} else {
fullTable += sign + headerLine + '\n'; // + верхняя линия
}
fullTable += data.header + '\n'; // + шапка таблицы
fullTable += data.dashCenter + '\n'; // + средняя линия
// Строки данных
data.data.forEach((itemObj, index) => {
const lineForLog = formationLine(data.columnLength, itemObj);
fullTable += lineForLog + '\n'; // + строка с данными
if(index !== data.data.length - 1 && data?.options?.isShowLine) fullTable += data.dashCenter + '\n';
});
fullTable += data.dashBottom + '\n'; // + нижняя линия
console.log(fullTable);
}