HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_new/buyercall/buyercall/assets/scripts/outbound_backend_js.js
var _ = require('underscore');
var __ = require('localize');
var $ = require('jquery');
var App = require('./app');
var utils = require('../components/utils');
let {showConfirm, createFlashMsg} = utils;

const swal = require('./vendor/sweetalert2');
const OUTBOUND_CSV_URL = `//${appConfig.server_url}/outbound/csv`;

const API_ROOT = `//${appConfig.server_url}/api/outbound`;
const OUTBOUND_DATA_URL = API_ROOT;


/**
 * Initialize the Widget datatable.
 */
function initWidget ($el) {
    var dataUrl = OUTBOUND_DATA_URL;

    App.datatables();

    var actionCellTemplate = _.template($('#action-cell').html());
    var tableApi = $('#outbound-datatable').DataTable({
        buttons: [
            {
                text: 'Download csv',
                className: 'btn-primary btn btn-csv-dl',
                action: function (e, dt, node, config) {
                    var searchOptions = _.extend({}, dt.ajax.params(), { length: 9999999 });
                    var queryString = $.param(searchOptions);
                    var url = `${OUTBOUND_CSV_URL}?${queryString}`;

                    window.open(url);
                }
            }
        ],
        dom: "<'row'<'col-sm-3 col-md-3 col-lg-2'B><'col-sm-2 col-lg-2'l><'col-xs-12 col-sm-7 col-md-7 col-lg-8 datatables-padding text-right'f>>" +
                 "<'row'<'col-sm-12't>>" +
                 "<'row'<'col-sm-5'i><'col-sm-7'rp>>",
        columns: [
            {
                data: null,
                render: function (data, type, row, meta) {
                    return tableApi.page.info().start + meta.row + 1;
                },
                searchable: false,
                orderable: false
            },
            {
                data: 1,
                render: function (data, type, row) {
                    var enabled = row['5'];
                    if (!enabled)
                        return `<del>${data}</del>`;
                    return `${data}`;
                }
            },
            {
                searchable: false,
                orderable: true,
            },
            {
                data: 3,
                searchable: false,
                render: function (date) {
                    return `<time datetime='${date}'>${moment(date).fromNow()}</time>`;
                }
            },
            {
                data: 4,
                searchable: false,
                render: function (date) {
                    return `<time datetime='${date}'>${moment(date).fromNow()}</time>`;
                }
            },
            {
                data: null,
                className: 'text-center',
                searchable: false,
                orderable: false,
                render: function (data, type, row) {
                    var id = row[0];
                    return actionCellTemplate({
                        __: __,
                        editUrl: `//${appConfig.server_url}/outbound/${id}`, installURL: `//${appConfig.server_url}/outbound/install-instructions/${id}`,
                        enabled: row[5],
                        usageOverLimit: row[6]
                    });
                }
            }
        ],
        order: [[ 1, "desc" ]],
        "language": {
            "lengthMenu": 'Display <select class="form-control dataTables-records-length-select">'+
            '<option value="10"> 10</option>'+
            '<option value="20"> 20</option>'+
            '<option value="30"> 30</option>'+
            '<option value="40"> 40</option>'+
            '<option value="50"> 50</option>'+
            '<option value="-1"> All</option>'+
            '</select> records'
        },
        processing: false,
        serverSide: true,
        ajax: dataUrl,

        createdRow: function (row, data, dataIndex) {
            var id = data[0];
            var $row = $(row);

            $row.find('.disable-button').click(function () {
                $.post(`${API_ROOT}/disable/${id}`).done(function () {
                    tableApi.ajax.reload();
                }).fail(function () {
                    utils.flash(__('There was an error updating the routing.'), 'error');
                });
            });
            $row.find('.enable-button').click(function () {
                $.post(`${API_ROOT}/enable/${id}`).done(function () {
                    tableApi.ajax.reload();
                }).fail(function () {
                    utils.flash(__('There was an error updating the routing.'), 'error');
                });
            });
            $row.find('.delete-button').click(function (event) {
                event.preventDefault();
                {swal({title: 'Are you sure about this deletion?',
                      text: "You won't be able to revert this change.",
                      type: 'warning',
                      showCancelButton: true,
                      confirmButtonColor: '#03a9f4',
                      cancelButtonColor: '#f44336',
                      confirmButtonText: 'Yes, delete it!'
                      }).then(function(isConfirm)
                      {
                      if (isConfirm){
                        var csrf_token = $('meta[name=csrf-token]').attr('content');
                        $.ajax({
                            url: `${API_ROOT}/delete/${id}`,
                            headers: {
                                        "X-CSRFToken": csrf_token,
                                },
                            method: 'DELETE'
                        }).done(function () {
                            tableApi.ajax.reload();
                            swal({
                                title: 'Deleted!',
                                text: 'The widget has been deleted.',
                                type: 'success',
                                confirmButtonColor: '#03a9f4'
                                }
                            );
                        }).fail(function () {
                            utils.flash(__('There was an error deleting the widget.','danger'));
                        });
                      }
                  })
                }
            });
        }
    });
    // Add material-design datatables classes to divs
    $('#outbound-datatable_filter label').addClass('form-group');
    $('#outbound-datatable_length label').addClass('form-group');

    /* Add placeholder attribute to the search input */
    $('.dataTables_filter input').attr('placeholder', 'Search Records');
}


$(function () {
    var csrfToken = $('meta[name=csrf-token]').attr('content');
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrfToken);
            }
        }
    });

    initWidget($('#outbound-datatable'));
});