$(document).ready(function () {
highlightNewEntry();
$("input[type=checkbox]").change(checkItem);
$("#remove").click(deleteCheckeditems);
$("#nameField").focus();
$("#anzahl").on("focus", function () { $(this).select(); });
$("#nameField").on("focus", function () { $(this).select(); });
$(".edit-listitem").click(editItem);
$(".del-listitem").click(deleteSingleItem);
});
function highlightNewEntry(){
var cookies = document.cookie;
var cookieRegExp = new RegExp(/[;]{0,1}\s{0,1}newItem=(\d+)/g);
var match = cookieRegExp.exec(cookies);
if(match!=null){
var newID = match[1];
var checkBox = $(`[data-id='${newID}']`);
var newRow = checkBox.parent().parent();
newRow.removeClass($(checkBox).data("color"));
newRow.addClass("alert-primary");
setTimeout(function () {
newRow.removeClass("alert-primary");
newRow.addClass($(checkBox).data("color"));
}, 1000);
document.cookie = "newItem=-1"
}
}
function deleteCheckeditems() {
$.post({
url: "api/list/clear",
success: function () {
location.reload();
}
});
}
function deleteSingleItem() {
var id = $(this).parent().parent().parent().find("input[type=checkbox]").data("id");
$.post({
url: "api/list/del",
data: {
id: id
},
success: function (data) {
location.reload();
}
});
}
function editItem(){
var row = $(this).parent().parent().parent();
var amount = row.find(".list-row-amount").data("amount");
var unit = row.find(".list-row-amount").data("unit");
var name = row.find(".list-row-name").html();
row.find(".list-row-amount").html("");
row.find(".list-row-amount").addClass("d-flex", "flex-row");
var options = $("[data-id='new']").find("select").html();
row.find(".list-row-amount").append(
''
).append(
''
);
row.find(".list-row-amount").find("option:selected").attr("selected", false);
row.find(".list-row-amount").find("option:contains('"+unit+"')").attr("selected", true);
row.find(".list-row-name").html("");
row.find(".list-row-name").addClass("w-100");
row.find(".list-row-name").append('');
row.find(".dropdown").html("");
row.find(".dropdown").addClass("d-flex", "flex-row");
var checkButton = $("");
var removeButton = $("");
row.find(".dropdown").append(checkButton);
row.find(".dropdown").append(removeButton);
checkButton.click(changeListItem);
removeButton.click(function(){window.location = window.location;});
}
function changeListItem(){
var id = $(this).parent().parent().find("input[type=checkbox]").data("id");
var amount = $(this).parent().parent().find("input[type=number]").val();
var unit = $(this).parent().parent().find("select option:selected").val();
var name = $(this).parent().parent().find("input[type=text]").val();
$.post({
url: "api/list/change",
data: {
id: id,
anzahl: amount,
einheit: unit,
name: name
},
success: function(data){
window.location = window.location;
}
});
}
function checkItem() {
var dataId = $(this).data("id");
var dataIdSelector = (`[data-id='${dataId}']`);
$.post({
url: "api/list/check",
data: {
id: dataId,
status: $(this).prop("checked")
},
success: function () {
var color = $(dataIdSelector).data("color");
$(dataIdSelector).parent().parent().removeClass("bg-danger");
$(dataIdSelector).parent().parent().find(".dropdown-menu-button").removeClass("btn-danger");
if($(dataIdSelector).prop("checked")){
$(dataIdSelector).parent().parent().removeClass(color);
$(dataIdSelector).parent().parent().addClass("bg-success");
}
else{
$(dataIdSelector).parent().parent().removeClass("bg-success");
$(dataIdSelector).parent().parent().addClass(color);
}
},
error: function () {
$(dataIdSelector).parent().parent().addClass("bg-danger");
$(dataIdSelector).parent().parent().data("toggle", "popover");
$(dataIdSelector).parent().parent().data("container", "body");
$(dataIdSelector).parent().parent().data("placement", "top");
$(dataIdSelector).parent().parent().data("html", true);
$(dataIdSelector).parent().parent().data("trigger", "focus");
$(dataIdSelector).parent().parent().data("content", "Dieses Element konnte nicht gespeichert werden.
Bitte die Seite Aktualisieren");
$(dataIdSelector).parent().parent().attr("title", "Fehler!");
$(dataIdSelector).parent().parent().popover('show');
}
});
}