239 lines
9.3 KiB
JavaScript
239 lines
9.3 KiB
JavaScript
/*
|
||
$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.
|
||
}
|
||
|