Files
Facilitor/APPL/Localscripts/modal_kenmerken.js
Jos Groot Lipman 45e8340492 Diverse code cleanup naar aanleiding van warnings minifier
(voornamelijk unused variabelen)

svn path=/Website/trunk/; revision=27261
2015-12-03 12:01:39 +00:00

239 lines
9.3 KiB
JavaScript
Raw Blame History

/*
$Revision$
$Id$
File: modal_kenmerken.js
Description: Javascript functies om kenmerken in een modal scherm te tonen
Het modal scherm met de kenmerken wordt getoond door de functie showKenmerkModal(key, url, title) aan te roepen.
Voor het submitten van een scherm die gebruik maakt van dit modal scherm moet submitten met de functie doSubmitWithKenmerken(key)
Parameters: De functies showKenmerkModal(key, url, title) verwacht de volgende parameters
key Key (Discipline / objectsoort/enz) die zijn eigen groep met kenmerken heeft
url Url naar kenmerken bestand voor het tonen van de module specifieke kenmeken
titel Parameters die de weergave van het modal scherm bepalen
De functie doSubmitWithKenmerken(key) verwacht alleen de bovenstaande parameter key
Globals:
Context: Wordt gebruikt door de XXX_search.asp (overzicht) bestanden
Note:
*/
// Voeg dkenmmodal divs toe aan de <body>
$(document).ready(function() {
var content = '<div id="dkenmmodal2" style="display:none"></div>'
+ '<div id="dkenmmodal"></div>' // div "dkenmmodal" wordt buiten het formulier (<form>) gebracht door jquery
$("form").append(content);
});
(function($)
{ // Om in FireFox de gewijzigde waarden in de velden over te nemen
// moet deze functie gebruikt worden in plaats van html().
// Anders krijgt men de velden terug zoals die gezet zijn bij het maken van het scherm.
var oldHTML = $.fn.html;
$.fn.formhtml = function()
{
if (arguments.length) return oldHTML.apply(this,arguments);
$("input,button", this).each(function()
{
this.setAttribute('value',this.value);
});
$("textarea", this).each(function()
{
this.innerHTML = this.value;
});
$("input:radio,input:checkbox", this).each(function()
{
if (this.checked)
this.setAttribute('checked', 'checked');
else
this.removeAttribute('checked');
});
$("option", this).each(function()
{
if (this.selected)
this.setAttribute('selected', 'selected');
else
this.removeAttribute('selected');
});
return oldHTML.apply(this);
};
// optional to override real .html() if you want
// $.fn.html = $.fn.formhtml;
}
)(jQuery);
// Array voor het opslaan van de html van de kenmerken van de verschillende activiteiten
var kenmerk_html;
var kenmerk_waarden = new Array();
//var script_html = new Array();
var lasturl = "";
var sameurl = false;
// Deze functie uitvoeren als op de zoek button wordt geklikt
function doSubmitWithKenmerken()
{
$('div#dkenmmodal2').formhtml(kenmerk_html);
// Strip alle velden er uit die niets doen. Voorkomt extreem lange querystring
var $dk2 = $('div#dkenmmodal2'); // shortcut
/* Global kenmerk_waarden */
for (var m = 0; m < kenmerk_waarden.length; m++)
{
if (kenmerk_waarden[m].op == 'IS NOT NULL' || kenmerk_waarden[m].op == 'IS NULL')
continue; // blijven
if (kenmerk_waarden[m].val && kenmerk_waarden[m].typ != "R" && kenmerk_waarden[m].typ != "S")
continue;
if (kenmerk_waarden[m].val != '-1' && kenmerk_waarden[m].val != '' && (kenmerk_waarden[m].typ == "R" || kenmerk_waarden[m].typ == "S"))
continue;
// Schrappen
$dk2.find("#k" + (m+1) + "val").remove();
$dk2.find("#k" + (m+1) + "key").remove();
$dk2.find("#k" + (m+1) + "t").remove();
$dk2.find("#ko" + (m+1)).remove();
$dk2.find("#Suggestk" + (m+1) + "_show").remove();
$dk2.find("#execDonek" + (m+1)).remove();
$dk2.find("#has_k" + (m+1) + "val").remove();
}
document.forms.u2.submit();
$('div#dkenmmodal2').formhtml("").hide();
}
function kenmerkValues(n)
{
if ($("#k" + n + "t").val() == "N" && $("#has_k" + n + "val").val() == 1)
{ // Het is een checkbox
this.checkbox = true;
if ($("#k" + n + "val").prop("checked"))
this.val = 1;
else
this.val = 0;
}
else
this.val = $("#k" + n + "val").val();
this.key = $("#k" + n + "key").val();
this.typ = $("#k" + n + "t").val();
this.op = $("#ko" + n).val();
this.suggest = (this.typ == "S"? $("#Suggest" + "k" + n + "_show").val(): "");
}
function showKenmerkModal(purl, ptitle)
{
// ***** START INTERNE FUNCTIES *****
function _doOk()
{
var kenmerkArray = new Array();
kenmerk_waarden.length = 0;
var aantal_kenm = $("#k_all").val();
// Ingevulde waarden van de kenmerken bewaren.
for (var n = 1; n <= aantal_kenm; n++)
{
kenmerkArray[kenmerkArray.length] = new kenmerkValues(n);
}
kenmerk_waarden = kenmerkArray;
$('div#dkenmmodal').dialog("close");
// Als dialog scherm gesloten is kunnen we nog bij de kenmerken.
// Alleen de waarden worden niet meegenomen met de submit, omdat dialog buiten het formulier (<form>) wordt gehouden.
// Alle velden van dkenmmodal kopi<70>ren naar dkenmmodal2. (Binnen div zetten).
// Als nu discipline/objectsoort wordt aangepast dan dkenmmodal2 leeg maken.
// Daarom voor elke catalogus de html van de kenmerken opslaan, zodat later de kenmerken naar modal2 gekopieerd kunnen worden.
kenmerk_html = $('div#dkenmmodal').formhtml();
// dkenmmodal leeg maken
$('div#dkenmmodal').formhtml("");
// Doorloop kenmerk_waarden om te kijken of er kenmerk waarden zijn ingevuld. Dan op "Geavanceerd.." button een class zetten
var toggle = false;
for (var m = 0; m < kenmerk_waarden.length; m++)
{
if ((kenmerk_waarden[m].val) || (kenmerk_waarden[m].op=='IS NOT NULL') || (kenmerk_waarden[m].op=='IS NULL') ) toggle = true;
}
if (toggle)
$("li:contains('" + L("lcl_advanced") + "')").addClass("selected"); // zoek op "Geavanceerd", dus zonder ".." erachter!
else
{
$("li:contains('" + L("lcl_advanced") + "')").removeClass("selected");
kenmerk_html = ""; // Er is geen geavanceerde selectie ingesteld, dus hidden velden voor kenmerken verwijderen.
}
}
function _doReset()
{
var aantal_kenm = $("#k_all").val();
for (i = 1; i <= aantal_kenm; i++)
{
$('#ko' + i).val("=");
$('#k' + i + 'val').val("");
$('#Suggest' + "k" + i + '_show').val(""); // Mocht het een Suggestbox zijn dan text ook legen
}
}
// ***** EINDE INTERNE FUNCTIES *****
// Open dialog scherm met de kenmerken
params = { buttons: { "Ok!": _doOk, "Reset": _doReset },
//close: _dialogClose,// Niet verwijderen anders hebben we geen toegang meer tot de kenmerken
// $('div#dkenmmodal').remove();
xheight: 600,
closeOnEscape: true,
modal: false,
resizable: false,
bgiframe: true, /* IE6 */
title: ptitle,
width: 725
};
/*
FcltMgr.openModalDetail("../shared/flex_search.asp?load_url=" + escape(purl), ptitle,
{ callback: function (data)
{ kenmerk_html = data;
} });
return;
*/
if (lasturl == purl)
sameurl = true;
else
{
sameurl = false;
kenmerk_waarden.length = 0;
}
lasturl = purl;
// Nu div vullen met asp bestand met url
$("#dkenmmodal").load(purl,
function()
{
$('div#dkenmmodal').dialog(params).dialog('open')
if (sameurl)
{ // Zet de geselecteerde waarden
for (var n = 0; n < kenmerk_waarden.length; n++)
{
$("#k" + (n + 1) + "t").val(kenmerk_waarden[n].typ);
if (kenmerk_waarden[n].typ == "S")
{
$("#Suggest" + "k" + (n + 1) + "_show").val(kenmerk_waarden[n].suggest)
}
// Een numeriek "N" kenmerk kan ook een checkbox zijn.
if (kenmerk_waarden[n].typ == "N" && kenmerk_waarden[n].checkbox)
{ // Het is een checkbox.
if (kenmerk_waarden[n].val == 1)
$("#k" + (n + 1) + "val").prop("checked", true); // Checkbox aanvinken.
}
else
$("#k" + (n + 1) + "val").val(kenmerk_waarden[n].val);
$("#k" + (n + 1) + "key").val(kenmerk_waarden[n].key);
$("#ko" + (n + 1)).val(kenmerk_waarden[n].op);
}
}
});
}
function resetFilter()
{
$("li:contains('" + L("lcl_advanced") + "')").removeClass("selected");
kenmerk_html = ""; // Er is geen geavanceerde selectie ingesteld, dus hidden velden voor kenmerken verwijderen.
}