all files / app/main/pages/timeline/ timeline.controller.js

18.18% Statements 4/22
0% Branches 0/2
20% Functions 1/5
18.18% Lines 4/22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78                                                                                                                                                    
(function ()
{
    'use strict';
 
    angular
        .module('app.pages.timeline')
        .controller('TimelineController', TimelineController);
 
    /** @ngInject */
    function TimelineController($q, msApi, Timeline)
    {
        var vm = this;
 
        // Data
        vm.timeline = Timeline.data;
        vm.timelineOptions = {
            scrollEl: '#content'
        };
        vm.currentPage = 1;
        vm.totalPages = 3;
        vm.pauseScroll = false;
 
        // Methods
        vm.loadNextPage = loadNextPage;
 
        //////////
 
        /**
         * Load next page
         * @returns promise
         */
        function loadNextPage()
        {
            // Create a new deferred object
            var deferred = $q.defer();
 
            // Increase the current page number
            vm.currentPage = vm.currentPage + 1;
 
            // Check if we still have pages that we can load
            if ( vm.currentPage > vm.totalPages )
            {
                // Reject the promise
                deferred.reject('No more pages');
            }
            else
            {
                // Emulate the api call and load new timeline items in
                var pageName = 'timeline.page' + vm.currentPage + '@get';
 
                msApi.request(pageName, {},
 
                    // SUCCESS
                    function (response)
                    {
                        for ( var i = 0; i < response.data.length; i++ )
                        {
                            vm.timeline.push(response.data[i]);
                        }
 
                        // Resolve the promise
                        deferred.resolve(response);
                    },
 
                    // ERROR
                    function (response)
                    {
                        // Reject the promise
                        deferred.reject(response);
                    }
                );
            }
 
            return deferred.promise;
        }
    }
})();