mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-25 22:56:11 +03:00
simplified beforeOpen, open, close in Viewer
This commit is contained in:
parent
3c31094514
commit
3e39bccbbe
166
openseadragon.js
166
openseadragon.js
@ -1668,66 +1668,6 @@ $.Viewer = function( options ) {
|
|||||||
|
|
||||||
$.Viewer.prototype = {
|
$.Viewer.prototype = {
|
||||||
|
|
||||||
_onClose: function () {
|
|
||||||
|
|
||||||
this.source = null;
|
|
||||||
this.viewport = null;
|
|
||||||
this.drawer = null;
|
|
||||||
this.profiler = null;
|
|
||||||
|
|
||||||
this.canvas.innerHTML = "";
|
|
||||||
},
|
|
||||||
_beforeOpen: function () {
|
|
||||||
if (this.source) {
|
|
||||||
this._onClose();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._lastOpenStartTime = new Date().getTime(); // to ignore earlier opens
|
|
||||||
|
|
||||||
window.setTimeout($.delegate(this, function () {
|
|
||||||
if (this._lastOpenStartTime > this._lastOpenEndTime) {
|
|
||||||
this._setMessage($.Strings.getString("Messages.Loading"));
|
|
||||||
}
|
|
||||||
}), 2000);
|
|
||||||
|
|
||||||
return this._lastOpenStartTime;
|
|
||||||
},
|
|
||||||
_onOpen: function (time, _source, error) {
|
|
||||||
this._lastOpenEndTime = new Date().getTime();
|
|
||||||
|
|
||||||
if (time < this._lastOpenStartTime) {
|
|
||||||
$.Debug.log("Ignoring out-of-date open.");
|
|
||||||
raiseEvent( this, "ignore" );
|
|
||||||
return;
|
|
||||||
} else if (!_source) {
|
|
||||||
this._setMessage(error);
|
|
||||||
raiseEvent( this, "error" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.canvas.innerHTML = "";
|
|
||||||
this._prevContainerSize = $.Utils.getElementSize( this.container );
|
|
||||||
|
|
||||||
this.source = _source;
|
|
||||||
this.viewport = new $.Viewport(this._prevContainerSize, this.source.dimensions, this.config);
|
|
||||||
this.drawer = new $.Drawer(this.source, this.viewport, this.canvas);
|
|
||||||
this.profiler = new $.Profiler();
|
|
||||||
|
|
||||||
this._animating = false;
|
|
||||||
this._forceRedraw = true;
|
|
||||||
scheduleUpdate( this, this._updateMulti );
|
|
||||||
|
|
||||||
for (var i = 0; i < this.overlayControls.length; i++) {
|
|
||||||
var overlay = this.overlayControls[ i ];
|
|
||||||
if (overlay.point != null) {
|
|
||||||
this.drawer.addOverlay(overlay.id, new $.Point(overlay.point.X, overlay.point.Y), $.OverlayPlacement.TOP_LEFT);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.drawer.addOverlay(overlay.id, new $.Rect(overlay.rect.Point.X, overlay.rect.Point.Y, overlay.rect.Width, overlay.rect.Height), overlay.placement);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
raiseEvent( this, "open" );
|
|
||||||
},
|
|
||||||
_updateMulti: function () {
|
_updateMulti: function () {
|
||||||
if (!this.source) {
|
if (!this.source) {
|
||||||
return;
|
return;
|
||||||
@ -1739,7 +1679,7 @@ $.Viewer.prototype = {
|
|||||||
scheduleUpdate( this, arguments.callee, beginTime );
|
scheduleUpdate( this, arguments.callee, beginTime );
|
||||||
},
|
},
|
||||||
_updateOnce: function () {
|
_updateOnce: function () {
|
||||||
if (!this.source) {
|
if ( !this.source ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1869,29 +1809,100 @@ $.Viewer.prototype = {
|
|||||||
return !!this.source;
|
return !!this.source;
|
||||||
},
|
},
|
||||||
openDzi: function (xmlUrl, xmlString) {
|
openDzi: function (xmlUrl, xmlString) {
|
||||||
var currentTime = this._beforeOpen();
|
var _this = this;
|
||||||
$.DziTileSourceHelper.createFromXml(
|
$.DziTileSourceHelper.createFromXml(
|
||||||
xmlUrl,
|
xmlUrl,
|
||||||
xmlString,
|
xmlString,
|
||||||
$.Utils.createCallback(
|
function( source ){
|
||||||
null,
|
_this.open( source );
|
||||||
$.delegate(this, this._onOpen),
|
}
|
||||||
currentTime
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
openTileSource: function (tileSource) {
|
openTileSource: function ( tileSource ) {
|
||||||
var currentTime = beforeOpen();
|
var _this = this;
|
||||||
window.setTimeout($.delegate(this, function () {
|
window.setTimeout( function () {
|
||||||
onOpen(currentTime, tileSource);
|
_this.open( tileSource );
|
||||||
}), 1);
|
}, 1);
|
||||||
},
|
},
|
||||||
close: function () {
|
open: function( source ) {
|
||||||
if ( !this.source ) {
|
var _this = this;
|
||||||
|
|
||||||
|
if ( this.source ) {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._lastOpenStartTime = new Date().getTime(); // to ignore earlier opens
|
||||||
|
|
||||||
|
window.setTimeout( function () {
|
||||||
|
if ( _this._lastOpenStartTime > _this._lastOpenEndTime ) {
|
||||||
|
_this._setMessage( $.Strings.getString( "Messages.Loading" ) );
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
this._lastOpenEndTime = new Date().getTime();
|
||||||
|
|
||||||
|
if ( this._lastOpenStartTime < viewer._lastOpenStartTime ) {
|
||||||
|
$.Debug.log( "Ignoring out-of-date open." );
|
||||||
|
raiseEvent( this, "ignore" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._onClose();
|
this.canvas.innerHTML = "";
|
||||||
|
this._prevContainerSize = $.Utils.getElementSize( this.container );
|
||||||
|
|
||||||
|
if( source ){
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
this.viewport = new $.Viewport(
|
||||||
|
this._prevContainerSize,
|
||||||
|
this.source.dimensions,
|
||||||
|
this.config
|
||||||
|
);
|
||||||
|
this.drawer = new $.Drawer(
|
||||||
|
this.source,
|
||||||
|
this.viewport,
|
||||||
|
this.canvas
|
||||||
|
);
|
||||||
|
this.profiler = new $.Profiler();
|
||||||
|
|
||||||
|
this._animating = false;
|
||||||
|
this._forceRedraw = true;
|
||||||
|
scheduleUpdate( this, this._updateMulti );
|
||||||
|
|
||||||
|
for ( var i = 0; i < this.overlayControls.length; i++ ) {
|
||||||
|
var overlay = this.overlayControls[ i ];
|
||||||
|
if (overlay.point != null) {
|
||||||
|
this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Point(
|
||||||
|
overlay.point.X,
|
||||||
|
overlay.point.Y
|
||||||
|
),
|
||||||
|
$.OverlayPlacement.TOP_LEFT
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Rect(
|
||||||
|
overlay.rect.Point.X,
|
||||||
|
overlay.rect.Point.Y,
|
||||||
|
overlay.rect.Width,
|
||||||
|
overlay.rect.Height
|
||||||
|
),
|
||||||
|
overlay.placement
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
raiseEvent( this, "open" );
|
||||||
|
},
|
||||||
|
close: function () {
|
||||||
|
|
||||||
|
this.source = null;
|
||||||
|
this.viewport = null;
|
||||||
|
this.drawer = null;
|
||||||
|
this.profiler = null;
|
||||||
|
|
||||||
|
this.canvas.innerHTML = "";
|
||||||
},
|
},
|
||||||
removeControl: function ( elmt ) {
|
removeControl: function ( elmt ) {
|
||||||
var elmt = $.Utils.getElement( elmt ),
|
var elmt = $.Utils.getElement( elmt ),
|
||||||
@ -2188,7 +2199,7 @@ function onContainerEnter(tracker, position, buttonDownElmt, buttonDownAny) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Default view event handlers.
|
// Utility methods
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
function getControlIndex( viewer, elmt ) {
|
function getControlIndex( viewer, elmt ) {
|
||||||
for ( i = viewer.controls.length - 1; i >= 0; i-- ) {
|
for ( i = viewer.controls.length - 1; i >= 0; i-- ) {
|
||||||
@ -2204,6 +2215,9 @@ function getControlIndex( viewer, elmt ) {
|
|||||||
// Page update routines ( aka Views - for future reference )
|
// Page update routines ( aka Views - for future reference )
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}( OpenSeadragon ));
|
}( OpenSeadragon ));
|
||||||
|
|
||||||
(function( $ ){
|
(function( $ ){
|
||||||
|
166
src/viewer.js
166
src/viewer.js
@ -226,66 +226,6 @@ $.Viewer = function( options ) {
|
|||||||
|
|
||||||
$.Viewer.prototype = {
|
$.Viewer.prototype = {
|
||||||
|
|
||||||
_onClose: function () {
|
|
||||||
|
|
||||||
this.source = null;
|
|
||||||
this.viewport = null;
|
|
||||||
this.drawer = null;
|
|
||||||
this.profiler = null;
|
|
||||||
|
|
||||||
this.canvas.innerHTML = "";
|
|
||||||
},
|
|
||||||
_beforeOpen: function () {
|
|
||||||
if (this.source) {
|
|
||||||
this._onClose();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._lastOpenStartTime = new Date().getTime(); // to ignore earlier opens
|
|
||||||
|
|
||||||
window.setTimeout($.delegate(this, function () {
|
|
||||||
if (this._lastOpenStartTime > this._lastOpenEndTime) {
|
|
||||||
this._setMessage($.Strings.getString("Messages.Loading"));
|
|
||||||
}
|
|
||||||
}), 2000);
|
|
||||||
|
|
||||||
return this._lastOpenStartTime;
|
|
||||||
},
|
|
||||||
_onOpen: function (time, _source, error) {
|
|
||||||
this._lastOpenEndTime = new Date().getTime();
|
|
||||||
|
|
||||||
if (time < this._lastOpenStartTime) {
|
|
||||||
$.Debug.log("Ignoring out-of-date open.");
|
|
||||||
raiseEvent( this, "ignore" );
|
|
||||||
return;
|
|
||||||
} else if (!_source) {
|
|
||||||
this._setMessage(error);
|
|
||||||
raiseEvent( this, "error" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.canvas.innerHTML = "";
|
|
||||||
this._prevContainerSize = $.Utils.getElementSize( this.container );
|
|
||||||
|
|
||||||
this.source = _source;
|
|
||||||
this.viewport = new $.Viewport(this._prevContainerSize, this.source.dimensions, this.config);
|
|
||||||
this.drawer = new $.Drawer(this.source, this.viewport, this.canvas);
|
|
||||||
this.profiler = new $.Profiler();
|
|
||||||
|
|
||||||
this._animating = false;
|
|
||||||
this._forceRedraw = true;
|
|
||||||
scheduleUpdate( this, this._updateMulti );
|
|
||||||
|
|
||||||
for (var i = 0; i < this.overlayControls.length; i++) {
|
|
||||||
var overlay = this.overlayControls[ i ];
|
|
||||||
if (overlay.point != null) {
|
|
||||||
this.drawer.addOverlay(overlay.id, new $.Point(overlay.point.X, overlay.point.Y), $.OverlayPlacement.TOP_LEFT);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.drawer.addOverlay(overlay.id, new $.Rect(overlay.rect.Point.X, overlay.rect.Point.Y, overlay.rect.Width, overlay.rect.Height), overlay.placement);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
raiseEvent( this, "open" );
|
|
||||||
},
|
|
||||||
_updateMulti: function () {
|
_updateMulti: function () {
|
||||||
if (!this.source) {
|
if (!this.source) {
|
||||||
return;
|
return;
|
||||||
@ -297,7 +237,7 @@ $.Viewer.prototype = {
|
|||||||
scheduleUpdate( this, arguments.callee, beginTime );
|
scheduleUpdate( this, arguments.callee, beginTime );
|
||||||
},
|
},
|
||||||
_updateOnce: function () {
|
_updateOnce: function () {
|
||||||
if (!this.source) {
|
if ( !this.source ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,29 +367,100 @@ $.Viewer.prototype = {
|
|||||||
return !!this.source;
|
return !!this.source;
|
||||||
},
|
},
|
||||||
openDzi: function (xmlUrl, xmlString) {
|
openDzi: function (xmlUrl, xmlString) {
|
||||||
var currentTime = this._beforeOpen();
|
var _this = this;
|
||||||
$.DziTileSourceHelper.createFromXml(
|
$.DziTileSourceHelper.createFromXml(
|
||||||
xmlUrl,
|
xmlUrl,
|
||||||
xmlString,
|
xmlString,
|
||||||
$.Utils.createCallback(
|
function( source ){
|
||||||
null,
|
_this.open( source );
|
||||||
$.delegate(this, this._onOpen),
|
}
|
||||||
currentTime
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
openTileSource: function (tileSource) {
|
openTileSource: function ( tileSource ) {
|
||||||
var currentTime = beforeOpen();
|
var _this = this;
|
||||||
window.setTimeout($.delegate(this, function () {
|
window.setTimeout( function () {
|
||||||
onOpen(currentTime, tileSource);
|
_this.open( tileSource );
|
||||||
}), 1);
|
}, 1);
|
||||||
},
|
},
|
||||||
close: function () {
|
open: function( source ) {
|
||||||
if ( !this.source ) {
|
var _this = this;
|
||||||
|
|
||||||
|
if ( this.source ) {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._lastOpenStartTime = new Date().getTime(); // to ignore earlier opens
|
||||||
|
|
||||||
|
window.setTimeout( function () {
|
||||||
|
if ( _this._lastOpenStartTime > _this._lastOpenEndTime ) {
|
||||||
|
_this._setMessage( $.Strings.getString( "Messages.Loading" ) );
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
|
||||||
|
this._lastOpenEndTime = new Date().getTime();
|
||||||
|
|
||||||
|
if ( this._lastOpenStartTime < viewer._lastOpenStartTime ) {
|
||||||
|
$.Debug.log( "Ignoring out-of-date open." );
|
||||||
|
raiseEvent( this, "ignore" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._onClose();
|
this.canvas.innerHTML = "";
|
||||||
|
this._prevContainerSize = $.Utils.getElementSize( this.container );
|
||||||
|
|
||||||
|
if( source ){
|
||||||
|
this.source = source;
|
||||||
|
}
|
||||||
|
this.viewport = new $.Viewport(
|
||||||
|
this._prevContainerSize,
|
||||||
|
this.source.dimensions,
|
||||||
|
this.config
|
||||||
|
);
|
||||||
|
this.drawer = new $.Drawer(
|
||||||
|
this.source,
|
||||||
|
this.viewport,
|
||||||
|
this.canvas
|
||||||
|
);
|
||||||
|
this.profiler = new $.Profiler();
|
||||||
|
|
||||||
|
this._animating = false;
|
||||||
|
this._forceRedraw = true;
|
||||||
|
scheduleUpdate( this, this._updateMulti );
|
||||||
|
|
||||||
|
for ( var i = 0; i < this.overlayControls.length; i++ ) {
|
||||||
|
var overlay = this.overlayControls[ i ];
|
||||||
|
if (overlay.point != null) {
|
||||||
|
this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Point(
|
||||||
|
overlay.point.X,
|
||||||
|
overlay.point.Y
|
||||||
|
),
|
||||||
|
$.OverlayPlacement.TOP_LEFT
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.drawer.addOverlay(
|
||||||
|
overlay.id,
|
||||||
|
new $.Rect(
|
||||||
|
overlay.rect.Point.X,
|
||||||
|
overlay.rect.Point.Y,
|
||||||
|
overlay.rect.Width,
|
||||||
|
overlay.rect.Height
|
||||||
|
),
|
||||||
|
overlay.placement
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
raiseEvent( this, "open" );
|
||||||
|
},
|
||||||
|
close: function () {
|
||||||
|
|
||||||
|
this.source = null;
|
||||||
|
this.viewport = null;
|
||||||
|
this.drawer = null;
|
||||||
|
this.profiler = null;
|
||||||
|
|
||||||
|
this.canvas.innerHTML = "";
|
||||||
},
|
},
|
||||||
removeControl: function ( elmt ) {
|
removeControl: function ( elmt ) {
|
||||||
var elmt = $.Utils.getElement( elmt ),
|
var elmt = $.Utils.getElement( elmt ),
|
||||||
@ -746,7 +757,7 @@ function onContainerEnter(tracker, position, buttonDownElmt, buttonDownAny) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Default view event handlers.
|
// Utility methods
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
function getControlIndex( viewer, elmt ) {
|
function getControlIndex( viewer, elmt ) {
|
||||||
for ( i = viewer.controls.length - 1; i >= 0; i-- ) {
|
for ( i = viewer.controls.length - 1; i >= 0; i-- ) {
|
||||||
@ -762,4 +773,7 @@ function getControlIndex( viewer, elmt ) {
|
|||||||
// Page update routines ( aka Views - for future reference )
|
// Page update routines ( aka Views - for future reference )
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}( OpenSeadragon ));
|
}( OpenSeadragon ));
|
||||||
|
Loading…
Reference in New Issue
Block a user