Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev

This commit is contained in:
Gowtham M 2026-02-27 11:45:08 +05:30
commit 0ec54a3302
2 changed files with 16 additions and 14 deletions

View File

@ -461,6 +461,7 @@ function closeModal(id) {
selectedType = 'Call'; selectedType = 'Call';
$('#typeButtons .d_activity_type').removeClass('active'); $('#typeButtons .d_activity_type').removeClass('active');
$('#typeButtons .d_activity_type[data-type="Call"]').addClass('active'); $('#typeButtons .d_activity_type[data-type="Call"]').addClass('active');
fetchActivities(); // now i called because of Refresh the page .......
} }
// Specific cleanup for "Complete" modal (hidden follow-up sections) // Specific cleanup for "Complete" modal (hidden follow-up sections)
@ -652,7 +653,6 @@ async function fetchActivities(isLoadMore = false) {
// 2. Detail Logic // 2. Detail Logic
async function viewDetail(id) { async function viewDetail(id) {
console.log("i am here");
lead_id = id; lead_id = id;
let res = await fetch(`${API}/leads/${id}`); let res = await fetch(`${API}/leads/${id}`);
let json = await res.json(); let json = await res.json();
@ -740,6 +740,7 @@ function renderCard(opps) {
function renderTimeline(acts) { function renderTimeline(acts) {
const cont = document.getElementById('timelineContainer'); const cont = document.getElementById('timelineContainer');
if (acts.length === 0) { if (acts.length === 0) {
cont.classList.add('no-line'); cont.classList.add('no-line');
@ -786,6 +787,7 @@ function renderTimeline(acts) {
} }
function openActivityModal() { function openActivityModal() {
document.getElementById('act_owner').value = global_lead_assigned_to; document.getElementById('act_owner').value = global_lead_assigned_to;
document.getElementById('act_owner').dispatchEvent(new Event('change')); document.getElementById('act_owner').dispatchEvent(new Event('change'));
document.getElementById('act_lead_id').value = lead_id; document.getElementById('act_lead_id').value = lead_id;
@ -908,7 +910,7 @@ document.getElementById('activityForm').onsubmit = async (e) => {
toastr.success('Activity Created Successfully'); toastr.success('Activity Created Successfully');
closeModal('activityModal'); closeModal('activityModal');
if (flag === "frompopup") { if (flag === "frompopup") {
viewDetail(document.getElementById('act_lead_id').value); viewDetail(actLead);
} else { } else {
window.location.reload(); window.location.reload();
} }

View File

@ -1607,7 +1607,7 @@ if (btnSaveContact) {
body: JSON.stringify(payload) body: JSON.stringify(payload)
}); });
const result = await res.json(); // Get the response body const contactResult = await res.json(); // Get the response body
if (res.ok) { if (res.ok) {
// Clear inputs // Clear inputs
@ -1620,16 +1620,16 @@ if (btnSaveContact) {
// Create the HTML string // Create the HTML string
let contactHtml = ` let contactHtml = `
<div class="contact-card d-flex justify-content-between align-items-center mb-2 p-2" <div class="contact-card d-flex justify-content-between align-items-center mb-2 p-3"
style="background: #f8f8f8; border-radius: 8px;" style="background: #f8f8f8; border-radius: 8px;"
data-id="${result.data.contact_id}"> data-id="${contactResult.data.contact_id}">
<div> <div>
<div class="fw-bold">${result.data.name}</div> <div class="fw-bold">${contactResult.data.name}</div>
<div class="text-muted">${result.data.mobile}</div> <div class="text-muted">${contactResult.data.mobile}</div>
</div> </div>
<button type="button" <button type="button"
class="btn btn-danger btn-sm btnRemoveContact" class="btn btn-danger btn-sm btnRemoveContact"
data-id="${result.data.contact_id}"> data-id="${contactResult.data.contact_id}">
Remove Remove
</button> </button>
</div> </div>
@ -1637,19 +1637,19 @@ if (btnSaveContact) {
// <button type="button" // <button type="button"
// class="btn btn-secondary btn-sm btnEditContact" // class="btn btn-secondary btn-sm btnEditContact"
// data-id="${result.data.contact_id}"> // data-id="${contactResult.data.contact_id}">
// Update // Update
// </button> // </button>
// Append to container using Vanilla JS // Append to container using Vanilla JS
document.getElementById('savedContactsContainer').insertAdjacentHTML('beforeend', contactHtml); document.getElementById('savedContactsContainer').insertAdjacentHTML('beforeend', contactHtml);
toastr.success('Contact saved successfully'); toastr.success('Contact saved successfully');
} else { } else {
let err = await res.json();
if (res.status === 400) { if (res.status === 400) {
let errorMessages = ""; let errorMessages = "";
let seenMessages = []; let seenMessages = [];
if (err.messages) { if (contactResult.messages) {
Object.entries(err.messages).forEach(([field, message]) => { Object.entries(contactResult.messages).forEach(([field, message]) => {
let inputElement = $('[name="' + field + '"]'); let inputElement = $('[name="' + field + '"]');
if (inputElement.length > 0) { if (inputElement.length > 0) {
@ -1673,11 +1673,11 @@ if (btnSaveContact) {
}); });
toastr.error(errorMessages, 'Validation Error', { allowHtml: true }); toastr.error(errorMessages, 'Validation Error', { allowHtml: true });
} else { } else {
toastr.warning(err.message || 'Validation failed', 'Warning'); toastr.warning(contactResult.message || 'Validation failed', 'Warning');
} }
} }
else { else {
toastr.error(err.message || 'Error adding lead'); toastr.error(contactResult.message || 'Error adding lead');
} }
} }
} catch (error) { } catch (error) {