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> <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');
}
}