Files
Facilitor/APPL/Shared/selector.inc
Peter Feij 413498318a 0-versie
svn path=/Website/trunk/; revision=6
2009-10-05 06:44:06 +00:00

163 lines
6.5 KiB
C++

<% /*
$Revision: 1 $
$Modtime: 28-09-09 22:45 $
File: selector.inc
Status: 90%
Description: Algemen interface functie om een selectveld te maken
Deze moet je kunnen includen en aanroepen.
Resulteert dan uiteindelijk in een selectbox aangemaakt die gevuld wordt door een query.
Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
of [<td>label</td><td>]inputveld[</td>].
Indien geen initiële waarde is meegegeven, dan wordt standaard -1 genomen.
parameters: fieldName: veldnaam van het selectveld. Dit veld wordt gesubmit.
sql: sql query die zorg voor de inhoud van het selectveld. (SELECT key, omschrijving FROM ... WHERE ...)
params: object met meegegeven parameters.
initKey: initiële key waarde van de select die ingevuld moet worden.
label: label dat voor het selectveld wordt weergegeven.
onChange: onchange op het selectveld.
readonly: geeft aan of het selectveld readonly weergegeven moet worden (true|false(default)).
multi multi selectveld
size handig bij multi selectveld
moreinfo: geeft een extra informatie button achter het selectveld. Klikken hierop geeft informatie over de geselecteerde waarde
extraParamValue: Voegt een extra value parameter toe aan de waarden (<option>)
emptyOption: De tekst voor een lege waarde bovenaan in de lijst
?Bij 'multi' doet hij dat alleen bij een lege listbox
initEmpty Moet de lege waarde altijd geselecteerd zijn (meestal voor filters) of kies een single optie altijd gelijk
Note: de combinatie van readonly en multi is (nog) niet ondersteund
*/ %>
<%
FCLTHeader.Requires({ plugins: ["jQuery"], js: [] });
// Functie kijkt of de waarde pvalue voorkomt in de array parray
function valueInArray(parray, pvalue, pmulti)
{
// TODO return $.inArray()
if (pmulti && parray.length > 1) // parray is nu een array met waarden
{
for (i = 0; i < parray.length; i++)
{
if (parray[i] == pvalue) return true;
}
}
else
{
return (parray[0] == pvalue)
}
return false
}
function FCLTselector(fieldName, sql, params)
{
if (typeof params=="undefined") params = {};
params.id = params.id || fieldName;
if (params.label)
{ %>
<td class="label">
<label for="<%=fieldName%><%=params.readonly? "_ro" : ""%>"><%=params.label%>:</label>
</td>
<td>
<%
} %>
<nobr>
<% if (!params.readonly) {
%>
<select class="fld<%=fieldName%><%=params.readonly? " disabled" : ""%>"
name="<%=fieldName%><%=params.readonly? "_ro" : ""%>"
id="<%=params.id%><%=params.readonly? "_ro" : ""%>"
<%=params.multi? " multiple" : ""%>
<%=params.size? " size="+params.size : ""%>
<%=params.onChange? " onchange='" + escape2(params.onChange) + "'" : "" /* LET OP DAT HTML-HAAKJE HIERACHTER */ %>>
<% // Indien geen initiële waarde is meegegeven, dan wordt standaard -1 genomen.
if (!params.initKey)
params.initKey = -1;
// Indien multi dan kan initKey een string van waarden bevatten
// Maak daarom van initKey een array met waarden
params.initKey = String("" + params.initKey);
params.initKey = params.initKey.split(",");
if (sql && sql != "")
{
var oRs = Oracle.Execute(sql);
// Check of er slechts 1 resultaat is: dan wil ik die automatisch gekozen hebben in plaats van een evt. lege waarde
var justone = false;
if (!oRs.eof)
{
oRs.MoveNext();
if (oRs.eof)
justone = true;
oRs.MoveFirst();
}
if (((params.emptyOption || params.emptyOption == "") && !justone) || params.initEmpty)
{
%><option value="-1" <%=valueInArray(params.initKey, -1, params.multi)? "selected" : ""%>><%=params.emptyOption? params.emptyOption : ""%></option><%
}
while (!oRs.eof)
{
%><option value="<%=escape2(oRs(0).Value)%>" <%=valueInArray(params.initKey, oRs(0).Value, params.multi) || (justone && !params.initEmpty)? "selected" : ""%><%
if (params.extraParamValue)
{
var extraPV = params.extraParamValue.split(",");
for (var i = 0; i < extraPV.length; i++)
{ %>
<%=extraPV[i].replace(/^\s+|\s+$/g,"")%>="<%=escape2(oRs(extraPV[i].replace(/^\s+|\s+$/g,"")).Value)%>" <% // replace is for trim spaces %>
<% }
} /* LET OP DAT HTML-HAAKJE HIERACHTER */ %>>
<%=escape2(oRs(1).Value)%></option><%
oRs.MoveNext();
}
oRs.close();
}
%>
</select>
<% } else {
// we moeten hier wat ingewikkeld doen omdat we wel de key hebben van de te tonen waarde, maar niet de waarde zelf
// NB: in het geval van een readonly/multi listbox toont-ie maar 1 waarde.
var initstr = "";
if (sql && sql != "")
{
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
if (params.initKey == oRs(0).Value)
{
initstr = escape2(oRs(1).Value);
}
oRs.MoveNext();
}
oRs.close();
}
%>
<input type="text" id="<%=fieldName%>" readonly class="fldselect" value="<%=initstr%>">
<%
}
%>
<%=params.moreinfo ? "<img class='details' src='" + rooturl + "/appl/Pictures/listdetail.gif' onclick='selectdetails_" + fieldName + "()'>" : ""%>
</nobr>
<%
if (params.label)
{ %>
</td>
<%
}
if (params.moreinfo)
{ %>
<script type="text/javascript">
function selectdetails_<%=fieldName%> ()
{
if ($('#<%=fieldName%>')[0].value != -1) {
FcltMgr.openDetail("<%=rooturl%>/appl/fac/fac_list.asp?key=" + $('#<%=fieldName%>')[0].value, $('#<%=fieldName%>')[0].value);
} else {
alert("Wat wil je nou?");
}
}
</script>
<%
}
}
%>