/* Template Name: Velzon - Admin & Dashboard Template Author: Themesbrand Website: https://Themesbrand.com/ Contact: Themesbrand@gmail.com File: CRM-contact Js File */ // list js function timeConvert(time) { var d = new Date(time); time_s = (d.getHours() + ':' + d.getMinutes()); var t = time_s.split(":"); var hours = t[0]; var minutes = t[1]; var newformat = hours >= 12 ? 'PM' : 'AM'; hours = hours % 12; hours = hours ? hours : 12; minutes = minutes < 10 ? '0' + minutes : minutes; return (hours + ':' + minutes + '' + newformat); } function formatDate(date) { var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var d = new Date(date), month = '' + monthNames[(d.getMonth())], day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [day + " " + month, year].join(', '); }; var checkAll = document.getElementById("checkAll"); if (checkAll) { checkAll.onclick = function () { var checkboxes = document.querySelectorAll('.form-check-all input[type="checkbox"]'); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = this.checked; if (checkboxes[i].checked) { checkboxes[i].closest("tr").classList.add("table-active"); } else { checkboxes[i].closest("tr").classList.remove("table-active"); } } }; } var perPage = 8; //Table var options = { valueNames: [ "id", "name", "company_name", "designation", "date", "email_id", "phone", "lead_score", "tags", ], page: perPage, pagination: true, plugins: [ ListPagination({ left: 2, right: 2 }) ] }; // Init list var contactList = new List("contactList", options).on("updated", function (list) { list.matchingItems.length == 0 ? (document.getElementsByClassName("noresult")[0].style.display = "block") : (document.getElementsByClassName("noresult")[0].style.display = "none"); var isFirst = list.i == 1; var isLast = list.i > list.matchingItems.length - list.page; // make the Prev and Nex buttons disabled on first and last pages accordingly (document.querySelector(".pagination-prev.disabled")) ? document.querySelector(".pagination-prev.disabled").classList.remove("disabled"): ''; (document.querySelector(".pagination-next.disabled")) ? document.querySelector(".pagination-next.disabled").classList.remove("disabled"): ''; if (isFirst) { document.querySelector(".pagination-prev").classList.add("disabled"); } if (isLast) { document.querySelector(".pagination-next").classList.add("disabled"); } if (list.matchingItems.length <= perPage) { document.querySelector(".pagination-wrap").style.display = "none"; } else { document.querySelector(".pagination-wrap").style.display = "flex"; } if (list.matchingItems.length > 0) { document.getElementsByClassName("noresult")[0].style.display = "none"; } else { document.getElementsByClassName("noresult")[0].style.display = "block"; } }); const xhttp = new XMLHttpRequest(); xhttp.onload = function () { var json_records = JSON.parse(this.responseText); Array.from(json_records).forEach(function (raw){ var tags = raw.tags; var tagHtml = ''; Array.from(tags).forEach((tag, index) => { tagHtml += ''+tag+'' }) contactList.add({ id: `#VZ${raw.id}`, name: '
\
\
'+raw.name[1]+'
\
', company_name: raw.company_name, designation: raw.designation, date: formatDate(raw.date)+' '+timeConvert(raw.date)+'', email_id: raw.email_id, phone: raw.phone, lead_score: raw.lead_score, tags: tagHtml, }); contactList.sort('id', { order: "desc" }); refreshCallbacks(); }); contactList.remove("id", `#VZ001`); } xhttp.open("GET", "assets/json/contact-list.json"); xhttp.send(); isCount = new DOMParser().parseFromString( contactList.items.slice(-1)[0]._values.id, "text/html" ); // customer image document.querySelector("#customer-image-input").addEventListener("change", function () { var preview = document.querySelector("#customer-img"); var file = document.querySelector("#customer-image-input").files[0]; var reader = new FileReader(); reader.addEventListener("load",function () { preview.src = reader.result; },false); if (file) { reader.readAsDataURL(file); } }); var idField = document.getElementById("id-field"), customerImg = document.getElementById("customer-img"), customerNameField = document.getElementById("customername-field"), company_nameField = document.getElementById("company_name-field"), designationField = document.getElementById("designation-field"), email_idField = document.getElementById("email_id-field"), phoneField = document.getElementById("phone-field"), lead_scoreField = document.getElementById("lead_score-field"), addBtn = document.getElementById("add-btn"), editBtn = document.getElementById("edit-btn"), removeBtns = document.getElementsByClassName("remove-item-btn"), editBtns = document.getElementsByClassName("edit-item-btn"); viewBtns = document.getElementsByClassName("view-item-btn"); refreshCallbacks(); document.getElementById("showModal").addEventListener("show.bs.modal", function (e) { if (e.relatedTarget.classList.contains("edit-item-btn")) { document.getElementById("exampleModalLabel").innerHTML = "Edit Contact"; document.getElementById("showModal").querySelector(".modal-footer").style.display = "block"; document.getElementById("add-btn").style.display = "none"; document.getElementById("edit-btn").style.display = "block"; } else if (e.relatedTarget.classList.contains("add-btn")) { document.getElementById("exampleModalLabel").innerHTML = "Add Contact"; document.getElementById("showModal").querySelector(".modal-footer").style.display = "block"; document.getElementById("edit-btn").style.display = "none"; document.getElementById("add-btn").style.display = "block"; } else { document.getElementById("exampleModalLabel").innerHTML = "List Contact"; document.getElementById("showModal").querySelector(".modal-footer").style.display = "none"; } }); ischeckboxcheck(); document.getElementById("showModal").addEventListener("hidden.bs.modal", function (e) { clearFields(); }); document.querySelector("#contactList").addEventListener("click", function () { refreshCallbacks(); ischeckboxcheck(); }); var table = document.getElementById("customerTable"); // save all tr var tr = table.getElementsByTagName("tr"); var trlist = table.querySelectorAll(".list tr"); // date & time var dateValue = new Date().toUTCString().slice(5, 16); function currentTime() { var ampm = new Date().getHours() >= 12 ? "PM" : "AM"; var hour = new Date().getHours() > 12 ? new Date().getHours() % 12 : new Date().getHours(); var minute = new Date().getMinutes() < 10 ? "0" + new Date().getMinutes() : new Date().getMinutes(); if (hour < 10) { return "0" + hour + ":" + minute + " " + ampm; } else { return hour + ":" + minute + " " + ampm; } } setInterval(currentTime, 1000); var count = 11; // multiple Remove CancelButton var tagInputField = new Choices('#taginput-choices', { removeItemButton: true, } ); var tagInputFieldValue = tagInputField.getValue(true); var tagHtmlValue = ''; Array.from(tagInputFieldValue).forEach((tag, index) => { tagHtmlValue += ''+tag+'' }) addBtn.addEventListener("click", function (e) { if ( customerNameField.value !== "" && company_nameField.value !== "" && email_idField.value !== "" && phoneField.value !== "" && lead_scoreField.value !== "" && designationField.value !== "" ) { var tagInputFieldValue = tagInputField.getValue(true); var tagHtmlValue = ''; Array.from(tagInputFieldValue).forEach((tag, index) => { tagHtmlValue += '' + tag + '' }) contactList.add({ id: `#VZ${count}`, // name: customerNameField.value, name: '
\
\
'+ customerNameField.value + '
\
', company_name: company_nameField.value, designation: designationField.value, email_id: email_idField.value, phone: phoneField.value, lead_score: lead_scoreField.value, tags: tagHtmlValue, date: dateValue + ' ' + currentTime() + '' }); contactList.sort('id', { order: "desc" }); document.getElementById("close-modal").click(); clearFields(); refreshCallbacks(); count++; Swal.fire({ position: 'center', icon: 'success', title: 'Contact inserted successfully!', showConfirmButton: false, timer: 2000, showCloseButton: true }); } }); editBtn.addEventListener("click", function (e) { document.getElementById("exampleModalLabel").innerHTML = "Edit Contact"; var editValues = contactList.get({ id: idField.value, }); Array.from(editValues).forEach(function (x) { isid = new DOMParser().parseFromString(x._values.id, "text/html"); var selectedid = isid.body.firstElementChild.innerHTML; var tagInputFieldValue = tagInputField.getValue(true); var tagHtmlValue = ''; Array.from(tagInputFieldValue).forEach((tag, index) => { tagHtmlValue += '' + tag + '' }) if (selectedid == itemId) { x.values({ id: `#VZ${idField.value}`, name: '
\
\
'+customerNameField.value+'
\
', company_name: company_nameField.value, designation: designationField.value, email_id: email_idField.value, phone: phoneField.value, lead_score: lead_scoreField.value, tags: tagHtmlValue, date: dateValue + ' '+currentTime()+'' }); } }); document.getElementById("close-modal").click(); clearFields(); Swal.fire({ position: 'center', icon: 'success', title: 'Contact updated Successfully!', showConfirmButton: false, timer: 2000, showCloseButton: true }); }); function ischeckboxcheck() { Array.from(document.getElementsByName("checkAll")).forEach(function (x) { x.addEventListener("click", function (e) { if (e.target.checked) { e.target.closest("tr").classList.add("table-active"); } else { e.target.closest("tr").classList.remove("table-active"); } }); }); } function refreshCallbacks() { Array.from(removeBtns).forEach(function (btn) { btn.addEventListener("click", function (e) { e.target.closest("tr").children[1].innerText; itemId = e.target.closest("tr").children[1].innerText; var itemValues = contactList.get({ id: itemId, }); Array.from(itemValues).forEach(function (x) { deleteid = new DOMParser().parseFromString(x._values.id, "text/html"); var isElem = deleteid.body.firstElementChild; var isdeleteid = deleteid.body.firstElementChild.innerHTML; if (isdeleteid == itemId) { document.getElementById("delete-record").addEventListener("click", function () { contactList.remove("id", isElem.outerHTML); document.getElementById("deleteRecord-close").click(); }); } }); }); }); Array.from(editBtns).forEach(function (btn) { btn.addEventListener("click", function (e) { e.target.closest("tr").children[1].innerText; itemId = e.target.closest("tr").children[1].innerText; var itemValues = contactList.get({ id: itemId, }); Array.from(itemValues).forEach(function (x) { isid = new DOMParser().parseFromString(x._values.id, "text/html"); var selectedid = isid.body.firstElementChild.innerHTML; var tagBadge = new DOMParser().parseFromString(x._values.tags, "text/html").body.querySelectorAll("span.badge"); if (selectedid == itemId) { idField.value = selectedid; customerImg.src = new DOMParser().parseFromString(x._values.name, "text/html").body.querySelector("img").src customerNameField.value = new DOMParser().parseFromString(x._values.name, "text/html").body.querySelector(".name").innerHTML; company_nameField.value = x._values.company_name; designationField.value = x._values.designation; email_idField.value = x._values.email_id; phoneField.value = x._values.phone; lead_scoreField.value = x._values.lead_score; if(tagBadge){ Array.from(tagBadge).forEach((item) => { tagInputField.setChoiceByValue(item.innerHTML); }) } } }); }); }); Array.from(viewBtns).forEach(function (btn) { btn.addEventListener("click", function (e) { e.target.closest("tr").children[1].innerText; itemId = e.target.closest("tr").children[1].innerText; var itemValues = contactList.get({ id: itemId, }); Array.from(itemValues).forEach(function (x) { isid = new DOMParser().parseFromString(x._values.id, "text/html"); var selectedid = isid.body.firstElementChild.innerHTML; if (selectedid == itemId) { var codeBlock = `
${new DOMParser().parseFromString(x._values.name, "text/html").body.querySelector(".name").innerHTML}

