let usersGrid = $("#usersGrid").kendoGrid({
noRecords: {
template: "Fant ingen brukere"
},
filterable: true,
sortable: false,
resizable: true,
scrollable: true,
messages: {
commands: {
cancel: "Avbryt endringer",
canceledit: "Avbryt",
create: "Legg til ny bruker",
destroy: "Slett",
edit: "Rediger",
save: "Lagre endringer",
select: "Velg",
update: "Oppdater"
}
},
editable: {
mode: "inline",
confirmation: "Er du sikker på at du vil slette denne brukeren?",
cancelDelete: "Avbryt",
confirmDelete: "Jeg er sikker"
},
toolbar: ["create", "search"],
dataSource: {
transport: {
read: "/api/users",
destroy: {
url: "/api/users/delete",
contentType: "application/json",
method: "delete"
},
create: {
url: "/api/users/create",
method: "post",
contentType: "application/json"
},
update: {
url: "/api/users/update",
contentType: "application/json",
method: "put"
},
parameterMap: function (data, type) {
if (data.email) {
if (!$.isEmail(data.email)) {
$.notificate("Ugyldig e-postadresse", "", "error");
return false;
}
}
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}
},
role: {
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 ? e.xhr.responseJSON.error : "Vennligst prøv igjen senere", "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: "email",
title: "E-post",
filterable: false,
template:
'#=data.email# '
},
{
field: "role",
title: "Rolle",
filterable: {
multi: true,
search: false
},
values: [
{text: "Administrator", value: 1},
{text: "Vanlig", value: 0}
]
},
{
command: ["edit", "destroy"],
title: " ",
width: "300px"
}
]
}).data("kendoGrid");
$(function () {
let minTableWidth;
let minColumnWidth = 100;
let th;
let idx;
let grid;
usersGrid.resizable.bind("start", function (e) {
th = $(e.currentTarget).data("th");
idx = th.index();
grid = th.closest(".k-grid").data("kendoGrid");
});
usersGrid.resizable.bind("resize", function (e) {
if (th.width() >= minColumnWidth) {
minTableWidth = grid.tbody.closest("table").width();
}
if (th.width() < minColumnWidth) {
// the next line is ONLY needed if Grid scrolling is enabled
grid.thead.closest("table").width(minTableWidth).children("colgroup").find("col").eq(idx).width(minColumnWidth);
grid.tbody.closest("table").width(minTableWidth).children("colgroup").find("col").eq(idx).width(minColumnWidth);
}
});
});