jenkins-bot has submitted this change and it was merged.

Change subject: Unify startEditing and stopEditing in EditableTemplatedWidget
......................................................................


Unify startEditing and stopEditing in EditableTemplatedWidget

Change-Id: Ic5d48d629131e350ae2bd33e032b8181963cf1c0
---
M view/resources/jquery/ui/jquery.ui.EditableTemplatedWidget.js
M view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
M view/resources/jquery/wikibase/jquery.wikibase.descriptionview.js
M view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguageview.js
M view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
M view/resources/jquery/wikibase/jquery.wikibase.labelview.js
M view/resources/jquery/wikibase/jquery.wikibase.sitelinkgroupview.js
M view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
M view/resources/jquery/wikibase/jquery.wikibase.statementview.RankSelector.js
M view/resources/jquery/wikibase/jquery.wikibase.statementview.js
10 files changed, 83 insertions(+), 136 deletions(-)

Approvals:
  Tobias Gritschacher: Looks good to me, approved
  Jonas Kress (WMDE): Looks good to me, approved
  Thiemo Mättig (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/view/resources/jquery/ui/jquery.ui.EditableTemplatedWidget.js 
b/view/resources/jquery/ui/jquery.ui.EditableTemplatedWidget.js
index 5625a88..1b7ca24 100644
--- a/view/resources/jquery/ui/jquery.ui.EditableTemplatedWidget.js
+++ b/view/resources/jquery/ui/jquery.ui.EditableTemplatedWidget.js
@@ -61,16 +61,6 @@
        },
 
        /**
-        * Draws the widget according to whether it is in edit mode or not.
-        *
-        * @return {Object} jQuery.Promise
-        *         No resolved parameters.
-        *         Rejected parameters:
-        *         - {Error}
-        */
-       draw: util.abstractMember,
-
-       /**
         * Starts the widget's edit mode.
         *
         * @return {Object} jQuery.Promise
@@ -79,26 +69,22 @@
         *         - {Error}
         */
        startEditing: function() {
-               var deferred = $.Deferred();
-
                if ( this.isInEditMode() ) {
-                       return deferred.resolve().promise();
+                       return $.Deferred().resolve().promise();
                }
 
                var self = this;
 
-               self.element.addClass( 'wb-edit' );
+               this.element.addClass( 'wb-edit' );
 
-               this.draw()
+               return this._startEditing()
                .done( function() {
                        self._trigger( 'afterstartediting' );
-                       deferred.resolve();
-               } )
-               .fail( function( error ) {
-                       deferred.reject( error );
                } );
+       },
 
-               return deferred.promise();
+       _startEditing: function() {
+               return $.Deferred().resolve().promise();
        },
 
        /**
@@ -112,39 +98,25 @@
         *         - {Error}
         */
        stopEditing: function( dropValue ) {
-               var done = $.Deferred().resolve().promise();
                if ( !this.isInEditMode() ) {
-                       return done;
+                       return $.Deferred().resolve().promise();
                }
-               this._afterStopEditing( dropValue );
-               return done;
-       },
 
-       /**
-        * @param {boolean} dropValue
-        * @return {Object} jQuery.Promise
-        *         No resolved parameters.
-        *         Rejected parameters:
-        *         - {Error}
-        */
-       _afterStopEditing: function( dropValue ) {
-               var self = this,
-                       deferred = $.Deferred();
+               this.element.removeClass( 'wb-edit' );
 
-               self.element.removeClass( 'wb-edit' );
-
-               this.draw()
+               var self = this;
+               return this._stopEditing( dropValue )
                .done( function() {
                        self.enable();
                        self._trigger( 'afterstopediting', null, [dropValue] );
-                       deferred.resolve();
                } )
                .fail( function( error ) {
                        self.setError( error );
-                       deferred.reject( error );
                } );
+       },
 
-               return deferred.promise();
+       _stopEditing: function( dropValue ) {
+               return $.Deferred().resolve().promise();
        },
 
        /**
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
index df8a473..a7093f4 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.aliasesview.js
@@ -159,6 +159,16 @@
                } );
        },
 
+       _startEditing: function() {
+               // FIXME: This could be much faster
+               return this.draw();
+       },
+
+       _stopEditing: function() {
+               // FIXME: This could be much faster
+               return this.draw();
+       },
+
        /**
         * @inheritdoc
         * @protected
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.descriptionview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.descriptionview.js
index 2e2f271..86da940 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.descriptionview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.descriptionview.js
@@ -161,6 +161,16 @@
                return done;
        },
 
+       _startEditing: function() {
+               // FIXME: This could be much faster
+               return this.draw();
+       },
+
+       _stopEditing: function() {
+               // FIXME: This could be much faster
+               return this.draw();
+       },
+
        /**
         * @see jQuery.ui.TemplatedWidget._setOption
         */
