cube.js random-state scrambler demo

This is a simple random state scrambler created with cube.js. After the initialization is complete, click on the "generate random scramble" button to generate a random-state scramble.

Graphics are generated using Conrad Rider's VisualCube.

The demo scrambler and its code are presented below. Click here for a standalone page.

The scrambler


The code

demo.html:

        <!DOCTYPE html>
        <head>
          <style>
            #randomstate { visibility: hidden; }
          </style>
        </head>

        <body>
          <p id="status"></p>
          <p id="randomstate">
            <button>Generate random scramble</button><br>
            <span class="result"></span>
          </p>

          <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
          <script src="/cubejs/lib/cube.js"></script>
          <script src="/cubejs/lib/async.js"></script>
          <script src="demo.js"></script>
        </body>
      

demo.js:

        (function() {
        var start, progressHandle;

        var progress = function() {
            // Add a dot each second
            $('#status').text(function(index, text) { return text + '.'; });
        };

        var initialized = function() {
            // Precomputing finished, stop adding dots
            clearInterval(progressHandle);

            // Show the duration of initialization
            var end = new Date,
                duration = (end - start) / 1000;
            $('#status').text('Initialization done in ' + duration + ' seconds.');

            // Show the scrambler
            $('#randomstate').css('visibility', 'visible');
            $('#randomstate button').on('click', generateScramble);
        };

        var generateScramble = function() {
            // Hide the initialization status on first scramble
            $('#status').hide();

            // Generate a scramble
            Cube.asyncScramble(function(alg) {
                var s = alg.replace(/\s+/g, ''),  // remove spaces
                    url = "http://cube.crider.co.uk/visualcube.png?size=150&alg=" + s;
                $('#randomstate .result').html(alg + "<br><img src=\"" + url + "\">");
            });
        };

        $(function() {
            $('#status').text('Initializing');

            // Start measuring time
            start = new Date;

            // Start adding dots
            progressHandle = setInterval(progress, 1000);

            // Start precomputing
            Cube.asyncInit('/cubejs/lib/worker.js', initialized);
        });
        })();