Advertisement
jargon

GridSetup.js

Mar 3rd, 2025
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function GridSetup()
  2. {
  3.     grid = {}; // ✅ Declare grid before use
  4.     mainGrid = document.getElementById("main-grid");
  5.  
  6.     totalColumns = Object.keys(jsonData).length;
  7.     columnRowCounts = {};
  8.  
  9.     for (col = 1; col <= totalColumns; col++) {
  10.         columnRowCounts[col] = Object.keys(jsonData[col]).length;
  11.     }
  12.  
  13.     maxRows = Math.max(...Object.values(columnRowCounts));
  14.  
  15.     for (col = 1; col <= totalColumns; col++)
  16.     {
  17.         grid[col] = {};
  18.  
  19.         for (row = 1; row <= maxRows; row++)
  20.         {
  21.             if (row > columnRowCounts[col])
  22.             {
  23.                 grid[col][row] = false;
  24.             }
  25.             else
  26.             {
  27.                 grid[col][row] = jsonData[col][row];
  28.             }
  29.         }
  30.     }
  31.  
  32.     for (row = 1; row <= maxRows; row++)
  33.     {
  34.         for (col = 1; col <= totalColumns; col++)
  35.         {
  36.             FirstPassLayer1(col, row);
  37.             FirstPassLayer2(col, row);
  38.         }
  39.     }
  40.  
  41.     for (col = 1; col <= totalColumns; col++)
  42.     {
  43.         for (row = 1; row <= maxRows; row++)
  44.         {
  45.             let gridItem = document.getElementById(`grid-item-${col}-${row}`);
  46.             if (gridItem) {
  47.                 InjectClasses(col, row, gridItem);
  48.             }
  49.         }
  50.     }
  51. }
  52.  
  53. function FirstPassLayer1(col, row)
  54. {
  55.     if (!grid[col]) { grid[col] = {}; }
  56.     if (!grid[col][row]) { grid[col][row] = {}; }
  57.  
  58.     grid[col][row].classes = []; // ✅ Fixed: Initialize as an array
  59.     grid[col][row].textContent = "";
  60.  
  61.     if (!jsonData[col] || !jsonData[col][row])
  62.     {
  63.         grid[col][row].classes.push("hidden-item");
  64.         return;
  65.     }
  66.  
  67.     let entry = jsonData[col][row];
  68.  
  69.     if (!entry || entry === false || entry.text === false) {
  70.         grid[col][row].classes.push("hidden-item");
  71.     } else {
  72.         grid[col][row].classes.push("grid-item");
  73.         grid[col][row].textContent = entry.text;
  74.     }
  75. }
  76.  
  77. function FirstPassLayer2(col, row)
  78. {
  79.     if (!jsonData[col] || !jsonData[col][row]) return;
  80.  
  81.     let entry = jsonData[col][row];
  82.     let conn = entry.connections;
  83.     if (!conn) return;
  84.  
  85.     grid[col][row].classes = []; // ✅ Fixed: Initialize as an array
  86.  
  87.     const flip = { 'left': 'right', 'right': 'left', 'up': 'down', 'down': 'up' };
  88.     const axis = { 'left': 'column', 'right': 'column', 'up': 'row', 'down': 'row' }; // ✅ Corrected axis mapping
  89.  
  90.     // Handle "T" connections first
  91.     if (conn.type === "t") {
  92.  
  93.         grid[col][row].classes.push("connection-t");
  94.  
  95.         if (conn.left && conn.right) {
  96.             grid[col][row].classes.push("connection-t-horizontal");
  97.         } else if (conn.up && conn.down) {
  98.             grid[col][row].classes.push("connection-t-vertical");
  99.         } else if (conn.up && conn.left) {
  100.             grid[col][row].classes.push("connection-t-up-left");
  101.         } else if (conn.up && conn.right) {
  102.             grid[col][row].classes.push("connection-t-up-right");
  103.         } else if (conn.down && conn.left) {
  104.             grid[col][row].classes.push("connection-t-down-left");
  105.         } else if (conn.down && conn.right) {
  106.             grid[col][row].classes.push("connection-t-down-right");
  107.         }
  108.     }
  109.  
  110.     // Process standard connections
  111.     ['up', 'down', 'left', 'right'].forEach(direction => {
  112.         if (!conn[direction]) return;
  113.  
  114.         grid[col][row].classes.push("connection");
  115.         grid[col][row].classes.push(`connection-${direction}`);
  116.         grid[col][row].classes.push("connection-extend");
  117.     });
  118. }
  119.  
  120. function InjectClasses(col, row, gridItem) {
  121.     if (!grid[col] || !grid[col][row]) return;
  122.  
  123.     let newConnection = document.createElement("div");
  124.  
  125.     // ✅ Fixed: Use classList.add instead of classes.add
  126.     grid[col][row].classes.forEach(classpart => {
  127.         newConnection.classList.add(classpart);
  128.     });
  129.  
  130.     gridItem.appendChild(newConnection);
  131. }
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement