How can i get Column Name from pipeline function

How can i get Column Name from pipeline function

zeingzeing Posts: 9Questions: 3Answers: 0

i use https://datatables.net/examples/server_side/pipeline.html and node js , mongodb
i want to get column name when you click sort by column .

this is my modify pipeline

//
// Pipelining function for DataTables. To be used to the `ajax` option of DataTables
//
$.fn.dataTable.pipeline = function (opts) {
    console.log($(this))

    // Configuration options
    var conf = $.extend({
        pages: 2,     // default number of pages to cache
        url:'',      // script url
        data: '',   // function or object with parameters to send to the server
        // matching how `ajax.data` works in DataTables
        method: 'POST' // Ajax HTTP method
    }, opts);
    // Private variables for storing the cache
    var cacheLower = -1;
    var cacheUpper = null;
    var cacheLastRequest = null;
    var cacheLastJson = null;

    return function (request, drawCallback, settings) {
        //console.log("request",request)
        var ajax = false;
        var requestStart = request.start;
        var drawStart = request.start;
        var requestLength = request.length;
        var requestEnd = requestStart + requestLength;

        if (settings.clearCache) {
            // API requested that the cache be cleared
            ajax = true;
            settings.clearCache = false;
        }
        else if (cacheLower < 0 || requestStart < cacheLower || requestEnd > cacheUpper) {
            // outside cached data - need to make a request
            ajax = true;
        }
        else if (JSON.stringify(request.order) !== JSON.stringify(cacheLastRequest.order) ||
           JSON.stringify(request.columns) !== JSON.stringify(cacheLastRequest.columns) ||
           JSON.stringify(request.search) !== JSON.stringify(cacheLastRequest.search)
        ) {

            // properties changed (ordering, columns, searching)
            conf.data.searchkey=request.search.value
        //i want to get column name form (request.order.colunm)   e.x if colunm 2 name is numberphone    req.order.col = 2 i want to get "numberphone"  
            ajax = true;
        }

        // Store the request for checking next time around
        cacheLastRequest = $.extend(true, {}, request);

        if (ajax) {
            // Need data from the server
            if (requestStart < cacheLower) {
                requestStart = requestStart - (requestLength * (conf.pages - 1));

                if (requestStart < 0) {
                    requestStart = 0;
                }
            }

            cacheLower = requestStart;
            cacheUpper = requestStart + (requestLength * conf.pages);

            request.start = requestStart;
            request.length = requestLength * conf.pages;
            conf.data.firstitemindex = request.start+1;
            conf.data.itemperpage = request.length;

            // Provide the same `data` options as DataTables.
            if ($.isFunction(conf.data)) {
                // As a function it is executed with the data object as an arg
                // for manipulation. If an object is returned, it is used as the
                // data object to submit
                var d = conf.data(request);
                if (d) {
                    $.extend(request, d);
                }
            }
            else if ($.isPlainObject(conf.data)) {
                // As an object, the data given extends the default
                $.extend(request, conf.data);
            }
            settings.jqXHR = $.ajax({
                "type": conf.method,
                "url": conf.url,
                "data": JSON.stringify(conf.data),
                "dataType": "json",
                "contentType": 'application/json',
                "cache": false,
                "success": function (json) {
                    cacheLastJson = $.extend(true, {}, json);

                    if (cacheLower != drawStart) {
                        json.data.splice(0, drawStart - cacheLower);
                    }
                    if (requestLength >= -1) {
                        json.data.splice(requestLength, json.data.length);
                    }
                    console.log(json)
                    drawCallback(json);
                }
            });
        }
        else {
            json = $.extend(true, {}, cacheLastJson);
            json.draw = request.draw; // Update the echo for each response
            json.data.splice(0, requestStart - cacheLower);
            json.data.splice(requestLength, json.data.length);
            drawCallback(json);
        }
    }
};

// Register an API method that will empty the pipelined data, forcing an Ajax
// fetch on the next draw (i.e. `table.clearPipeline().draw()`)
$.fn.dataTable.Api.register('clearPipeline()', function () {
    return this.iterator('table', function (settings) {
        settings.clearCache = true;
    });
});

thank you

Answers

  • zeingzeing Posts: 9Questions: 3Answers: 0

    How does i get colunm name from selector jqeury

  • zeingzeing Posts: 9Questions: 3Answers: 0

    okay i get it already

    thank you

  • VijaySSVijaySS Posts: 3Questions: 1Answers: 0
    edited June 2017

    How you are calling the $.fn.dataTable.pipeline( {

    Can I call it like this.

    var result = $.ajax($.fn.dataTable.pipeline( {
    url: 'data.json',
    pages: 1
    } )).done(function () {
    //
    }).fail(function (result, exception) {
    //
    });

This discussion has been closed.