JSFiddle - React, Tailwind, and code Playground

by mauricederegt

JavaScript

function setBlocks() {
    //start
    bR = 0;
    counts = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    var mR = 5, mC = 6;
    var tempFloor, tempRow, tempBlock;
    var floors = $('ul');
    floors.empty();
    for (var f = 0; f < 4; f++) {
        bM[f] = [];
        for (var r = 0; r < mR; r++) {
            bM[f][r] = [];
            tempRow = $('<li></li>');
            $(floors[f]).append(tempRow);
            for (var c = 0; c < mC; c++) {
                var randomNoRequired = true;
                var randomClass;
                while(randomNoRequired) {
                    randomClass = Math.round(Math.random() * 10 + 0);
                    if (counts[randomClass] < 6 || bR >= 66) {
                        randomNoRequired = false;
                    }
                }
                if (bR > 65) {
                    tempBlock = $('<a class="a" data-t="a" style="display:none;"></a>');
                    bM[f][r][c] = {idx:null,type:null,v:0,e:null};
                } else {
                    tempBlock = $('<a class="' + classes[randomClass] + '" data-i="' + bR + '" data-t="' + classes[randomClass] + '" data-f="' + f + '" data-r="' + r + '" data-c="' + c + '"></a>');
                    bM[f][r][c] = {idx:bR,type:classes[randomClass],v:1,e:tempBlock};
                    counts[randomClass]++;
                    bR++;
                }
                tempBlock.css('margin-top', ((-(mR * 3.05 / 2) + (3.05 * r)) - .15) + 'em');
                tempBlock.css('margin-left', (-(mC * 2.3 / 2) + (2.3 * c)) + 'em');
                tempRow.append(tempBlock);
            }
        }
        mR--;
        mC--;
    }
    //stop
    if (!checkAllBlocks()) {
        setBlocks();
    } else {
        $('#s2 a').click(function(){
            var cB = $(this);
            var f = parseInt(cB.attr('data-f'));
            var r = parseInt(cB.attr('data-r'));
            var c = parseInt(cB.attr('data-c'));
            if (pA == false && !isClickAllowed(f,r,c)) {
  ...