Adrian Lang has uploaded a new change for review. https://gerrit.wikimedia.org/r/242822
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(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/22/242822/1 diff --git a/view/resources/jquery/wikibase/jquery.wikibase.entityview.js b/view/resources/jquery/wikibase/jquery.wikibase.entityview.js index 7c95018..cda68ee 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.entityTermsViewBuilder( this.options.value.getFingerprint(), this.$entityTerms ); + this._entityTerms = this.options.entityTermsViewBuilder( + 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: newchange Gerrit-Change-Id: Ic672a7267c6bb508e943d991cd296d73566868b0 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Adrian Lang <adrian.he...@wikimedia.de> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits