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

Change subject: Clean up entityview
......................................................................


Clean up entityview

* Switch from holding a reference to the entity terms jQuery DOM element to
  having a reference to the `entitytermsview` jQuery UI widget
* Move jQuery data initialization from _init to _create to closer mimick
  jQuery UI's behaviour
* Remove handling of events which are already captured in
  `entitytermsforlanguageview`
* Use jQuery UI's `_on` method for event binding, since it handles unbinding,
  namespacing and fixating the event handler's `this` argument

Change-Id: Ic672a7267c6bb508e943d991cd296d73566868b0
---
M view/resources/jquery/wikibase/jquery.wikibase.entityview.js
1 file changed, 21 insertions(+), 32 deletions(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entityview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.entityview.js
index 8381190..9126b4e 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.entityview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.entityview.js
@@ -54,10 +54,10 @@
        },
 
        /**
-        * @property {jQuery|null}
+        * @property {jQuery.wikibase.entitytermsview}
         * @readonly
         */
-       $entityTerms: null,
+       _entityTerms: null,
 
        /**
         * @inheritdoc
@@ -75,6 +75,8 @@
         */
        _createEntityview: function() {
                PARENT.prototype._create.call( this );
+
+               this.element.data( $.wikibase.entityview.prototype.widgetName, 
this );
        },
 
        /**
@@ -88,8 +90,6 @@
                        throw new Error( 'Required option(s) missing' );
                }
 
-               this.element.data( $.wikibase.entityview.prototype.widgetName, 
this );
-
                this._initEntityTerms();
 
                PARENT.prototype._init.call( this );
@@ -101,41 +101,32 @@
         * @protected
         */
        _initEntityTerms: function() {
-               this.$entityTerms = $( '.wikibase-entitytermsview', 
this.element );
+               var $entityTerms = $( '.wikibase-entitytermsview', this.element 
);
 
-               if ( !this.$entityTerms.length ) {
-                       this.$entityTerms = $( '<div/>' ).prependTo( this.$main 
);
+               if ( !$entityTerms.length ) {
+                       $entityTerms = $( '<div/>' ).prependTo( this.$main );
                }
 
-               this.options.buildEntityTermsView( 
this.options.value.getFingerprint(), this.$entityTerms );
+               this._entityTerms = this.options.buildEntityTermsView(
+                       this.options.value.getFingerprint(),
+                       $entityTerms
+               );
        },
 
        /**
         * @protected
         */
        _attachEventHandlers: function() {
-               var self = this;
+               this._on( {
+                       entitytermsviewafterstartediting: function( event ) {
+                               event.stopPropagation();
+                               this._trigger( 'afterstartediting' );
+                       },
 
-               this.element
-               .on( [
-                       'labelviewafterstartediting.' + this.widgetName,
-                       'descriptionviewafterstartediting.' + this.widgetName,
-                       'aliasesviewafterstartediting.' + this.widgetName,
-                       'entitytermsviewafterstartediting.' + this.widgetName
-               ].join( ' ' ),
-               function( event ) {
-                       self._trigger( 'afterstartediting' );
-               } );
-
-               this.element
-               .on( [
-                       'labelviewafterstopediting.' + this.widgetName,
-                       'descriptionviewafterstopediting.' + this.widgetName,
-                       'aliasesviewafterstopediting.' + this.widgetName,
-                       'entitytermsviewafterstopediting.' + this.widgetName
-               ].join( ' ' ),
-               function( event, dropValue ) {
-                       self._trigger( 'afterstopediting', null, [dropValue] );
+                       entitytermsviewafterstopediting: function( event, 
dropValue ) {
+                               event.stopPropagation();
+                               this._trigger( 'afterstopediting', null, 
[dropValue] );
+                       }
                } );
        },
 
@@ -160,9 +151,7 @@
         * @param {string} state "disable" or "enable"
         */
        _setState: function( state ) {
-               if ( this.$entityTerms ) {
-                       this.$entityTerms.data( 'entitytermsview' )[state]();
-               }
+               this._entityTerms[state]();
        }
 
 } );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic672a7267c6bb508e943d991cd296d73566868b0
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <adrian.he...@wikimedia.de>
Gerrit-Reviewer: Jonas Kress (WMDE) <jonas.kr...@wikimedia.de>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@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