Files
Facilitor/APPL/BEZ/bez_edit_afspraak.js
Alex Tiehuis 248e9a125b YASK#67068: Extra velden voor Email en kenteken komen niet automatisch in beeld
svn path=/Website/branches/v2020.2/; revision=51588
2021-05-25 10:20:31 +00:00

526 lines
20 KiB
JavaScript

/*
$Revision$
$Id$
*/
function bez_cancel()
{
FcltMgr.closeDetail(window, {cancel: true});
}
function onChangeLocatie()
{
// Met contactonly zijn de invoervelden geforceerde contactpersoon-suggest velden.
// Als de contactpersonen afhankelijk zijn van de locatie moeten de velden leeg worden gemaakt als de locatie is gewijzigd.
if (contactonly && bez_sel_contactpersoon == 2)
{ // Contactpersoon suggest velden leegmaken.
var next_vis = $("#next_vis").val();
for (var i = 1; i < next_vis; i++)
{ // Maak de contactpersoon en bedrijf suggestboxen leeg
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry)
window["sgContactPerson" + i].setValue(-1, "", false, false, null, true);
window["sgBedrijf" + i].setValue(-1, "", false, false, null, true);
}
// Als de locatie leeg is moeten de velden ook readonly gemaakt worden.
// Invullen heeft dan geen zin omdat de velden toch weer leeg gemaakt worden als de locatie wordt ingvuld.
if ($("#locatiekey").val() == -1)
{
$("input[name^='bez']").prop("disabled", true);
$("input[name^='bed']").prop("disabled", true);
}
else
{
$("input[name^='bez']").prop("disabled", false);
$("input[name^='bed']").prop("disabled", false);
}
}
if ($("#locatiekey").val() == -1)
{ // Als suggest velden voor parkeertereinen dan deze leegmaken en checkboxvinkjes ook
var next_vis = $("#next_vis").val();
for (var i = 1; i < next_vis; i++)
{ // Maak de suggestboxen leeg
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry)
psObject[i].sgBld.setValue(-1, "", false, false, null, true);
// Maak de checkboxen leeg
$("#prk" + i).prop("checked", false);
}
}
onChangeGebouw();
get_freeprk_info();
}
function process_gebouw_info(data, textStatus)
{
if (textStatus == "success")
{
// save show/require info for the selected building
$("#prktype").attr({toon_telefoon: data.alg_gebouw_toon_telefoon, toon_email: data.alg_gebouw_toon_email, toon_kenteken: data.alg_gebouw_toon_kenteken});
$("#prktype").trigger("changed");
get_freeprk_info();
// Kijk of de bezoekers begin en eindtijd aangepast dient te worden.
var fromempty = timeBeginInitEmpty && $("#time_from_date_from").val() == ""? 1 : 0;
var toempty = timeEindInitEmpty && $("#time_from_date_to").val() == ""? 1 : 0;
if (data && (data.gebouw_beginuur >= 0 || data.gebouw_einduur >= 0))
{ // Begin/eindtijd aanpassen
var startTime = padout(Math.floor(data.gebouw_beginuur)) + ":" + padout((data.gebouw_beginuur - Math.floor(data.gebouw_beginuur)) * 60); // Formaat is "08:00".
var endTime = padout(Math.floor(data.gebouw_einduur)) + ":" + padout((data.gebouw_einduur - Math.floor(data.gebouw_einduur)) * 60); // Formaat is "18:00".
if ($("#time_from_date_from").val() < startTime)
fromempty = 1;
if ($("#time_from_date_to").val() > endTime)
toempty = 1;
}
else
{
var startTime = padout(Math.floor(vis_t1)) + ":" + padout((vis_t1 - Math.floor(vis_t1)) * 60);
var endTime = padout(Math.floor(vis_t2)) + ":" + padout((vis_t2 - Math.floor(vis_t2)) * 60);
}
// Nu de beide calenders (date_from en date_to) vervangen.
function loadDatefrom() {
if ($("#date_from").length) // only if present ( = editable )
{
$("#show_date_from").closest("td").load("../Shared/loadCalendar.asp"
+ "?cal_id=date_from"
+ "&datum=" + $("#date_from").val()
+ "&maxPast=" + maxPast
+ "&maxFuture=" + maxFuture
+ "&onChange=get_freeprk_info();"
+ "&calendars=" + (afspr_key < 0? 2 : 1)
+ "&autoopen=0"
+ "&initTimeEmpty=" + fromempty
+ "&initEmpty=" + ($("#date_from").val() == "" ? 1 : 0)
+ "&timeField=1"
+ "&timeStep=" + (vis_h * 60)
+ "&startTime=" + startTime
+ "&endTime=" + endTime
+ "&required=1"
+ "&volgnr=1",
loadDateto
);
}
}
function loadDateto() {
if ($("#date_to").length) // only if present ( = editable )
{
$("#show_date_to").closest("td").load("../Shared/loadCalendar.asp"
+ "?cal_id=date_to"
+ "&datum=" + $("#date_to").val()
+ "&maxFuture=" + maxFuture
+ "&onChange=get_freeprk_info();"
+ "&initTimeEmpty=" + toempty
+ "&timeField=1"
+ "&timeStep=" + (vis_h * 60)
+ "&startTime=" + startTime
+ "&endTime=" + endTime
+ "&required=1"
+ "&volgnr=2"
+ "&hidden=" + (bez_multiday != 1? 1 : 0)
);
}
}
if ($("#date_from").length) // only if present ( = editable )
{
loadDatefrom(); // Includes load of date_to
}
else
{
loadDateto();
}
}
}
function onChangeGebouw()
{
if ($("#gebouwkey").val() > 0)
{ // Een nieuw gebouw is geselecteerd.
$.getJSON("../alg/get_alg_info_ajax.asp",
{ req_info: "alg_gebouw",
alg_gebouw_key: $("#gebouwkey").val() },
process_gebouw_info);
}
}
function changeName(p_key, txt)
{ // Change contact/aanvrager name
if ((vis_afspraak_host_uses_keys & 1) == 1)
{ // fill host listbox with only the aanvrager
sgPersonH.setValue(p_key, txt);
}
onChangeHost(p_key);
}
// Process de data die van de Ajax terugkomt.
function process_host_info(data)
{
if ((vis_afspraak_host_uses_keys & 1) != 1)
{
var perslid_naam = data.prs_perslid_achternaam + (data.prs_perslid_voorletters ? ", " + data.prs_perslid_voorletters : "") +" ("+ data.prs_perslid_voornaam +")";
$("#personH").val(perslid_naam);
var vullen = (vis_afspraak_tel_required & 2) == 0;
$("#phone").val(vullen ? data.prs_perslid_telefoonnr : "");
}
if (vis_afspraak_onrgoed_uses_keys == 1)
{
if (!vis_fobo_default_locatie_empty)
plaatsselector.preferWerkplekken(data.werkplekken); // Selecteert automatisch
}
else
{
if (data.afleverruimte)
{
// setValue(key, txt, doonChange, checkExist, extraParam, lastTry)
sgLoc.setValue(data.werkplekken[0].alg_locatie_key, data.werkplekken[0].alg_locatie_string, false, true, "", false);
$("#room").val(data.afleverruimte);
}
}
};
function onChangeHost(perslid_key)
{
if (perslid_key > 0)
{
$.getJSON("../prs/get_prs_info_ajax.asp?req_info=prs_perslid&prs_werkplek=1&prs_aflever=1&bezoekbaar=1&prs_perslid_key=" + perslid_key, process_host_info);
}
}
function bez_submit_callback(json)
{
if (json.success)
{
FcltMgr.closeDetail(window, json);
}
else
iface.button.enable("btn_bez_submit");
}
function bez_submit()
{
if (!validateForm("u2", {checklength: true}))
return false;
var dt = new Date(parseInt($("#date_from").val(), 10));
var dt2 = new Date(parseInt($("#date_to").val(), 10));
if (dt > dt2)
{
FcltMgr.alert(L("lcl_vis_bad_period"));
return false
}
else if (dt.getTime() == dt2.getTime()) // Datums vergelijken werkt niet. Aantal milliseconden since middennacht 01/01/1970 vergelijken.
{
FcltMgr.alert(L("lcl_vis_same_time"));
return false;
}
var diff = dt2 - dt;
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var find = 0;
var next_vis= $("#next_vis").val();
for (var i = 1; i < next_vis; i++)
{
if (document.forms.u2["bez" + i])
if (document.forms.u2["bez" + i].value != "")
find++;
}
if (find == 0)
{
FcltMgr.alert(L("lcl_bez_geef_bezoeker"));
return false;
}
var isHoliday = cal_isVrijeDag(dt);
var weekday = dt.getDay();
var wkday = ((weekday != 0) && (weekday != 6));
var sunday = !wkday;
// Een enkele dag in het weekend mag een bezoeker komen (weekendonce)
// Maar niet een reeks die begint in het weekend
if ((sunday || isHoliday) && days > 0)
{
FcltMgr.alert(L("lcl_holiday_not_ok_bes")); // Repeteren mag niet op een zaterdag, zondag of vrije dag
return false;
}
$.post($("form[name=u2]")[0].action, $("[name=u2]").serialize(), FcltCallbackAndThenAlways(bez_submit_callback), "json");
return true; // disable button
}
function import_visit()
{
var url = "../bez/bez_import_bezoeker.asp?urole=" + urole;
if ($("#anydone").length)
url += "&novervang=1";
FcltMgr.openModalDetail(url,
L("lcl_bez_import_lijst"),
{ callback: ImportBezoekerSelected });
}
function ContactpersoonBedrijfSelected(cont_key, a, params)
{
id_nr = params.suggestid.substr(3);
var s = "load_kenmerk.asp?urole=" + urole
+ "&beznum=" + id_nr
+ "&cont_key=" + cont_key
+ "&requiredbyfield=bez" + id_nr
+ "&notr=1&flexend=" + parseInt(bez_max_flex_on_line, 10);
$("#bezFlexListA" + id_nr).load(s, function(txt)
{
FcltMgr.resized();
});
var s = "load_kenmerk.asp?urole=" + urole
+ "&beznum=" + id_nr + "&cont_key=" + cont_key
+ "&requiredbyfield=bez" + id_nr
+ "&flexstart=" + (parseInt(bez_max_flex_on_line, 10) + 1);
$("#bezFlexListB" + id_nr).load(s, function(txt)
{
FcltMgr.resized();
});
}
function bezFlexListACallbackJs(rowNr)
{ // Vervangen van de flexkenmerken op de bezoekersregel.
// Verwijderd de laatse td's (kenmerken) op de regel.
for (var i = 0; i < bez_max_flex_on_line; i++)
{ // Aantal flexkenmerk kolommen = Totaal aantal kolommen - Aantal kolommen zonder de flex kenmerken.
nr_flex = $("#trbez" + rowNr).find("td").length - aantal_std_td;
// Verwijder de flexkenmerk kolommen
for (var j = 0; j < nr_flex; j++)
$("#trbez" + rowNr).find("td:last").remove();
}
// Nu de nieuwe flexkenmerken toevoegen.
$("#trbez" + rowNr).append($("#bezFlexListA" + rowNr).html());
$("#bezFlexListA" + rowNr).html(""); // <div> weer leegmaken anders zijn er dubbele velden.
FcltMgr.resized();
}
function processBezoeker(rowNr, data)
{
if (data.prs_perslid_telefoonnummer || data.prs_perslid_mobiel)
$("input#bezoeker_telefoon" + rowNr).val(data.prs_perslid_telefoonnummer || data.prs_perslid_mobiel);
if (data.prs_perslid_email)
$("input#bezoeker_email" + rowNr).val(data.prs_perslid_email);
}
function BezoekerSelected(data, orgData)
{
var rowNr = orgData.rownr;
$("#bez" + rowNr).val(data.naam.substr(0, 30));
$("#bed" + rowNr).val((data.bedrijf||"").substr(0, 60));
if (data.contkey)
$("#contkey" + rowNr).val(data.contkey);
if (data.prskey > 0)
{
$("#prskey" + rowNr).val(data.prskey);
if (data.get_email)
{
$.getJSON("../prs/get_prs_info_ajax.asp",
{ req_info: "prs_perslid",
prs_perslid_key: data.prskey
},
function (data) { return processBezoeker(rowNr, data) });
}
}
if (data.contkey || data.prskey)
{
var s = "load_kenmerk.asp?urole=" + urole + "&beznum=" + rowNr
+ (data.contkey? "&cont_key=" + data.contkey : "")
+ (data.prskey? "&prs_key=" + data.prskey : "")
+ "&requiredbyfield=bez" + rowNr
+ "&notr=1&flexend=" + parseInt(bez_max_flex_on_line, 10);
// Laden van de kenmerken op de bezoekersregel
// De volgende flexkenmerken werken niet goed op de bezoekersregel:
// 1) Inklapbare labels
// 2) Parent/child kenmerken
// 3) Texboxen
// Dit komt omdat er dan javascript code (script) tussen de td kolommen worden gezet. En dat mag (eigenlijk) niet.
$("#bezFlexListA" + rowNr).load(s, function(a){ return function() {bezFlexListACallbackJs(a);} }(rowNr));
var s = "load_kenmerk.asp?urole=" + urole + "&beznum=" + rowNr
+ (data.contkey? "&cont_key=" + data.contkey : "")
+ (data.prskey? "&prs_key=" + data.prskey : "")
+ "&requiredbyfield=bez" + rowNr
+ "&flexstart=" + (parseInt(bez_max_flex_on_line, 10) + 1);
$("#bezFlexListB" + rowNr).load(s, function(txt)
{
FcltMgr.resized();
});
}
};
// Let op: next_vis bevat het aantal (html) regels in de tabel
// doordat bij delete regels gehide'd worden kan dit dus
// meer zijn dan het aantal zichtbare regels
function ImportBezoekerSelected(data, orgData)
{
var next_vis = $("#next_vis").val();
var rowNr = 0;
if (data.replace)
{ // Verwijder eerst bestaande bezoekers voordat de lijst opnieuw geimporteerd wordt.
// Als er bezoekers waren gearriveerd was vervang niet mogelijk.
while (rowNr < next_vis)
{
deleteVisit(rowNr);
rowNr ++;
}
next_vis = $("#next_vis").val();
rowNr = 0;
}
for (bez in data.bezoekers)
{
rowNr ++;
// Zoek eerste vrije regel
while ((rowNr < next_vis) &&
($("#bez_key" + rowNr).val() != "-1" ||
$("#bez" + rowNr).val() != "" ||
$("#bed" + rowNr).val() != ""
)
)
{
rowNr ++;
}
if (rowNr == next_vis) // extra regel nodig
{
more_visit(1);
next_vis = $("#next_vis").val();
}
$("#bez" + rowNr).val(data.bezoekers[bez].naam).change();
$("#bed" + rowNr).val((data.bezoekers[bez].bedrijf||"").substr(0, 60));
for (var flx = 0; flx < data.bezoekers[bez].flex.length; flx++)
{
var nr = data.bezoekers[bez].flex[flx].nr;
switch (data.bezoekers[bez].flex[flx].ktype)
{
case "C": $("#flex" + rowNr + "_" + nr + "val").val(data.bezoekers[bez].flex[flx].value); break;
case "N": $("#flex" + rowNr + "_" + nr + "val").val(data.bezoekers[bez].flex[flx].value); break;
case "D": $("#flex" + rowNr + "_" + nr + "val").datepicker("setDate", data.bezoekers[bez].flex[flx].value); break;
default: break;
}
}
}
validateForm("u2", {checklength: true});
};
function selectPerson(row)
{
FcltMgr.openModalDetail("../bez/bez_select_bezoeker.asp?urole=" + urole + (bez_sel_contactpersoon == 2? "&loc_key=" + $("#locatiekey").val() : ""),
titel,
{ callback: BezoekerSelected, rownr: row });
};
function showPerson(row)
{
var contkey = $("#contkey" + row).val();
if (contkey > 0)
FcltMgr.openDetail("./appl/prs/prs_contactpersoon.asp?mode=viewUpdate&key=" + contkey, { reuse: true, titel: L("lcl_details") });
};
// Merk op dat bez_key multifunctioneel is
// >0: we zijn een bestaande afspraak/bezoeker aan het bewerken
// -1: het is een nieuwe regel die nog niet in de database is
// 0: het is een nieuwe regel die met het kruisje is weggehaald (hidden gemaakt)
// < -1: een bestaande afspraak/bezoeker die met het kruisje is weggehaald (hidden gemaakt)
function deleteVisit(row)
{
var bez_key = $("#bez_key" + row);
if (bez_key.val() == -1)
bez_key.val(0); // signal delete for new visitor
else
bez_key.val(-bez_key.val()); // signal delete
var tr = $("#trbez" + row);
tr.hide();
// Haal de required class overal af als deze erop zit.
$("#trbez" + row).find("*").removeClass("required")
tr = $("#trbez" + row + "flex");
tr.hide();
// Haal de required class overal af als deze erop zit.
$("#trbez" + row + "flex").find("*").removeClass("required")
}
function setPrk(id)
{
if ($("#gebouwkey" + id).val() > 1)
// Er is een gebouw/terrein geselecteerd
$("#prk" + id).prop("checked", true);
else
// Er is geen gebouw/terrein geselecteerd
$("#prk" + id).prop("checked", false);
$("#gebouw" + id).change();
}
// Maak van alle invoervelden contactpersoon suggest velden.
// Is zo slim om velden die hij al eerder gedaan heeft over te slaan
function makeContactSuggest()
{
$(function () {
$("input.fld[id^=bez]:not([readonly])").each(function()
{
if ($(this).hasClass("suggest"))
return;
var rowNr = this.id.substring(3);
window["sgContactPerson" + rowNr] =
new Suggest({ objectName: "sgContactPerson" + rowNr,
queryField: this,
queryUrl: "../shared/suggest/SuggestContactpersoon.asp?zoekpers=1&zoekbedr=0",
initKey: -1,
keyField: $("#contkey" + rowNr)[0], // of $("#prskey" + rowNr)
highlightDescript: true,
extraParamField: $("#bed" + rowNr)[0],
initExtraParam: "",
urlAdd: (bez_sel_contactpersoon == 2? [{urlParam: "loc_key", field: "locatiekey"}] : null) // Contactpersoon afhankelijk van locatie?
});
});
});
$(function () {
$("input.fld[id^=bed]:not([readonly])").each(function()
{
if ($(this).hasClass("suggest"))
return;
var rowNr = this.id.substring(3);
window["sgBedrijf" + rowNr] =
new Suggest({ objectName: "sgBedrijf" + rowNr,
queryField: this,
queryUrl: "../shared/suggest/SuggestContactpersoon.asp?zoekpers=0&zoekbedr=1",
initKey: -1,
keyField: $("#contkey" + rowNr)[0], // !! Ook opslaan in contactpersoon dus!
highlightDescript: true,
extraParamField: $("#bez" + rowNr)[0],
initExtraParam: "",
urlAdd: (bez_sel_contactpersoon == 2? [{urlParam: "loc_key", field: "locatiekey"}] : null) // Contactpersoon afhankelijk van locatie?
});
$(this).before('<i class="fa fa-plus" title="'+L("lcl_bez_new_contact")+'" OnClick="makeContact('+rowNr+')">&nbsp;</i>');
});
})
}
function makeContactSelected(data, orgData)
{
if (!data.cont_key)
return;
$("#bez" + orgData.rowNr).val(data.naam);
$("#bed" + orgData.rowNr).val(data.bedrijf);
$("#contkey" + orgData.rowNr).val(data.cont_key);
ContactpersoonBedrijfSelected(data.cont_key, data.naam, { suggestid: "bez" + orgData.rowNr});
}
function makeContact(rowNr)
{
var url = "../bez/bez_make_contact.asp";
FcltMgr.openModalDetail(url,
L("lcl_bez_new_contact"),
{ callback: makeContactSelected,
rowNr: rowNr });
}