CRUD Operation
Tue Sep 05 2023 07:23:02 GMT+0000 (Coordinated Universal Time)
Saved by @AbdulBasitkhan7
<!DOCTYPE html>
<html>
<head>
<title>
JavaScript CRUD
</title>
<style>.login_form{
display: grid;
width: 97%;
grid-template-columns: 1fr 1fr;
gap: 47px;
margin-inline: 18px;
}
.Filter{
width: 95%;
padding: 10px;
margin-top: 4px;
border-radius: 7px;
border: 1px solid #ccc;
}
.input{
padding: 0px 0px 20px;
}
.input label{
padding-bottom: 5px;
color: #1b1e26;
}
.btnsearch{
width: 100%;
display: flex;
justify-content: end;
}
/*End */
.main{
border-radius: 10px;
background-color: white;
margin: 2%;
padding: 5px;
margin-block: -14px;
height: auto;
}
h1{
color: #1b1e26;
display: flex;
justify-content: center;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
}
::placeholder{
color: #1b1e26;
}
.crtbtn{
width: 102px;
height: 41px;
border-radius: 7px;
padding: 7px;
font-size: 18px;
background-color: #1b1e26;
border: none;
color: white;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
float: right;
margin-top: -60px;
margin-inline: 18px
}
.formFilter{
box-sizing: border-box;
width: 97%;
margin-inline-start: 2%;
margin-top: 34px;
}
.reset{
width: 102px;
height: 41px;
border-radius: 7px;
padding: 7px;
font-size: 18px;
background-color: #1b1e26;
color: white;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
margin-inline: 16px;
border: none;
}
.search{
width: 102px;
height: 41px;
border-radius: 7px;
padding: 7px;
font-size: 18px;
background-color: #dfdfdf;
color: #1b1e26;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
border-color: #1b1e26;
margin-inline: -15px;
border: none;
}
#snackbar {
visibility: hidden;
min-width: 250px;
margin-left: -125px;
background-color: #40f75c;
color: #fff;
text-align: center;
border-radius: 2px;
padding: 16px;
position: fixed;
z-index: 1;
left: 50%;
top: 30px;
font-size: 17px;
}
#snackbar.show {
visibility: visible;
-webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
animation: fadein 1.5s, fadeout 0.5s 2.5s;
}
@-webkit-keyframes fadein {
from {top: 0; opacity: 0;}
to {top: 30px; opacity: 1;}
}
@keyframes fadein {
from {top: 0; opacity: 0;}
to {top: 30px; opacity: 1;}
}
@-webkit-keyframes fadeout {
from {top: 30px; opacity: 1;}
to {top: 0; opacity: 0;}
}
@keyframes fadeout {
from {top: 30px; opacity: 1;}
to {top: 0; opacity: 0;}
}
body{
margin-block: 10px;
padding-block: 27px;
padding-left: 20px;
padding-right: 20px;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
background-color: #1b1e26;
}
.employee-form {
padding: 10px;
margin: auto;
width: 98%;
padding: 5px;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
}
.employees-table {
padding: 20px;
margin: auto;
width: 98%;
padding: 5px;
color : rgb(255, 255, 255);
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
}
body > table{
width: 80%;
}
table{
border-collapse: collapse;
}
table.list{
width:100%;
}
td{text-align: center;
padding: 8px;
color:#1b1e26;
background-color: white;
border: 1px solid #1b1e26;
}
th {
border: 1px solid #ffffff;
text-align: center;
padding: 8px;
}
tr:nth-child(even),table.list thead>tr {
background-color: #1b1e26;
}
.modal{
justify-content: center;
display: flex;
align-content: center;
background-color: #a3b5f0;
width: 99%;
height: auto;
margin: 9px;
padding-block: 35px;
border-radius: 10px;
}
h2.texthead {
margin-inline: 16px;
color: #1b1e26;
}
.close{
float: right;
margin-inline: 19px;
margin-top: -55px;
font-size: 31px;
color: #1b1e26;
}
.text{
color: #1b1e26;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
padding-block: -6px;
}
.inpcss{
width: 100%;
padding: 8px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
color: #1b1e26;
}
.btnupdate{
width: 97px;
height: 41px;
border-radius: 7px;
padding: 7px;
font-size: 18px;
background-color:#a3b5f0;
border-color: #63835f;
color: #1b1e26;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
float: right;
margin-top: -16px;
margin-right: 19px;
}
.mastersearch{
padding: 10px;
height: 39px;
width: 221px;
margin-right: 29px !important;
margin: 15px;
border-radius: 6px;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
border-style: groove;
box-sizing: border-box;
border-radius: 7px;
color:#1b1e26;
border: 1px solid #ccc;
}
input[id="fullName"],input[id="email"],input[id="salary"],input[id="city"]{
width: 100%;
padding: 8px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
color: #1b1e26;
}
input[type=submit] {
width: 102px;
height: 41px;
background-color: #1b1e26;
color: white;
padding: 10px 18px;
border: none;
border-radius: 7px;
cursor: pointer;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
font-size: 18px;
margin-inline: 15px;
}
form div.form-action-buttons{
text-align: right;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
}
::placeholder{
color: #1b1e26;
}
a{
cursor: pointer;
text-decoration: underline;
margin-right: 4px;
}
label.validation-error{
color: red;
margin-left: 5px;
font-family: 'Poppins',Helvetica,Arial,Lucida,sans-serif;
}
.hide{
display:none;
}
</style>
</head>
<body>
<div class="main"><h1 class="h1" >Employee Master</h1>
<button onclick="toggleForm();hidefilter();issave()" class="crtbtn" id="createButton">Create</button>
<hr>
<!-- The Edit Modal -->
<!-- The Edit Modal -->
<div id="editModal" class="modal" style="display:none;">
<div class="modal-content">
<span><h2 class="texthead">Edit Detail</h2></span>
<span class="close" onclick="closeEditModal()">×</span>
<hr class="hr">
<div class="login_form">
<div class="input">
<label class="text">Full Name</label>
<input type="text" id="editFullName" class="inpcss">
</div>
<div class="input">
<label class="text">Email</label>
<input type="text" id="editEmail" class="inpcss">
</div>
</div>
<div class="login_form">
<div class="input">
<label class="text">Salary</label>
<input type="text" id="editSalary" class="inpcss">
</div>
<div class="input">
<label class="text">City</label>
<input type="text" id="editCity" class="inpcss">
</div>
</div>
<button id="updateButton" onclick="updateRecord()" class="btnupdate">Update</button>
</div>
</div>
<div id="snackbar">Record Successfully Saved</div>
<div class="employee-form" id="employeeForm" style="display:none;">
<form onsubmit="event.preventDefault();onFormSubmit();snackerbar()" autocomplete="off">
<div class="login_form">
<div class="input">
<label>Full Name*</label><label class="validation-error hide" id="fullNameValidationError">This field is required.</label>
<input type="text" name="fullName" id="fullName" >
</div>
<div class="input">
<label>Email Id</label>
<input type="text" name="email" id="email" >
</div>
</div>
<div class="login_form">
<div class="input">
<label>Salary</label>
<input type="text" name="salary" id="salary" >
</div>
<div class="input">
<label>City</label>
<input type="text" name="city" id="city" >
</div>
</div>
<div class="form-action-buttons">
<input type="submit" value="Save" >
</div>
</form>
</div>
<div id="formFilter" class="formFilter">
<div class="login_form">
<div class="input">
<label>Full Name</label>
<input type="text" class="Filter">
</div>
<div class="input">
<label >Email</label>
<input type="text" class="Filter">
</div>
</div>
<div class="login_form">
<div class="input">
<label>City</label>
<input type="text" class="Filter">
</div>
<div class="input">
<label>Salary</label>
<input type="text" class="Filter">
</div>
</div>
<div>
<button id="Reset" class="reset" type="reset">Reset</button>
<button id="search" class="search" type="search">Search</button>
</div>
</div>
<hr id="hideme">
<div class="btnsearch"><input type="search" name="" class="mastersearch" id="MasterSearch" placeholder="Search..."></div>
<div class="employees-table" id="employeestable">
<table class="list" id="employeeList">
<thead>
<tr id="tr">
<th>Full Name</th>
<th>Email Id</th>
<th>Salary</th>
<th>City</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div></div>
<script>
var isFormVisible = false;
var isFilterVisible = true;
var isTableVisible = true;
var isSearchVisible = true;
var isLineVisible = true;
let editingRow = null;
function toggleForm() {
isFormVisible = !isFormVisible;
var createButton = document.getElementById("createButton");
var employeeForm = document.getElementById("employeeForm");
var formFilter = document.getElementById("formFilter");
var employeesTable = document.getElementById("employeestable");
var masterSearch = document.getElementById("MasterSearch");
var line = document.getElementById("hideme");
if (isFormVisible) {
employeeForm.style.display = "block";
createButton.innerText = "Cancel";
console.log("Form is visible");
// Hide other elements
formFilter.style.display = "none";
employeesTable.style.display = "none";
masterSearch.style.display = "none";
line.style.display = "none";
} else {
employeeForm.style.display = "none";
createButton.innerText = "Create";
console.log("Form is hidden");
resetForm();
// Show other elements
formFilter.style.display = "block";
employeesTable.style.display = "block";
masterSearch.style.display = "block";
line.style.display = "block";
}
}
var isFiltervisible = true;
var istablevisible = true;
var issearchvisible = true;
var islinevisible = true;
function hidefilter() {
isFiltervisible = !isFiltervisible;
istablevisible = !istablevisible;
issearchvisible =!issearchvisible;
islinevisible = !islinevisible;
var Filterform = document.getElementById("formFilter");
var table = document.getElementById("employeestable");
var search = document.getElementById("MasterSearch");
var line = document.getElementById("hideme");
if(isFiltervisible && istablevisible && islinevisible){
Filterform.style.display = "block";
table.style.display = "block";
search.style.display = "block";
line.style.display = "block";
}else{
Filterform.style.display = "none";
table.style.display = "none";
search.style.display = "none";
line.style.display = "none";
resetForm();
}
}
var save = document.getElementById("submit");
var employeeForm = document.getElementById("employeeForm");
var formFilter = document.getElementById("formFilter");
var employeesTable = document.getElementById("employeestable");
var masterSearch = document.getElementById("MasterSearch");
var line = document.getElementById("hideme");
function issave() {
var employeeForm = document.getElementById("employeeForm");
if(validate()) addEventListener('click',(save)=>{
employeeForm.style.display = "none";
formFilter.style.display = "block";
employeesTable.style.display = "block";
masterSearch.style.display = "block";
line.style.display = "block";
})
else{
employeeForm.style.display = "block";
formFilter.style.display = "none";
employeesTable.style.display = "none";
masterSearch.style.display = "block";
masterSearch.style.display = "none";
line.style.display = "none";
}
}
var isnotvisibleform = false;
function onEdit(td) {
isnotvisibleform = !isnotvisibleform;
var edit = document.getElementById("employeeForm");
if(isnotvisibleform){
edit.style.display = "block";
selectedRow = td.parentElement.parentElement;
document.getElementById("fullName").value = selectedRow.cells[0].innerHTML;
document.getElementById("email").value = selectedRow.cells[1].innerHTML;
document.getElementById("salary").value = selectedRow.cells[2].innerHTML;
document.getElementById("city").value = selectedRow.cells[3].innerHTML;
}else{
edit.style.display = "none";
}
}
var selectedRow = null
function onFormSubmit() {
if (validate()) {
var formData = readFormData();
if (selectedRow == null)
insertNewRecord(formData);
else
updateRecord(formData);
resetForm();
// After saving, hide the form and show other elements
toggleForm();
snackerbar();
}
}
function snackerbar() {
var x = document.getElementById("snackbar");
x.className = "show";
setTimeout(function(){ x.className = x.className.replace("show", ""); }, 3000);
}
function readFormData() {
var formData = {};
formData["fullName"] = document.getElementById("fullName").value;
formData["email"] = document.getElementById("email").value;
formData["salary"] = document.getElementById("salary").value;
formData["city"] = document.getElementById("city").value;
return formData;
}
function insertNewRecord(data) {
var table = document.getElementById("employeeList").getElementsByTagName('tbody')[0];
var newRow = table.insertRow(table.length);
cell1 = newRow.insertCell(0);
cell1.innerHTML = data.fullName;
cell2 = newRow.insertCell(1);
cell2.innerHTML = data.email;
cell3 = newRow.insertCell(2);
cell3.innerHTML = data.salary;
cell4 = newRow.insertCell(3);
cell4.innerHTML = data.city;
cell4 = newRow.insertCell(4);
cell4.innerHTML = `<a onClick="openEditModal(this)" style= "color:"green";">Edit</a>
<a onClick="onDelete(this)" style= "color:"red";>Delete</a>`;
}
function resetForm() {
document.getElementById("fullName").value = "";
document.getElementById("email").value = "";
document.getElementById("salary").value = "";
document.getElementById("city").value = "";
selectedRow = null;
}
function onDelete(td) {
if (confirm('Are you sure to delete this record ?')) {
row = td.parentElement.parentElement;
document.getElementById("employeeList").deleteRow(row.rowIndex);
resetForm();
}
}
function validate() {
isValid = true;
var fullName = document.getElementById("fullName").value;
if (fullName.trim() === "") {
isValid = false;
document.getElementById("fullNameValidationError").classList.add("hide");
} else {
isValid = true;
if (!document.getElementById("fullNameValidationError").classList.contains("hide"))
document.getElementById("fullNameValidationError").classList.add("hide");
}
return isValid;
}
// Function to open the edit modal
// Function to open the edit modal
function openEditModal(td) {
editingRow = td.parentElement.parentElement;
const fullName = editingRow.cells[0].innerHTML;
const email = editingRow.cells[1].innerHTML;
const salary = editingRow.cells[2].innerHTML;
const city = editingRow.cells[3].innerHTML;
// Populate the edit modal fields
document.getElementById('editFullName').value = fullName;
document.getElementById('editEmail').value = email;
document.getElementById('editSalary').value = salary;
document.getElementById('editCity').value = city;
// Display the edit modal
document.getElementById('editModal').style.display = 'block';
}
// Function to close the edit modal
function closeEditModal() {
document.getElementById('editModal').style.display = 'none';
editingRow = null;
}
// Function to update the record
function updateRecord() {
if (editingRow) {
// Update the data in the table
editingRow.cells[0].innerHTML = document.getElementById('editFullName').value;
editingRow.cells[1].innerHTML = document.getElementById('editEmail').value;
editingRow.cells[2].innerHTML = document.getElementById('editSalary').value;
editingRow.cells[3].innerHTML = document.getElementById('editCity').value;
// Close the edit modal
closeEditModal();
}
}
</script>
</body>
</html>



Comments