UNPKG

opennms

Version:

Client API for the OpenNMS network monitoring platform

1 lines 21.9 kB
{"remainingRequest":"/data/node_modules/babel-loader/lib/index.js!/data/node_modules/cli-table2/src/layout-manager.js","dependencies":[{"path":"/data/node_modules/cli-table2/src/layout-manager.js","mtime":1553611387012},{"path":"/data/.babelrc","mtime":1553611371556},{"path":"/data/node_modules/cache-loader/dist/cjs.js","mtime":1553611387012},{"path":"/data/node_modules/babel-loader/lib/index.js","mtime":1553611386992}],"contextDependencies":[],"result":["'use strict';\n\nvar _ = require('lodash');\nvar Cell = require('./cell');\nvar RowSpanCell = Cell.RowSpanCell;\nvar ColSpanCell = Cell.ColSpanCell;\n\n(function () {\n function layoutTable(table) {\n _.forEach(table, function (row, rowIndex) {\n _.forEach(row, function (cell, columnIndex) {\n cell.y = rowIndex;\n cell.x = columnIndex;\n for (var y = rowIndex; y >= 0; y--) {\n var row2 = table[y];\n var xMax = y === rowIndex ? columnIndex : row2.length;\n for (var x = 0; x < xMax; x++) {\n var cell2 = row2[x];\n while (cellsConflict(cell, cell2)) {\n cell.x++;\n }\n }\n }\n });\n });\n }\n\n function maxWidth(table) {\n var mw = 0;\n _.forEach(table, function (row) {\n _.forEach(row, function (cell) {\n mw = Math.max(mw, cell.x + (cell.colSpan || 1));\n });\n });\n return mw;\n }\n\n function maxHeight(table) {\n return table.length;\n }\n\n function cellsConflict(cell1, cell2) {\n var yMin1 = cell1.y;\n var yMax1 = cell1.y - 1 + (cell1.rowSpan || 1);\n var yMin2 = cell2.y;\n var yMax2 = cell2.y - 1 + (cell2.rowSpan || 1);\n var yConflict = !(yMin1 > yMax2 || yMin2 > yMax1);\n\n var xMin1 = cell1.x;\n var xMax1 = cell1.x - 1 + (cell1.colSpan || 1);\n var xMin2 = cell2.x;\n var xMax2 = cell2.x - 1 + (cell2.colSpan || 1);\n var xConflict = !(xMin1 > xMax2 || xMin2 > xMax1);\n\n return yConflict && xConflict;\n }\n\n function conflictExists(rows, x, y) {\n var i_max = Math.min(rows.length - 1, y);\n var cell = { x: x, y: y };\n for (var i = 0; i <= i_max; i++) {\n var row = rows[i];\n for (var j = 0; j < row.length; j++) {\n if (cellsConflict(cell, row[j])) {\n return true;\n }\n }\n }\n return false;\n }\n\n function allBlank(rows, y, xMin, xMax) {\n for (var x = xMin; x < xMax; x++) {\n if (conflictExists(rows, x, y)) {\n return false;\n }\n }\n return true;\n }\n\n function addRowSpanCells(table) {\n _.forEach(table, function (row, rowIndex) {\n _.forEach(row, function (cell) {\n for (var i = 1; i < cell.rowSpan; i++) {\n var rowSpanCell = new RowSpanCell(cell);\n rowSpanCell.x = cell.x;\n rowSpanCell.y = cell.y + i;\n rowSpanCell.colSpan = cell.colSpan;\n insertCell(rowSpanCell, table[rowIndex + i]);\n }\n });\n });\n }\n\n function addColSpanCells(cellRows) {\n for (var rowIndex = cellRows.length - 1; rowIndex >= 0; rowIndex--) {\n var cellColumns = cellRows[rowIndex];\n for (var columnIndex = 0; columnIndex < cellColumns.length; columnIndex++) {\n var cell = cellColumns[columnIndex];\n for (var k = 1; k < cell.colSpan; k++) {\n var colSpanCell = new ColSpanCell();\n colSpanCell.x = cell.x + k;\n colSpanCell.y = cell.y;\n cellColumns.splice(columnIndex + 1, 0, colSpanCell);\n }\n }\n }\n }\n\n function insertCell(cell, row) {\n var x = 0;\n while (x < row.length && row[x].x < cell.x) {\n x++;\n }\n row.splice(x, 0, cell);\n }\n\n function fillInTable(table) {\n var h_max = maxHeight(table);\n var w_max = maxWidth(table);\n for (var y = 0; y < h_max; y++) {\n for (var x = 0; x < w_max; x++) {\n if (!conflictExists(table, x, y)) {\n var opts = { x: x, y: y, colSpan: 1, rowSpan: 1 };\n x++;\n while (x < w_max && !conflictExists(table, x, y)) {\n opts.colSpan++;\n x++;\n }\n var y2 = y + 1;\n while (y2 < h_max && allBlank(table, y2, opts.x, opts.x + opts.colSpan)) {\n opts.rowSpan++;\n y2++;\n }\n\n var cell = new Cell(opts);\n cell.x = opts.x;\n cell.y = opts.y;\n insertCell(cell, table[y]);\n }\n }\n }\n }\n\n function generateCells(rows) {\n return _.map(rows, function (row) {\n if (!_.isArray(row)) {\n var key = Object.keys(row)[0];\n row = row[key];\n if (_.isArray(row)) {\n row = row.slice();\n row.unshift(key);\n } else {\n row = [key, row];\n }\n }\n return _.map(row, function (cell) {\n return new Cell(cell);\n });\n });\n }\n\n function makeTableLayout(rows) {\n var cellRows = generateCells(rows);\n layoutTable(cellRows);\n fillInTable(cellRows);\n addRowSpanCells(cellRows);\n addColSpanCells(cellRows);\n return cellRows;\n }\n\n module.exports = {\n makeTableLayout: makeTableLayout,\n layoutTable: layoutTable,\n addRowSpanCells: addRowSpanCells,\n maxWidth: maxWidth,\n fillInTable: fillInTable,\n computeWidths: makeComputeWidths('colSpan', 'desiredWidth', 'x', 1),\n computeHeights: makeComputeWidths('rowSpan', 'desiredHeight', 'y', 1)\n };\n})();\n\nfunction makeComputeWidths(colSpan, desiredWidth, x, forcedMin) {\n return function (vals, table) {\n var result = [];\n var spanners = [];\n _.forEach(table, function (row) {\n _.forEach(row, function (cell) {\n if ((cell[colSpan] || 1) > 1) {\n spanners.push(cell);\n } else {\n result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin);\n }\n });\n });\n\n _.forEach(vals, function (val, index) {\n if (_.isNumber(val)) {\n result[index] = val;\n }\n });\n\n //_.forEach(spanners,function(cell){\n for (var k = spanners.length - 1; k >= 0; k--) {\n var cell = spanners[k];\n var span = cell[colSpan];\n var col = cell[x];\n var existingWidth = result[col];\n var editableCols = _.isNumber(vals[col]) ? 0 : 1;\n for (var i = 1; i < span; i++) {\n existingWidth += 1 + result[col + i];\n if (!_.isNumber(vals[col + i])) {\n editableCols++;\n }\n }\n if (cell[desiredWidth] > existingWidth) {\n i = 0;\n while (editableCols > 0 && cell[desiredWidth] > existingWidth) {\n if (!_.isNumber(vals[col + i])) {\n var dif = Math.round((cell[desiredWidth] - existingWidth) / editableCols);\n existingWidth += dif;\n result[col + i] += dif;\n editableCols--;\n }\n i++;\n }\n }\n }\n\n _.extend(vals, result);\n for (var j = 0; j < vals.length; j++) {\n vals[j] = Math.max(forcedMin, vals[j] || 0);\n }\n };\n}",{"version":3,"sources":["node_modules/cli-table2/src/layout-manager.js"],"names":["_","require","Cell","RowSpanCell","ColSpanCell","layoutTable","table","forEach","row","rowIndex","cell","columnIndex","y","x","row2","xMax","length","cell2","cellsConflict","maxWidth","mw","Math","max","colSpan","maxHeight","cell1","yMin1","yMax1","rowSpan","yMin2","yMax2","yConflict","xMin1","xMax1","xMin2","xMax2","xConflict","conflictExists","rows","i_max","min","i","j","allBlank","xMin","addRowSpanCells","rowSpanCell","insertCell","addColSpanCells","cellRows","cellColumns","k","colSpanCell","splice","fillInTable","h_max","w_max","opts","y2","generateCells","map","isArray","key","Object","keys","slice","unshift","makeTableLayout","module","exports","computeWidths","makeComputeWidths","computeHeights","desiredWidth","forcedMin","vals","result","spanners","push","val","index","isNumber","span","col","existingWidth","editableCols","dif","round","extend"],"mappings":"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","file":"layout-manager.js","sourceRoot":"/data","sourcesContent":["var _ = require('lodash');\nvar Cell = require('./cell');\nvar RowSpanCell = Cell.RowSpanCell;\nvar ColSpanCell = Cell.ColSpanCell;\n\n(function(){\n function layoutTable(table){\n _.forEach(table,function(row,rowIndex){\n _.forEach(row,function(cell,columnIndex){\n cell.y = rowIndex;\n cell.x = columnIndex;\n for(var y = rowIndex; y >= 0; y--){\n var row2 = table[y];\n var xMax = (y === rowIndex) ? columnIndex : row2.length;\n for(var x = 0; x < xMax; x++){\n var cell2 = row2[x];\n while(cellsConflict(cell,cell2)){\n cell.x++;\n }\n }\n }\n });\n });\n }\n\n function maxWidth(table) {\n var mw = 0;\n _.forEach(table, function (row) {\n _.forEach(row, function (cell) {\n mw = Math.max(mw,cell.x + (cell.colSpan || 1));\n });\n });\n return mw;\n }\n\n function maxHeight(table){\n return table.length;\n }\n\n function cellsConflict(cell1,cell2){\n var yMin1 = cell1.y;\n var yMax1 = cell1.y - 1 + (cell1.rowSpan || 1);\n var yMin2 = cell2.y;\n var yMax2 = cell2.y - 1 + (cell2.rowSpan || 1);\n var yConflict = !(yMin1 > yMax2 || yMin2 > yMax1);\n\n var xMin1= cell1.x;\n var xMax1 = cell1.x - 1 + (cell1.colSpan || 1);\n var xMin2= cell2.x;\n var xMax2 = cell2.x - 1 + (cell2.colSpan || 1);\n var xConflict = !(xMin1 > xMax2 || xMin2 > xMax1);\n\n return yConflict && xConflict;\n }\n\n function conflictExists(rows,x,y){\n var i_max = Math.min(rows.length-1,y);\n var cell = {x:x,y:y};\n for(var i = 0; i <= i_max; i++){\n var row = rows[i];\n for(var j = 0; j < row.length; j++){\n if(cellsConflict(cell,row[j])){\n return true;\n }\n }\n }\n return false;\n }\n\n function allBlank(rows,y,xMin,xMax){\n for(var x = xMin; x < xMax; x++){\n if(conflictExists(rows,x,y)){\n return false;\n }\n }\n return true;\n }\n\n function addRowSpanCells(table){\n _.forEach(table,function(row,rowIndex){\n _.forEach(row,function(cell){\n for(var i = 1; i < cell.rowSpan; i++){\n var rowSpanCell = new RowSpanCell(cell);\n rowSpanCell.x = cell.x;\n rowSpanCell.y = cell.y + i;\n rowSpanCell.colSpan = cell.colSpan;\n insertCell(rowSpanCell,table[rowIndex+i]);\n }\n });\n });\n }\n\n function addColSpanCells(cellRows){\n for(var rowIndex = cellRows.length-1; rowIndex >= 0; rowIndex--) {\n var cellColumns = cellRows[rowIndex];\n for (var columnIndex = 0; columnIndex < cellColumns.length; columnIndex++) {\n var cell = cellColumns[columnIndex];\n for (var k = 1; k < cell.colSpan; k++) {\n var colSpanCell = new ColSpanCell();\n colSpanCell.x = cell.x + k;\n colSpanCell.y = cell.y;\n cellColumns.splice(columnIndex + 1, 0, colSpanCell);\n }\n }\n }\n }\n\n function insertCell(cell,row){\n var x = 0;\n while(x < row.length && (row[x].x < cell.x)) {\n x++;\n }\n row.splice(x,0,cell);\n }\n\n function fillInTable(table){\n var h_max = maxHeight(table);\n var w_max = maxWidth(table);\n for(var y = 0; y < h_max; y++){\n for(var x = 0; x < w_max; x++){\n if(!conflictExists(table,x,y)){\n var opts = {x:x,y:y,colSpan:1,rowSpan:1};\n x++;\n while(x < w_max && !conflictExists(table,x,y)){\n opts.colSpan++;\n x++;\n }\n var y2 = y + 1;\n while(y2 < h_max && allBlank(table,y2,opts.x,opts.x+opts.colSpan)){\n opts.rowSpan++;\n y2++;\n }\n\n var cell = new Cell(opts);\n cell.x = opts.x;\n cell.y = opts.y;\n insertCell(cell,table[y]);\n }\n }\n }\n }\n\n function generateCells(rows){\n return _.map(rows,function(row){\n if(!_.isArray(row)){\n var key = Object.keys(row)[0];\n row = row[key];\n if(_.isArray(row)){\n row = row.slice();\n row.unshift(key);\n }\n else {\n row = [key,row];\n }\n }\n return _.map(row,function(cell){\n return new Cell(cell);\n });\n });\n }\n\n function makeTableLayout(rows){\n var cellRows = generateCells(rows);\n layoutTable(cellRows);\n fillInTable(cellRows);\n addRowSpanCells(cellRows);\n addColSpanCells(cellRows);\n return cellRows;\n }\n\n module.exports = {\n makeTableLayout: makeTableLayout,\n layoutTable: layoutTable,\n addRowSpanCells: addRowSpanCells,\n maxWidth:maxWidth,\n fillInTable:fillInTable,\n computeWidths:makeComputeWidths('colSpan','desiredWidth','x',1),\n computeHeights:makeComputeWidths('rowSpan','desiredHeight','y',1)\n };\n})();\n\nfunction makeComputeWidths(colSpan,desiredWidth,x,forcedMin){\n return function(vals,table){\n var result = [];\n var spanners = [];\n _.forEach(table,function(row){\n _.forEach(row,function(cell){\n if((cell[colSpan] || 1) > 1){\n spanners.push(cell);\n }\n else {\n result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin);\n }\n });\n });\n\n _.forEach(vals,function(val,index){\n if(_.isNumber(val)){\n result[index] = val;\n }\n });\n\n //_.forEach(spanners,function(cell){\n for(var k = spanners.length - 1; k >=0; k--){\n var cell = spanners[k];\n var span = cell[colSpan];\n var col = cell[x];\n var existingWidth = result[col];\n var editableCols = _.isNumber(vals[col]) ? 0 : 1;\n for(var i = 1; i < span; i ++){\n existingWidth += 1 + result[col + i];\n if(!_.isNumber(vals[col + i])){\n editableCols++;\n }\n }\n if(cell[desiredWidth] > existingWidth){\n i = 0;\n while(editableCols > 0 && cell[desiredWidth] > existingWidth){\n if(!_.isNumber(vals[col+i])){\n var dif = Math.round( (cell[desiredWidth] - existingWidth) / editableCols );\n existingWidth += dif;\n result[col + i] += dif;\n editableCols--;\n }\n i++;\n }\n }\n }\n\n _.extend(vals,result);\n for(var j = 0; j < vals.length; j++){\n vals[j] = Math.max(forcedMin, vals[j] || 0);\n }\n };\n}\n"]}]}