Loading portal/static/js/components/pieces/Agenda.mjs +8 −64 Changes for portal/static/js/components/pieces/Agenda.mjs: 8 added lines, 64 removed lines. Original line number Diff line number Diff line import { agenda } from "../../model/Agenda.mjs" import { StatusPill } from "./StatusPill.mjs" import { createTaskList } from "./TaskList.mjs" let isAgendaEditable = false let isSaving = false const TaskList = createTaskList() export const Agenda = { view(vnode) { return m( "section.agenda.fancy.box", m("section.content", [ m("h2", "Tagesordnung"), vnode.attrs.items ? m( "ol", vnode.attrs.items.map(item => m( "li", isAgendaEditable ? m( "div", item.name, item.taiga && m(StatusPill, { item, disabled: isSaving, }), ) : item.name, ), ), ) : m("span.message", vnode.attrs.message), ]), getAction(), ) return m(TaskList, { title: "Tagesordnung", model: agenda, listTag: "ol", onSaved: vnode.attrs.onSaved, }) }, } function getAction() { if (isSaving) { return m( ".action.disabled", m("i.fa-solid.fa-circle-notch.fa-spin"), "Wird gespeichert...", ) } else if (isAgendaEditable) { return m( "a.action", { onclick: async () => { isSaving = true await agenda.save() isSaving = false isAgendaEditable = false }, }, m("i.fa-solid.fa-floppy-disk"), agenda.changes.length > 0 ? "Speichern" : "Ohne Änderungen speichern", ) } else { return m( "a.action", { onclick: () => (isAgendaEditable = true) }, m("i.fa-solid.fa-pen-to-square"), "Bearbeiten", ) } } portal/static/js/components/pieces/Todo.mjs 0 → 100644 +15 −0 Changes for portal/static/js/components/pieces/Todo.mjs: 15 added lines, 0 removed lines. Original line number Diff line number Diff line import { todo } from "../../model/Todo.mjs" import { createTaskList } from "./TaskList.mjs" const TaskList = createTaskList() export const Todo = { view(vnode) { return m(TaskList, { title: "To Do", model: todo, listTag: "ul", onSaved: vnode.attrs.onSaved, }) }, } Loading
portal/static/js/components/pieces/Agenda.mjs +8 −64 Changes for portal/static/js/components/pieces/Agenda.mjs: 8 added lines, 64 removed lines. Original line number Diff line number Diff line import { agenda } from "../../model/Agenda.mjs" import { StatusPill } from "./StatusPill.mjs" import { createTaskList } from "./TaskList.mjs" let isAgendaEditable = false let isSaving = false const TaskList = createTaskList() export const Agenda = { view(vnode) { return m( "section.agenda.fancy.box", m("section.content", [ m("h2", "Tagesordnung"), vnode.attrs.items ? m( "ol", vnode.attrs.items.map(item => m( "li", isAgendaEditable ? m( "div", item.name, item.taiga && m(StatusPill, { item, disabled: isSaving, }), ) : item.name, ), ), ) : m("span.message", vnode.attrs.message), ]), getAction(), ) return m(TaskList, { title: "Tagesordnung", model: agenda, listTag: "ol", onSaved: vnode.attrs.onSaved, }) }, } function getAction() { if (isSaving) { return m( ".action.disabled", m("i.fa-solid.fa-circle-notch.fa-spin"), "Wird gespeichert...", ) } else if (isAgendaEditable) { return m( "a.action", { onclick: async () => { isSaving = true await agenda.save() isSaving = false isAgendaEditable = false }, }, m("i.fa-solid.fa-floppy-disk"), agenda.changes.length > 0 ? "Speichern" : "Ohne Änderungen speichern", ) } else { return m( "a.action", { onclick: () => (isAgendaEditable = true) }, m("i.fa-solid.fa-pen-to-square"), "Bearbeiten", ) } }
portal/static/js/components/pieces/Todo.mjs 0 → 100644 +15 −0 Changes for portal/static/js/components/pieces/Todo.mjs: 15 added lines, 0 removed lines. Original line number Diff line number Diff line import { todo } from "../../model/Todo.mjs" import { createTaskList } from "./TaskList.mjs" const TaskList = createTaskList() export const Todo = { view(vnode) { return m(TaskList, { title: "To Do", model: todo, listTag: "ul", onSaved: vnode.attrs.onSaved, }) }, }