diff --git 
a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguageview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguageview.js
index b4e4a89..862907c 100644
--- 
a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguageview.js
+++ 
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsforlanguageview.js
@@ -170,32 +170,24 @@
                } );
        },
 
-       draw: function() {
-               return $.Deferred().resolve().promise();
-       },
-
        /**
         * Puts the widget into edit mode.
         */
-       startEditing: function() {
-               if ( this.isInEditMode() ) {
-                       return $.Deferred().resolve().promise();
-               }
-
+       _startEditing: function() {
                this.$labelview.data( 'labelview' ).startEditing();
                this.$descriptionview.data( 'descriptionview' ).startEditing();
                this.$aliasesview.data( 'aliasesview' ).startEditing();
-               return PARENT.prototype.startEditing.call( this );
+               return $.Deferred().resolve().promise();
        },
 
        /**
         * @param {boolean} [dropValue]
         */
-       _afterStopEditing: function( dropValue ) {
+       _stopEditing: function( dropValue ) {
                this.$labelview.data( 'labelview' ).stopEditing( dropValue );
                this.$descriptionview.data( 'descriptionview' ).stopEditing( 
dropValue );
                this.$aliasesview.data( 'aliasesview' ).stopEditing( dropValue 
);
-               return PARENT.prototype._afterStopEditing.call( this, dropValue 
);
+               return $.Deferred().resolve().promise();
        },
 
        /**
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
index 022d770..895c3f3 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.entitytermsview.js
@@ -337,23 +337,19 @@
                        } );
        },
 
-       /**
-        * @inheritdoc
-        */
-       startEditing: function() {
+       _startEditing: function() {
                this._getEntitytermsforlanguagelistview().startEditing();
-
-               return PARENT.prototype.startEditing.call( this );
+               return this.draw();
        },
 
        /**
         * @param {boolean} dropValue
         */
-       _afterStopEditing: function( dropValue ) {
+       _stopEditing: function( dropValue ) {
+               this.draw();
                var self = this;
                return this._getEntitytermsforlanguagelistview().stopEditing( 
dropValue ).done( function() {
                        self.notification();
-                       return PARENT.prototype._afterStopEditing.call( self );
                } );
        },
 
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.labelview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.labelview.js
index c84f2c5..f94a4dd 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.labelview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.labelview.js
@@ -168,15 +168,17 @@
                return deferred.resolve().promise();
        },
 
-       /**
-        * @inheritdoc
-        * @protected
-        */
-       _afterStopEditing: function( dropValue ) {
+       _startEditing: function() {
+               // FIXME: This could be much faster
+               return this.draw();
+       },
+
+       _stopEditing: function( dropValue ) {
                if ( dropValue && this.options.value.getText() === '' ) {
                        this.$text.children( '.' + this.widgetFullName + 
'-input' ).val( '' );
                }
-               return PARENT.prototype._afterStopEditing.call( this, dropValue 
);
+               // FIXME: This could be much faster
+               return this.draw();
        },
 
        /**
diff --git 
a/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgroupview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgroupview.js
index f8078c9..f56a7b3 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgroupview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.sitelinkgroupview.js
@@ -201,25 +201,15 @@
                return value;
        },
 
-       /**
-        * @see jQuery.ui.EditableTemplatedWidget.startEditing
-        */
-       startEditing: function() {
-               var self = this;
-               return this.$sitelinklistview.data( 'sitelinklistview' 
).startEditing().done( function() {
-                       return PARENT.prototype.startEditing.call( self );
-               } );
+       _startEditing: function() {
+               return this.$sitelinklistview.data( 'sitelinklistview' 
).startEditing();
        },
 
-       /**
-        * @see jQuery.ui.EditableTemplatedWidget._afterStopEditing
-        */
-       _afterStopEditing: function( dropValue ) {
+       _stopEditing: function( dropValue ) {
                var self = this;
                return this.$sitelinklistview.data( 'sitelinklistview' 
).stopEditing( dropValue )
                .done( function() {
                        self.notification();
-                       return PARENT.prototype._afterStopEditing.call( self );
                } );
        },
 
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
index 36b8955..8b1bfda 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.sitelinklistview.js
@@ -303,10 +303,7 @@
                return $parenthesesMsg.contents();
        },
 
-       /**
-        * @see jQuery.ui.EditableTemplatedWidget.startEditing
-        */
-       startEditing: function() {
+       _startEditing: function() {
                var self = this;
 
                this._eventSingletonManager.register(
@@ -326,7 +323,7 @@
 
                self._startEditingInViewport();
 
-               return PARENT.prototype.startEditing.call( this );
+               return $.Deferred().resolve().promise();
        },
 
        _startEditingInViewport: function() {
@@ -372,21 +369,14 @@
                return PARENT.prototype.stopEditing.call( this, dropValue );
        },
 
-       /**
-        * @see jQuery.ui.EditableTemplatedWidget._afterStopEditing
-        */
-       _afterStopEditing: function( dropValue ) {
-               var self = this;
-
-               return PARENT.prototype._afterStopEditing.call( this, dropValue 
)
-                       .done( function() {
-                               self._refreshCounter();
-                               self._eventSingletonManager.unregister(
-                                       self,
-                                       window,
-                                       namespaceEventNames( 'scroll touchmove 
resize', self.widgetName )
-                               );
-                       } );
+       _stopEditing: function( dropValue ) {
+               this._refreshCounter();
+               this._eventSingletonManager.unregister(
+                       this,
+                       window,
+                       namespaceEventNames( 'scroll touchmove resize', 
this.widgetName )
+               );
+               return $.Deferred().resolve().promise();
        },
 
        _removeIncompleteSiteLinks: function() {
diff --git 
a/view/resources/jquery/wikibase/jquery.wikibase.statementview.RankSelector.js 
b/view/resources/jquery/wikibase/jquery.wikibase.statementview.RankSelector.js
index 65af667..79cb7a0 100644
--- 
a/view/resources/jquery/wikibase/jquery.wikibase.statementview.RankSelector.js
+++ 
b/view/resources/jquery/wikibase/jquery.wikibase.statementview.RankSelector.js
@@ -312,15 +312,16 @@
                        return $.Deferred().resolve().promise();
                },
 
-               /**
-                * @inheritdoc
-                */
-               stopEditing: function( dropValue ) {
+               _startEditing: function() {
+                       return this.draw();
+               },
+
+               _stopEditing: function( dropValue ) {
                        // Hide the menu the rank selector currently references 
to:
                        if ( $menu && $menu.data( this.widgetName ) === this ) {
                                $menu.hide();
                        }
-                       return PARENT.prototype.stopEditing.call( this, 
dropValue );
+                       return this.draw();
                }
 
        } );
diff --git a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
index eafc65f..bbff224 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
@@ -597,16 +597,8 @@
                this.$refsHeading.find( '.ui-toggler-label' ).empty().append( 
$counterMsg );
        },
 
-       /**
-        * @inheritdoc
-        */
-       startEditing: function() {
+       _startEditing: function() {
                var self = this;
-
-               if ( this.isInEditMode() ) {
-                       return $.Deferred().resolve().promise();
-               }
-
                this._qualifierAdder = this.options.getAdder(
                        function() {
                                var listview = self._qualifiers;
@@ -621,18 +613,14 @@
                        mw.msg( 'wikibase-addqualifier' )
                );
 
-               // We need to initialize the main snak before calling 
PARENT::startEditing,
-               // since that triggers 'afterstartediting' which tries to set 
focus into
-               // the main snak
-               this._createMainSnak();
-               return this._mainSnakSnakView.startEditing().then( function() {
-                       // PARENT::startEditing calls this.draw
-                       return PARENT.prototype.startEditing.call( self );
-               } ).then( function() {
-                       self._rankSelector.startEditing();
-                       self._qualifiers.startEditing();
-                       self._startEditingReferences();
-               } );
+               return $.when(
+                       this._createMainSnak(),
+                       this.draw(),
+                       this._mainSnakSnakView.startEditing(),
+                       this._rankSelector.startEditing(),
+                       this._qualifiers.startEditing(),
+                       this._startEditingReferences()
+               );
        },
 
        /**
@@ -653,19 +641,15 @@
                }
        },
 
-       /**
-        * @inheritdoc
-        * @protected
-        */
-       _afterStopEditing: function( dropValue ) {
-               this._mainSnakSnakView.stopEditing( dropValue );
-               this._stopEditingQualifiers( dropValue );
-               this._rankSelector.stopEditing( dropValue );
-
+       _stopEditing: function( dropValue ) {
                // FIXME: Should not be necessary if _setOption would do the 
right thing for values
                this._recreateReferences();
+               this._stopEditingQualifiers( dropValue );
 
-               return PARENT.prototype._afterStopEditing.call( this, dropValue 
);
+               return $.when(
+                       this._mainSnakSnakView.stopEditing( dropValue ),
+                       this._rankSelector.stopEditing( dropValue )
+               );
        },
 
        /**

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic5d48d629131e350ae2bd33e032b8181963cf1c0
Gerrit-PatchSet: 11
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <m...@adrianheine.de>
Gerrit-Reviewer: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to