Merge pull request #252 from Sharpbarb/master

Add the ability to create a viewer and start at a specified page
This commit is contained in:
iangilman 2013-10-11 09:57:28 -07:00
commit e89562c03a
2 changed files with 57 additions and 21 deletions

View File

@ -489,6 +489,7 @@ window.OpenSeadragon = window.OpenSeadragon || function( options ){
xmlPath: null,
tileSources: null,
tileHost: null,
initialPage: 0,
//PAN AND ZOOM SETTINGS AND CONSTRAINTS
panHorizontal: true,

View File

@ -200,12 +200,19 @@ $.Viewer = function( options ) {
if( this.tileSources.length > 1 ){
THIS[ this.hash ].sequenced = true;
}
initialTileSource = this.tileSources[ 0 ];
//Keeps the initial page within bounds
if ( this.initialPage > this.tileSources.length - 1 ){
this.initialPage = this.tileSources.length - 1;
}
initialTileSource = this.tileSources[ this.initialPage ];
//Update the sequence (aka currrent page) property
THIS[ this.hash ].sequence = this.initialPage;
} else {
initialTileSource = this.tileSources;
}
this.open( initialTileSource );
}
this.element = this.element || document.getElementById( this.id );
@ -343,6 +350,14 @@ $.Viewer = function( options ) {
this.bindStandardControls();
this.bindSequenceControls();
if ( initialTileSource ) {
this.open( initialTileSource );
if ( this.tileSources.length > 1 ) {
this._updateSequenceButtons( this.initialPage );
}
}
for ( i = 0; i < this.customControls.length; i++ ) {
this.addControl(
this.customControls[ i ].id,
@ -1067,6 +1082,15 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
return this;
},
/**
* Gets the active page of a sequence
* @function
* @name OpenSeadragon.Viewer.prototype.currentPage
* @return {Number}
*/
currentPage: function () {
return THIS[ this.hash ].sequence;
},
/**
* @function
@ -1082,6 +1106,31 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
THIS[ this.hash ].sequence = page;
this._updateSequenceButtons( page );
this.open( this.tileSources[ page ] );
}
if( $.isFunction( this.onPageChange ) ){
this.onPageChange({
page: page,
viewer: this
});
}
if( this.referenceStrip ){
this.referenceStrip.setFocus( page );
}
return this;
},
/**
* Updates the sequence buttons.
* @function
* @private
* @param {Number} Sequence Value
*/
_updateSequenceButtons: function (page) {
if( this.nextButton ){
if( ( this.tileSources.length - 1 ) === page ){
//Disable next button
@ -1102,20 +1151,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
}
}
}
this.open( this.tileSources[ page ] );
}
if( $.isFunction( this.onPageChange ) ){
this.onPageChange({
page: page,
viewer: this
});
}
if( this.referenceStrip ){
this.referenceStrip.setFocus( page );
}
return this;
},
/**