245 lines
12 KiB
C++
245 lines
12 KiB
C++
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: uitvoerendeselector.inc
|
|
Description: Algemene interface functie om een uitvoerenden suggestbox te maken
|
|
Deze moet je kunnen includen en aanroepen.
|
|
Resulteert dan uiteindelijk in een zichtbaar textveld aangemaakt die de uitvoerendenaam bevat (uitvoerendenaam veld)
|
|
en een hidden keyveld die de key van de uitvoerende bevat (uitvoerendekey veld).
|
|
Het uitvoerendenaam veld heeft geen naam en wordt niet meegesubmit.
|
|
Het uitvoerendekey veld heeft een naam en wordt meegesubmit.
|
|
Het resultaat heeft de vorm "[<td>label</td><td>]selectveld[</td>]"
|
|
parameters: fieldName: veldnaam van het uitvoerendekey veld. Dit veld wordt gesubmit.
|
|
objectName: naam van het suggest object dat wordt aangemaakt.
|
|
params: object met meegegeven parameters.
|
|
uitvoerendekey: initiële key waarde van de uitvoerende die ingevuld moet worden.
|
|
label: label dat voor het uitvoerendenaam veld wordt weergegeven.
|
|
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
|
|
onChange: onchange op het textveld.
|
|
trclass: wordt ook op de <tr> gezet
|
|
extraParamField: veldnaam voor een extra hidden parameter veld.
|
|
locatiekey Alleen uitvoerende tonen die op deze locatie leveren
|
|
gebouwkey Alleen uitvoerende tonen die in dit gebouw leveren
|
|
disciplinekey Alleen uitvoerende tonen met rechten op deze discipline
|
|
onrgoedkey Alleen uitvoerende tonen die in dit onroerendgoed leveren
|
|
lutype Alleen leveranciers (L) of uitvoerenden (U) tonen
|
|
externonly Alleen externe bedrijven tonen
|
|
exhandler Ik ben een contactpersoon van een extern bedrijf?
|
|
Dan mag ik alleen de opdrachten van mijn bedrijf/bedrijven zien
|
|
isBad: boolean die aangeeft dat het uitvoerendenaam veld als ongeldig
|
|
en leeg weergegeven moet worden (true|false(default)).
|
|
readonly: geeft aan of het uitvoerendenaam veld readonly weergegeven moet worden (true|false(default)).
|
|
moreinfo: geeft een extra informatie button achter het suggest veld. Klikken hierop geeft informatie
|
|
over de geselecteerde waarde
|
|
noBad Als uitvoerendekey niet gevonden binnen filter dan veld leeglaten
|
|
(in plaats van standaard gedrag: naam wel opzoeken maar 'Bad' maken)
|
|
*/ %>
|
|
|
|
<!-- #include file="./Suggest/uitvoerendeFilter.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
|
|
|
|
function FCLTuitvoerendeselector(fieldName, objectName, params)
|
|
{
|
|
if (typeof params == "undefined") params = {};
|
|
|
|
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : L("lcl_select_uitvoerende")));
|
|
var luitvoerendeName = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
|
|
var lpbtype = "";
|
|
var isBad = false;
|
|
var canbePerslid = (!params.dienst && !params.externonly && !params.exhandler)
|
|
if (params.uitvoerendekey && params.uitvoerendekey > 0)
|
|
{
|
|
var filtClause = getFiltClauseUitvoerende(params.filtercode, params);
|
|
|
|
sql = "SELECT prs_bedrijf_naam uitv_naam"
|
|
+ " , CASE"
|
|
+ " WHEN prs_bedrijf_intern = 1"
|
|
+ " THEN 'BI'"
|
|
+ " ELSE 'BE'"
|
|
+ " END pbtype"
|
|
+ " FROM prs_v_aanwezigbedrijf b"
|
|
+ " WHERE b.prs_bedrijf_key = " + params.uitvoerendekey
|
|
+ filtClause.bedrijf
|
|
+ (canbePerslid
|
|
? " UNION ALL "
|
|
+ " SELECT " + S("prs_pers_string") + " uitv_naam"
|
|
+ ", 'P' pbtype"
|
|
+ " FROM prs_perslid p"
|
|
+ " WHERE p.prs_perslid_key = " + params.uitvoerendekey
|
|
+ filtClause.perslid
|
|
: "");
|
|
var oRs = Oracle.Execute(sql);
|
|
if (oRs.eof) // Misschien (tegenwoordig) uit scope?
|
|
{ // Probeer dan maar zonder extra 'where's
|
|
isBad = true;
|
|
sql = " SELECT prs_bedrijf_naam uitv_naam"
|
|
+ ", CASE"
|
|
+ " WHEN prs_bedrijf_intern = 1"
|
|
+ " THEN 'BI'"
|
|
+ " ELSE 'BE'"
|
|
+ " END pbtype"
|
|
+ " FROM prs_bedrijf b"
|
|
+ " WHERE b.prs_bedrijf_key = " + params.uitvoerendekey
|
|
//+ filtClause.bedrijf
|
|
+ (canbePerslid
|
|
? " UNION ALL "
|
|
+ "SELECT " + S("prs_pers_string") + " uitv_naam"
|
|
+ ", 'P' pbtype"
|
|
+ " FROM prs_perslid p"
|
|
+ " WHERE p.prs_perslid_key = " + params.uitvoerendekey
|
|
//+ filtClause.perslid
|
|
: "");
|
|
var oRs = Oracle.Execute(sql);
|
|
}
|
|
if (isBad && params.noBad)
|
|
{
|
|
isBad = false;
|
|
params.uitvoerendekey = -1;
|
|
}
|
|
else
|
|
{
|
|
luitvoerendeName = oRs("uitv_naam").Value;
|
|
lpbtype = oRs("pbtype").Value;
|
|
}
|
|
oRs.Close();
|
|
}
|
|
else
|
|
{
|
|
var filtClause = getFiltClauseUitvoerende(params.filtercode, params);
|
|
sqlBP = " SELECT prs_bedrijf_key uitv_key"
|
|
+ " , prs_bedrijf_naam uitv_naam"
|
|
+ " , CASE"
|
|
+ " WHEN prs_bedrijf_intern = 1"
|
|
+ " THEN 'BI'"
|
|
+ " ELSE 'BE'"
|
|
+ " END pbtype"
|
|
+ " FROM prs_bedrijf b"
|
|
+ " WHERE 1 = 1"
|
|
+ filtClause.bedrijf
|
|
+ (canbePerslid
|
|
? " UNION ALL "
|
|
+ "SELECT prs_perslid_key uitv_key"
|
|
+ " , " + S("prs_pers_string") + " uitv_naam"
|
|
+ " , 'P' pbtype"
|
|
+ " FROM prs_perslid p"
|
|
+ " WHERE 1 = 1"
|
|
+ filtClause.perslid
|
|
: "")
|
|
|
|
sql = "SELECT COUNT(*) aantal"
|
|
+ " FROM (" + sqlBP + ")";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
// Als er maar één vakgroep is, dan deze selecteren.
|
|
if (oRs("aantal").Value == 1)
|
|
{
|
|
sql = "SELECT uitv_key"
|
|
+ " , uitv_naam"
|
|
+ " , pbtype"
|
|
+ " FROM (" + sqlBP + ")";
|
|
|
|
var oRs = Oracle.Execute(sql);
|
|
params.uitvoerendeKey = oRs("uitv_key").Value;
|
|
luitvoerendeName = oRs("uitv_naam").Value;
|
|
lpbtype = oRs("pbtype").Value;
|
|
}
|
|
}
|
|
|
|
// Bouw de url voor de uitvoerenden query op
|
|
var uitvoerendeQueryUrl = rooturl + "/appl/shared/suggest/SuggestUitvoerende.asp"
|
|
+ ((typeof params.autlevel != "undefined")? "?autlevel=" + params.autlevel : "?autlevel=-1")
|
|
+ (params.filtercode? "&filtcode=" + params.filtercode : "")
|
|
+ (params.locatiekey? "&loc_key=" + params.locatiekey : "")
|
|
+ (params.gebouwkey? "&bld_key=" + params.gebouwkey : "")
|
|
+ (params.disciplinekey? "&disc_key=" + params.disciplinekey : "")
|
|
+ (params.onrgoedkey? "&onrgoed_key=" + params.onrgoedkey : "")
|
|
+ (params.lutype? "&lutype=" + params.lutype : "")
|
|
+ (params.externonly? "&externonly=1" : "")
|
|
+ (params.exhandler? "&exhandler=1" : "");
|
|
if (params.label)
|
|
{ %><tr <%=params.trclass?"class='"+params.trclass+"'":""%>>
|
|
<td class="label">
|
|
<label class='selector' for="<%=fieldName%>"><%=params.label%>:</label>
|
|
<%=params.moreinfo && !params.readonly ? "<span class='labelextra'><i class='fa fa-info-circle details' onclick='" + objectName + "_uitvoerendedetails(\"" + fieldName + "\")'></i></span>" : ""%>
|
|
</td>
|
|
<td>
|
|
<%
|
|
} %>
|
|
<nobr>
|
|
<input id="<%=fieldName%>_show" class="flduitvoerende<%=!params.readonly&¶ms.required? " required" : ""%><%=params.readonly && params.moreinfo ? " details" : ""%>"
|
|
<% =params.moreinfo && params.readonly ? " title='" + L("lcl_details") + "' onclick='" + objectName + "_uitvoerendedetails(\"" + fieldName + "\")'" : ""%>
|
|
value="<%=safe.htmlattr(luitvoerendeName)%>" placeholder="<%=lwhenEmpty%>"
|
|
<%=params.readonly? " readonly tabindex=-1" : ""%>
|
|
<%=params.onChange && !params.readonly? " sgonChange='" + params.onChange + "'" : ""%>>
|
|
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.uitvoerendekey%>">
|
|
<%=params.moreinfo && !params.label && !params.readonly ? "<i class='fa fa-info-circle details' onclick='" + objectName + "_uitvoerendedetails(\"" + fieldName + "\")'></i>" : ""%>
|
|
<input type="hidden" id="pbtype" name="pbtype" value="<%=lpbtype%>">
|
|
</nobr>
|
|
<%
|
|
if (params.label)
|
|
{ %>
|
|
</td></tr>
|
|
<%
|
|
}
|
|
%>
|
|
|
|
<script type="text/javascript">
|
|
function <%=objectName%>_uitvoerendedetails(fieldName)
|
|
{
|
|
var pkey=$('#'+fieldName)[0].value;
|
|
var pname=$('#'+fieldName+'_show')[0].value;
|
|
if (pkey != -1) {
|
|
if ($('#pbtype')[0].value == "P")
|
|
FcltMgr.openDetail("appl/fac/fac_user.asp?prs_key=" + pkey, pname); // Overweeg een specifiekere, met planningsinfo
|
|
else if ($('#pbtype')[0].value == "BI" || $('#pbtype')[0].value == "BE")
|
|
FcltMgr.openDetail("appl/prs/prs_bedrijf.asp?bedrijf_key=" + pkey, pname);
|
|
} else {
|
|
// FcltMgr.alert("Kies eerst een persoon?");
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<%
|
|
if (!params.readonly)
|
|
{
|
|
if (params.urlAdd)
|
|
{
|
|
var urlAddTxt = "[";
|
|
for (var i = 0; i < params.urlAdd.length; i++)
|
|
{
|
|
urlAddTxt += (i > 0? ", " : "") + "{ urlParam: \"" + params.urlAdd[i].urlParam + "\", field: \"" + params.urlAdd[i].field + "\" }";
|
|
}
|
|
urlAddTxt += "]"
|
|
}
|
|
%>
|
|
<script type="text/javascript">
|
|
jQuery(document).ready( function()
|
|
{
|
|
<%=objectName%> = new Suggest({ objectName: "<%=objectName%>",
|
|
queryField: $("#<%=fieldName%>_show")[0],
|
|
queryUrl: "<%=uitvoerendeQueryUrl%>",
|
|
initKey: <%=params.uitvoerendekey? params.uitvoerendekey : -1%>,
|
|
keyField: $("#<%=fieldName%>")[0],
|
|
extraParamField: $("#pbtype")[0], // geeft aan of het een persoon 'P' of intern/extern bedrijf 'BI'/'BE' is.
|
|
initExtraParam: "<%=lpbtype%>"
|
|
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
|
|
<%=params.isBad? ", isBad: true": ""%>
|
|
<%=params.readonly? ", fieldReadonly: true": ""%>
|
|
});
|
|
if (FcltMgr.getCaller())
|
|
{
|
|
$("#<%=fieldName%>_caller").show();
|
|
}
|
|
<% if (isBad) { %>
|
|
<%=objectName%>.isBad();
|
|
<% } %>
|
|
}
|
|
)
|
|
</script>
|
|
<%
|
|
}
|
|
}
|
|
%> |