@@ -151,21 +151,71 @@ export async function handleCreateEventEdit(event, id) {
151
151
export async function handleCreateEventSubmit ( event , pageToCome ) {
152
152
event . preventDefault ( ) ;
153
153
loadCategories ( ) ;
154
- // Get form data
154
+
155
+ // Выделение пустых полей
156
+ const emptyFields = highlightEmptyFields ( ) ;
157
+
158
+ // Get form data
155
159
const title = removeDangerous ( document . getElementById ( 'eventNameEntry' ) . value ) ;
156
160
const description = removeDangerous ( document . getElementById ( 'eventDescriptionEntry' ) . value ) ;
157
161
const tag = Array . from ( document . getElementById ( 'eventTagEntry' ) . value . split ( ' ' ) , ( tag ) => removeDangerous ( tag ) ) ;
158
162
const dateStart = removeDangerous ( document . getElementById ( 'eventBeginEntry' ) . value ) + ':00Z' ;
159
163
const dateEnd = removeDangerous ( document . getElementById ( 'eventEndEntry' ) . value ) + ':00Z' ;
160
164
let categoryId = Number ( removeDangerous ( document . getElementById ( 'categoriesInput' ) . value ) ) ;
161
- console . log ( categoryId ) ;
162
- categoryId = 1 ;
163
165
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
+ } ;
164
210
165
211
const latitude = removeDangerous ( document . getElementById ( 'latitude' ) . value ) ;
166
212
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
+
169
219
// Send request to backend
170
220
const userData = {
171
221
title : title ,
@@ -205,9 +255,32 @@ export async function handleCreateEventSubmit(event, pageToCome) {
205
255
navigate ( pageToCome ) ;
206
256
207
257
} 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 ;
211
284
}
212
285
213
286
/**
0 commit comments