Compare commits

...

3 Commits

Author SHA1 Message Date
3f039d4eef fix with remove setTimeout 2025-11-06 22:54:32 +03:00
abed02fdc2 add logic for habit done 2025-11-06 22:40:56 +03:00
6c71321076 add logic for habbit done 2025-11-06 17:53:27 +03:00
2 changed files with 40 additions and 4 deletions

41
app.js
View File

@@ -1,25 +1,58 @@
// Что нам нужно для работы кнопки Отметить выполнение?
// 1. Найти все кнопки отметить выполнение.
// 2. На каждую кнопку повесить слушатель события клик(нажатие мышью)
// 3. Внутри слушателя события выполнить логику выполнения привычки - вызвать функцию markHabitDone
// 4. Перерисовать интерфейс
const HabitTrackerApp = { const HabitTrackerApp = {
elements: { elements: {
habitGrid: null, habitGrid: null,
addHabitForm: null, addHabitForm: null,
addHabbitButton: null addHabbitButton: null,
habbitDoneButtons: [],
}, },
init: function() { init: function() {
this.loadElements(); this.loadElements();
this.render(); this.render();
this.loadDynamicElements();
this.setupEventListeners();
}, },
setupEventListeners: function() { setupEventListeners: function() {
this.elements.addHabbitButton.addEventListener('click', () => { this.elements.addHabbitButton.addEventListener('click', () => {
this.elements.addHabitForm.style.display = 'block'; //this.elements.addHabitForm.style.display = 'block';
}); });
this.elements.habbitDoneButtons.forEach(
button => {
return button.addEventListener('click', (event) => {
const cardId = event.target.closest('.habit-card').dataset.habitId;
// разобраться почему не находит привычку
HabitManager.markHabitDone(cardId);
HabitManager.saveToLocalStorage();
this.init();
});
}
);
// пройти циклом по habbitDoneButtons. На каждый элемент массива
// добавить addEventListener по клику.
// и в обработчике события вывести console.log
}, },
loadElements: function() { loadElements: function() {
this.elements.habitGrid = document.getElementById('habits-grid'); this.elements.habitGrid = document.getElementById('habits-grid');
this.elements.addHabitForm = document.getElementById('add-habit-form'); this.elements.addHabitForm = document.getElementById('add-habit-form');
this.elements.addHabbitButton = document.getElementById('add-habbit-button'); this.elements.addHabbitButton = document.getElementById('add-habbit-button');
setTimeout(() => {
this.elements.habbitDoneButtons = document.querySelectorAll('.button--primary');
}, 1000);
},
loadDynamicElements: function() {
this.elements.habbitDoneButtons = document.querySelectorAll('.button--primary');
}, },
render: function() { render: function() {
@@ -62,7 +95,9 @@ HabitTrackerApp.loadFromLocalStorage = function() {
if (HabitManager.habits.length == 0) { if (HabitManager.habits.length == 0) {
HabitManager.createHabit('Учить js', 'Писать не менее 1000000000 строк кода в день', 8); HabitManager.createHabit('Учить js', 'Писать не менее 1000000000 строк кода в день', 8);
} HabitManager.saveToLocalStorage();
}
} }
document.addEventListener('DOMContentLoaded', () => { document.addEventListener('DOMContentLoaded', () => {

View File

@@ -16,7 +16,7 @@ const HabitManager = {
HabitManager.createHabit = function (name, description, targetCount = 1) { HabitManager.createHabit = function (name, description, targetCount = 1) {
const habit = { const habit = {
id: Math.random(), id: Math.floor(Math.random() * 100000, 10000),
name: name, name: name,
description: description, description: description,
targetCount: targetCount, targetCount: targetCount,
@@ -31,6 +31,7 @@ HabitManager.createHabit = function (name, description, targetCount = 1) {
} }
HabitManager.markHabitDone = function (habitId) { HabitManager.markHabitDone = function (habitId) {
console.log(this.habits);
const habit = this.habits.find(h => h.id === habitId); const habit = this.habits.find(h => h.id === habitId);
if (!habit) { if (!habit) {