11'use strict' ;
22
33let habbits = [ ] ;
4+ let globalActiveHabbitId ;
45const HABBITS_KEY = 'HABBITS' ;
56
67// app
@@ -115,6 +116,7 @@ function rerenderHabbitDaysContentEl(activeHabbit) {
115116 'habbit-days__item-comment'
116117 ) ;
117118
119+ // ..здесь добавление onsubmit="" логики для формы, и name для инпута (важный момент)
118120 habbitDaysCommentItem . innerHTML = `<div class="habbit-days__label">День ${
119121 activeHabbit . days . length + 1
120122 } </div>
@@ -125,10 +127,19 @@ function rerenderHabbitDaysContentEl(activeHabbit) {
125127
126128 docFragment . append ( habbitDaysCommentItem ) ;
127129 app [ 'habbit-days' ] . list . append ( docFragment ) ; // и всё за раз на страницу/в DOM-дерево
130+
131+ // организация прослушки инпута/комментария для корректировки класса ошибки/обводки
132+ const commentInput = document . getElementById ( 'comment-input' ) ;
133+ commentInput . addEventListener ( 'input' , ( ) => {
134+ if ( commentInput . classList . contains ( 'comment-error' ) ) {
135+ commentInput . classList . remove ( 'comment-error' ) ;
136+ }
137+ } ) ;
128138}
129139
130140// поиск/определение "активной" привычки.. запуск отрисовок элементов/переключение активностей
131141function rerender ( activeHabbitId ) {
142+ globalActiveHabbitId = activeHabbitId ; // глобальная фиксация ID (т.е. какая привычка в данный момент активна)
132143 const activeHabbit = habbits . find ( ( habbit ) => habbit . id === activeHabbitId ) ;
133144
134145 if ( ! activeHabbit ) {
@@ -142,12 +153,31 @@ function rerender(activeHabbitId) {
142153
143154// ** business **
144155function addCommentDay ( event ) {
145- event . preventDefault ( ) ; // отмена default отправки/ перезагрузки страницы
156+ event . preventDefault ( ) ; // отмена default отправки формы, перезагрузки страницы
146157
147- const formData = new FormData ( event . target ) ; // создание объекта данных/возможностей согласно искомой формы (полученной через onsubmit/event.target)
148- const comment = formData . get ( 'comment-day' ) ; // получение значения/комментария из инпута согласно его имени/name
158+ const targetForm = event . target ;
159+ const commentInput = targetForm [ 'comment-day' ] ; // фиксация инпута
160+ const formData = new FormData ( targetForm ) ; // создание объекта данных согласно искомой формы (получаемой через onsubmit/event.target логику)
161+ const dayComment = formData . get ( 'comment-day' ) ; // получение значения/комментария из инпута согласно его имени/name
149162
150- console . log ( comment ) ; // Уже лучше!
163+ if ( ! dayComment ) {
164+ commentInput . classList . add ( 'comment-error' ) ;
165+ } else {
166+ commentInput . classList . remove ( 'comment-error' ) ;
167+
168+ habbits = habbits . map ( ( habbit ) => {
169+ if ( habbit . id === globalActiveHabbitId ) {
170+ return { ...habbit , days : habbit . days . concat ( { comment : dayComment } ) } ; // создание новых объектов, на основе старых (с корректировкой поля days)
171+ }
172+ return habbit ;
173+ } ) ;
174+
175+ commentInput . classList . remove ( 'comment-error' ) ; // итоговая очистка инпута от обводки/ошибки (нужное дублирование)
176+ targetForm [ 'comment-day' ] . value = '' ; // очистка поля инпута (после корректного "Готово")
177+
178+ rerender ( globalActiveHabbitId ) ; // перерисовка всего/content элемента
179+ saveData ( ) ; // обновление/сохранение в localStorage
180+ }
151181}
152182
153183// init
0 commit comments