UNPKG

@tamara027/lerna-terminal

Version:
85 lines (69 loc) 2.18 kB
/* eslint no-console: 0*/ 'use strict'; var getFilledArray = require('../getFilledArray'); var _require = require('../store'), getState = _require.getState, getUiState = _require.getUiState; var _require2 = require('../getTerminalPanel'), getTerminalPanel = _require2.getTerminalPanel; var mergePanelsRow = require('../mergePanelsRow'); var _require3 = require('../getDimensions'), getDimensions = _require3.getDimensions; /** * @param {number} amountOfProcesses - amount of processes * @returns {void} **/ function getColumnsAndRows(amountOfProcesses) { var columns = Math.ceil(amountOfProcesses / 2); if (amountOfProcesses === 2) { columns = 2; } else if (amountOfProcesses === 9) { columns = 3; } else if (amountOfProcesses >= 10) { columns = 4; } return { columns: columns, rows: Math.ceil(amountOfProcesses / columns) }; } /** * @returns {void} **/ function renderAllPanels() { var currentState = Object.assign({}, getState()); var dimensions = getDimensions(); var stateKeys = Object.keys(currentState); var _getColumnsAndRows = getColumnsAndRows(stateKeys.length), columns = _getColumnsAndRows.columns, rows = _getColumnsAndRows.rows; var panelWidth = parseInt(dimensions.width / columns, 10); var panelHeight = parseInt(dimensions.height / rows, 10) - 1; var renderArrInner = getFilledArray(columns, ''); var renderArr = getFilledArray(rows, renderArrInner); // map panel into row structure var counterColumn = 0; var counterRow = 0; stateKeys.forEach(function (packageName) { if (!currentState[packageName].log) { return; } renderArr[counterRow][counterColumn] = getTerminalPanel({ width: panelWidth, height: panelHeight, title: packageName, lines: currentState[packageName].log, isRunning: currentState[packageName].terminal.isRunning }); counterColumn += 1; if (counterColumn >= columns) { counterColumn = 0; counterRow += 1; } }); getUiState().print(renderArr.map(function (panelRow) { return mergePanelsRow(panelRow, panelHeight).join('\n'); }).join('') + '\n'); } module.exports = renderAllPanels; module.exports.getColumnsAndRows = getColumnsAndRows;