JSFiddle - React, Tailwind, and code Playground

by pierian_design

JavaScript

var oActiveRangesInfo = {
		"aFirstColumns":[2, 11, 3],
    "aFirstRows":[11, 23, 29, 30, 13, 14, 26],
 		"aLastColumns":[2, 11, 3],
    "aLastRows":[11, 23, 29, 30, 13, 14, 26],
    
    "aRows": [
      {"rowIndex": 11, "startCol": 2, "endCol": 6},
      {"rowIndex": 12, "startCol": 2, "endCol": 6},
      {"rowIndex": 13, "startCol": 2, "endCol": 6},
      {"rowIndex": 13, "startCol": 11, "endCol": 12},
      {"rowIndex": 14, "startCol": 11, "endCol": 12},
      {"rowIndex": 15, "startCol": 11, "endCol": 12},
      {"rowIndex": 16, "startCol": 11, "endCol": 12},
      {"rowIndex": 23, "startCol": 2, "endCol": 5},
      {"rowIndex": 23, "startCol": 11, "endCol": 11},
      {"rowIndex": 24, "startCol": 2, "endCol": 5},
      {"rowIndex": 24, "startCol": 11, "endCol": 11},
      {"rowIndex": 26, "startCol": 3, "endCol": 7},
      {"rowIndex": 29, "startCol": 11, "endCol": 11},
      {"rowIndex": 30, "startCol": 2, "endCol": 2}
  ]
  
}

function cwsCreateEmptyArray(n, m) {
  var emptyArray = new Array(n);
  for (var i = 0; i < n; i++) {
    emptyArray[i] = new Array(m);
  }
  return emptyArray;
}

var minRowIndex = Math.min.apply(null, oActiveRangesInfo.aFirstRows);
var minColIndex = Math.min.apply(null, oActiveRangesInfo.aFirstColumns);
var maxRowIndex = Math.max.apply(null, oActiveRangesInfo.aLastRows);
var maxColIndex = Math.max.apply(null, oActiveRangesInfo.aLastColumns);

var rowsMtrx = maxRowIndex - minRowIndex + 1;
var colsMtrx = maxColIndex - minColIndex + 1;

var aMtrx = cwsCreateEmptyArray(rowsMtrx, colsMtrx);

for (var i = 0; i < oActiveRangesInfo.aRows.length; i++) {
    oActiveRangesInfo.aRows[i].offsetRow = oActiveRangesInfo.aRows[i].rowIndex - minRowIndex;
		oActiveRangesInfo.aRows[i].offsetCol = oActiveRangesInfo.aRows[i].startCol - minColIndex;
}

var oActiveRangesInfo = {
  "aRows": [
  	{"rowIndex":11,"startCol":2,"endCol":6,"offsetRow":0,"offsetCol":0},
    {"rowIndex":12,"startCol":2,"endCol":6,"offsetRow":1,"offsetCol":0},
   ...