Files
matrix/cygnus-onprem-app/build/WebContent/js/edp/punching/edit-cases.js

113 lines
2.9 KiB
JavaScript

(function () {
"use strict";
var currentRow = 0;
var lastRow = 0;
function rows() {
return Array.prototype.slice.call(document.querySelectorAll("#casetable tbody tr"));
}
function rowNumber(row) {
return Number((row.id || "").replace("row", "")) || 0;
}
function setActiveRow(row) {
if (!row) {
return;
}
rows().forEach(function (item) {
item.classList.remove("rowhover");
});
row.classList.add("rowhover");
currentRow = rowNumber(row);
lastRow = currentRow;
row.focus();
}
function hiddenValue(row, suffix) {
var input = document.getElementById(row.id + suffix);
return input ? input.value : "";
}
function submitForm(action, target, formId) {
if (typeof SubmitForm === "function") {
SubmitForm(action, target, formId);
return;
}
var form = document.getElementById(formId);
if (!form) {
return;
}
form.action = action;
form.target = target;
form.submit();
}
function openRow(row) {
if (!row) {
return;
}
var uuid = hiddenValue(row, "uuid");
var portfolioId = hiddenValue(row, "portid");
if (!uuid || !portfolioId) {
return;
}
document.getElementById("uuid").value = uuid;
document.getElementById("portlist").value = portfolioId;
submitForm("caseedit", "_parent", "caseGrid");
}
function moveSelection(direction) {
var allRows = rows();
if (allRows.length === 0) {
return;
}
var nextIndex = currentRow > 0 ? currentRow - 1 + direction : 0;
if (nextIndex < 0) {
nextIndex = allRows.length - 1;
}
if (nextIndex >= allRows.length) {
nextIndex = 0;
}
setActiveRow(allRows[nextIndex]);
}
function handleKeydown(event) {
var row = event.target && event.target.closest ? event.target.closest("#casetable tbody tr") : null;
if (event.key === "Enter" && row) {
event.preventDefault();
openRow(row);
return;
}
if (event.key === "ArrowDown") {
event.preventDefault();
moveSelection(1);
return;
}
if (event.key === "ArrowUp") {
event.preventDefault();
moveSelection(-1);
}
}
function init() {
rows().forEach(function (row) {
row.addEventListener("mouseenter", function () {
setActiveRow(row);
});
row.addEventListener("click", function () {
openRow(row);
});
});
document.addEventListener("keydown", handleKeydown, false);
}
window.CygnusEditCases = {
init: init,
openRow: openRow
};
window.InitPage = init;
}());