${x._values.company_name}

Personal Information

Hello, I'm Tonya Noble, The most effective objective is one that is tailored to the job you are applying for. It states what kind of career you are seeking, and what skills and experiences.

Designation ${x._values.designation}
Email ID ${x._values.email_id}
Phone No ${x._values.phone}
Lead Score ${x._values.lead_score}
Tags ${x._values.tags}
Last Contacted ${x._values.date}
`; document.getElementById('contact-view-detail').innerHTML = codeBlock; } }); }); }); } function clearFields() { customerImg.src = "assets/images/users/user-dummy-img.jpg"; customerNameField.value = ""; company_nameField.value = ""; designationField.value = ""; email_idField.value = ""; phoneField.value = ""; lead_scoreField.value = ""; tagInputField.removeActiveItems(); tagInputField.setChoiceByValue("0"); } // Delete All Records function deleteMultiple(){ ids_array = []; var items = document.getElementsByName('chk_child'); for (i = 0; i < items.length; i++) { if (items[i].checked == true) { var trNode = items[i].parentNode.parentNode.parentNode; var id = trNode.querySelector("td a").innerHTML; ids_array.push(id); } } if(typeof ids_array !== 'undefined' && ids_array.length > 0){ Swal.fire({ title: "Are you sure?", text: "You won't be able to revert this!", icon: "warning", showCancelButton: true, confirmButtonClass: 'btn btn-primary w-xs me-2 mt-2', cancelButtonClass: 'btn btn-danger w-xs mt-2', confirmButtonText: "Yes, delete it!", buttonsStyling: false, showCloseButton: true }).then(function (result) { if (result.value) { for (i = 0; i < ids_array.length; i++) { contactList.remove("id", `${ids_array[i]}`); } document.getElementById("checkAll").checked = false; Swal.fire({ title: 'Deleted!', text: 'Your data has been deleted.', icon: 'success', confirmButtonClass: 'btn btn-info w-xs mt-2', buttonsStyling: false }); } }); }else{ Swal.fire({ title: 'Please select at least one checkbox', confirmButtonClass: 'btn btn-info', buttonsStyling: false, showCloseButton: true }); } } document.querySelector(".pagination-next").addEventListener("click", function () { (document.querySelector(".pagination.listjs-pagination")) ? (document.querySelector(".pagination.listjs-pagination").querySelector(".active")) ? document.querySelector(".pagination.listjs-pagination").querySelector(".active").nextElementSibling.children[0].click(): '': ''; }); document.querySelector(".pagination-prev").addEventListener("click", function () { (document.querySelector(".pagination.listjs-pagination")) ? (document.querySelector(".pagination.listjs-pagination").querySelector(".active")) ? document.querySelector(".pagination.listjs-pagination").querySelector(".active").previousSibling.children[0].click(): '': ''; });