-
    let events2015 = `[{
        "title":"Apache Ignite 1.5.0-b1 Early Access Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 350 Open Source projects and initiatives, announced today that Apache® Ignite® has graduated from the Apache Incubator to become a Top-Level Project (TLP), signifying that the project's community and products have been well-governed under the ASF's meritocratic process and principles.",
        "data":"December 12, 2015"
    },
    {
        "title":"Apache Ignite 1.4.0 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This new release includes integration with Apache YARN for data center and resource management, fixes for JTA transactions, Hibernate L2 Cache improvements, and more.",
        "data":"September 28, 2015"
    },
    {
        "title":"Apache Ignite Graduated to a Top-Level Project",
        "link":"http:\/\/globenewswire.com\/news-release\/2015\/08\/25\/763148\/10146997\/en\/The-Apache-Software-Foundation-Announces-Apache-tm-Ignite-tm-as-a-Top-Level-Project.html",
        "loc":"",
        "speaker":"",
        "descr":"The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 350 Open Source projects and initiatives, announced today that Apache® Ignite® has graduated from the Apache Incubator to become a Top-Level Project (TLP), signifying that the project's community and products have been well-governed under the ASF's meritocratic process and principles.",
        "data":"August 25, 2015"
    },
    {
        "title":"Apache Ignite 1.3.0 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This new release includes integration with Apache YARN for data center and resource management, fixes for JTA transactions, Hibernate L2 Cache improvements, and more.",
        "data":"July 21, 2015"
    },
    {
        "title":"Apache Ignite 1.2.0 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This new release includes shared RDD for Apache Spark (based on Ignite Data Grid), integration with Apache Mesos for data center management, client-mode for light-weight cluster discovery, memory-size eviction policy, and more.",
        "data":"June 29, 2015"
    },
    {
        "title":"Apache Ignite 1.1.0 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This new release includes Google Compute Engine and generic cloud TCP discovery IP finder, Collocated mode for SQL queries, support for (*) star notation in cache names, fix for SQL union support, and more.",
        "data":"May 28, 2015"
    },
    {
        "title":"Apache Ignite 1.0.0 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This new release includes dynamic caching functionality to start and stop caches during runtime, simplified Query API, automatic aggregation, grouping and sorting support for SQL Queries, Streaming examples, and more.",
        "data":"April 2, 2015"
    },
    {
        "title":"Apache Ignite 1.0.0-RC3 Released",
        "link":"\/download.html",
        "loc":"",
        "speaker":"",
        "descr":"This is the first release of Apache Ignite project. The source code in large part is based on the GridGain In-Memory Data Fabric, open source edition, v. 6.6.2, which was donated to Apache Software Foundation.",
        "data":"March 24, 2015"
    }]`;

    let events2015Array = JSON.parse(events2015);

.eventspast__tab
    each val, index in events2015Array
        if index > 2
            - break;
        //- - let joinSpeacker = val['speaker'].join("<br>");
        article.eventcard
            .eventcard__date !{val['data']}
            h3.h5.pt-2 !{val['title']}
            .eventcard__info.eventcard__descr.pt-2
                p !{val['descr']}
            a.eventcard__button.button.button--shadow(href=val['link'], target="_blank") Download Ignite
.eventspast__morewrap(data-hidebox="ev2015more")
    .eventspast__tab
        each val, index in events2015Array
            if index < 3
                - continue;
            article.eventcard
                .eventcard__date !{val['data']}
                h3.h5.pt-2 !{val['title']}
                .eventcard__info.eventcard__descr.pt-2 
                    p !{val['descr']}
                a.eventcard__button.button.button--shadow(href=val['link'], target="_blank") Download Ignite
.eventspast__bottom.pt-1
    a.eventspast__more.jsLoadMoreEvents(href="#", data-hideopen="ev2015more", data-invis="1") Show more