model/view/diary/notes.event.js

import { EventListener } from "domodel"

/**
 * @global
 */
class NotesEventListener extends EventListener {

	/**
	 * @event NotesEventListener#add
	 * @property {object} data
	 * @property {object} data.form
	 * @property {string} data.form.content
	 */
	add(data) {
		const { diary } = this.properties
		const { calendar, notes } = diary
		const { form } = data
		const note = notes.add(form.content, calendar.day.date)
		diary.calendar.day.emit("updateIndicator", true)
		this.render()
	}

	/**
	 * @event NotesEventListener#update
	 * @property {object} data
	 * @property {Note}   date.note
	 * @property {object} data.form
	 * @property {string} data.form.content
	 */
	update(data) {
		const { diary } = this.properties
		const { notes } = diary
		const { note, form } = data
		notes.update(note, form)
		note.emit("update")
		this.render()
	}

	/**
	 * @event NotesEventListener#remove
	 * @property {Note} note
	 */
	remove(note) {
		const { diary } = this.properties
		const { notes } = diary
		notes.remove(note)
		note.emit("remove")
		diary.calendar.day.emit("updateIndicator", diary.notes.length >= 1)
		this.render()
	}

	/**
	 * @event NotesEventListener#clear
	 */
	clear() {
		const { diary } = this.properties
		const { notes } = diary
		notes.notesList.forEach(note => diary.notes.emit("remove", note))
	}

}

export default NotesEventListener