You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

158 lines
4.2 KiB

/**
* 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()
])
}