[MediaWiki-commits] [Gerrit] wikimedia...discernatron[master]: Bug fixes in solitaire ui

2016-10-12 Thread EBernhardson (Code Review)
EBernhardson has submitted this change and it was merged.

Change subject: Bug fixes in solitaire ui
..


Bug fixes in solitaire ui

- Refactoring how cards are added & removed from piles.
  Now two functions (add/remove) instead of a moveTo(to, from) func.
- Improving how cards are moved from stack to deck.
  This used to use the same logic as cycling through the deck,
  causing upcoming cards to change order when a card was added
  back into the deck.
- improving card counter text.

Change-Id: I343582debeeef029e63624de86bae1eaa75fd084
---
M public/js/discernadeck.js
1 file changed, 59 insertions(+), 44 deletions(-)

Approvals:
  EBernhardson: Verified; Looks good to me, approved



diff --git a/public/js/discernadeck.js b/public/js/discernadeck.js
index 7b39d79..d910901 100644
--- a/public/js/discernadeck.js
+++ b/public/js/discernadeck.js
@@ -20,11 +20,10 @@
 
for ( var i = 0; i < this.cards.length; i++ ) {
var card = this.cards[i];
-   var reverseIndex = this.cards.length - i - 1 ;
+   var reverseIndex = this.cards.length - 1 - i;
TweenLite.to( card.domEl, 0.8,{x: stackXY.x, y: 
stackXY.y - (stack.DROP_GAP * (reverseIndex ) ), zIndex: stack.cards.length - 
reverseIndex, ease:Elastic.easeOut} );
-   card.setCardXY( stackXY.x, stackXY.y + stack.gap - (( 
reverseIndex - 1) * stack.DROP_GAP ));
+   card.setCardXY( stackXY.x, stackXY.y - (stack.DROP_GAP 
* (reverseIndex ) ) );
}
-
},
removeCard: function( card ) {
this.cards.splice( this.cards.indexOf( card ), 1 );
@@ -32,8 +31,10 @@
},
onTap: function ( stack ) {
return function( ev ) {
-   if ( stack.deck.currentCard ) {
-   stack.deck.currentCard.moveCardToStack( 
stack.deck, stack );
+   var card = stack.deck.currentCard;
+   if ( card ) {
+   card.addCardToStack( stack );
+   card.animateTo( stack );
} else {
stack.deck.revealCard(stack.deck)();
}
@@ -92,10 +93,7 @@
onPanStart: function( card ) {
return function( ev ) {
card.domEl.classList.add('active');
-   if (card.stack) {
-   card.stack.removeCard( card );
-   card.stack = false;
-   }
+   card.removeCardFromStack( card.stack );
}
},
onPan: function ( card ) {
@@ -112,28 +110,40 @@
}
}
},
-   moveCardToStack: function( oldStack, newStack ){
+   removeCardFromStack: function ( stack ) {
 
-   if ( this.deck === oldStack || !oldStack) {
-   this.deck.removeFromDeck( this );
+   if ( Deck.isPrototypeOf( stack ) ) {
+   stack.removeFromDeck( this );
}
 
-   if ( this.deck === newStack ) {
-   this.deck.addCardToDeck( this );
+   if ( Stack.isPrototypeOf( stack ) ) {
+   stack.removeCard( this );
+   }
+   this.stack = false;
+   },
+   addCardToStack: function( stack ) {
+
+   if ( this.stack ) {
+   this.removeCardFromStack( this.stack )
}
 
-   if ( oldStack && this.deck !== oldStack ) {
-   this.stack.removeCard( this );
+   if ( Deck.isPrototypeOf( stack ) ) {
+   stack.addCardToDeck( this );
}
 
-   newStack.addCard(this);
-
-   this.stack = newStack;
-
-   var newStackXY = newStack.getStackPos();
+   if ( Stack.isPrototypeOf( stack ) ) {
+   stack.addCard( this );
+   }
+   this.stack = stack;
+   this.setFormVal( stack.domEl.dataset.score );
+   },
+   animateTo: function( newStack ){
+   var newStackXY = ( newStack.getStackPos ) ? 
newStack.getStackPos() : {x:0, y:0};
this.setCardXY( newStackXY.x,  newStackXY.y );
TweenLite.to( this.domEl, 0.2,{x: newStackXY.x, y: 
newStackXY.y, zIndex:newStack.getCards().length, ease:Power4.easeOut} );
-   this.formEl.value = 
newStack.domEl.attributes.getNamedItem('data-score').value;
+   },
+   setFormVal: function( val ){
+   this.formEl.value = val;
},
onPanEnd: function( card ) {
 
@@ -143,23 +153,18 @@
 
var droppedArea = card.findDropCollision( dropAreas );

[MediaWiki-commits] [Gerrit] wikimedia...discernatron[master]: Bug fixes in solitaire ui

2016-09-20 Thread Jdrewniak (Code Review)
Jdrewniak has uploaded a new change for review.

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

Change subject: Bug fixes in solitaire ui
..

Bug fixes in solitaire ui

- Refactoring how cards are added & removed from piles.
  Now two functions (add/remove) instead of a moveTo(to, from) func.
- Improving how cards are moved from stack to deck.
  This used to use the same logic as cycling through the deck,
  causing upcoming cards to change order when a card was added
  back into the deck.
- improving card counter text.

Change-Id: I343582debeeef029e63624de86bae1eaa75fd084
---
M public/js/discernadeck.js
1 file changed, 56 insertions(+), 44 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/discovery/discernatron 
refs/changes/12/311712/1

diff --git a/public/js/discernadeck.js b/public/js/discernadeck.js
index 29cee8f..b725d35 100644
--- a/public/js/discernadeck.js
+++ b/public/js/discernadeck.js
@@ -20,9 +20,9 @@
 
for ( var i = 0; i < this.cards.length; i++ ) {
var card = this.cards[i];
-   var reverseIndex = this.cards.length - i - 1 ;
+   var reverseIndex = this.cards.length - 1 - i;
TweenLite.to( card.domEl, 0.8,{x: stackXY.x, y: 
stackXY.y - (stack.DROP_GAP * (reverseIndex ) ), zIndex: stack.cards.length - 
reverseIndex, ease:Elastic.easeOut} );
-   card.setCardXY( stackXY.x, stackXY.y + stack.gap - (( 
reverseIndex - 1) * stack.DROP_GAP ));
+   card.setCardXY( stackXY.x, stackXY.y - (stack.DROP_GAP 
* (reverseIndex ) ) );
}
 
},
@@ -32,8 +32,10 @@
},
onTap: function ( stack ) {
return function( ev ) {
-   if ( stack.deck.currentCard ) {
-   stack.deck.currentCard.moveCardToStack( 
stack.deck, stack );
+   var card = stack.deck.currentCard;
+   if ( card ) {
+   card.addCardToStack( stack );
+   card.animateTo( stack );
} else {
stack.deck.revealCard(stack.deck)();
}
@@ -92,10 +94,7 @@
onPanStart: function( card ) {
return function( ev ) {
card.domEl.classList.add('active');
-   if (card.stack) {
-   card.stack.removeCard( card );
-   card.stack = false;
-   }
+   card.removeCardFromStack( card.stack );
}
},
onPan: function ( card ) {
@@ -112,28 +111,39 @@
}
}
},
-   moveCardToStack: function( oldStack, newStack ){
+   removeCardFromStack: function ( stack ) {
 
-   if ( this.deck === oldStack || !oldStack) {
-   this.deck.removeFromDeck( this );
+   if ( Deck.isPrototypeOf( stack ) ) {
+   stack.removeFromDeck( this );
}
 
-   if ( this.deck === newStack ) {
-   this.deck.addCardToDeck( this );
+   if ( Stack.isPrototypeOf( stack ) ) {
+   stack.removeCard( this );
+   }
+   this.stack = false;
+   },
+   addCardToStack: function( stack ) {
+
+   if ( this.stack ) {
+   this.removeCardFromStack( this.stack )
}
 
-   if ( oldStack && this.deck !== oldStack ) {
-   this.stack.removeCard( this );
+   if ( Deck.isPrototypeOf( stack ) ) {
+   stack.addCardToDeck( this );
}
 
-   newStack.addCard(this);
-
-   this.stack = newStack;
-
-   var newStackXY = newStack.getStackPos();
+   if ( Stack.isPrototypeOf( stack ) ) {
+   stack.addCard( this );
+   }
+   this.stack = stack;
+   },
+   animateTo: function( newStack ){
+   var newStackXY = ( newStack.getStackPos ) ? 
newStack.getStackPos() : {x:0, y:0};
this.setCardXY( newStackXY.x,  newStackXY.y );
TweenLite.to( this.domEl, 0.2,{x: newStackXY.x, y: 
newStackXY.y, zIndex:newStack.getCards().length, ease:Power4.easeOut} );
-   this.formEl.value = 
newStack.domEl.attributes.getNamedItem('data-score').value;
+   },
+   setFormVal: function( val ){
+   this.formEl.value = val;
},
onPanEnd: function( card ) {
 
@@ -143,23 +153,20 @@
 
var droppedArea = card.findDropCollision( dropAreas );
if ( droppedArea ) {
-   card.moveCardToStack( card.stack,