Bartosz Dziewoński has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/327796 )
Change subject: uw.DescriptionsDetailsWidget: Do not re-create description
widgets in #setSerialized
......................................................................
uw.DescriptionsDetailsWidget: Do not re-create description widgets in
#setSerialized
This was causing the copying of metadata, or returning to the
'Details' step after going back, to be much slower than it should be.
Change-Id: I5d07806cfe52347fa07b022f3670067f86b792e5
---
M resources/details/uw.DescriptionsDetailsWidget.js
1 file changed, 24 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UploadWizard
refs/changes/96/327796/1
diff --git a/resources/details/uw.DescriptionsDetailsWidget.js
b/resources/details/uw.DescriptionsDetailsWidget.js
index f254342..8dbede6 100644
--- a/resources/details/uw.DescriptionsDetailsWidget.js
+++ b/resources/details/uw.DescriptionsDetailsWidget.js
@@ -19,7 +19,7 @@
// Messages: mwe-upwiz-desc-add-0, mwe-upwiz-desc-add-n
label: mw.msg( 'mwe-upwiz-desc-add-' + ( !this.required
? '0' : 'n' ) )
} );
- this.addDescriptionButton.connect( this, { click:
'addDescription' } );
+ this.addDescriptionButton.connect( this, { click: [
'addDescriptions', 1 ] } );
this.connect( this, { change: 'recountDescriptions' } );
@@ -43,10 +43,16 @@
OO.mixinClass( uw.DescriptionsDetailsWidget, OO.ui.mixin.GroupElement );
/**
- * Add a description in another language.
+ * Add multiple descriptions in another language.
+ *
+ * @param {number} n Number of descriptions
*/
- uw.DescriptionsDetailsWidget.prototype.addDescription = function () {
- this.addItems( [ new uw.DescriptionDetailsWidget() ] );
+ uw.DescriptionsDetailsWidget.prototype.addDescriptions = function ( n )
{
+ var items = [];
+ while ( n-- ) {
+ items.push( new uw.DescriptionDetailsWidget() );
+ }
+ this.addItems( items );
};
/**
@@ -120,14 +126,20 @@
* see uw.DescriptionDetailsWidget#setSerialized
*/
uw.DescriptionsDetailsWidget.prototype.setSerialized = function (
serialized ) {
- var items = serialized.descriptions.map( function ( serialized,
i ) {
- var widget = new uw.DescriptionDetailsWidget( {
- canBeRemoved: !( this.required && i === 0 )
- } );
- widget.setSerialized( serialized );
- return widget;
- }.bind( this ) );
- this.clearItems().addItems( items );
+ var i, items;
+ items = this.getItems();
+ if ( items.length > serialized.descriptions.length ) {
+ // Remove any additional, no longer needed descriptions
+ this.removeItems( items.slice(
/*start=*/serialized.descriptions.length ) );
+ } else if ( items.length < serialized.descriptions.length ) {
+ // Add more descriptions if we had too few
+ this.addDescriptions( serialized.descriptions.length -
items.length );
+ }
+ items = this.getItems();
+ // Copy contents
+ for ( i = 0; i < serialized.descriptions.length; i++ ) {
+ items[ i ].setSerialized( serialized.descriptions[ i ]
);
+ }
};
} )( mediaWiki, mediaWiki.uploadWizard, jQuery, OO );
--
To view, visit https://gerrit.wikimedia.org/r/327796
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5d07806cfe52347fa07b022f3670067f86b792e5
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits