Adrian Lang has uploaded a new change for review.

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

Change subject: Defer main snak SnakView initialization
......................................................................

Defer main snak SnakView initialization

Bug: T125503
Change-Id: Ia7df99fb60c726baf62abae019ac5a3f12cebaf8
---
M view/resources/jquery/wikibase/jquery.wikibase.statementview.js
1 file changed, 21 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/01/269401/1

diff --git a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js 
b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
index c5cef41..f7c31f3 100644
--- a/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
+++ b/view/resources/jquery/wikibase/jquery.wikibase.statementview.js
@@ -106,7 +106,7 @@
        },
 
        /**
-        * @property {jQuery.wikibase.snakview}
+        * @property {jQuery.wikibase.snakview|null}
         * @private
         */
        _mainSnakSnakView: null,
@@ -189,17 +189,25 @@
                } );
        },
 
+       _getMainSnakSnakView: function() {
+               if ( !this._mainSnakSnakView ) {
+                       this._createMainSnak();
+               }
+               return this._mainSnakSnakView;
+       },
+
        /**
         * @private
-        *
-        * @param {wikibase.datamodel.Snak|null} [snak=null]
         */
-       _createMainSnak: function( snak ) {
+       _createMainSnak: function() {
                if ( this.$mainSnak.data( 'snakview' ) ) {
                        this._mainSnakSnakView = this.$mainSnak.data( 
'snakview' );
                        return;
                }
 
+               var snak = this.options.value
+                       ? this.options.value.getClaim().getMainSnak()
+                       : this.options.predefined.mainSnak || null;
                var self = this;
 
                this.$mainSnak
@@ -395,7 +403,7 @@
                this._rankSelector.destroy();
                this.$rankSelector.off( '.' + this.widgetName );
 
-               this._mainSnakSnakView.destroy();
+               this._mainSnakSnakView && this._mainSnakSnakView.destroy();
                this.$mainSnak.off( '.' + this.widgetName );
 
                this._destroyQualifiersListView();
@@ -439,10 +447,9 @@
                        : wb.datamodel.Statement.RANK.NORMAL
                );
 
-               this._createMainSnak( this.options.value
-                               ? this.options.value.getClaim().getMainSnak()
-                               : this.options.predefined.mainSnak || null
-               );
+               if ( this.$mainSnak.is( ':empty' ) ) {
+                       this._createMainSnak();
+               }
 
                if ( this.isInEditMode()
                        || this.options.value
@@ -503,7 +510,7 @@
                        }
                }
 
-               return this._mainSnakSnakView.isInitialValue();
+               return this._getMainSnakSnakView().isInitialValue();
        },
 
        /**
@@ -515,7 +522,7 @@
         * @return {wikibase.datamodel.Statement|null}
         */
        _instantiateStatement: function( guid ) {
-               var mainSnak = this._mainSnakSnakView.snak();
+               var mainSnak = this._getMainSnakSnakView().snak();
 
                if ( !mainSnak ) {
                        return null;
@@ -641,7 +648,7 @@
                        .fail( deferred.reject );
                } );
 
-               this._mainSnakSnakView.startEditing();
+               this._getMainSnakSnakView().startEditing();
                this._startEditingReferences();
 
                return deferred.promise();
@@ -836,7 +843,7 @@
                var response = PARENT.prototype._setOption.apply( this, 
arguments );
 
                if ( key === 'disabled' ) {
-                       this._mainSnakSnakView.option( key, value );
+                       this._getMainSnakSnakView().option( key, value );
                        if ( this._qualifiers ) {
                                this._qualifiers.option( key, value );
                        }
@@ -851,7 +858,7 @@
         * @inheritdoc
         */
        focus: function() {
-               this._mainSnakSnakView.focus();
+               this._getMainSnakSnakView().focus();
        }
 } );
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia7df99fb60c726baf62abae019ac5a3f12cebaf8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>

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

Reply via email to