Skip to content

Commit

Permalink
Merge pull request #30 from sakshii00/comments
Browse files Browse the repository at this point in the history
added comments
  • Loading branch information
XceeDesigns authored May 17, 2024
2 parents 5c28e2d + c97d785 commit f9ce526
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 99 deletions.
33 changes: 26 additions & 7 deletions contact-dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
<html lang="en">

<head>

<title>Dashboard - XceeDesigns</title>

<!-- meta tags -->
<meta charset="utf-8">
<meta name="robots" content="index, follow">
<meta name="keywords"
Expand All @@ -22,6 +25,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" />

<!-- icons -->
<link rel="shortcut icon" href="images/favicons/favicon.png">
<link rel="apple-touch-icon" sizes="57x57" href="images/favicons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="images/favicons/apple-icon-60x60.png">
Expand All @@ -40,7 +44,7 @@
<meta name="msapplication-TileImage" content="images/favicons/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">


<!-- stylesheets -->
<link rel="stylesheet" type="text/css" href="css/flexslider.css">

<link rel="stylesheet" href="css/bootstrap.min.css">
Expand All @@ -53,6 +57,7 @@
<link rel="stylesheet" href="css/style.css">

<link rel='stylesheet' href="css/animate.min.css">


<style>
/* Style for dashboard entries */
Expand All @@ -76,16 +81,16 @@
</head>

<body>

<!-- loader -->
<div id="loader-overflow">
<div id="loader3">Please enable JS</div>
</div>


<div id="wrap" class="boxed ">
<div class="grey-bg">

<!-- navigation bar starts -->
<header id="nav" class="header header-1 no-transparent mobile-no-transparent">

<div class="header-wrapper">
<div class="container-m-30 clearfix">
<div class="logo-row">
Expand Down Expand Up @@ -157,7 +162,9 @@
</div>

</header>

<!-- navigation bar ends here -->

<!-- dashboard area -->
<div class="page-title-cont page-title-big grey-light-bg">
<div class="relative container align-left">
<div class="row">
Expand All @@ -180,6 +187,7 @@ <h1 class="page-title">Dashboard</h1>
</div>
</div>

<!-- page form section starts here -->
<div class="page-section">
<div class="container-fluid">
<div class="row">
Expand Down Expand Up @@ -211,9 +219,12 @@ <h2 class="section-title">Dashboard <span class="bold">XceedDesigns</span></h2>
</div
</div>
</div>
<!-- page form section starts here -->

<hr class="mt-0 mb-0">



<!-- contact section starts here -->
<div id="contact-link" class="page-section p-110-cont">
<div class="container">
<div class="row">
Expand Down Expand Up @@ -256,6 +267,10 @@ <h3><span class="bold">CALL US</span></h3>
</div>
</div>

<!-- contact section ends here -->


<!-- footer starts here -->
<footer class="page-section pt-80 pb-50">
<div class="container">
<div class="row">
Expand All @@ -280,7 +295,7 @@ <h3><span class="bold">CALL US</span></h3>

</div>
</footer>

<!-- footer ends here -->

<!-- modal starts here -->

Expand All @@ -306,13 +321,16 @@ <h5 class="modal-title" id="myModalLabel">Modal Title</h5>

<!-- modal ends here -->

<!-- arrow icon to go to top -->
<p id="back-top">
<a href="#top" title="Back to Top"><span class="icon icon-arrows-up"></span></a>
</p>

</div>
</div>


<!-- scripts start here -->
<script src="js/jquery-1.11.2.min.js"></script>

<script src="js/bootstrap.min.js"></script>
Expand All @@ -330,6 +348,7 @@ <h5 class="modal-title" id="myModalLabel">Modal Title</h5>
<script src="js/main.js"></script>

<script src="contact-dashboard.js"></script>
<!-- scripts end here -->


</body>
Expand Down
181 changes: 91 additions & 90 deletions contact-dashboard.js
Original file line number Diff line number Diff line change
@@ -1,96 +1,97 @@
// Function to fetch data from the server and populate the dashboard
const fetchData = async () => {
// getting input and fetching data
const input = document.getElementById('fetchInput').value;
const fetchBtn = document.getElementById('fetchBtn');
fetchBtn.disabled = true;
const response = await fetch(`https://xceedesigns-backend.vercel.app/contact/fetch`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ adminAuth: input })
});

// modal with an error message
if (response.status === 401) {
const modalTitle = document.querySelector('.modal-title');
modalTitle.textContent = 'XceeDesigns LLC.';
modalTitle.style.fontWeight = 'bold';
const modalBody = document.querySelector('.modal-body');
modalBody.textContent = 'Authentication failed, please try again.';
$('#myModal').modal('show');
fetchBtn.disabled = false;
return;
}
// parsing and creating table
const data = await response.json();
fetchBtn.disabled = false;
const table = document.createElement('table');
table.classList.add('table');

const fetchData = async () => {
const input = document.getElementById('fetchInput').value;
const fetchBtn = document.getElementById('fetchBtn');
fetchBtn.disabled = true;
const response = await fetch(`https://xceedesigns-backend.vercel.app/contact/fetch`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ adminAuth: input })
// remove the previous table if it exists
const previousTable = document.querySelector('table');
if (previousTable) {
previousTable.remove();
}

});
if(response.status === 401) {
const modalTitle = document.querySelector('.modal-title');
modalTitle.textContent = 'XceeDesigns LLC.';
modalTitle.style.fontWeight = 'bold';
const modalBody = document.querySelector('.modal-body');
modalBody.textContent = 'Authentication failed, please try again.';
$('#myModal').modal('show');
fetchBtn.disabled = false;
return;
}
const data = await response.json();
fetchBtn.disabled = false;
const table = document.createElement('table');
table.classList.add('table');

