Untitled
unknown
plain_text
a year ago
5.0 kB
4
Indexable
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Calendar with Agenda Notes</title> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 20px; display: flex; flex-direction: column; align-items: center; } .calendar { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; max-width: 600px; margin-bottom: 20px; } .day { padding: 10px; border: 1px solid #ccc; text-align: center; cursor: pointer; position: relative; } .day:hover { background-color: #f0f0f0; } .note-count { position: absolute; top: 2px; right: 2px; background-color: #ff9800; color: white; font-size: 12px; padding: 2px 6px; border-radius: 50%; } .note-details { display: none; background-color: #f9f9f9; border: 1px solid #ccc; padding: 10px; margin-top: 5px; } .agenda-form { display: flex; flex-direction: column; align-items: center; max-width: 300px; margin-bottom: 20px; } .agenda-form input, .agenda-form textarea, .agenda-form button { margin-bottom: 10px; padding: 8px; width: 100%; } </style> </head> <body> <h1>Calendar with Agenda Notes</h1> <div id="calendar" class="calendar"></div> <div class="agenda-form"> <h2 id="selected-date">Select a date</h2> <input type="text" id="note-title" placeholder="Title"> <textarea id="note-description" rows="4" placeholder="Description"></textarea> <button id="add-note">Add Note</button> </div> <script> const daysInMonth = (month, year) => new Date(year, month, 0).getDate(); const renderCalendar = (month, year) => { const calendar = document.getElementById('calendar'); calendar.innerHTML = ''; const days = daysInMonth(month, year); for (let i = 1; i <= days; i++) { const dayElement = document.createElement('div'); dayElement.className = 'day'; dayElement.innerText = i; dayElement.onclick = () => selectDate(i, month, year); calendar.appendChild(dayElement); const noteCount = getNotesForDate(`${year}-${month.toString().padStart(2, '0')}-${i.toString().padStart(2, '0')}`).length; if (noteCount > 0) { const noteCountElement = document.createElement('span'); noteCountElement.className = 'note-count'; noteCountElement.innerText = noteCount; dayElement.appendChild(noteCountElement); } } }; const selectDate = (day, month, year) => { const selectedDate = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`; document.getElementById('selected-date').innerText = `Selected date: ${selectedDate}`; const notes = getNotesForDate(selectedDate); renderNotes(notes); }; const getNotesForDate = (date) => { const notes = JSON.parse(localStorage.getItem('notes')) || []; return notes.filter(note => note.date === date); }; const renderNotes = (notes) => { const noteDetails = document.createElement('div'); noteDetails.className = 'note-details'; noteDetails.innerHTML = '<h3>Notes for the day:</h3>'; if (notes.length === 0) { noteDetails.innerHTML += '<p>No notes for this date.</p>'; } else { notes.forEach(note => { noteDetails.innerHTML += ` <p><strong>${note.title}</strong></p> <p>${note.description}</p> <hr> `; }); } const agendaForm = document.querySelector('.agenda-form'); agendaForm.appendChild(noteDetails); }; document.getElementById('add-note').onclick = () => { const title = document.getElementById('note-title').value; const description = document.getElementById('note-description').value; if (!title || !description) { alert('Please fill out both title and description.'); return; } const selectedDate = document.getElementById('selected-date').innerText.split(': ')[1]; const note = { date: selectedDate, title: title, description: description, }; addNoteToLocalStorage(note); alert('Note added successfully!'); document.getElementById('note-title').value = ''; document.getElementById('note-description').value = ''; const notes = getNotesForDate(selectedDate); renderNotes(notes); }; const addNoteToLocalStorage = (note) => { let notes = JSON.parse(localStorage.getItem('notes')) || []; notes.push(note); localStorage.setItem('notes', JSON.stringify(notes)); }; const month = new Date().getMonth() + 1; const year = new Date().getFullYear(); renderCalendar(month, year); </script> </body> </html>
Editor is loading...
Leave a Comment