Загрузить файлы в «/»
This commit is contained in:
76
main.js
Normal file
76
main.js
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const newProjectForm = document.getElementById('new-project-form');
|
||||||
|
const tableBody = document.querySelector('.table tbody');
|
||||||
|
|
||||||
|
newProjectForm.addEventListener('submit', (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
const roomNumber = document.getElementById('room-number').value;
|
||||||
|
const roomType = document.getElementById('room-type').value;
|
||||||
|
const rate = parseFloat(document.getElementById('rate').value);
|
||||||
|
const guestName = document.getElementById('guest-name').value;
|
||||||
|
const guestPhone = document.getElementById('guest-phone').value;
|
||||||
|
const checkInDate = document.getElementById('check-in-date').value;
|
||||||
|
const checkOutDate = document.getElementById('check-out-date').value;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Input Validation (Crucial for robust code)
|
||||||
|
if (!roomNumber || !roomType || isNaN(rate) || !guestName || !guestPhone || !checkInDate || !checkOutDate) {
|
||||||
|
throw new Error("Пожалуйста, заполните все поля корректно.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const newRow = document.createElement('tr');
|
||||||
|
|
||||||
|
const roomNumberCell = document.createElement('td');
|
||||||
|
roomNumberCell.textContent = roomNumber;
|
||||||
|
|
||||||
|
const roomTypeCell = document.createElement('td');
|
||||||
|
roomTypeCell.textContent = roomType;
|
||||||
|
|
||||||
|
const rateCell = document.createElement('td');
|
||||||
|
rateCell.textContent = rate.toFixed(2);
|
||||||
|
|
||||||
|
const availabilityCell = document.createElement('td');
|
||||||
|
availabilityCell.textContent = 'Доступен';
|
||||||
|
|
||||||
|
const guestNameCell = document.createElement('td');
|
||||||
|
guestNameCell.textContent = guestName;
|
||||||
|
|
||||||
|
const guestPhoneCell = document.createElement('td');
|
||||||
|
guestPhoneCell.textContent = guestPhone;
|
||||||
|
|
||||||
|
const datesCell = document.createElement('td');
|
||||||
|
datesCell.textContent = `${checkInDate} - ${checkOutDate}`; // Correct template literal
|
||||||
|
|
||||||
|
const costCell = document.createElement('td');
|
||||||
|
const checkInDateObj = new Date(checkInDate);
|
||||||
|
const checkOutDateObj = new Date(checkOutDate);
|
||||||
|
const timeDiff = checkOutDateObj.getTime() - checkInDateObj.getTime();
|
||||||
|
const numNights = Math.ceil(timeDiff / (1000 * 3600 * 24));
|
||||||
|
|
||||||
|
if (isNaN(numNights) || numNights < 0) {
|
||||||
|
throw new Error("Неверные даты. Убедитесь, что дата выезда позже даты заезда.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const cost = numNights * rate;
|
||||||
|
costCell.textContent = cost.toFixed(2);
|
||||||
|
|
||||||
|
newRow.appendChild(roomNumberCell);
|
||||||
|
newRow.appendChild(roomTypeCell);
|
||||||
|
newRow.appendChild(rateCell);
|
||||||
|
newRow.appendChild(availabilityCell);
|
||||||
|
newRow.appendChild(guestNameCell);
|
||||||
|
newRow.appendChild(guestPhoneCell);
|
||||||
|
newRow.appendChild(datesCell);
|
||||||
|
newRow.appendChild(costCell);
|
||||||
|
|
||||||
|
tableBody.appendChild(newRow);
|
||||||
|
|
||||||
|
newProjectForm.reset();
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Произошла ошибка:", error);
|
||||||
|
alert("Произошла ошибка при обработке данных: " + error.message + ". Пожалуйста, проверьте введенные данные."); // Show error message to user
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
65
reg.js
Normal file
65
reg.js
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const usernameInput = document.getElementById('username');
|
||||||
|
const emailInput = document.getElementById('email');
|
||||||
|
const passwordInput = document.getElementById('password');
|
||||||
|
const confirmPasswordInput = document.getElementById('confirmPassword');
|
||||||
|
const registerButton = document.getElementById('registerButton');
|
||||||
|
const messageEl = document.getElementById('message');
|
||||||
|
const registrationForm = document.getElementById('registration-form');
|
||||||
|
|
||||||
|
registerButton.addEventListener('click', () => {
|
||||||
|
const username = usernameInput.value;
|
||||||
|
const email = emailInput.value;
|
||||||
|
const password = passwordInput.value;
|
||||||
|
const confirmPassword = confirmPasswordInput.value;
|
||||||
|
|
||||||
|
messageEl.textContent = "Регистрация прошла успешно!";
|
||||||
|
messageEl.style.color = "green";
|
||||||
|
|
||||||
|
if (!username) {
|
||||||
|
messageEl.textContent = "Пожалуйста, введите имя пользователя.";
|
||||||
|
messageEl.style.color = "red";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!email) {
|
||||||
|
messageEl.textContent = "Пожалуйста, введите email.";
|
||||||
|
messageEl.style.color = "red";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!password || !confirmPassword) {
|
||||||
|
messageEl.textContent = "Пожалуйста, введите пароль и подтвердите его.";
|
||||||
|
messageEl.style.color = "red";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password !== confirmPassword) {
|
||||||
|
messageEl.textContent = "Пароли не совпадают.";
|
||||||
|
messageEl.style.color = "red";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password.length < 8) {
|
||||||
|
messageEl.textContent = "Пароль должен содержать не менее 8 символов!";
|
||||||
|
messageEl.style.color = "red";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const userData = {
|
||||||
|
username: username,
|
||||||
|
email: email,
|
||||||
|
password: password
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
localStorage.setItem('user', JSON.stringify(userData));
|
||||||
|
|
||||||
|
messageEl.textContent = "Регистрация прошла успешно!";
|
||||||
|
messageEl.style.color = "green";
|
||||||
|
|
||||||
|
usernameInput.value = '';
|
||||||
|
emailInput.value = '';
|
||||||
|
passwordInput.value = '';
|
||||||
|
confirmPasswordInput.value = '';
|
||||||
|
});
|
||||||
|
});
|
||||||
132
style.css
Normal file
132
style.css
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
#new-project-form label {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new-project-form input,
|
||||||
|
#new-project-form textarea,
|
||||||
|
#new-project-form select {
|
||||||
|
width: 30%;
|
||||||
|
padding: 5px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submit {
|
||||||
|
background-color: #4fa6c0;
|
||||||
|
border-color: #90daf1;
|
||||||
|
}
|
||||||
|
.submit:active {
|
||||||
|
background-color: #999999;
|
||||||
|
border-color: #111111;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group label {
|
||||||
|
display: block;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
width: 80%;
|
||||||
|
margin: 20px auto;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1)
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-group input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
background-color: #007bff;
|
||||||
|
color: white;
|
||||||
|
padding: 10px 15px;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover {
|
||||||
|
background-color: #0056b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
#message {
|
||||||
|
margin-top: 10px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
background-color: rgb(171, 241, 186);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0px;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registration {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
background-color: rgb(244, 244, 244);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100vh;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.registration__form {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: auto;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
width: 300px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#new-project-form {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
border: 2px solid #999;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table th {
|
||||||
|
font-weight: bold;
|
||||||
|
border: 2px solid #999;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table td {
|
||||||
|
border: 2px solid #999;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user