Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/187967

Change subject: Only re-render if the images is larger than the last rendering
......................................................................

Only re-render if the images is larger than the last rendering

Means we don't make unnecessary requests to the image API
and make the server side image resizer do extra work.

Bug: T88248
Change-Id: I20e1d37c913522eafc45a9a2e263051322b9b083
---
M modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js
1 file changed, 20 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/67/187967/1

diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js 
b/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js
index c61e439..eacc7c1 100644
--- a/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js
+++ b/modules/ve-mw/ce/nodes/ve.ce.MWImageNode.js
@@ -25,11 +25,14 @@
                minDimensions: { width: 1, height: 1 }
        }, config );
 
-       // Parent constructor
-       ve.ce.GeneratedContentNode.call( this );
-
+       // Properties
        this.$figure = $figure;
        this.$image = $image;
+       // Parent constructor triggers render so this must preceed it
+       this.renderedDimensions = null;
+
+       // Parent constructor
+       ve.ce.GeneratedContentNode.call( this );
 
        // Mixin constructors
        ve.ce.FocusableNode.call( this, this.$figure, config );
@@ -79,14 +82,22 @@
 
 /** */
 ve.ce.MWImageNode.prototype.generateContents = function () {
-       var xhr, deferred = $.Deferred();
+       var xhr,
+               width = this.getModel().getAttribute( 'width' ),
+               height = this.getModel().getAttribute( 'height' ),
+               deferred = $.Deferred();
+
+       // If the current rendering is larger don't fetch a new image, just let 
the browser resize
+       if ( this.renderedDimensions && this.renderedDimensions.width > width ) 
{
+               return deferred.reject().promise();
+       }
 
        xhr = ve.init.target.constructor.static.apiRequest( {
                action: 'query',
                prop: 'imageinfo',
                iiprop: 'url',
-               iiurlwidth: this.getModel().getAttribute( 'width' ),
-               iiurlheight: this.getModel().getAttribute( 'height' ),
+               iiurlwidth: width,
+               iiurlheight: height,
                titles: this.getModel().getFilename()
        } )
                .done( this.onParseSuccess.bind( this, deferred ) )
@@ -118,6 +129,9 @@
 /** */
 ve.ce.MWImageNode.prototype.render = function ( generatedContents ) {
        this.$image.attr( 'src', generatedContents );
+       // As we only re-render when the image is larger than last renedered 
size
+       // this will always be the largest ever rendering
+       this.renderedDimensions = ve.copy( 
this.model.getScalable().getCurrentDimensions() );
        if ( this.live ) {
                this.afterRender();
        }

-- 
To view, visit https://gerrit.wikimedia.org/r/187967
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I20e1d37c913522eafc45a9a2e263051322b9b083
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to