Skip to content

Commit 59e5dc4

Browse files
committed
eventCreate client side check
1 parent ff09d45 commit 59e5dc4

File tree

1 file changed

+81
-8
lines changed

1 file changed

+81
-8
lines changed

public/src/modules/handleEventsActions.js

Lines changed: 81 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,21 +151,71 @@ export async function handleCreateEventEdit(event, id) {
151151
export async function handleCreateEventSubmit(event, pageToCome) {
152152
event.preventDefault();
153153
loadCategories();
154-
// Get form data
154+
155+
// Выделение пустых полей
156+
const emptyFields = highlightEmptyFields();
157+
158+
// Get form data
155159
const title = removeDangerous(document.getElementById('eventNameEntry').value);
156160
const description = removeDangerous(document.getElementById('eventDescriptionEntry').value);
157161
const tag = Array.from(document.getElementById('eventTagEntry').value.split(' '), (tag) => removeDangerous(tag));
158162
const dateStart = removeDangerous(document.getElementById('eventBeginEntry').value) + ':00Z';
159163
const dateEnd = removeDangerous(document.getElementById('eventEndEntry').value) + ':00Z';
160164
let categoryId = Number(removeDangerous(document.getElementById('categoriesInput').value));
161-
console.log(categoryId);
162-
categoryId = 1;
163165
const image = document.getElementById('imageInput').files[0];
166+
let isErrror = false;
167+
document.getElementById('eventServerError').innerText = '';
168+
try {
169+
if (emptyFields) {
170+
document.getElementById('eventServerError').innerText += 'Заполните, пожалуйста, все поля';
171+
isErrror = true;
172+
throw new Error('Заполните, пожалуйста, все поля');
173+
}
174+
if (title.length < 3) {
175+
document.getElementById('eventNameEntry').style.borderColor = 'red';
176+
document.getElementById('eventServerError').innerText += 'Слишком короткое название' + '\n';
177+
isErrror = true;
178+
};
179+
if (description.length < 3) {
180+
document.getElementById('eventDescriptionEntry').style.borderColor = 'red';
181+
document.getElementById('eventServerError').innerText += 'Слишком короткое описание' + '\n';
182+
isErrror = true;
183+
};
184+
console.log(tag);
185+
console.log(tag.length);
186+
if (tag.length == 1 && tag[0] == '') {
187+
document.getElementById('eventTagEntry').style.borderColor = 'red';
188+
document.getElementById('eventServerError').innerText += 'Слишком мало тегов' + '\n';
189+
isErrror = true;
190+
};
191+
if (tag.length > 3) {
192+
document.getElementById('eventTagEntry').style.borderColor = 'red';
193+
document.getElementById('eventServerError').innerText += 'Слишком много тегов' + '\n';
194+
isErrror = true;
195+
};
196+
if (dateStart > dateEnd) {
197+
document.getElementById('eventBeginEntry').style.borderColor = 'red';
198+
document.getElementById('eventServerError').innerText += 'Дата начала не может быть позже даты окончания' + '\n';
199+
isErrror = true;
200+
};
201+
if (dateStart < new Date().toISOString()) {
202+
document.getElementById('eventBeginEntry').style.borderColor = 'red';
203+
document.getElementById('eventServerError').innerText += 'Дата начала не может быть в прошлом' + '\n';
204+
isErrror = true;
205+
};
206+
207+
if (isErrror) {
208+
throw new Error('Заполните, пожалуйста, все поля');
209+
};
164210

165211
const latitude = removeDangerous(document.getElementById('latitude').value);
166212
const longitude = removeDangerous(document.getElementById('longitude').value);
167-
168-
try {
213+
if (longitude == 0 || longitude == 0) {
214+
document.getElementById('eventServerError').innerText += 'Выберите место на карте' + '\n';
215+
isErrror = true;
216+
throw new Error('Выберите место на карте');
217+
};
218+
169219
// Send request to backend
170220
const userData = {
171221
title: title,
@@ -205,9 +255,32 @@ export async function handleCreateEventSubmit(event, pageToCome) {
205255
navigate(pageToCome);
206256

207257
} catch (error) {
208-
// Display error message if registration fails
209-
document.getElementById('eventServerError').innerText = error;
210-
}
258+
console.log(error);
259+
}
260+
}
261+
262+
// Новая функция для выделения пустых полей
263+
function highlightEmptyFields() {
264+
const fields = [
265+
'eventNameEntry',
266+
'eventDescriptionEntry',
267+
'eventTagEntry',
268+
'eventBeginEntry',
269+
'eventEndEntry',
270+
'categoriesInput'
271+
];
272+
let emptyFields = false;
273+
274+
fields.forEach(fieldId => {
275+
const field = document.getElementById(fieldId);
276+
if (field && !field.value) {
277+
field.style.borderColor = 'red';
278+
emptyFields = true;
279+
} else if (field) {
280+
field.style.borderColor = '';
281+
}
282+
});
283+
return emptyFields;
211284
}
212285

213286
/**

0 commit comments

Comments
 (0)