Files
Facilitor/APPL/Shared/plaatsselector.inc
Jos Groot Lipman 85dede4f01 FSN#34686 Diverse layout verbeteringen
svn path=/Website/trunk/; revision=27996
2016-02-02 11:15:05 +00:00

831 lines
41 KiB
C++
Raw Blame History

<% /*
$Revision$
$Id$
File: plaatsselector.inc
Description: generic interface function for seleting a 'plaats'
Deze moet je kunnen includen en aanroepen
Resulteert dan uiteindelijk in ingevulde (form) fields met voorgedefineerde naam
(deze zijn dus altijd allemaal aanwezig en beschikbaar, met een geldige waarde vanaf startlevel?):
regiokey
districtkey
locatiekey
gebouwkey
verdiepingkey
ruimtekey
werkplekkey
Moet efficient zijn (geen lange vooringevulde listboxen,
dynamisch bijladen met Ajax als de parent wordt ingevuld,
De scope (waaruit mag ik kiezen?) moet handig worden meegegeven
Bijvoorbeeld met mijn werkplekkeys (ruimte-keys of zelfs kan gebouwkey,gebouwkey,.. al goed zijn?)
en dan het scope-level
Parameters: params hash:
diverse keys
startlevel Toon plaatssuggestboxen vanaf startlevel
eindlevel Toon plaatssuggestboxen vanaf eindlevel
idadd Identieficatie verschil bij gebruik van meerdere plaatsselectoren
nolabel Toon geen labels (en <tr>, <td>) voor de suggestboxen
readonly Alles readonly
readonlylevel Dit niveau en lager is readonly
moreinfo
trclass: wordt ook op de <tr> gezet
compact Doe <td>label<br><input></td> ipv <td>label</td><td><input></td>
terrein gebouw suggestbox geeft ook de terreinen weer
onRegChange: onchange functie op het regio veld. Krijgt gekozen key als parameter
onDisChange: onchange functie op het district veld. Krijgt gekozen key als parameter
onLocChange: onchange functie op het locatie veld. Krijgt gekozen key als parameter
onGebChange: onchange functie op het gebouw veld. Krijgt gekozen key als parameter
onVerChange: onchange functie op het verdieping veld. Krijgt gekozen key als parameter
onRuiChange: onchange functie op het ruimte veld. Krijgt gekozen key als parameter
onWerChange: onchange functie op het werkplek veld. Krijgt gekozen key als parameter
onRegCascade: onchange functie op het regio veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot regio
onDisCascade: onchange functie op het district veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot district
onLocCascade: onchange functie op het locatie veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot locatie
onGebCascade: onchange functie op het gebouw veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot gebouw
onVerCascade: onchange functie op het verdieping veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot verdieping
onRuiCascade: onchange functie op het ruimte veld die alleen wordt uitgevoerd als de plaats is doorgecascadeerd tot ruimte
escalateOnChUp Als hoger plaatsveld veranderd (wordt ingevuld) als gevolg van invullen lager plaatsveld dan ook de params.onXxxChange acties uitvoeren
whenEmpty: string to show if there is no initial value
autoselect: Als true dan worden lagere levels automatisch gekozen als er maar <20><>n keuze is
required Voegt de class 'required' toe aan alle velden (doet automatisch autoselect)
requiredlevel Voegt de class 'required' (alleen) toe t/m Level
secsearch Vanaf dat level wordt class='secsearch' toegevoegd aan de tr's
urlAdd Zie suggest. Wordt aan alle levels toegevoegd
suppressEmpty Onderdrukt het veld helemaal indien EN readonly EN leeg
*/ %>
<!-- #include file="./Suggest/plaatsFilter.inc" -->
<%
FCLTHeader.Requires({ plugins: ["suggest", "jQuery"],
js: ["plaatsselector.js"],
extrahead: _initPlaatsSelector });
function _initPlaatsSelector()
{
// Bij meerdere plaatsselectoren dient voor de gemeenschappelijke clientsite functies
// onderscheid zijn tussen de verschillende regio/district/.../werkplek objecten (sgReg/sgReg1/sgReg2...)
// De gemeenschappelijke clientsite functies dienen clientsite de juiste objecten te gebruiken
// Dit wordt bijgehouden in psObject.
if (typeof useAsAjaxLoad == "undefined")
{ %>
<script type="text/javascript">
var psObject = new Array();
var onRegCascade = new Array();
var onDisCascade = new Array();
var onLocCascade = new Array();
var onGebCascade = new Array();
var onVerCascade = new Array();
var onRuiCascade = new Array();
</script>
<%
}
}
// De beoogde structuur is:
// Van ALLE plaatsvelden is een hidden -key veld aanwezig met een geldige waarde
// die heeft een name en wordt dus meegesubmit
// Daarbij is er een - inputveld aanwezig waarin de tekstuele weergave. Die heeft
// geen name en wordt dus niet meegesubmit.
function FCLTplaatsselector(alglevel, params)
{
if (typeof params=="undefined") params = {};
if ((typeof params.requiredlevel == "undefined") || params.requiredlevel == null) params.requiredlevel = -1;
if (typeof params.readonlylevel == "undefined") params.readonlylevel = -1;
var idadd = "";
if (params.idadd)
idadd = params.idadd;
var clsautoselect = (params.autoselect?" autoselect":"");
%>
<script type="text/javascript">
psObject[<%=idadd? idadd : 0%>] = {};
psObject[<%=idadd? idadd : 0%>].escalateOnChUp = (<%= params.escalateOnChUp? 1 : 0%> == 1)
psObject[<%=idadd? idadd : 0%>].onRegChange = "<%=params.onRegChange%>";
psObject[<%=idadd? idadd : 0%>].onDisChange = "<%=params.onDisChange%>";
psObject[<%=idadd? idadd : 0%>].onLocChange = "<%=params.onLocChange%>";
psObject[<%=idadd? idadd : 0%>].onGebChange = "<%=params.onGebChange%>";
psObject[<%=idadd? idadd : 0%>].onVerChange = "<%=params.onVerChange%>";
psObject[<%=idadd? idadd : 0%>].onRuiChange = "<%=params.onRuiChange%>";
onRegCascade = {};
onDisCascade = {};
onLocCascade = {};
onGebCascade = {};
onVerCascade = {};
onRuiCascade = {};
onRegCascade[<%=idadd? idadd : 0%>] = "<%=params.onRegCascade%>";
onDisCascade[<%=idadd? idadd : 0%>] = "<%=params.onDisCascade%>";
onLocCascade[<%=idadd? idadd : 0%>] = "<%=params.onLocCascade%>";
onGebCascade[<%=idadd? idadd : 0%>] = "<%=params.onGebCascade%>";
onVerCascade[<%=idadd? idadd : 0%>] = "<%=params.onVerCascade%>";
onRuiCascade[<%=idadd? idadd : 0%>] = "<%=params.onRuiCascade%>";
</script>
<%
if (params.readonly)
{
params.readonlylevel = 9; // Alles <=9 dus alles
params.required = false;
params.requiredlevel = -1;
}
if (params.required)
{
params.requiredlevel = 9; // Alles <=9 dus alles
}
// nu hoeven wel alleen nog maar rekening te houden met readonlylevel en requiredlevel
%>
<script type="text/javascript">
requiredlevel = <%=params.requiredlevel%>; // Requiredlevel bijhouden. Deze kan afhankelijk zijn van invoer.
</script>
<%
params.secsearch = params.secsearch || 9;
var toplevel = -1;
var topkey = -1;
var present0 = false;
var present1 = false;
var present2 = false;
var present3 = false;
var present4 = false;
var present5 = false;
var present6 = false;
var regiokey = -1;
var districtkey = -1;
var locatiekey = -1;
var gebouwkey = -1;
var verdiepingkey = -1;
var ruimtekey = -1;
var werkplekkey = -1;
var displaytext = "";
// determine highest given key
if (params.regiokey && params.regiokey > 0) { toplevel = 0; present0 = true; topkey = params.regiokey; }
if (params.districtkey && params.districtkey > 0) { toplevel = 1; present1 = true; topkey = params.districtkey; }
if (params.locatiekey && params.locatiekey > 0) { toplevel = 2; present2 = true; topkey = params.locatiekey; }
if (params.gebouwkey && params.gebouwkey > 0) { toplevel = 3; present3 = true; topkey = params.gebouwkey; }
if (params.verdiepingkey && params.verdiepingkey > 0) { toplevel = 4; present4 = true; topkey = params.verdiepingkey; }
if (params.ruimtekey && params.ruimtekey > 0) { toplevel = 5; present5 = true; topkey = params.ruimtekey; }
if (params.werkplekkey && params.werkplekkey > 0) { toplevel = 6; present6 = true; topkey = params.werkplekkey; }
if (typeof params.startlevel == "undefined") params.startlevel = 2;
if (typeof params.eindlevel == "undefined") params.eindlevel = 5;
if (topkey > 0)
{
// zoek de ontbrekende waarden tussen start en eind. Verfijnen!
//TODO Ook -1,0,1 ondersteunen?
if (toplevel == 0) // Locatie en lager hebben eigen sequence
{
var lsql = " SELECT r.alg_regio_key"
+ " FROM alg_regio r"
+ " WHERE r.alg_regio_key = " + topkey;
}
else if (toplevel == 1) // Locatie en lager hebben eigen sequence
{
var lsql = " SELECT d.alg_regio_key"
+ ", d.alg_district_key"
+ " FROM alg_district d "
+ " WHERE d.alg_district_key = " + topkey;
}
else if (toplevel == 2) // Locatie en lager hebben eigen sequence
{
var lsql = " SELECT d.alg_regio_key"
+ ", d.alg_district_key"
+ ", l.alg_locatie_key"
+ " FROM alg_locatie l"
+ ", alg_district d"
+ " WHERE l.alg_district_key = d.alg_district_key "
+ " AND l.alg_locatie_key = " + topkey;
}
else if (toplevel == 6)
{ // zoek de ontbrekende waarden tussen start en eind. Verfijnen!
var lsql = " SELECT alg_regio_key"
+ ", d.alg_district_key"
+ ", l.alg_locatie_key"
+ ", COALESCE(aog.alg_gebouw_key, aog.alg_terreinsector_key) alg_gebouwterr_key"
+ ", aog.alg_verdieping_key"
+ ", aog.alg_ruimte_key"
+ ", prs_werkplek_key"
+ " FROM prs_werkplek w"
+ ", alg_v_allonroerendgoed aog"
+ ", alg_locatie l"
+ ", alg_district d"
+ " WHERE w.prs_alg_ruimte_key = aog.alg_ruimte_key"
+ " AND aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key"
+ " AND w.prs_werkplek_key = " + topkey;
}
else
{ // zoek de ontbrekende waarden tussen start en eind. Verfijnen!
var lsql = " SELECT d.alg_regio_key"
+ ", d.alg_district_key"
+ ", l.alg_locatie_key"
+ ", COALESCE(aog.alg_gebouw_key, aog.alg_terreinsector_key) alg_gebouwterr_key"
+ ", aog.alg_verdieping_key"
+ ", aog.alg_ruimte_key"
+ " FROM alg_v_allonroerendgoed aog"
+ ", alg_locatie l"
+ ", alg_district d"
+ " WHERE aog.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = d.alg_district_key"
+ " AND aog.alg_onroerendgoed_keys = " + topkey;
}
var oRs = Oracle.Execute(lsql);
if (!oRs.eof)
{
// Alleen de waarden opzoeken tussen start en eind. De waarden onder start niet invullen, want deze worden niet gebruikt (en blijven dan -1).
if (toplevel >= 0 && params.startlevel <= 0) regiokey = oRs("alg_regio_key").value;
if (toplevel >= 1 && params.startlevel <= 1) districtkey = oRs("alg_district_key").value;
if (toplevel >= 2 && params.startlevel <= 2) locatiekey = oRs("alg_locatie_key").value;
if (toplevel >= 3 && params.startlevel <= 3) gebouwkey = oRs("alg_gebouwterr_key").value;
if (toplevel >= 4 && params.startlevel <= 4) verdiepingkey = oRs("alg_verdieping_key").value;
if (toplevel >= 5 && params.startlevel <= 5) ruimtekey = oRs("alg_ruimte_key").value;
if (toplevel == 6 && params.startlevel <= 6) werkplekkey = oRs("prs_werkplek_key").value;
}
oRs.close();
} // topkey > 0
function _getUrlAdd(slevel)
{
var urlAddArr = [];
for (var xx in params.urlAdd)
{
urlAddArr.push(' {urlParam: "'+params.urlAdd[xx].urlParam
+(params.urlAdd[xx].val?'", val: "'+(params.urlAdd[xx].val):"")
+(params.urlAdd[xx].field?'", field: "'+(params.urlAdd[xx].field):"")
+(params.urlAdd[xx].jqfield?'", jqfield: "'+params.urlAdd[xx].jqfield:"")
+'"}');
}
if (params.startlevel < slevel)
{
if (params.startlevel < 1 && 1 <= slevel) urlAddArr.push(' {urlParam: "regkey", field: "regiokey' + (idadd) + '"}');
if (params.startlevel < 2 && 2 <= slevel) urlAddArr.push(' {urlParam: "diskey", field: "districtkey' + (idadd) + '"}');
if (params.startlevel < 3 && 3 <= slevel) urlAddArr.push(' {urlParam: "lockey", field: "locatiekey' + (idadd) + '"}');
if (params.startlevel < 4 && 4 <= slevel) urlAddArr.push(' {urlParam: "gebkey", field: "gebouwkey' + (idadd) + '"}');
if (params.startlevel < 5 && 5 <= slevel) urlAddArr.push(' {urlParam: "verkey", field: "verdiepingkey' + (idadd) + '"}');
if (params.startlevel < 6 && 6 <= slevel) urlAddArr.push(' {urlParam: "ruikey", field: "ruimtekey' + (idadd) + '"}');
}
if (urlAddArr.length)
return 'urlAdd: [' + urlAddArr.join(",") + '],'
else
return "";
}
function _regiofield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=0 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=0 ? L("lcl_select_readonly") : L("lcl_select_regio")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
// Is er een initiele waarde meegegeven? Zoek dan de omschrijving erbij!
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseRegio(params.filtercode||params.initfiltercode, params);
sql = "SELECT r.alg_regio_omschrijving naam"
+ " FROM alg_regio r"
+ " WHERE r.alg_regio_key = " + pkey
+ filtClause;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
pname = oRs("naam").value;
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<1?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label"><label for="regio"><%=L("lcl_region")%>:</label></td>
<td>
<% } %>
<input id="regio<%=idadd%>" class="fldreg<%=params.readonlylevel<0 && params.requiredlevel >= 0? " required" : ""%><%=clsautoselect%>"
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=0? " readonly tabindex=-1": " sgonChange='onChangeReg" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onRegCascade) + "'"%>>
</td>
<% if (!params.nolabel)
{ %>
</tr>
<% }
if (params.readonlylevel<0) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgReg<%=idadd%> = new Suggest(
{ objectName: "sgReg<%=idadd%>",
queryField: $("#regio<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestRegio.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%>",
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#regiokey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgReg = sgReg<%=idadd%>;
});
function onChangeReg<%=idadd%>(key)
{
plaatsselector.regChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onRegChange) { %>
<%=params.onRegChange%>;
<% } %>
}
</script>
<% }
}
function _districtfield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=1 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=1 ? L("lcl_select_readonly") : L("lcl_select_district")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseDistrict(params.filtercode||params.initfiltercode, params);
sql = "SELECT d.alg_district_omschrijving naam"
+ " FROM alg_district d"
+ " WHERE d.alg_district_key = " + pkey
+ filtClause;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
pname = oRs("naam").value;
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<2?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label"><label for="district"><%=L("lcl_district")%>:</label></td>
<td>
<% } %>
<input id="district<%=idadd%>" class="flddis <%=params.readonlylevel<1 && params.requiredlevel >= 1? " required" : ""%><%=clsautoselect%>"
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=1? " readonly tabindex=-1": " sgonChange='onChangeDis" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onDisCascade) + "'"%>>
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<1) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgDis<%=idadd%> = new Suggest(
{ objectName: "sgDis<%=idadd%>",
queryField: $("#district<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestDistrict.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%>",
<%= _getUrlAdd(1) %>
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#districtkey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgDis = sgDis<%=idadd%>;
});
function onChangeDis<%=idadd%>(key)
{
plaatsselector.disChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onDisChange) { %>
<%=params.onDisChange%>;
<% } %>
}
</script>
<% }
}
function _locatiefield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=2 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=2 ? L("lcl_select_readonly") : L("lcl_select_locatie")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseLocatie(params.filtercode||params.initfiltercode, params);
sql = "SELECT " + S("alg_loc_string") + " naam"
+ " FROM alg_locatie l"
+ filtClause.from
+ " WHERE l.alg_locatie_key = " + pkey
+ filtClause.where;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
pname = oRs("naam").value;
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<3?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label">
<%= params.compact && params.moreinfo && params.readonlylevel<2 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_locatie_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.locatiedetails(\"#locatiekey"+idadd+"\")'></span>" : "" %>
<label class='<%=params.compact?'compact':""%>selector' for="locatie"><%=L("lcl_location")%>:</label>
<%= !params.compact&&params.moreinfo && params.readonlylevel<2 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_locatie_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.locatiedetails(\"#locatiekey"+idadd+"\")'></span>" : "" %>
<% if (params.compact) { %>
<br>
<% } else { %>
</td>
<td>
<% }
} %>
<input id="locatie<%=idadd%>"
class="fldloc<%=params.readonlylevel<2 && params.requiredlevel >= 2? " required" : ""%><%=params.readonlylevel>=2 && params.moreinfo ? " details" : ""%><%=clsautoselect%>"
<% =params.moreinfo && params.readonlylevel>=2? " title='" + safe.htmlattr(L("lcl_estate_locatie_title")) + "' onclick='plaatsselector.locatiedetails(\"#locatiekey"+idadd+"\")'" : ""%>
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=2? " readonly tabindex=-1": " sgonChange='onChangeLoc" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onLocCascade) + "'"%>>
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<2) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgLoc<%=idadd%> = new Suggest(
{ objectName: "sgLoc<%=idadd%>",
queryField: $("#locatie<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestLocatie.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%>",
<%= _getUrlAdd(2) %>
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#locatiekey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgLoc = sgLoc<%=idadd%>;
});
function onChangeLoc<%=idadd%>(key)
{
plaatsselector.locChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onLocChange) { %>
<%=params.onLocChange%>;
<% } %>
}
</script>
<% }
}
function _gebouwfield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=3 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=3 ? L("lcl_select_readonly") : L("lcl_select_gebouw")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
var pbttype = "";
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseGebouw(params.filtercode||params.initfiltercode, params);
sql = "SELECT g.alg_gebouw_code ||' '||g.alg_gebouw_naam naam"
+ ", 'B' bttype"
+ " FROM alg_gebouw g"
+ " , alg_srtgebouw sg"
+ filtClause.from
+ " WHERE g.alg_gebouw_key = " + pkey
+ " AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key(+)"
+ filtClause.where
+ (params.terrein
? " UNION"
+ " SELECT t.alg_terreinsector_code ||' '||alg_terreinsector_naam naam"
+ ", 'T' bttype"
+ " FROM alg_terreinsector t"
+ " WHERE t.alg_terreinsector_key = " + pkey
: "");
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
{
pname = oRs("naam").value;
pbttype = oRs("bttype").value;
}
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<4?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label">
<%=params.compact && params.moreinfo && params.readonlylevel<3 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_gebouw_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.gebouwdetails(\"#gebouwkey"+idadd+"\",\"#bttype"+idadd+"\")'></span>" : ""%>
<label class='<%=params.compact?'compact':""%>selector' for="gebouw"><%=params.terrein? L("lcl_bld_terra") : L("lcl_building")%>:</label>
<%=!params.compact && params.moreinfo && params.readonlylevel<3 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_gebouw_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.gebouwdetails(\"#gebouwkey"+idadd+"\",\"#bttype"+idadd+"\")'></span>" : ""%>
<% if (params.compact) { %>
<br>
<% } else { %>
</td>
<td>
<% }
} %>
<input id="gebouw<%=idadd%>" class="fldbld<%=params.readonlylevel<3 && params.requiredlevel >= 3? " required" : ""%><%=params.readonlylevel>=3 && params.moreinfo ? " details" : ""%><%=clsautoselect%>"
<% =params.moreinfo && params.readonlylevel>=3? " title='" + safe.htmlattr(L("lcl_estate_gebouw_title")) + "' onclick='plaatsselector.gebouwdetails(\"#gebouwkey"+idadd+"\",\"#bttype"+idadd+"\")'" : ""%>
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=3? " readonly tabindex=-1": " sgonChange='onChangeGeb" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onGebCascade) + "'"%>>
<input type="hidden" name="bttype<%=idadd%>" id="bttype<%=idadd%>" value="<%=pbttype%>">
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<3) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgBld<%=idadd%> = new Suggest(
{ objectName: "sgBld<%=idadd%>",
queryField: $("#gebouw<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestGebouwTerrein.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%><%=params.terrein? '&terrein=1' : ''%>",
<%= _getUrlAdd(3) %>
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#gebouwkey<%=idadd%>")[0],
extraParamField: $("#bttype<%=idadd%>")[0], // geeft aan of het een gebouw 'B' of terrein 'T' is
initExtraParam: "<%=pbttype%>"
});
psObject[<%=idadd? idadd : 0%>].sgBld = sgBld<%=idadd%>;
});
function onChangeGeb<%=idadd%>(key)
{
plaatsselector.gebChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onGebChange) { %>
<%=params.onGebChange%>;
<% } %>
}
</script>
<% }
}
function _verdiepingfield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=4 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=4 ? L("lcl_select_readonly") : L("lcl_select_verdieping")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseVerdieping(params.filtercode||params.initfiltercode, params);
sql = "SELECT v.alg_verdieping_omschrijving naam"
+ " FROM alg_verdieping v"
+ filtClause.from
+ " WHERE v.alg_verdieping_key = " + pkey
+ filtClause.where;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
pname = oRs("naam").value;
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<5?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label">
<% = params.compact && params.moreinfo && params.readonlylevel<4 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_verdieping_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.verdiepingdetails(\"#verdiepingkey"+idadd+"\")'></span>" : ""%>
<label class='<%=params.compact?'compact':""%>selector' for="verdieping"><%=L("lcl_floor")%>:</label>
<% = !params.compact && params.moreinfo && params.readonlylevel<4 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_verdieping_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.verdiepingdetails(\"#verdiepingkey"+idadd+"\")'></span>" : ""%>
<% if (params.compact) { %>
<br>
<% } else { %>
</td>
<td>
<% }
} %>
<input id="verdieping<%=idadd%>" class="fldflr<%=params.readonlylevel<4 && params.requiredlevel >= 4? " required" : ""%><%=params.readonlylevel>=4 && params.moreinfo ? " details" : ""%><%=clsautoselect%>"
<% =params.moreinfo && params.readonlylevel>=4 ? " title='" + safe.htmlattr(L("lcl_estate_verdieping_title")) + "' onclick='plaatsselector.verdiepingdetails(\"#verdiepingkey"+idadd+"\")'" : ""%>
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=4? " readonly tabindex=-1": " sgonChange='onChangeVer" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onVerCascade) + "'"%>>
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<4) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgFlr<%=idadd%> = new Suggest(
{ objectName: "sgFlr<%=idadd%>",
queryField: $("#verdieping<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/Suggestverdieping.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%>",
<%= _getUrlAdd(4) %>
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#verdiepingkey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgFlr = sgFlr<%=idadd%>;
plaatsselector.checkReadonlyVer(<%=idadd? idadd : ""%>);
});
function onChangeVer<%=idadd%>(key)
{
plaatsselector.verChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onVerChange) { %>
<%=params.onVerChange%>;
<% } %>
}
</script>
<% }
}
function _ruimtefield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=5 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=5 ? L("lcl_select_readonly") : L("lcl_select_ruimte")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
var pnr = "";
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseRuimte(params.filtercode||params.initfiltercode, params);
sql = "SELECT r.alg_ruimte_nr || NVL2(r.alg_ruimte_omschrijving, ' ('|| r.alg_ruimte_omschrijving || ')', '') naam,"
+ " r.alg_ruimte_nr"
+ " FROM alg_ruimte r"
// Tabellen alg_gebouw en alg_verdieping t.b.v filtClause
+ " , alg_verdieping v"
+ " , alg_gebouw g"
+ filtClause.from
+ " WHERE r.alg_verdieping_key = v.alg_verdieping_key"
+ " AND v.alg_gebouw_key = g.alg_gebouw_key"
+ " AND r.alg_ruimte_key = " + pkey
+ filtClause.where;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
{
pname = oRs("naam").value;
var pnr = oRs("alg_ruimte_nr").value;
}
else
pkey = -1;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<6?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label">
<% = params.compact && params.moreinfo && params.readonlylevel<5 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_ruimte_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.ruimtedetails(\"#ruimtekey"+idadd+"\")'></span>" : ""%>
<label class='<%=params.compact?'compact':""%>selector' for="ruimte"><%=L("lcl_room")%>:</label>
<% = !params.compact && params.moreinfo && params.readonlylevel<5 ? "<span class='"+(params.compact?'compact':"")+"labelextra'><img class='details' title='" + safe.htmlattr(L("lcl_estate_ruimte_title")) + "'src='../Pictures/detail.png' onclick='plaatsselector.ruimtedetails(\"#ruimtekey"+idadd+"\")'></span>" : ""%>
</td>
<td>
<% } %>
<input type="hidden" id="alg_ruimte_nr" value="<%=safe.htmlattr(pnr)%>">
<input id="ruimte<%=idadd%>" class="fldroom<%=params.readonlylevel<5 && params.requiredlevel >= 5? " required" : ""%><%=params.readonlylevel>=5 && params.moreinfo ? " details" : ""%><%=clsautoselect%>"
<% =params.moreinfo && params.readonlylevel>=5 ? " title='" + safe.htmlattr(L("lcl_estate_ruimte_title")) + "' onclick='plaatsselector.ruimtedetails(\"#ruimtekey"+idadd+"\")'" : ""%>
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=5? " readonly tabindex=-1": " sgonChange='onChangeRui" + idadd + "'" + " sgCascade='" + safe.htmlattr(params.onRuiCascade) + "'"%>>
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<5) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgRoom<%=idadd%> = new Suggest(
{ objectName: "sgRoom<%=idadd%>",
queryField: $("#ruimte<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestRuimte.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%>",
<%= _getUrlAdd(5) %>
initKey: <%=pkey%>,
extraParamField: $("#alg_ruimte_nr")[0],
initExtraParam: "<%=safe.jsstring(pnr)%>",
keyField: $("#ruimtekey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgRoom = sgRoom<%=idadd%>;
plaatsselector.checkReadonlyRui(<%=idadd? idadd : ""%>);
<% if (params.cadSelect)
{
var xfunc = user.func_enabled2("CAD", { isOptional: true });
if (xfunc && xfunc.canRead("WEB_CADUSE"))
{
%>
$("label[for=ruimte]").click(select_room).addClass("cadselect");
function select_room()
{
var vkey=$('#verdiepingkey<%=idadd%>')[0].value;
if (vkey == -1)
return;
var url = "../cad/selectRoom.asp?ver_key=" + vkey;
<% if (params.cadShowdiscfn) { %>
url += "&discs=" + cadShowdiscfn();
<% } %>
FcltMgr.openModalDetail(url,
"<%=safe.jsstring(L("lcl_select_ruimte"))%>",
{
callback: function (data)
{
if (data.rui_key > 0)
sgRoom<%=idadd%>.setValue(data.rui_key, data.rui_txt, true);
}
});
}
<% }
} %>
})
function onChangeRui<%=idadd%>(key)
{
plaatsselector.ruiChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onRuiChange) { %>
<%=params.onRuiChange%>;
<% } %>
}
</script>
<% }
}
function _werkplekfield(pkey, plevel, params)
{
if (!(pkey && pkey > 0) && params.readonlylevel>=6 && params.suppressEmpty) return;
var lwhenEmpty = (params.whenEmpty != null ? params.whenEmpty : (params.readonlylevel>=6 ? L("lcl_select_readonly") : L("lcl_select_werkplek")));
var pname = (device.test(device.supportsPlaceholder) ? "" : lwhenEmpty);
if (pkey && pkey > 0)
{
var filtClause = getFiltClauseWerkplek(params.filtercode||params.initfiltercode, params);
sql = "SELECT PRS_WERKPLEK_OMSCHRIJVING werkplek"
+ " FROM prs_werkplek w"
+ " WHERE w.prs_werkplek_key = " + pkey
+ filtClause;
var oRs = Oracle.Execute(sql);
if (!oRs.Eof) // werkplek valt misschien buiten de scope
pname = oRs("werkplek").value;
}
if (!params.nolabel)
{ %><tr class='<%=params.secsearch<7?"secsearch ":""%><%=params.trclass ? params.trclass : ""%>'>
<td class="label"><label for="wpl"><%=L("lcl_workplace")%>:</label></td>
<td>
<% } %>
<input id="werkplek<%=idadd%>" class="fldwpl<%=params.readonlylevel<6 && params.requiredlevel >= 6? " required" : ""%><%=clsautoselect%>"
value="<%=safe.htmlattr(pname)%>" placeholder="<%=lwhenEmpty%>" <%=params.readonlylevel>=6? " readonly tabindex=-1": " sgonChange='onChangeWer" + idadd + "'"%>>
<%= false && params.moreinfo ? "<img class='details' src='../Pictures/detail.png' onclick='alert(\"werkplekdetails!\")'>" : ""%>
<% if (!params.nolabel)
{ %>
</td>
</tr>
<% }
if (params.readonlylevel<6) { %>
<script type="text/javascript">
jQuery(document).ready( function()
{
sgWpl<%=idadd%> = new Suggest(
{ objectName: "sgWpl<%=idadd%>",
queryField: $("#werkplek<%=idadd%>")[0],
queryUrl: "<%=rooturl%>/appl/shared/suggest/SuggestWerkplek.asp?autlevel=<%=plevel%><%=params.filtercode? '&filtcode=' + params.filtercode : ''%><%=params.showvirtueel? '&showvirtueel=1' : ''%>",
<%= _getUrlAdd(6) %>
initKey: <%=pkey%>,
//initName: "<%=pname%>",
keyField: $("#werkplekkey<%=idadd%>")[0]
});
psObject[<%=idadd? idadd : 0%>].sgWpl = sgWpl<%=idadd%>;
plaatsselector.checkReadonlyWer(<%=idadd? idadd : ""%>);
});
function onChangeWer<%=idadd%>(key)
{
plaatsselector.werChanged(key<%=idadd != ""? ", " + idadd : ""%>);
<% if (params.onWerChange) { %>
<%=params.onWerChange%>;
<% } %>
}
</script>
<% }
}
// THIS COMPOSES THE ACTUAL SELECTOR, NO NEED TO MAKE CHANGES HERE:
if (!params.nolabel)
{ %>
<tr class="hidden">
<td>
<%
} %>
<input type="hidden" id="regiokey<%=idadd%>" name="regiokey<%=idadd%>" value="<%=regiokey%>">
<input type="hidden" id="districtkey<%=idadd%>" name="districtkey<%=idadd%>" value="<%=districtkey%>">
<input type="hidden" id="locatiekey<%=idadd%>" name="locatiekey<%=idadd%>" value="<%=locatiekey%>">
<input type="hidden" id="gebouwkey<%=idadd%>" name="gebouwkey<%=idadd%>" value="<%=gebouwkey%>">
<input type="hidden" id="verdiepingkey<%=idadd%>" name="verdiepingkey<%=idadd%>" value="<%=verdiepingkey%>">
<input type="hidden" id="ruimtekey<%=idadd%>" name="ruimtekey<%=idadd%>" value="<%=ruimtekey%>">
<input type="hidden" id="werkplekkey<%=idadd%>" name="werkplekkey<%=idadd%>" value="<%=werkplekkey%>">
<%
if (!params.nolabel)
{ %>
</td>
</tr>
<%
}
var filt_params = params;
if (params.urlAdd)
{
for (i in params.urlAdd)
{
filt_params[params.urlAdd[i].urlParam] = params.urlAdd[i].init;
}
}
if (params.startlevel <= 0 && params.eindlevel>=0) {
_regiofield(regiokey, alglevel, filt_params);
}
if (params.startlevel <= 1 && params.eindlevel >= 1) {
_districtfield(districtkey, alglevel, filt_params);
}
if (params.startlevel <= 2 && params.eindlevel >= 2) {
_locatiefield(locatiekey, alglevel, filt_params);
}
if (params.startlevel <= 3 && params.eindlevel >= 3) {
_gebouwfield(gebouwkey, alglevel, filt_params);
}
if (params.startlevel <= 4 && params.eindlevel >= 4) {
_verdiepingfield(verdiepingkey, alglevel, filt_params);
}
if (params.startlevel <= 5 && params.eindlevel >= 5) {
_ruimtefield(ruimtekey, alglevel, filt_params);
}
if (params.startlevel <= 6 && params.eindlevel >= 6) {
_werkplekfield(werkplekkey, alglevel, filt_params);
}
}
%>