Files
Facilitor/APPL/Shared/disciplineselector.inc
2023-04-20 10:19:59 +00:00

255 lines
13 KiB
C++
Raw Blame History

<% /*
$Revision$
$Id$
File: disciplineselector.inc
Description: Algemene interface functie om een discipline suggestbox te maken
parameters: fieldName: veldnaam van het key veld. Dit veld wordt gesubmit.
objectName: naam van het suggest object dat wordt aangemaakt.
params: object met meegegeven parameters.
disc_key: initi<74>le key waarde van de discipline die ingevuld moet worden.
module: Verplicht: module waarvan de disciplines zijn
perslidKey: Verplicht voor MLD: persoon waarvoor melding is
multitoggle: Sta multi-toggle toe
idadd: Identieficatie verschil bij gebruik van meerdere disciplineselectoren
sgRelType: De onderliggende multiSuggest-types die afhankelijk zijn van deze FCLTdisciplineselector, gescheiden door komma's.
De eerst volgende afhankelijke als eerste vermelden (bijv. "stdmelding, srtgroep, srtdeel").
autfunctionKey: Verplicht: fac_functie key of een array van fac_functie keys.
label: label dat voor het veld wordt weergegeven.
filtercode: extra filtercode voor de query die gebruikt wordt voor de suggest.
cndfilter: filter de conditie gebreken (srtdisc = xx(setting)) eruit.
onChange: onchange op het textveld.
trclass: wordt ook op de <tr> gezet.
autlevel: autorisatie niveau voor de query die gebruikt wordt voor de suggest.
ins_key: alleen als melding op dit object mogelijk is.
extraParamField: veldnaam voor een extra hidden parameter veld.
isBad: boolean die aangeeft dat het veld als ongeldig
en leeg weergegeven moet worden (true|false(default)).
readonly: geeft aan of het veld readonly weergegeven moet worden (true|false(default)).
dohide: verberg de hele discipline selector
autRW: Geeft aan of er read or write autorisatie geldt.
noJustOne: Onderdrukken van controle of er maar één waarde is die geselecteerd moet worden.
*/ %>
<!-- #include file="./Suggest/disciplineFilter.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"], js: [] });
function FCLTdisciplineselector(fieldName, objectName, params)
{
params = params || {};
var sgType = "discipline";
var idadd = "";
if (params.idadd)
idadd = params.idadd;
if (!params.disc)
params.disc = -1; // wordt gebruikt in getFiltClauseDiscipline()
var lwhenEmpty = "";
if (!params.readonly)
{
// the default empty value depends on the module
switch(params.module)
{
// Plaatsgegevens
case "MLDP": { lwhenEmpty = L("lcl_select_vakgroep");
break;
}
case "MLD": { lwhenEmpty = idadd == 2 ? L("lcl_select_mld_process_grp") : L("lcl_select_vakgroep");
break;
}
case "MLDB": { lwhenEmpty = L("lcl_select_mld_process_grp");
break;
}
case "BES": { lwhenEmpty = L("lcl_select_catalogus");
break;
}
default: { lwhenEmpty = L("lcl_select_discipline");
break;
}
}
}
lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonly ? L("lcl_select_readonly") : lwhenEmpty));
var ldiscName = "";
var lextraInit = "";
if ("addfixedoption" in params && "key" in params.addfixedoption && params.disc_key == params.addfixedoption.key)
{
ldiscName = params.addfixedoption.txt;
lextraInit = params.addfixedoption.desc;
}
else if (!params.noJustOne || params.required || params.disc_key > 0)
{
params.autfunctionKeyArray = [];
if (typeof params.autfunctionKey == "object")
params.autfunctionKeyArray = params.autfunctionKey;
else // (typeof params.autfunctionKey == "number")
params.autfunctionKeyArray = [params.autfunctionKey];
var filtClause = getFiltClauseDiscipline(params.filtercode, params);
var extraInf = getExtraInfDiscipline(params.extracode);
sql = "SELECT COUNT(distinct td.ins_discipline_key) aantal"
+ " FROM ins_tab_discipline td"
+ " , ins_srtdiscipline sd"
+ filtClause.from
+ " WHERE ins_discipline_verwijder IS NULL"
+ " AND ins_srtdiscipline_verwijder IS NULL"
+ " AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)" // Alleen bij MLD is de ins_srtdiscipline_key (altijd) ingevuld
+ filtClause.where;
var oRs = Oracle.Execute(sql);
var disc_count = oRs("aantal").value;
oRs.Close();
if (params.disc_key > 0 && disc_count == 0) // Invalid initKey
params.disc_key = -1;
else if (disc_count == 1) // Als er maar één discipline is, dan deze selecteren.
{
sql = "SELECT td.ins_discipline_key, "
+ (params.srtdisc_key > 0
? ""
: "NVL2(sd.ins_srtdiscipline_prefix, sd.ins_srtdiscipline_prefix || '-', '') || ")
+ lcl.xsql('td.ins_discipline_omschrijving', 'td.ins_discipline_key') + " disciplineomschr"
+ extraInf.selectstr
+ " FROM ins_tab_discipline td"
+ ", ins_srtdiscipline sd"
+ filtClause.from
+ extraInf.fromstr
+ " WHERE td.ins_discipline_verwijder IS NULL"
+ " AND ins_srtdiscipline_verwijder IS NULL"
+ " AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)" // Alleen bij MLD is de ins_srtdiscipline_key (altijd) ingevuld
+ filtClause.where
+ extraInf.wherestr;
var oRs = Oracle.Execute(sql);
ldiscName = oRs("disciplineomschr").value;
lextraInit = oRs("extra").value;
params.disc_key = oRs("ins_discipline_key").value;
if (params.ins_key > 0) // dan ben ik zeker nieuw
params.readonly = true;
oRs.Close(); // close the recordset
}
}
// Bouw de url voor de vakgroep query op
var discQueryUrl = rooturl + "/appl/shared/suggest/SuggestDiscipline.asp"
+ "?module=" + params.module
+ "&perslidKey=" + params.perslidKey
+ "&autfunctionKey=" + (typeof params.autfunctionKey == "object" && params.autfunctionKey instanceof Array? params.autfunctionKey.join(",") : params.autfunctionKey)
+ "&autRW=" + params.autRW
+ (params.srtdisc_key? "&srtdisc_key=" + params.srtdisc_key : "")
+ (params.ins_key? "&ins_key=" + params.ins_key : "")
+ (params.extracode? "&extracode=" + params.extracode : "")
+ (params.filtercode? "&filtcode=" + params.filtercode : "")
+ (params.ref_type? "&ref_type=" + params.ref_type : "")
+ (params.cndfilter? "&cndfilter=1" : "");
if (params.label && !params.dohide)
{ %>
<tr <%=params.trclass ? "class='"+params.trclass+"'" : ""%>><td class="label">
<label for="<%=fieldName%>_show"><%=params.label%></label>
<%=params.moreinfo && S("faq_enabled") == 1 && params.module != "MLDB" ? "<span class='"+"labelextra details' title='" + safe.htmlattr(L("lcl_faq_items")) + "'onclick='disciplineselector.kennisbankitems()'>" + I("fa-question-circle") + "</span>" : "" %>
</td>
<td>
<%
}
if (params.readonly && !params.dohide) { %>
<span id="<%=fieldName%>_show" class="fld">
<%=safe.html(ldiscName)%>
</span>
<%}
else
{ // data-role none because we want to wrap the input field ourselves (because of "suggestKlikker" placement)
if (typeof mobile != "undefined")
{ %>
<div class="ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset">
<% } %>
<input type="<%=params.dohide? "hidden" : "text"%>" id="<%=fieldName%>_show" class="fld<%=params.required ? " required" : ""%>" value="<%=safe.htmlattr(ldiscName)%>"
placeholder="<%=safe.htmlattr(lwhenEmpty)%>" sgType="<%=sgType%><%=idadd%>"
<%=(typeof mobile != "undefined" ? "data-role=\"none\"" : "")%>
<%=params.onChange ? " sgonChange='" + params.onChange + "'" : ""%>
>
<% if (typeof mobile != "undefined")
{ %>
</div>
<% }
} %>
<input type="hidden" id="<%=fieldName%>" name="<%=fieldName%>" value="<%=params.disc_key%>">
<%
if (params.extraParamField)
{ /* het extra parameter veld wordt door suggest object gevuld */%>
<input type="hidden" id="<%=params.extraParamField%>" name="<%=params.extraParamField%>" value="<%=safe.htmlattr(lextraInit)%>">
<%
}
if (params.label && !params.dohide)
{ %>
</td></tr>
<%}
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">
$(function()
{
<%=objectName%><%=idadd%> = new Suggest({ objectName: "<%=objectName%><%=idadd%>",
sgType: "<%=sgType%><%=idadd%>",
queryField: $("#<%=fieldName%>_show")[0],
queryUrl: "<%=discQueryUrl%>",
initKey: <%=params.disc_key? params.disc_key : -1%>,
icon: "fa-tag",
keyField: $("#<%=fieldName%>")[0]
<%=params.noJustOne ? ", noJustOne: true" : ""%>
<%=params.multitoggle ? ", multitoggle: true" : ""%>
<%=params.sgRelType ? ", sgRelType: \"" + params.sgRelType + "\"" : ""%>
<%=params.urlAdd? ", urlAdd: " + urlAddTxt : ""%>
<%=params.extraParamField? ", extraParamField: $(\"" + "#" + params.extraParamField + "\")[0]" : ""%>
<%=params.extraParamField? ", initExtraParam: \"" + safe.jsstring("" + lextraInit) + "\"": ""%>
<%=params.isBad? ", isBad: true": ""%>
<%=params.readonly? ", fieldReadonly: true": ""%>
<%=params.addfixedoption? ", addfixedoption: JSON.parse('" + safe.jsstring(JSON.stringify(params.addfixedoption)) + "')": ""%>
,highlightDescript: true
});
<% if (params.hidden)
{ %>
<%=objectName%><%=idadd%>.makeHidden();
<% } %>
});
<% if (params.moreinfo && S("faq_enabled") == 1 && params.module != "MLDB")
{ %>
disciplineselector =
{
kennisbankitems: function()
{
function process_disc_info(data, textStatus)
{
if (data.aantal_fefaq > 0 || data.aantal_fofaq > 0)
FcltMgr.openDetail("appl/fac/fac_faq_search.asp?autosearch=1&urole=bo&disc_key_str=" + disc_key, L("lcl_faq_kennisbank"));
}
var disc_key=$("#<%=fieldName%>")[0].value;
if (disc_key != -1)
{
$.getJSON("../ins/get_ins_info_ajax.asp",
{ req_info: "ins_discipline_key",
disc_key: disc_key
},
process_disc_info);
}
}
}
<% } %>
</script>
<%
}
}
%>