@@ -11,6 +11,9 @@ const app = {
1111 progressPercent : document . getElementById ( 'progress-percent' ) ,
1212 progressValue : document . getElementById ( 'progress-value' ) ,
1313 } ,
14+ 'habbit-days' : {
15+ list : document . getElementById ( 'habbit-days-list' ) ,
16+ } ,
1417} ;
1518
1619// ** utility **
@@ -29,10 +32,6 @@ function saveData() {
2932
3033// ** render **
3134function rerenderMenu ( activeHabbit ) {
32- if ( ! activeHabbit ) {
33- return ;
34- }
35-
3635 for ( const habbit of habbits ) {
3736 const existed = document . querySelector ( `[menu-habbit-id="${ habbit . id } "]` ) ; // определение/флаг.. есть уже элемент (создавался) или нет
3837
@@ -70,10 +69,6 @@ function rerenderMenu(activeHabbit) {
7069}
7170
7271function rerenderHeaderContentEl ( activeHabbit ) {
73- if ( ! activeHabbit ) {
74- return ;
75- }
76-
7772 app . header . title . textContent = activeHabbit . title ; // добавление/обновление заголовка
7873
7974 // подсчёт прогресса/выполнения (согласно "уже" отмеченных дней и "ранее" поставленной цели/дней)
@@ -89,11 +84,65 @@ function rerenderHeaderContentEl(activeHabbit) {
8984 ) ;
9085}
9186
87+ function rerenderHabbitDaysContentEl ( activeHabbit ) {
88+ app [ 'habbit-days' ] . list . innerHTML = '' ; // предварительная очистка списка (всё будет создаваться заново)
89+
90+ const docFragment = document . createDocumentFragment ( ) ; // создание промежуточного/специального контейнера (сразу в него.. потом уже в document)
91+
92+ // создание/отрисовка уже существующих дней (согласно массива days)
93+ for ( let i = 0 ; i < activeHabbit . days . length ; i ++ ) {
94+ const habbitDaysItem = document . createElement ( 'li' ) ;
95+ habbitDaysItem . classList . add ( 'habbit-days__item' ) ;
96+
97+ habbitDaysItem . innerHTML = `<div class="habbit-days__label">День ${
98+ i + 1
99+ } </div>
100+ <div class="habbit-days__comment-wrap">
101+ <div class="habbit-days__comment">${ activeHabbit . days [ i ] . comment } </div>
102+ <button class="habbit-days__delete-btn" type="button" aria-label="Удалить день" title="Удалить день">
103+ <img class="habbit-days__delete-icon" src="./images/trash-icon.svg" width="24" height="24"
104+ alt="Иконка: Мусорное ведро">
105+ </button>
106+ </div>` ;
107+
108+ docFragment . append ( habbitDaysItem ) ; // сразу добавление в "docFragment"
109+ }
110+
111+ // "отдельное" создание/отрисовка крайнего дня с комментарием (пустым)
112+ const habbitDaysCommentItem = document . createElement ( 'li' ) ;
113+ habbitDaysCommentItem . classList . add (
114+ 'habbit-days__item' ,
115+ 'habbit-days__item-comment'
116+ ) ;
117+
118+ habbitDaysCommentItem . innerHTML = `<div class="habbit-days__label">День ${
119+ activeHabbit . days . length + 1
120+ } </div>
121+ <form class="habbit-days__form" id="comment-form" onsubmit="addCommentDay(event)">
122+ <input class="habbit-days__form-input" id="form-input" type="text" placeholder="Комментарий">
123+ <button class="habbit-days__form-btn" type="submit">Готово</button>
124+ </form>` ;
125+
126+ docFragment . append ( habbitDaysCommentItem ) ;
127+ app [ 'habbit-days' ] . list . append ( docFragment ) ; // и всё за раз на страницу
128+ }
129+
92130// поиск/определение "активной" привычки.. запуск отрисовок элементов/переключение активностей
93131function rerender ( activeHabbitId ) {
94132 const activeHabbit = habbits . find ( ( habbit ) => habbit . id === activeHabbitId ) ;
133+
134+ if ( ! activeHabbit ) {
135+ return ;
136+ }
137+
95138 rerenderMenu ( activeHabbit ) ;
96139 rerenderHeaderContentEl ( activeHabbit ) ;
140+ rerenderHabbitDaysContentEl ( activeHabbit ) ;
141+ }
142+
143+ // ** business **
144+ function addCommentDay ( event ) {
145+ event . preventDefault ( ) ;
97146}
98147
99148// init
0 commit comments