Files
Facilitor/APPL/Shared/uitvoerendeselector.inc
Jos Groot Lipman f362b4d84f FSN#35094 Opfrissen icon-set font-awesome IE8
svn path=/Website/trunk/; revision=31620
2016-11-22 15:46:30 +00:00

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&&params.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>
<%
}
}
%>