Alex Monk has uploaded a new change for review.
https://gerrit.wikimedia.org/r/173360
Change subject: Make category widget items draggable
......................................................................
Make category widget items draggable
Change-Id: Idae3e293a6f7c29b70bc27c3db58e014d23b3e47
---
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
2 files changed, 23 insertions(+), 17 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor
refs/changes/60/173360/1
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js
index 91b8aff..2ec9832 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryItemWidget.js
@@ -12,6 +12,7 @@
* @abstract
* @extends OO.ui.Widget
* @mixins OO.ui.IndicatorElement
+ * @mixins OO.ui.DraggableElement
*
* @constructor
* @param {Object} [config] Configuration options
@@ -29,6 +30,7 @@
// Mixin constructors
OO.ui.IndicatorElement.call( this, config );
+ OO.ui.DraggableElement.call( this, config );
// Properties
this.name = config.item.name;
@@ -72,6 +74,7 @@
OO.inheritClass( ve.ui.MWCategoryItemWidget, OO.ui.Widget );
+OO.mixinClass( ve.ui.MWCategoryItemWidget, OO.ui.DraggableElement );
OO.mixinClass( ve.ui.MWCategoryItemWidget, OO.ui.IndicatorElement );
/* Events */
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
index b4ad29b..09e608e 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
@@ -11,7 +11,7 @@
* @class
* @abstract
* @extends OO.ui.Widget
- * @mixins OO.ui.GroupElement
+ * @mixins OO.ui.DraggableGroupElement
*
* @constructor
* @param {Object} [config] Configuration options
@@ -26,6 +26,7 @@
// Mixin constructors
OO.ui.GroupElement.call( this, config );
+ OO.ui.DraggableGroupElement.call( this, config );
// Properties
this.categories = {};
@@ -61,7 +62,8 @@
OO.inheritClass( ve.ui.MWCategoryWidget, OO.ui.Widget );
-OO.mixinClass( ve.ui.MWCategoryWidget, OO.ui.GroupElement );
+OO.mixinClass( ve.ui.MWCategoryWidget, OO.ui.GroupElement ); // TODO: WTF?
+OO.mixinClass( ve.ui.MWCategoryWidget, OO.ui.DraggableGroupElement );
/* Events */
@@ -241,7 +243,7 @@
ve.ui.MWCategoryWidget.prototype.addItems = function ( items, index ) {
var i, len, item, categoryItem,
categoryItems = [],
- existingCategoryItem = null,
+ existingCategoryItems = [],
categoryNames = $.map( items, function ( item ) {
return item.name;
} ),
@@ -281,39 +283,40 @@
// Index item
categoryWidget.categories[itemTitle.getMainText()] =
categoryItem;
// Copy sortKey from old item when "moving"
- if ( existingCategoryItem ) {
- categoryItem.sortKey =
existingCategoryItem.sortKey;
+ existingCategoryItems = $.grep( categoryWidget.items,
function ( existingCategoryItem ) {
+ return config.item.value ===
existingCategoryItem.value;
+ } );
+ if ( existingCategoryItems.length ) {
+ // There should only be one element in
existingCategoryItems
+ categoryItem.sortKey =
existingCategoryItems[0].sortKey;
+ categoryWidget.removeItems( [
existingCategoryItems[0] ] );
}
categoryItems.push( categoryItem );
}
- OO.ui.GroupElement.prototype.addItems.call( categoryWidget,
categoryItems, index );
+ OO.ui.DraggableGroupElement.prototype.addItems.call(
categoryWidget, categoryItems, index );
categoryWidget.fitInput();
} );
};
/**
- * Remove category items.
- *
- * @method
- * @param {string[]} names Names of categories to remove
+ * @inheritdoc
*/
-ve.ui.MWCategoryWidget.prototype.removeItems = function ( names ) {
- var i, len, categoryItem,
- items = [];
+ve.ui.MWCategoryWidget.prototype.removeItems = function ( items ) {
+ var i, len, categoryItem;
- for ( i = 0, len = names.length; i < len; i++ ) {
- categoryItem = this.categories[names[i]];
+ for ( i = 0, len = items.length; i < len; i++ ) {
+ categoryItem = items[i];
if ( categoryItem ) {
categoryItem.disconnect( this );
items.push( categoryItem );
- delete this.categories[names[i]];
+ delete this.categories[categoryItem.value];
}
}
- OO.ui.GroupElement.prototype.removeItems.call( this, items );
+ OO.ui.DraggableGroupElement.prototype.removeItems.call( this, items );
this.fitInput();
};
--
To view, visit https://gerrit.wikimedia.org/r/173360
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idae3e293a6f7c29b70bc27c3db58e014d23b3e47
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Alex Monk <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits