[MediaWiki-commits] [Gerrit] wikimedia...discernatron[master]: Bug fixes in solitaire ui
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
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,