From 597e28c957362275e6b47098b33c719f40cf08b1 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 26 Nov 2014 09:30:58 -0700 Subject: [PATCH] refactor(slideBox): properly use size of parent, perf increase --- js/angular/controller/slideBoxController.js | 560 ++++++++++-------- js/angular/controller/slideController.js | 101 ---- js/angular/directive/slide.js | 20 +- js/angular/directive/slideBox.js | 37 +- js/angular/directive/slideBoxPager.js | 64 +- js/utils/list.js | 176 ------ scss/_mixins.scss | 1 + scss/_slide-box.scss | 57 +- test/html/slideBox.html | 32 +- .../controller/slideBoxController.unit.js | 133 ----- .../controller/slideController.unit.js | 35 -- test/unit/angular/directive/slide.unit.js | 23 - test/unit/angular/directive/slideBox.unit.js | 437 ++++++++++---- .../unit/angular/directive/slidePager.unit.js | 14 +- test/unit/utils/list.unit.js | 141 ----- 15 files changed, 752 insertions(+), 1079 deletions(-) delete mode 100644 js/angular/controller/slideController.js delete mode 100644 js/utils/list.js delete mode 100644 test/unit/angular/controller/slideBoxController.unit.js delete mode 100644 test/unit/angular/controller/slideController.unit.js delete mode 100644 test/unit/angular/directive/slide.unit.js delete mode 100644 test/unit/utils/list.unit.js diff --git a/js/angular/controller/slideBoxController.js b/js/angular/controller/slideBoxController.js index f1e62d6112..f6d392e931 100644 --- a/js/angular/controller/slideBoxController.js +++ b/js/angular/controller/slideBoxController.js @@ -2,72 +2,62 @@ IonicModule .controller('$ionSlideBox', [ '$scope', '$element', - '$$ionicAttachDrag', - '$interval', - '$rootScope', - '$timeout', '$log', -function(scope, element, $$ionicAttachDrag, $interval, $rootScope, $timeout, $log) { + '$document', + '$$q', + '$timeout', + '$interval', + '$$ionicAttachDrag', + '$rootScope', +function(scope, element, $log, $document, $$q, $timeout, $interval, $$ionicAttachDrag, $rootScope) { var self = this; - - var relevantSlides = { - previous: null, - selected: null, - next: null - }; - var oldRelevantSlides = relevantSlides; - - // This is a live nodeList that is updated whenever child ion-slides - // are added or removed - var slideNodes = element[0].getElementsByTagName('ion-slide'); - var slideList = ionic.Utils.list(slideNodes); - - var slidesParent = angular.element(element[0].querySelector('.slider-slides')); - - // Successful slide requires velocity to be greater than this amount + var SLIDE_TRANSITION_DURATION = 250; var SLIDE_SUCCESS_VELOCITY = (1 / 4); // pixels / ms - var SLIDE_TRANSITION_DURATION = 250; //ms - $$ionicAttachDrag(scope, element, { - getDistance: function() { return slidesParent.prop('offsetWidth'); }, + var container = angular.element(element[0].querySelector('.slider-slides')); + var containerId = 'slides_' + ionic.Utils.nextUid(); + container.attr('id', containerId); + + // Live-updated list of slides + var slideNodes = container[0].getElementsByTagName('ion-slide'); + + // Used in setDisplayedSlides() below + var styleElement = angular.element('