Вход Регистрация
Файл: src/javascript/features/ajax/index.js
Строк: 77
<?php
var AJAX = require('./-lib');

module.exports = function () {
    var 
self this,
        
opts self.options.ajax,
        
buffer opts.when// when 2nd to last slide from end
        
path opts.path// URL to query
        
remaining opts.maxFetches// cache # of times to query Path
        
builder opts.builder;

    var 
slides self.el.slides,
        
length slides.length,
        
slideClass self.options.selector.substring(1), // bee3D selector, without the '.'

        
addItem = function (item) {
            
self.el.parent.appendChild(item);
            
self.el.slides.push(item);
        },

        
buildSlides = function (data) {
            var 
added data.map(function (obj) {
                var 
item document.createElement('section');
                
item.className slideClass;
                
item.innerHTML '<div class="bee3D--inner">' builder(obj) + '</div>';
                
// append new item to parent
                
addItem(item);
                
// add item to new array of items
                
return item;
            });

            
// now update our cached length var
            
length self.el.slides.length;

            
// attach events to new slides
            
self.slideEvents(added);

            
// decrease number of 'remaining' we have left
            
if (opts.maxFetchesremaining--;

            
// fire a fake 'activate' event, to trigger classes() plugin
            
return self.el.touch();
        },

        
fetchNew = function () {
            
AJAX.init(path, function (statusCoderesponse) {
                return (
statusCode === 200) ? buildSlides(JSON.parse(response).data) : console.error('Error fetching new items!');
            });
        },

        
handleActivate = function (event) {
            if (
length buffer === event.index) {
                if (
opts.maxFetches) {
                    if (
remaining && remaining 0) return fetchNew();
                } else {
                    return 
fetchNew();
                }
            }
        };

    
// listen to slide changes...
    
this.el.on('activate'handleActivate);
};
?>
Онлайн: 0
Реклама