163 lines
6.5 KiB
C++
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>
|
|
<%
|
|
}
|
|
}
|
|
%> |