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/components/forms/dataTableWidget.js
/**
 * Initialize the Widget datatable.
 */
export function initWidget ($el) {
    var DATA_URL = `//${appConfig.server_url}/api/forms/${formId}/leads`;
    var CSV_URL = `//${appConfig.server_url}/forms/${formId}/leads/csv`;
    var tosValue = "false";
    var dataUrl = DATA_URL;
    var columns = [ {
        data: null,
        render: function (data, type, row, meta) {
            return tableApi.page.info().start + meta.row + 1;
        },
        searchable: false,
        orderable: false
    }];

    var ogFromDate = moment().subtract(90, "day");
    var ogToDate = moment();
    var fromDate = ogFromDate;
    var toDate = ogToDate;
    var showCreditScore = false;
    var showCsv = true;
    var tableApi = null;

    if ($('#businessType').val() == 'automotive') {
        showCreditScore = true;
    }
    const roles = ['partner', 'limitsysadmin']
    if ($("#superUserType").length == 1 && roles.includes($('#superUserType').val()) && $('#superBusinessType').val() == 'automotive') {
        showCsv = false;
    }

    App.datatables();

    $("#csvStartDate").datetimepicker({
        format: "MM/DD/YYYY",
        icons: {
            time: "fa fa-clock-o",
            date: "fa fa-calendar",
            up: "fa fa-chevron-up",
            down: "fa fa-chevron-down",
            previous: "fa fa-chevron-left",
            next: "fa fa-chevron-right",
            today: "fa fa-screenshot",
            clear: "fa fa-trash",
            close: "fa fa-remove",
            inline: true
        },
        defaultDate: fromDate.toDate()
    });

    $('#csvStartDate').on('dp.change', function(e){
        fromDate = e.date;
        var days = toDate.diff(fromDate, 'days');
        checkDate(days);
    });

    $("#csvStopDate").datetimepicker({
        format: "MM/DD/YYYY",
        icons: {
            time: "fa fa-clock-o",
            date: "fa fa-calendar",
            up: "fa fa-chevron-up",
            down: "fa fa-chevron-down",
            previous: "fa fa-chevron-left",
            next: "fa fa-chevron-right",
            today: "fa fa-screenshot",
            clear: "fa fa-trash",
            close: "fa fa-remove",
            inline: true
        },
        defaultDate: toDate.toDate()
    });

    $('#csvStopDate').on('dp.change', function(e){
        toDate = e.date;
        var days = toDate.diff(fromDate, 'days');
        checkDate(days);
    });

    for (var i = 0; i < formFields.length; i++) {
        columns.push({ data: (i + 1) });
    }
    columns.push({
        data: formFields.length + 1,
        searchable: false,
    }, {
        data: formFields.length + 2,
        searchable: false,
        render: function (date) {
            return `<time datetime='${date}'>${moment(date).fromNow()}</time>`;
        }
    }, {
        data: formFields.length + 3,
        searchable: false,
        render: function (date) {
            return `<time datetime='${date}'>${moment(date).fromNow()}</time>`;
        }
    },
    {
        data: formFields.length + 4,
        searchable: false,
        orderable: false,
        visible: showCreditScore
    },
    {
        data: null,
        searchable: false,
        orderable: false,
        className: "text-center",
        render: function (data, type, row, meta) {
            var html = $('#action-cell').html().replace(/-1/g, row[0]).replace(/-2/g, row['contact_id']);

            if (row['external_api_lead_id'].length > 0) {
                for(var i = 0; i < row['external_api_lead_id'].length; i++) {
                    var replace_text = 'post_id_' + row['external_api_lead_id'][i];
                    html = html.replace(replace_text, 'disabled');
                }
            }
            return html;
        }
    });

    $('#btnCsvDownload').on('click', function() {
        if (showCsv) {
            var queryString = null;
            var url = null;
            var csvFromDate = fromDate.format("MMDDYYYY");
            var csvToDate = toDate.format("MMDDYYYY");
            var searchOptions = {};

            searchOptions['df'] = csvFromDate;
            searchOptions['dt'] = csvToDate;
            queryString = $.param(searchOptions);
            url = `${CSV_URL}?${queryString}`;

            window.open(url);
            $("#csvFormLeadModal").modal("hide");
        }
    });

    if (showCsv) {
        tableApi = $el.DataTable({
            buttons: [{
                text: 'Download csv',
                className: 'btn-primary btnCsvDownload',
                action: function (e, dt, node, config) {
                    var days = toDate.diff(fromDate, 'days');
                    if ($('.material-datatables').hasClass('csv-download')) {
                        checkDate(days);
                        $("#csvFormLeadModal").modal();
                    }
                }
            }],
            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 datatables-lead text-right'f>>" +
                     "<'row'<'col-sm-12't>>" +
                     "<'row'<'col-sm-5'i><'col-sm-7'rp>>",
            columns: columns,
            "order": [[ columns.length - 3, "desc" ]],
            "language": {
                "lengthMenu": 'Display <select class="form-control dataTables-records-length-select">'+
                '<option value="30"> 30</option>'+
                '<option value="40"> 40</option>'+
                '<option value="50"> 50</option>'+
                '<option value="100"> 100</option>'+
                '</select> records'
            },
            "pageLength": 50,
            "processing": true,
            "serverSide": true,
            ajax: dataUrl,
            sServerMethod: 'POST'
        });
    } else {
        tableApi = $el.DataTable({
            dom: "<'row'<'col-sm-2 col-lg-2'l><'col-xs-12 col-sm-10 col-md-10 col-lg-10 datatables-padding datatables-lead text-right'f>>" +
                     "<'row'<'col-sm-12't>>" +
                     "<'row'<'col-sm-5'i><'col-sm-7'rp>>",
            columns: columns,
            "order": [[ columns.length - 3, "desc" ]],
            "language": {
                "lengthMenu": 'Display <select class="form-control dataTables-records-length-select">'+
                '<option value="30"> 30</option>'+
                '<option value="40"> 40</option>'+
                '<option value="50"> 50</option>'+
                '<option value="100"> 100</option>'+
                '</select> records'
            },
            "pageLength": 50,
            "processing": true,
            "serverSide": true,
            ajax: dataUrl,
            sServerMethod: 'POST'
        });
    }

    if (!$('.material-datatables').hasClass('csv-download')) {
        $('.btnCsvDownload').attr('disabled', 'disabled');
    }

    $('.btnCsvDownload').after('<span class="tooltip-exclamation-icon tooltip-exclamation-icon-pos" title="The CSV Download functionality is only available to administrator users. If you require access please contact your administrator or support for access."></span>');
    $("#csvFormLeadModal").modal("hide");

    $('#leads-datatable_filter label').addClass('form-group');
    $('#leads-datatable_length label').addClass('form-group');
    /* Add placeholder attribute to the search input */
    $('.dataTables_filter input').attr('placeholder', 'Search Records');

    /*$('#leads-datatable_filter label').append('<div id="tosToggleButton" class="togglebutton">' +
    '<label for="chkViewType"><input id="chkViewType" type="checkbox" name="chkViewType" value="default"/>' +
    '<span class="toggle"></span>Only show complete ToS form leads</label>&nbsp;<span class="tooltip-icon"' +
    ' title="Toggle this to only show form leads that have terms of service completed."></span></div>');

    $('#chkViewType').on('click', function() {
        if ($(this).is(":checked")) {
            tosValue = "true";
            tableApi.ajax.url(dataUrl + "?tos=true");
            tableApi.ajax.reload();
        } else {
            tosValue = "false";
            tableApi.ajax.url(dataUrl + "?tos=false");
            tableApi.ajax.reload();
        }
    });*/
}

function checkDate(days) {
    if (days >= 0 && days <= 90) {
        $("#btnCsvDownload").removeAttr('disabled', 'disabled');
    } else {
        $("#btnCsvDownload").attr('disabled', 'disabled');
    }
}