const cabinGrid = $("#cabinGrid");
cabinGrid.kendoGrid({
noRecords: {
template: "Fant ingen hytter"
},
filterable: false,
sortable: false,
resizable: true,
scrollable: true,
messages: {
commands: {
cancel: "Avbryt endringer",
canceledit: "Avbryt",
create: "Legg til ny hytte",
destroy: "Slett",
edit: "Rediger",
save: "Lagre endringer",
select: "Velg",
update: "Oppdater"
}
},
editable: false,
toolbar: "",
dataSource: {
transport: {
read: "/api/cabins",
parameterMap: function (data, type) {
if (data.email) {
if (!$.isEmail(data.email)) {
$.notificate("Ugyldig e-postadresse", "", "error", false);
throw new Error("Invalid email not going through with the request");
}
}
switch (type) {
case "create":
return JSON.stringify({
name: data.name,
email: data.email,
role: data.role
});
case "read":
break;
default:
return JSON.stringify({
name: data.name,
role: data.role,
email: data.email,
id: data.id
});
}
}
},
schema: {
model: {
id: "id",
fields: {
id: {editable: false},
name: {
editable: true,
validation: {required: true}
},
categoryId: {
editable: true,
validation: {required: true},
},
email: {
editable: true,
validation: {required: true}
}
}
}
},
error: function (e) {
if (e.xhr.responseJSON.error) {
$.notificate("En feil oppstod", e.xhr.responseJSON.error, "error");
}
},
requestEnd: function (e) {
switch (e.type) {
case "create":
$.notificate(
"Bruker opprettet",
"En velkomstmail er sendt til " + e.response.email,
"success"
);
usersGrid.dataSource.read();
break;
case "update":
$.notificate(
"Bruker oppdatert",
"Brukeren er oppdatert",
"success"
);
usersGrid.dataSource.read();
break;
case "destroy":
$.notificate(
"Bruker slettet",
"Brukeren " + e.response + " er slettet.",
"success"
);
usersGrid.dataSource.read();
break;
}
},
},
columns: [
{
field: "name",
title: "Navn",
filterable: {
multi: true,
search: true
}
},
{
field: "categoryName",
title: "Hyttefelt"
},
{
command:
{
template: $("#cabinRowCommandButtons").html()
},
title: " ",
}
]
}).data("kendoGrid");
const cabinModal = $("#cabinModal");
$("#newCabinButton").on("click", function () {
cabinModal.html($("#newCabinInfoModalTemplate").html()).modal("show");
$(".ui.selection.dropdown").dropdown();
let form = $("#newCabinForm");
$("#submitNewCabinForm").on("click", function (e) {
let values = form.form("get values");
if (!values) return;
if (!values.name) {
$.notificate("Ugyldig", "Hytten trenger ett navn", "error");
return;
}
if (!values.categoryId) {
$.notificate("Ugyldig", "Hytten trenger ett hyttefelt", "error");
return;
}
values.capacity = parseInt(values.capacity);
$.ajax({
data: JSON.stringify(values),
url: "/api/cabins/create",
contentType: "application/json",
processData: false,
method: "post",
success: function (e) {
cabinModal.modal("hide").empty();
cabinGrid.data("kendoGrid").dataSource.read();
console.log(e);
$.notificate("Opprettet ny hytte", "Hytten " + e + " er opprettet", "success");
},
error: function (e) {
$.notificate("En feil oppstod", "Vennligst prøv igjen senere", "error");
}
})
});
});
function deleteCabin(e) {
let dataItem = cabinGrid.data("kendoGrid").dataItem($(e).closest("tr"));
if (confirm("Er du sikker på at du vil slette: " + dataItem.name + "?")) {
$.ajax({
url: "/api/cabins/delete",
method: "delete",
data: JSON.stringify(dataItem),
contentType: "application/json",
processData: false,
success: function (e) {
cabinGrid.data("kendoGrid").dataSource.read();
$.notificate("Hytte slettet", dataItem.name + " er slettet", "error");
}
})
}
}
function openEditCabinModal(e) {
let dataItem = cabinGrid.data("kendoGrid").dataItem($(e).closest("tr"));
let template = kendo.template($("#editCabinInfoModalTemplate").html());
let generatedHtml = template(dataItem);
cabinModal.html(generatedHtml).modal("show");
$(".ui.selection.dropdown").dropdown("set selected", dataItem.categoryId);
$("#submitEditCabinForm").on("click", function (e) {
let form = $("#editCabinForm");
let values = form.form("get values");
if (!values) return;
if (!values.name) return;
values.capacity = parseInt(values.capacity);
$.ajax({
url: "/api/cabins/update",
method: "put",
data: JSON.stringify(values),
contentType: "application/json",
processData: false,
success: function (e) {
cabinModal.modal("hide").empty();
cabinGrid.data("kendoGrid").dataSource.read();
$.notificate("Oppdatert", dataItem.name + " er oppdatert", "success");
},
error: function (e) {
$.notificate("En feil oppstod", e.error ? e.error : "Vennligst prøv igjen senere", "error");
}
})
})
}