DDP Search API

Basic jQuery.ajax test with all data.

by andypotanin

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>
<script src="http:////cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script>
<script src="http://cdn.udx.io/lib/jquery.ajax.js"></script>
<div data-bind="template: {name: 'model-template', foreach: hits}"></div>

<script id="model-template" type="text/html">
    <ul class="event">
        <li data-bind="text: $data.post_title"></li>
        <li data-bind="text: $data._id"></li>
        <li data-bind="text: $data._index"></li>
    </ul>
</script>

CSS

ul.event {
    background: #DADADA;
    margin-bottom: 1em;
}

JavaScript

function getData(query, callback) {
    console.log('getData');

    jQuery.ajax('http://api.discodonniepresents.com/search/' + query, {
        type: 'GET',
        dataType: 'json',
        headers: { 'x-access-key': 'zkfs-dixy-eejh-wkgg-zcvs-arkv-zeek-onzj' }
    }).done(callback);

}

function myModel() {
    console.log('myModel');

    var self = this;

    this.size = 10;

    this.hits = ko.observableArray();

    this.updateData = function updateData() {

        self.size = (self.size + 10);

        console.log('updateData', self.size);

        getData('?q=_type:hdp_event&size=' + self.size, function haveData(data) {
            console.log('Have %s items', data.hits.length);

            // data.hits.forEach(function (item) { self.hits.push( item ); });

            ko.mapping.fromJS(data, {
                key: function (item) {
                    return ko.utils.unwrapObservable(item._id);
                }
            }, self);

        });
    };

    // <button data-bind="click: updateData">Load More</button>
    window.setTimeout(this.updateData);

    return this;
}

ko.applyBindings(myModel);