From 8ed614964c86e507afb35ff7ac0590435af68232 Mon Sep 17 00:00:00 2001 From: Vit Brunner Date: Tue, 16 Dec 2014 11:52:26 +0100 Subject: [PATCH] Add scrollspy --- Gruntfile.coffee | 1 + bower.json | 1 + source/includes/comparison.html.jade | 2 +- source/scripts/app.js.coffee | 2 +- source/scripts/controllers.js.coffee | 16 +++++++++------- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Gruntfile.coffee b/Gruntfile.coffee index b5abab7..b776bfd 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -39,6 +39,7 @@ module.exports = (grunt) -> 'bower_components/angular/angular.js' 'bower_components/angular-route/angular-route.js' 'bower_components/angular-sanitize/angular-sanitize.js' + 'bower_components/angular-scroll/angular-scroll.js' 'bower_components/marked/lib/marked.js' 'scripts/app.js' 'scripts/services/route.js' diff --git a/bower.json b/bower.json index c0cb799..61a9860 100644 --- a/bower.json +++ b/bower.json @@ -6,6 +6,7 @@ "angular": "1.2.20", "angular-route": "1.2.20", "angular-sanitize": "1.2.20", + "angular-scroll": "0.6.2", "fontawesome": "4.2.0", "lodash": "2.4.1", "marked": "0.3.2", diff --git a/source/includes/comparison.html.jade b/source/includes/comparison.html.jade index e8a286b..8ab368d 100644 --- a/source/includes/comparison.html.jade +++ b/source/includes/comparison.html.jade @@ -17,7 +17,7 @@ // verses #content - .pure-g-r(ng-repeat="verse in verses" id="section-{{$index + 1}}") + .pure-g-r(du-scrollspy ng-href="#section-{{$index + 1}}" offset="100px" ng-repeat="verse in verses" id="section-{{$index + 1}}") .version(ng-repeat="version in verse") .version-padded .version-container diff --git a/source/scripts/app.js.coffee b/source/scripts/app.js.coffee index 1bf966d..da90fa7 100644 --- a/source/scripts/app.js.coffee +++ b/source/scripts/app.js.coffee @@ -1,4 +1,4 @@ -angular.module('sideBySide', ['sideBySide.controllers', 'ngRoute', 'ngSanitize']) +angular.module('sideBySide', ['sideBySide.controllers', 'ngRoute', 'ngSanitize', 'duScroll']) .config [ '$locationProvider', ($locationProvider) -> $locationProvider.html5Mode true ] diff --git a/source/scripts/controllers.js.coffee b/source/scripts/controllers.js.coffee index ac7724d..7435aa6 100644 --- a/source/scripts/controllers.js.coffee +++ b/source/scripts/controllers.js.coffee @@ -3,18 +3,20 @@ angular.module("sideBySide.controllers", []) () -> null ] .controller "ComparisonController", [ - '$scope', 'route', 'poems', 'transformer' - ($scope, route, poems, transformer) -> + '$document', '$location', '$rootScope', '$scope', 'route', 'poems', 'transformer' + ($document, $location, $rootScope, $scope, route, poems, transformer) -> min = 1 max = 5 scroll = () -> setTimeout () -> - if ('section' of route.params) - section = 'section-' + route.params['section'] - element = document.getElementById(section) - element.scrollIntoView() if element - , 100 + element = document.getElementById($location.hash()) + $document.scrollTo(element) if element + , 1 + + $rootScope.$on 'duScrollspy:becameActive', ($event, $element) -> + $location.hash($element.prop('id')).replace() + $rootScope.$apply() $scope.$watchCollection () -> poems.getActive()