// Remove previous table if exists
const previousTable = document.querySelector('table');
if (previousTable) {
previousTable.remove();
}

const tableHead = document.createElement('thead');
const tableHeadRow = document.createElement('tr');
const nameHeader = document.createElement('th');
nameHeader.textContent = 'Name';
tableHeadRow.appendChild(nameHeader);
const emailHeader = document.createElement('th');
emailHeader.textContent = 'Email';
tableHeadRow.appendChild(emailHeader);
const messageHeader = document.createElement('th');
messageHeader.textContent = 'Message';
tableHeadRow.appendChild(messageHeader);
const deleteHeader = document.createElement('th');
deleteHeader.textContent = 'Delete';
tableHeadRow.appendChild(deleteHeader);
tableHead.appendChild(tableHeadRow);
table.appendChild(tableHead);

const tableBody = document.createElement('tbody');
data.forEach(entry => {
const tableRow = document.createElement('tr');

const nameCell = document.createElement('td');
nameCell.textContent = entry.name;
tableRow.appendChild(nameCell);
// table headers
const tableHead = document.createElement('thead');
const tableHeadRow = document.createElement('tr');
const nameHeader = document.createElement('th');
nameHeader.textContent = 'Name';
tableHeadRow.appendChild(nameHeader);
const emailHeader = document.createElement('th');
emailHeader.textContent = 'Email';
tableHeadRow.appendChild(emailHeader);
const messageHeader = document.createElement('th');
messageHeader.textContent = 'Message';
tableHeadRow.appendChild(messageHeader);
const deleteHeader = document.createElement('th');
deleteHeader.textContent = 'Delete';
tableHeadRow.appendChild(deleteHeader);
tableHead.appendChild(tableHeadRow);
table.appendChild(tableHead);

const emailCell = document.createElement('td');
emailCell.textContent = entry.email;
tableRow.appendChild(emailCell);
// table body and populating it with fetched data
const tableBody = document.createElement('tbody');
data.forEach(entry => {
const tableRow = document.createElement('tr');
const nameCell = document.createElement('td');
nameCell.textContent = entry.name;
tableRow.appendChild(nameCell);
const emailCell = document.createElement('td');
emailCell.textContent = entry.email;
tableRow.appendChild(emailCell);
const messageCell = document.createElement('td');
messageCell.textContent = entry.message;
messageCell.style.maxWidth = '300px';
messageCell.style.maxHeight = '100px';
messageCell.style.wordWrap = 'break-word';
messageCell.style.whiteSpace = 'normal';
tableRow.appendChild(messageCell);
const deleteCell = document.createElement('td');
const deleteIcon = document.createElement('div');
deleteIcon.classList.add('delete-icon');
deleteIcon.textContent = '🗑️';
deleteIcon.style.cursor = 'pointer';

const messageCell = document.createElement('td');
messageCell.textContent = entry.message;
messageCell.style.maxWidth = '300px';
messageCell.style.maxHeight = '100px'; // Set a maximum height for the message cell
messageCell.style.wordWrap = 'break-word'; // Wrap long words
messageCell.style.whiteSpace = 'normal';
tableRow.appendChild(messageCell);

const deleteCell = document.createElement('td');
const deleteIcon = document.createElement('div');
deleteIcon.classList.add('delete-icon');
deleteIcon.textContent = '🗑️';
deleteIcon.style.cursor = 'pointer';
deleteIcon.addEventListener('click', async () => {
const res = await fetch(`https://xceedesigns-backend.vercel.app/contact/delete/${entry._id}`, {
method: 'DELETE'
});
tableRow.remove();

});
deleteCell.appendChild(deleteIcon);
tableRow.appendChild(deleteCell);

tableBody.appendChild(tableRow);
// event listener to delete an entry when delete icon is clicked
deleteIcon.addEventListener('click', async () => {
const res = await fetch(`https://xceedesigns-backend.vercel.app/contact/delete/${entry._id}`, {
method: 'DELETE'
});
table.appendChild(tableBody);

const tableContainer = document.createElement('div');
tableContainer.classList.add('table-responsive');
tableContainer.appendChild(table);
tableRow.remove();
});
deleteCell.appendChild(deleteIcon);
tableRow.appendChild(deleteCell);
tableBody.appendChild(tableRow);
});
table.appendChild(tableBody);

document.getElementById('dashboard').appendChild(tableContainer);
};
// creating container for the table and adding to dashboard
const tableContainer = document.createElement('div');
tableContainer.classList.add('table-responsive');
tableContainer.appendChild(table);
document.getElementById('dashboard').appendChild(tableContainer);
};
11 changes: 9 additions & 2 deletions contact.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@

// for handling form submission
document.addEventListener('DOMContentLoaded', function () {

const contactForm = document.getElementById('contact-form');
const contactSubmit = document.getElementById('contact-submit');
contactForm.addEventListener('submit', async function (event) {
event.preventDefault();

// sending data back to API
const response = await fetch('https://xceedesigns-backend.vercel.app/contact', {
method: 'POST',
body: JSON.stringify({
Expand All @@ -16,15 +17,21 @@
'Content-Type': 'application/json'
}
});

const parsedResponse = await response.text();

// modal info
const modalBody = document.querySelector('.modal-body');
const modalTitle = document.querySelector('.modal-title');
modalTitle.textContent = 'XceeDesigns LLC.';
modalTitle.style.fontWeight = 'bold';
modalBody.textContent = "Thank you for contacting us. We'll get back to you soon!";
// modalBody.style.color = '#04aa6d';
$('#myModal').modal('show');

//reset form
document.getElementById('contact-form').reset();
//log status
console.log(response.status);
});
});

0 comments on commit f9ce526

Please sign in to comment.