_post-list-load-more.js 7.85 KB

var mobile_article_list = [];

function postItem(post_obj, size, sides, side_index, side_alternate, labels) {
    console.log(post_obj);
    var li = "";
    if(size == 2) {
        li += "<li class='article-card lg'><a href='"+post_obj['href']+"'>";
        if(post_obj['img_src']) {
            li += "<div class='image large'><div class='scale-wrapper'><img width='500' height='340' src='"+post_obj['img_src']+"'  alt='"+post_obj['img_alt']+"'/></div></div>";
        }
        if(post_obj['title'].length > 100) {
            li += "<div class='content reduce'><span class='news-title'>"+post_obj['title']+"</span></div>";
        } else {
            li += "<div class='content'><span class='news-title'>"+post_obj['title']+"</span>";
        }
        if(post_obj['text']) {
            li += "<p>"+post_obj['text']+"...</p>";
        }
         if(post_obj['date']) {
            li += "<span class='published'>"+window.POST_LIST_LABELS.published+" "+post_obj['date']+"</span>";
        }
        li += "</div></a></li>";
    } else {
        li += "<li class='article-card sm'><a href='"+post_obj['href']+"'>";
        if(post_obj['img_src']) {
            li += "<div class='image'><div class='scale-wrapper'><img width='215' height='140'  src='"+post_obj['img_src']+"'  alt='"+post_obj['img_alt']+"' /></div></div>";
        }
        if(post_obj['title'].length > 100) {
            li += "<div class='content reduce'><span class='news-title'>"+post_obj['title']+"</span>";
        } else {
            li += "<div class='content'><span class='news-title'>"+post_obj['title']+"</span>";
        }
        if(post_obj['text']) {
            li += "<p>"+post_obj['text']+"...</p>";
        }
        if(post_obj['article_author']) {
            li += "<span class='author-name'>"+post_obj['article_author']+" | </span>";
        }
        if(post_obj['author_title']) {
            li += "<span class='author-title'>"+post_obj['author_title']+"</span>";
        }
        if(post_obj['author_company']) {
            li += "<span class='author_company'>"+post_obj['author_company']+"</span>";
        }
        if(post_obj['date']) {
            li += "<span class='published'>"+window.POST_LIST_LABELS.published+" "+post_obj['date']+"</span>";
        }
        li += "";
        li += "</div></li>";
    }
    mobile_article_list.push(li);
    if(side_index % 2 == 0 || side_index == 0) {
        if(side_alternate == 0 || side_alternate % 2 == 0) {
            sides.left.push(li);
        } else {
            sides.right.push(li);
        }
    } else {
        if(side_alternate == 0 || side_alternate % 2 == 0) {
            sides.right.push(li);
        } else {
            sides.left.push(li);
        }
    }
    return li;
}

function rearrangeForMobile() {


}

function loadPostSegment(block, segment, append, limit) {
    const categories = jQuery(block).data('categories');

    if(append) {
        jQuery('.post-list-load-more').addClass('loading');
    }

    var lang = document.documentElement.lang;

    if(lang  == 'fr-FR') {
        lang = "&lang=fr"
    } else {
        lang = "&lang=en"
    }

    var limit_q = "";

    if(limit) {
        limit_q = "&limit="+limit;
    }

    jQuery.get('/wp-json/v1/post_list?segment='+segment+'&categories='+categories+lang+limit_q, function(result) {

        var posts = result['posts'],
        last_index = result['last_index'];

        var pattern = jQuery(block).data('pattern');
        window.POST_LIST_LABELS = {};
        window.POST_LIST_LABELS.published = jQuery(block).data('published');

        var pattern_idx = 0,
        side_index = 0,
        reset_side_from_large = 0,
        side_alternate = 1;

        if(jQuery(block).data('pattern_idx')) {
            pattern_idx = jQuery(block).data('pattern_idx');
        }
        if(jQuery(block).data('side_index')) {
            side_index = jQuery(block).data('side_index');
        }
        if(jQuery(block).data('reset_side_from_large')) {
            reset_side_from_large = jQuery(block).data('reset_side_from_large');
        }
        if(jQuery(block).data('side_alternate')) {
            side_alternate = jQuery(block).data('side_alternate');
        }

        var sides = {left:[],right:[]};

        posts.map((obj) => {
        
            if(pattern == 3) {
                postItem(obj, 1, sides, side_index);
            } else if(pattern == 2) {
                if(pattern_idx == 0) {
                    postItem(obj, 2, sides, 0, 0);
                    reset_side_from_large = 3;
                } else {
                    if(reset_side_from_large > 0) {
                        postItem(obj, 1, sides, 1, 0);
                        --reset_side_from_large
                    } else {
                        postItem(obj, 1, sides, 1);
                        ++reset_side_from_large;
                    }
                }
            } else if(pattern == 1) {
                if(pattern_idx == 0 || pattern_idx % 4 == 0) {
                    postItem(obj, 2, sides, 0, side_alternate);
                    reset_side_from_large = 3;
                } else {
                    if(reset_side_from_large > 0) {
                        postItem(obj, 1, sides, 1, side_alternate);
                        --reset_side_from_large
                        if(reset_side_from_large == 0) {
                            ++side_alternate;//after completion of a 3rd small after a large flip to the alternate sides
                        }
                    } else {
                        postItem(obj, 1, sides, side_index, side_alternate);
                    }
                }
            }

            ++side_index;
            ++pattern_idx;

        });
        
        jQuery(block).data('pattern_idx', pattern_idx);
        jQuery(block).data('side_index', side_index);
        jQuery(block).data('reset_side_from_large', reset_side_from_large);
        jQuery(block).data('side_alternate', side_alternate);

        if(append) {
            jQuery(block).find('.post-list-left-col').append("<ul class='newslist'>"+sides.left.join('')+"</ul>");
            jQuery(block).find('.post-list-right-col').append("<ul  class='newslist'>"+sides.right.join('')+"</ul>");
        } else {
            jQuery(block).find('.post-list-left-col').html("<ul  class='newslist'>"+sides.left.join('')+"</ul>");
            jQuery(block).find('.post-list-right-col').html("<ul  class='newslist'>"+sides.right.join('')+"</ul>");
        }

        jQuery('.mobile-article-list').html("<ul>"+mobile_article_list.join('')+"</ul>")

        if(last_index) {
            jQuery('.post-list-load-more').css('display', 'none');
        }


    }).always(function () {
        jQuery('.post-list-load-more').removeClass('loading');
    });
}

jQuery(function($) {


    $('.related-load-more').on('click', function(e) {
        e.preventDefault();
        var segment = $(this).data('segment');
        var that = this;
        $(that).addClass('loading');
        setTimeout(function() {
            $(that).parents('.related').find('.related-block.hidden[data-related-segment="'+segment+'"]').removeClass('hidden');
            $(that).data('segment', segment + 1);
            $(that).removeClass('loading');
            if($(that).parents('.related').find('.related-block.hidden[data-related-segment="'+(segment+1)+'"]').length == 0) {
                $(that).remove();
            }
        }, 100);

    });

    $('.news-and-stories-block').each(function() {
        var no_load = $(this).data('no-load'),
        limit = $(this).data('static-limit');

        if(no_load) {
            loadPostSegment(this, "all", null, limit);
        } else {
            loadPostSegment(this, 0);
        }
        $(this).find('.post-list-load-more').on('click', function() {
            var segment = $(this).data('segment');
            loadPostSegment($(this).parents('.news-and-stories-block'), segment, true);
            $(this).data('segment', ++segment);
        });
    });



});