Home page Forum Wiki Mail Jabber Devel NIX-FILES

AltLUG Git

Git-repositories of Altai Linux User Group

Add module filter to UI
authorJohn Reeves <jonny.reeves@yamaha.co.uk>
Thu, 19 Jul 2012 15:37:53 +0000 (16:37 +0100)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Sun, 5 Aug 2012 17:39:21 +0000 (20:39 +0300)
Add select to the toolbar if the testsuite has more than one module,
sets the module query parameter.

qunit/qunit.css
qunit/qunit.js

index b52b482..fa3f20e 100644 (file)
@@ -20,7 +20,7 @@
 
 /** Resets */
 
-#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
        margin: 0;
        padding: 0;
 }
@@ -67,6 +67,7 @@
        padding: 0.5em 0 0.5em 2em;
        color: #5E740B;
        background-color: #eee;
+       overflow: hidden;
 }
 
 #qunit-userAgent {
@@ -76,6 +77,9 @@
        text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
 }
 
+#qunit-modulefilter-container {
+       float: right;
+}
 
 /** Tests: Pass/Fail */
 
index bed5f45..914e727 100644 (file)
@@ -307,6 +307,7 @@ QUnit = {
        module: function( name, testEnvironment ) {
                config.currentModule = name;
                config.currentModuleTestEnviroment = testEnvironment;
+               config.modules[name] = true;
        },
 
        asyncTest: function( testName, expected, callback ) {
@@ -602,6 +603,9 @@ config = {
                }
        ],
 
+       // Set of all modules.
+       modules: {},
+
        // logging callback queues
        begin: [],
        done: [],
@@ -918,7 +922,9 @@ QUnit.load = function() {
        runLoggingCallbacks( "begin", QUnit, {} );
 
        // Initialize the config, saving the execution queue
-       var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes,
+       var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, moduleFilter,
+           numModules = 0,
+           moduleFilterHtml = "",
                urlConfigHtml = "",
                oldconfig = extend( {}, config );
 
@@ -942,6 +948,15 @@ QUnit.load = function() {
                urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>";
        }
 
+       moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' " + ( config.module === undefined  ? "selected" : "" ) + ">< All Modules ></option>";
+       for ( i in config.modules ) {
+               if ( config.modules.hasOwnProperty( i ) ) {
+                       numModules += 1;
+                       moduleFilterHtml += "<option value='" + encodeURIComponent(i) + "' " + ( config.module === i ? "selected" : "" ) + ">" + i + "</option>";
+               }
+       }
+       moduleFilterHtml += "</select>";
+       
        // `userAgent` initialized at top of scope
        userAgent = id( "qunit-userAgent" );
        if ( userAgent ) {
@@ -1004,6 +1019,19 @@ QUnit.load = function() {
                        window.location = QUnit.url( params );
                });
                toolbar.appendChild( urlConfigCheckboxes );
+
+               if (numModules > 1) {
+                       moduleFilter = document.createElement( 'span' );
+                       moduleFilter.setAttribute( 'id', 'qunit-modulefilter-container' );
+                       moduleFilter.innerHTML = moduleFilterHtml;
+                       addEvent( moduleFilter, "change", function() {
+                               var selectBox = moduleFilter.getElementsByTagName("select")[0],
+                                   selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value);
+                               
+                               window.location = QUnit.url( { module: ( selectedModule === "" ) ? undefined : selectedModule } );
+                       });
+                       toolbar.appendChild(moduleFilter);
+               }
        }
 
        // `main` initialized at top of scope

Hosting is provided AltSPAHow to use Git
Please direct any questions on jabber alex.wolf@jabber.ru

Valid HTML 4.0 Transitional Valid CSS!

Designer Alexander Wolf