/** * Der Bereich in dem der aktuell geladene/bearbeitete Eintrag angezeigt wird. * @returns {Row} */ function valueRow() { return builder.row() .addStyleClass("current-entry-area") .modifier( new Modifier() .fillMaxWidth() .background(Colors.gold_1) .clip(Shapes.RoundedCorner.all(6)) .padding(6) ) } /** * Bewegt das übergebene Element (entryElement) in das Zielelement (to) * @param {HTMLElement} entryElement * @param {HTMLElement} to das Elternelement in welches das Eintragselement verschoben werden soll * @returns {HTMLElement} das Element welches verschoben wurde (werden sollten) =entryElement */ function moveEntry(entryElement, to) { entryElement.remove(); [...entryElement.querySelectorAll('.material-icons')] .forEach(e => { e.setAttribute("hidden", "hidden"); e.setAttribute("visibility", "hidden"); e.style.visibility = "hidden"; }); to.insertAdjacentElement( "afterbegin", entryElement ); return entryElement; } /** * * @param {boolean} [reverse=false] Bestimmt die Richtung, * in die der verschiebe Prozess durchgeführt werden soll. * @returns {HTMLElement} welches verschoben wurde */ function moveCurrent(reverse = false) { let currentArea = document.querySelector('div.current-entry-area'); if (currentArea.children.length === 0) { return } let current = currentArea.children[0]; return moveEntry( current, document.querySelector('div.plist' + (reverse ? '-upcoming' : '-done' )) ); } /** * Läd den nächsten Eintrag von der "noch offen" Liste in den Aktionsbereich * @returns {void} */ function loadNext() { moveCurrent(); let upcomingArea = document.querySelector('div.plist-upcoming'); if (upcomingArea.children.length === 0) { return } let upcoming = upcomingArea.children[0]; upcoming = moveEntry( upcoming, document.querySelector('div.current-entry-area') ); [...upcoming.querySelectorAll('.material-icons')] .forEach(e => { e.removeAttribute("hidden"); e.removeAttribute("visibility"); e.style.visibility = ""; }); } /** * Lädt den Eintrag aus "erledigt" welcher als letztes hinzugefügt worden ist. * @returns {void} */ function loadPrev() { moveCurrent(true); let prevArea = document.querySelector('div.plist-done'); if (prevArea.children.length === 0) { return } let prev = prevArea.children[0]; prev = moveEntry( prev, document.querySelector('div.current-entry-area') ); [...prev.querySelectorAll('.material-icons')] .forEach(e => { e.removeAttribute("hidden"); e.removeAttribute("visibility"); e.style.visibility = ""; }); } /** * * @param {Modifier} modifier * @returns {Column} */ function aktionsKonsole(modifier = new Modifier()) { return builder.column() .modifier(componentModifiers.majorArea) .modifier( new Modifier() .fillMaxWidth() .background(colorModifiers.active.secondary) .padding(32) ) .modifier(modifier) .addStyleClass("area") .addStyleClass("area-aktiv") .childContext([ builder.div() .modifier( new Modifier() .fillMaxSize() .margin().bottom(6) ) .alignment(Alignment.SPACE_EVENLY) .arrangement(Arrangement.SPACE_EVENLY) .childContext([ builder.button().text("NEXT") .addEventListener( "click", loadNext ) , builder.button().text("PREV") .addEventListener( "click", loadPrev ) ]) , valueRow() ]) }