From 4e5393efe719b6681d471832416bfcedd1df6596 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Sun, 12 May 2013 21:51:47 -0400 Subject: [PATCH 1/6] Drop executable bit from images --- images/fullpage_grouphover.png | Bin images/fullpage_hover.png | Bin images/fullpage_pressed.png | Bin images/fullpage_rest.png | Bin images/home_grouphover.png | Bin images/home_hover.png | Bin images/home_pressed.png | Bin images/home_rest.png | Bin images/zoomin_grouphover.png | Bin images/zoomin_hover.png | Bin images/zoomin_pressed.png | Bin images/zoomin_rest.png | Bin images/zoomout_grouphover.png | Bin images/zoomout_hover.png | Bin images/zoomout_pressed.png | Bin images/zoomout_rest.png | Bin 16 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 images/fullpage_grouphover.png mode change 100755 => 100644 images/fullpage_hover.png mode change 100755 => 100644 images/fullpage_pressed.png mode change 100755 => 100644 images/fullpage_rest.png mode change 100755 => 100644 images/home_grouphover.png mode change 100755 => 100644 images/home_hover.png mode change 100755 => 100644 images/home_pressed.png mode change 100755 => 100644 images/home_rest.png mode change 100755 => 100644 images/zoomin_grouphover.png mode change 100755 => 100644 images/zoomin_hover.png mode change 100755 => 100644 images/zoomin_pressed.png mode change 100755 => 100644 images/zoomin_rest.png mode change 100755 => 100644 images/zoomout_grouphover.png mode change 100755 => 100644 images/zoomout_hover.png mode change 100755 => 100644 images/zoomout_pressed.png mode change 100755 => 100644 images/zoomout_rest.png diff --git a/images/fullpage_grouphover.png b/images/fullpage_grouphover.png old mode 100755 new mode 100644 diff --git a/images/fullpage_hover.png b/images/fullpage_hover.png old mode 100755 new mode 100644 diff --git a/images/fullpage_pressed.png b/images/fullpage_pressed.png old mode 100755 new mode 100644 diff --git a/images/fullpage_rest.png b/images/fullpage_rest.png old mode 100755 new mode 100644 diff --git a/images/home_grouphover.png b/images/home_grouphover.png old mode 100755 new mode 100644 diff --git a/images/home_hover.png b/images/home_hover.png old mode 100755 new mode 100644 diff --git a/images/home_pressed.png b/images/home_pressed.png old mode 100755 new mode 100644 diff --git a/images/home_rest.png b/images/home_rest.png old mode 100755 new mode 100644 diff --git a/images/zoomin_grouphover.png b/images/zoomin_grouphover.png old mode 100755 new mode 100644 diff --git a/images/zoomin_hover.png b/images/zoomin_hover.png old mode 100755 new mode 100644 diff --git a/images/zoomin_pressed.png b/images/zoomin_pressed.png old mode 100755 new mode 100644 diff --git a/images/zoomin_rest.png b/images/zoomin_rest.png old mode 100755 new mode 100644 diff --git a/images/zoomout_grouphover.png b/images/zoomout_grouphover.png old mode 100755 new mode 100644 diff --git a/images/zoomout_hover.png b/images/zoomout_hover.png old mode 100755 new mode 100644 diff --git a/images/zoomout_pressed.png b/images/zoomout_pressed.png old mode 100755 new mode 100644 diff --git a/images/zoomout_rest.png b/images/zoomout_rest.png old mode 100755 new mode 100644 From 522bcbf058f53c26ada4a294e8b6f55514a4ebf5 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Sun, 12 May 2013 22:53:41 -0400 Subject: [PATCH 2/6] Add addClass()/removeClass() utility functions --- src/drawer.js | 2 +- src/openseadragon.js | 42 ++++++++++++++++++++++++++++++++++++++++++ src/viewer.js | 10 ++-------- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/drawer.js b/src/drawer.js index e9696012..40377aae 100644 --- a/src/drawer.js +++ b/src/drawer.js @@ -377,7 +377,7 @@ $.Drawer.prototype = { element.href = "#/overlay/"+id; } element.id = id; - element.className = element.className + " " + ( overlay.className ? + $.addClass( element, overlay.className ? overlay.className : "openseadragon-overlay" ); diff --git a/src/openseadragon.js b/src/openseadragon.js index 186f48c1..3095799e 100644 --- a/src/openseadragon.js +++ b/src/openseadragon.js @@ -1025,6 +1025,48 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){ }, + /** + * Add the specified CSS class to the element if not present. + * @name $.addClass + * @function + * @param {Element|String} element + * @param {String} className + */ + addClass: function( element, className ) { + element = $.getElement( element ); + + if ( ! element.className ) { + element.className = className; + } else if ( ( ' ' + element.className + ' ' ). + indexOf( ' ' + className + ' ' ) === -1 ) { + element.className += ' ' + className; + } + }, + + + /** + * Remove the specified CSS class from the element. + * @name $.removeClass + * @function + * @param {Element|String} element + * @param {String} className + */ + removeClass: function( element, className ) { + var oldClasses, + newClasses = [], + i; + + element = $.getElement( element ); + oldClasses = element.className.split( /\s+/ ); + for ( i = 0; i < oldClasses.length; i++ ) { + if ( oldClasses[ i ] && oldClasses[ i ] !== className ) { + newClasses.push( oldClasses[ i ] ); + } + } + element.className = newClasses.join(' '); + }, + + /** * Adds an event listener for the given element, eventName and handler. * @function diff --git a/src/viewer.js b/src/viewer.js index df8dce87..5b688bc3 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -515,10 +515,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, //Make sure the user has some ability to style the toolbar based //on the mode - this.toolbar.element.setAttribute( - 'class', - this.toolbar.element.className +" fullpage" - ); + $.addClass( this.toolbar.element, 'fullpage' ); } body.appendChild( this.element ); @@ -602,10 +599,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, //Make sure the user has some ability to style the toolbar based //on the mode - this.toolbar.element.setAttribute( - 'class', - this.toolbar.element.className.replace('fullpage','') - ); + $.removeClass( this.toolbar.element, 'fullpage' ); //this.toolbar.element.style.position = 'relative'; this.toolbar.parentNode.insertBefore( this.toolbar.element, From 99d6ff80b6f9408a1db454693611a9b07e57af05 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Sun, 12 May 2013 23:02:18 -0400 Subject: [PATCH 3/6] Add fullpage class to viewer element when in fullpage mode Closes #61. --- src/viewer.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/viewer.js b/src/viewer.js index 5b688bc3..a0bcf907 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -518,6 +518,7 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, $.addClass( this.toolbar.element, 'fullpage' ); } + $.addClass( this.element, 'fullpage' ); body.appendChild( this.element ); if( $.supportsFullScreen ){ @@ -587,6 +588,8 @@ $.extend( $.Viewer.prototype, $.EventHandler.prototype, $.ControlDock.prototype, for ( i = 0; i < nodes; i++ ){ body.appendChild( this.previousBody.shift() ); } + + $.removeClass( this.element, 'fullpage' ); THIS[ this.hash ].prevElementParent.insertBefore( this.element, THIS[ this.hash ].prevNextSibling From f235d7a642b6382fa603181eef08813bbdbe7443 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Mon, 13 May 2013 21:54:41 -0400 Subject: [PATCH 4/6] Rename test/util.js to test/test.js since we are about to create a module for testing utility functions. --- test/test.html | 2 +- test/{util.js => test.js} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename test/{util.js => test.js} (100%) diff --git a/test/test.html b/test/test.html index 92344f56..21bb8b77 100644 --- a/test/test.html +++ b/test/test.html @@ -14,7 +14,7 @@ - + diff --git a/test/util.js b/test/test.js similarity index 100% rename from test/util.js rename to test/test.js From 31d4cc13b791c49fca56a212ea286e2151861878 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Mon, 13 May 2013 22:24:04 -0400 Subject: [PATCH 5/6] Add tests for addClass/removeClass --- test/test.html | 1 + test/utils.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 test/utils.js diff --git a/test/test.html b/test/test.html index 21bb8b77..ea226cdc 100644 --- a/test/test.html +++ b/test/test.html @@ -17,6 +17,7 @@ + diff --git a/test/utils.js b/test/utils.js new file mode 100644 index 00000000..c61171ee --- /dev/null +++ b/test/utils.js @@ -0,0 +1,52 @@ +(function() { + module("utils"); + + test("addRemoveClass", function() { + var div = OpenSeadragon.makeNeutralElement('div'); + strictEqual(div.className, '', + "makeNeutralElement set no classes"); + + OpenSeadragon.addClass(div, 'foo'); + strictEqual(div.className, 'foo', + "Added first class"); + OpenSeadragon.addClass(div, 'bar'); + strictEqual(div.className, 'foo bar', + "Added second class"); + OpenSeadragon.addClass(div, 'baz'); + strictEqual(div.className, 'foo bar baz', + "Added third class"); + OpenSeadragon.addClass(div, 'plugh'); + strictEqual(div.className, 'foo bar baz plugh', + "Added fourth class"); + + OpenSeadragon.addClass(div, 'foo'); + strictEqual(div.className, 'foo bar baz plugh', + "Re-added first class"); + OpenSeadragon.addClass(div, 'bar'); + strictEqual(div.className, 'foo bar baz plugh', + "Re-added middle class"); + OpenSeadragon.addClass(div, 'plugh'); + strictEqual(div.className, 'foo bar baz plugh', + "Re-added last class"); + + OpenSeadragon.removeClass(div, 'xyzzy'); + strictEqual(div.className, 'foo bar baz plugh', + "Removed nonexistent class"); + OpenSeadragon.removeClass(div, 'ba'); + strictEqual(div.className, 'foo bar baz plugh', + "Removed nonexistent class with existent substring"); + + OpenSeadragon.removeClass(div, 'bar'); + strictEqual(div.className, 'foo baz plugh', + "Removed middle class"); + OpenSeadragon.removeClass(div, 'plugh'); + strictEqual(div.className, 'foo baz', + "Removed last class"); + OpenSeadragon.removeClass(div, 'foo'); + strictEqual(div.className, 'baz', + "Removed first class"); + OpenSeadragon.removeClass(div, 'baz'); + strictEqual(div.className, '', + "Removed only class"); + }); +})(); From fd04647b1bfbdc606dd3d8893a537f0e93fe246a Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Mon, 13 May 2013 22:35:27 -0400 Subject: [PATCH 6/6] Test addition/removal of fullpage class on viewer element --- test/basic.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/basic.js b/test/basic.js index ff302670..e3f41f67 100644 --- a/test/basic.js +++ b/test/basic.js @@ -102,6 +102,23 @@ Util.simulateViewerClick(viewer, 0.25, 0.25); }); + // ---------- + test('Fullscreen', function() { + ok(!viewer.isFullPage(), 'Started out not fullpage'); + ok(!$(viewer.element).hasClass('fullpage'), + 'No fullpage class on div'); + + viewer.setFullPage(true); + ok(viewer.isFullPage(), 'Enabled fullpage'); + ok($(viewer.element).hasClass('fullpage'), + 'Fullpage class added to div'); + + viewer.setFullPage(false); + ok(!viewer.isFullPage(), 'Disabled fullpage'); + ok(!$(viewer.element).hasClass('fullpage'), + 'Fullpage class removed from div'); + }); + // ---------- asyncTest('Close', function() { var closeHandler = function() {