Files
Facilitor/APPL/PRS/sel_substitute_tab.js
2024-10-18 09:55:17 +00:00

188 lines
5.3 KiB
JavaScript

/*
$Revision$
$Id$
*/
function VervangerItem(prs_key, prs_name, dept_name, prs_expire, rowIndex)
{
this.prs_key = prs_key;
this.prs_name = prs_name;
this.dept_name = dept_name;
this.prs_expire = prs_expire;
this.rowIndex = rowIndex;
this.row = null;
}
function PrsRow(prs_key, prs_text, lastRow)
{
this.prs_key = prs_key;
this.prs_text = prs_text;
this.lastRow = lastRow;
this.row = null;
}
// Array of currently selected items
var selectedItems = new Array();
var nrdeleted = 0; // aantal regels die tijdens invoer van vervangers zijn verwijderd
var prsRows = new Array();
var hook_url = "";
function AddItem(pprs_key, pprs_name, pdept_name, pprs_expire)
{
receiveInfo = false;
if (!isNaN(pprs_key) && pprs_key > 0) receiveInfo = true;
if (this.dis_desc == null) dis_desc = "";
table = document.getElementById("sel_items");
if (!receiveInfo && document.getElementById("person").value <= 0)
{
FcltMgr.alert(L("lcl_shared_choose_item_first"));
return;
}
if (!receiveInfo) {
prs_key = $("#person").val();
prs_name = $("#person_show").val();
dept_name = $("#dept").val();
prs_expire = $("#person_exp").val();
}
else {
prs_key = pprs_key;
prs_name = pprs_name;
dept_name = pdept_name;
prs_expire = pprs_expire;
}
var table = document.getElementById("sel_items")
var rows = document.getElementById('sel_items').getElementsByTagName('tr')
var tablelength = rows.length;
var rowIndex = rows[rows.length-1].rowIndex; // Pak de laatste rowIndex van de tabel
var next_rowIndex = ++rowIndex;
// Om het niet te gek te maken beperken we vooralsnog maar eens tot vijf FE vervangers max
if (tablelength - 1 >= 5) {
FcltMgr.alert(L("lcl_prs_substitute_max5"));
return;
}
var registerOK = RegisterItem(prs_key, prs_name, dept_name, prs_expire, next_rowIndex, true);
if (registerOK)
CreateRow(prs_key, prs_name, dept_name, prs_expire, next_rowIndex, true);
}
function setInnerText(innerObject, innerValue)
{
if (typeof innerObject.innerText != 'undefined')
innerObject.innerText = innerValue
else
innerObject.textContent = innerValue;
return innerObject;
}
function CreateRow(prs_key, prs_name, dept_name, prs_expire, rowIndex, editable)
{
// insert white line
table = document.getElementById("sel_items");
// insert data rows
tr = table.insertRow((rowIndex == -1) ? (-1) : (rowIndex));
var id_key = prs_key;
selectedItems[" " + id_key].row = tr;
// Create drop button
cell = tr.insertCell(-1);
cell.className = "result";
cell.align = "center";
cell.innerHTML = "<span OnClick=CancelOrder('"
+ id_key + "') style=cursor:pointer>" + I("fa-trash-alt") + "</span>";
// Create vervangers prs_name field
cell = tr.insertCell(-1);
cell.className = "result nowrap";
// innerHTML opent een htmlparser die overbodige spaties en line breaks verwijderd in IE, daarom met innerText oplossen
// Input velden moeten wel met innerHTML of outerHTML anders wordt het text
cell = setInnerText(cell, prs_name);
cell.title = prs_name;
cell.align = 'left';
// Create vervangers dept_name field
cell = tr.insertCell(-1);
cell.className = "result nowrap";
cell = setInnerText(cell, dept_name);
cell.title = dept_name;
cell.align = 'left';
// Create vervangers prs_expire field
cell = tr.insertCell(-1);
cell.className = "result nowrap";
cell = setInnerText(cell, (prs_expire ? toDateString(new Date(parseInt(prs_expire, 10))) : "") );
cell.align = 'left';
FcltMgr.resized();
}
function RegisterItem(prs_key, prs_name, dept_name, prs_expire, rowIndex, editable)
{
// Indien al in de lijst toegevoegd, dan melding geven en return
if (selectedItems[" " + prs_key] != null) {
FcltMgr.alert(L("lcl_prs_substitute_inlist"));
return false;
}
selectedItems[" " + prs_key] = new VervangerItem(prs_key, prs_name, dept_name, prs_expire, rowIndex);
return true;
}
function CancelOrder(id_key)
{
FcltMgr.confirm(L("lcl_prs_cancelSubstitute"), function() {
if (selectedItems[" " + id_key] != null)
{
tr = selectedItems[" " + id_key].row;
rowIndex = tr.rowIndex;
document.getElementById("sel_items").deleteRow(rowIndex);
FcltMgr.resized();
nrdeleted++;
selectedItems[" " + id_key] = null;
}
});
}
function SaveSubstitutes()
{
// Form substitutes_string of prs_keys
var substitutes_string = "";
var substitutes_date = "";
for (i in selectedItems)
{
if (selectedItems[i] != null)
{
prs_key = selectedItems[i].prs_key;
prs_exp = selectedItems[i].prs_expire;
if (!isNaN(prs_key) && prs_key > 0)
{
substitutes_string += prs_key + ",";
substitutes_date += (prs_exp ? prs_exp : "-1") + ","; // -1 voor geen datum!
}
}
}
substitutes_string = substitutes_string.substring(0, substitutes_string.length - 1);
substitutes_date = substitutes_date.substring(0, substitutes_date.length - 1);
document.forms.u2.substitutes_string.value = substitutes_string;
document.forms.u2.substitutes_date.value = substitutes_date;
window.document.u2.submit();
return true;
}