574 lines
26 KiB
Plaintext
574 lines
26 KiB
Plaintext
<%@ language="javascript"%>
|
||
<% /*
|
||
$Revision$
|
||
$Id$
|
||
|
||
File: CAD/infoBord.asp
|
||
Description: Toont een verdiepingstekening met verdiepingsnavigator-balk en
|
||
presenteer daarin:
|
||
x 1) de objecten van gedefinieerde discipline(s)
|
||
x 2) of sta toe dat ruimtes worden geselecteerd
|
||
x Op de onclick wordt de klik-url van het thema of anders ../pda/reserveringen.asp voor dat object/die ruimte aangeroepen
|
||
x Kan o.a. toegepast worden voor Grafisch kiezen "werkplek" als een wp als reserveerbaar object
|
||
x is gemodelleerd), maar deze pagina weet zelf niet zoveel van de uiteindelijke toepassing
|
||
Parameters:
|
||
|
||
geb_key optional, gebouw_key of building
|
||
floor_key optional, key of floor to be (initially) selected
|
||
Either geb_key or floor_key is required (both allowed)
|
||
|
||
disc_key optional, de discipline voor objecten, leeg voor ruimtes selecteren(?).
|
||
discs optional, disciplines waarvan de layers (ook) moeten worden getoond
|
||
|
||
thema_key optional, default=12, het te tonen kleur thema, -1=geen
|
||
themaI optional, default=-1, het te tonen symboolkleurthema, -1=geen
|
||
themaW optional, default=-1, het te tonen werkplekkleurthema, -1=geen
|
||
label_key optional, default=12, het te tonen label thema, -1=geen
|
||
labelI optional, default=-1, het te tonen symboollabelthema, -1=geen
|
||
labelW optional, default=-1, het te tonen werkpleklabelthema, -1=geen
|
||
|
||
fac_usrrap_key optional, default=12, de te tonen rapportage, -1=geen
|
||
merk op dat deze kolommen hide_f_alg_gebouw_key en hide_f_alg_verdieping_key moet hebben
|
||
floor_rap optional, filter the report of fac_usrrap_key by:
|
||
0: filter fac_usrrap_key *altijd* met floor_key van zichtbare plattegrond (default)
|
||
1: filter fac_usrrap_key alleen als zichtbare plattegrond anders is dan terugval floor_key
|
||
2: filter fac_usrrap_key *nooit* (altijd hele gebouw, dat filteren we wel altijd)
|
||
datumfilter optional, date applied to date-aware theme's
|
||
|
||
bordlabel_key optional, de middels 2d-bordjes te tonen ruimteinfo in 3d tekening (3D-only)
|
||
|
||
bodyclass optional, extra class die op de <body> wordt gezet. Handig voor css overrules voor een specifiek scherm
|
||
hidenav optional, geen verdieping selector tonen (impliceert scherm op deze subverdieping)
|
||
showmode optional, 2D or 3D, default=0, 0=automatic (user may toggle), 2=only2d, 3=only3d
|
||
antialias optional, default S("fg_antialias")
|
||
|
||
zoomDWGX,
|
||
zoomDWGY optional, centercoordinaten van de tekening
|
||
zoomScale optional, zoom in op deel van de verdieping. mm per pixel, begin eens met 40
|
||
|
||
symbolX,
|
||
symbolY optional, coordinaten van een Hier staat u symbool
|
||
symbol optional, default urhere.png
|
||
|
||
wallColor optional, kleur van de zijkant van de muren (default 0xb5b5b5)
|
||
ambientLight optional, kleurtoon die over de muren heen gaat (default 0x999999)
|
||
directionalLight optional, kleur van de bovenzijde van de muren (default 0xc0c0c0)
|
||
|
||
Just passing by parameters:
|
||
link2res optional, default 1 (passed to pda/reserveringen.asp om een link naar de eigen reservering te tonen(1) of niet (0))
|
||
deel2res optional, default 0 (passed to the click-url, maar ER LIJKT NERGENS IETS MEE TE GEBEUREN?
|
||
resruimtefilter optional, default 0 (passed to mySLNK2IMG, > 0 = Verwijderde en vervallen ruimten uitsluiten(dan is default 1 logischer?)
|
||
restrict2res_disc optional, default [], (passed to pda/reserveringen.asp, res_discipline autorisatie voor (ins_deel)werkplekken)
|
||
|
||
Context:
|
||
Note: Als disc_key meegegeven dan worden alleen de verdiepingen getoond waarop die objecten voorkomen
|
||
Bij elke refresh wordt altijd teruggesprongen naar de default verdieping (floor_key).
|
||
zoomDWGX etc. is niet per verdieping. Zorg dus dat ze identiek zijn als je er meerdere hebt
|
||
Nauwkeurig DWGX DWGY etc bepalen:
|
||
- Resize je scherm naar de gewenste grootte en bepaal pixelX (breedte plaatje)
|
||
- Zoom in naar het gewenste plattegrond deel
|
||
- Rechtsklikken op de tekening voor 'About' SLNDKWF
|
||
- Dit toont (x0, y0)-(x1, y1)=sizeX,sizeY: de exacte DWG coordinaten in beeld
|
||
- Nu: zoomDWGX = x0+(sizeX/2)
|
||
zoomDWGY = y0+(sizeY/2)
|
||
zoomScale = sizeX / pixelX
|
||
|
||
aaen: http://sgf12/facilitor5iwork/appl/cad/showGebouw.asp?geb_key=5404&thema_key=41&label_key=21&floor_key=5563&zoomDWGX=45303&zoomDWGY=19107&zoomScale=0.015
|
||
aait: http://sgf12/facilitor5iwork/appl/cad/showGebouw.asp?geb_key=49&thema_key=21&label_key=-1&floor_key=72&zoomDWGX=25190&zoomDWGY=15464&zoomScale=0.02
|
||
*/
|
||
%>
|
||
<!-- #include file="../Shared/common.inc" -->
|
||
<!-- #include file="../Shared/iface.inc" -->
|
||
<!-- #include file="FGII.inc" -->
|
||
|
||
<%
|
||
FCLTHeader.Requires({ js: ["jquery-ui.js", "date.js"]
|
||
});
|
||
|
||
var geb_key = getQParamInt("geb_key", -1);
|
||
var disc_key = getQParamInt("disc_key", -1) // De *object* discipline (typisch Bouwkunde)
|
||
var restrict2res = getQParamIntArray("restrict2res_disc", []);
|
||
var discs = getQParamIntArray("discs", []) // Te tonen disciplines (ondergrond bijvoorbeeld)
|
||
var thema_key = getQParamInt("thema_key", S("fg_infobordthema_key")); // In de core is een default thema met key <12> gedefinieerd (cad_v_thema_srtruimtesensor)
|
||
if (thema_key == -1) thema_key = S("fg_infobordthema_key"); // alsnog, de code is nog niet bestand tegen themaloos aanroepen
|
||
var themai_key = getQParamInt("themai", -1);
|
||
var label_key = getQParamInt("label_key", S("fg_infobordlabel_key")); // In de core is een default labelthema met key <12> gedefinieerd (cad_v_label_bezetbareruimtes)
|
||
var bordlabel_key = getQParamInt("bordlabel_key", -1);//
|
||
var contmode = getQParamInt("contmode", 0); //
|
||
|
||
var floor_rap = getQParamInt("floor_rap", 0);
|
||
var datumfilter = getQParamDate("datumfilter", null);
|
||
|
||
var bodyclass = getQParamSafe("bodyclass", "");
|
||
|
||
var floor_key = def_floor_key = getQParamInt("floor_key", -1);
|
||
var avail_flrs = getQParamIntArray("avail_flrs", []);
|
||
if (geb_key == -1 && floor_key != -1) {
|
||
sql = "SELECT alg_gebouw_key FROM alg_verdieping WHERE alg_verdieping_key="+floor_key;
|
||
oRs = Oracle.Execute(sql);
|
||
geb_key = oRs("alg_gebouw_key").value;
|
||
oRs.Close();
|
||
}
|
||
var hidenav = getQParamInt("hidenav", 0); // optie: toon geen floornavigator
|
||
|
||
var fac_usrrap_key = getQParamInt("fac_usrrap_key", S("fg_infobordreport_key")); // In de core is een default usrrap (res_v_rap_infobordframe) met key <12> gedefinieerd
|
||
|
||
var zoomScale = getQParamFloat("zoomScale", -1);
|
||
var zoomDWGX = getQParamFloat("zoomDWGX", null);
|
||
var zoomDWGY = getQParamFloat("zoomDWGY", null);
|
||
|
||
var link2res = getQParamInt("link2res", 1);
|
||
var deel2res = getQParamInt("deel2res", 0);
|
||
var rrfilter = getQParamInt("resruimtefilter", 0);
|
||
|
||
// floorkey is doorgaans nog niet bekend hier.
|
||
//if (floor_key > 0 && getQParamInt("autozoom", 0)== 1 && discs.length)
|
||
//{
|
||
// var sql = "SELECT MIN(ins_deel_dwgx) xmin, MAX(ins_deel_dwgx) xmax,"
|
||
// + " MIN(ins_deel_dwgy) ymin, MAX(ins_deel_dwgy) ymax,"
|
||
// + " FROM ins_v_aanwezigdeel, alg_ruimte"
|
||
// + " WHERE ins_discipline_key IN (" + discs.join(",") +")"
|
||
// + " AND alg_verdieping_key = " + floor_key
|
||
// + " AND ins_alg_ruimte_key = ins_alg_ruimte_key"
|
||
// + " AND ins_alg_ruimte_type = 'R'";
|
||
// __DoLog(sql);
|
||
//}
|
||
|
||
// Voor de 'U staat hier'
|
||
// Liever wil ik dat ze het ins_deel ('scherm') tekenen en dan een ins_key meegeven
|
||
var symbolX = getQParamFloat("symbolX", null);
|
||
var symbolY = getQParamFloat("symbolY", null);
|
||
var symbol = getQParam("symbol", null);
|
||
|
||
// Nieuw
|
||
var showmode = getQParamInt("showmode", 0); // 0=automatic (user may toggle), 2=only2d, 3=only3d (mis nog: user may toggle but start with 2d/3d)
|
||
|
||
var antialias = getQParamInt("antialias", S("fg_antialias"));
|
||
|
||
var my_cadrechten = user.func_enabled("CAD"); // negeer scope, we kunnen zo maar van verdieping wisselen
|
||
var autfunction= "WEB_CADUSE";
|
||
var authparams = user.checkAutorisation(autfunction); // voor kiezen *andere* verdiepingen
|
||
|
||
// buildTransitParam met de settings die voor alle verdiepingen gelijk zullen zijn.
|
||
var transit = buildTransitParam("symbolX,symbolY,symbol,floor_key,bordlabel_key,werkplek,mode,contmode,nolabel,camx,camy,camz,hpix,vpix,scl,ox,oy,rot,wallColor,ambientLight,directionalLight,labelrot,wallw,wallh,datumfilter,link2res");
|
||
|
||
var mapper = "3dize.asp?x=1" + transit;
|
||
var mapper2D = "../SlnkDWF/ToonIMG.asp?ShowButtons=1" + transit;
|
||
|
||
if (fac_usrrap_key > -1)
|
||
{
|
||
// parameters voor de rapportage, typisch de verdieping_key
|
||
var params = "&nobuttons=1&bodyclass=rflrscreen"; // ik wil een uniek id tbv css styling
|
||
params += "&fclt_f_colname1=hide_f_alg_gebouw_key&fclt_f_colvalue1=" + geb_key;
|
||
// rapperBase is zonder floor_key
|
||
var rapperBase = "../../appl/fac/fac_usrrap_list.asp?usrrap_key=" + fac_usrrap_key + params;
|
||
if (floor_rap==0) // Dan altijd er bij
|
||
rapperBase += "&fclt_f_colname2=hide_f_alg_verdieping_key&fclt_f_colvalue2=" + floor_key;
|
||
}
|
||
|
||
%>
|
||
<html>
|
||
<head>
|
||
<% FCLTHeader.Generate(); %>
|
||
<title><%= L("lcl_facilitor_infobord") %> </title>
|
||
|
||
<script type="text/javascript">
|
||
var floor_key = <%=floor_key%>;
|
||
var zoomDWGX = <%=safe.jsfloat(zoomDWGX)%>;
|
||
var zoomDWGY = <%=safe.jsfloat(zoomDWGY)%>;
|
||
var zoomScale = <%=safe.jsfloat(1 / zoomScale)%>;
|
||
var showmode = <%=showmode%>;
|
||
var dimension = <%=(showmode == 2 ? 2 : 3)%>;
|
||
|
||
var autozoomed = false;
|
||
function OnFloorChanged(deze, fkey, pdimension)
|
||
{
|
||
window.dimension = pdimension || window.dimension;
|
||
$("input[type=button]").removeClass("selected");
|
||
if (deze)
|
||
$(deze).addClass("selected");
|
||
floor_key = -1; // Eventkes invalid
|
||
resetMap();
|
||
floor_key = fkey;
|
||
window.autozoomed = false;
|
||
//myRefresh();
|
||
var mapper = window.dimension==2?"<%=safe.jsstring(mapper2D)%>":"<%=safe.jsstring(mapper)%>";
|
||
var rapper = "<%=safe.jsstring(rapperBase)%>";
|
||
if (floor_key == <%=floor_key%>)
|
||
{
|
||
mapper += "&showSymbol=1"
|
||
}
|
||
|
||
<% if (floor_rap == 1) { %>
|
||
if (floor_key != <%=floor_key%>)
|
||
rapper += "&fclt_f_colname2=hide_f_alg_verdieping_key&fclt_f_colvalue2=" + floor_key;
|
||
<% } %>
|
||
|
||
$("#MMap")[0].src = mapper; // Forceer refresh
|
||
|
||
if ($("#RRap").length)
|
||
$("#RRap")[0].src = rapper;
|
||
}
|
||
|
||
/************************************************************\
|
||
* We know all we need. Now refresh the image on the right
|
||
\************************************************************/
|
||
function myRefresh()
|
||
{
|
||
MMap.SetCustomParameters(getCustomParameters())
|
||
|
||
if (window.dimension==3)
|
||
{
|
||
// Eerst een keer het plaatje heel globaal renderen om dwg-info te achterhalen
|
||
$.getJSON("../CAD/mySlnk2IMG.asp?AsMap=1&vKey=" + floor_key, { }, function (pSLNKEvent)
|
||
{
|
||
MMap.gSLNKEvent = pSLNKEvent;
|
||
if (window.zoomDWGX === null || window.zoomDWGX === null)
|
||
{
|
||
window.zoomDWGX = (pSLNKEvent.DWGminX + pSLNKEvent.DWGmaxX) / 2;
|
||
window.zoomDWGY = (pSLNKEvent.DWGminY + pSLNKEvent.DWGmaxY) / 2;
|
||
}
|
||
if (window.zoomScale < 0)
|
||
window.zoomScale = Math.min(window.innerWidth / (pSLNKEvent.DWGmaxX - pSLNKEvent.DWGminX),
|
||
window.innerHeight / (pSLNKEvent.DWGmaxY - pSLNKEvent.DWGminY));
|
||
MMap.zoom2DWG(zoomDWGX, zoomDWGY, zoomScale);
|
||
MMap.Refresh(); // Try not to zoom extents
|
||
} );
|
||
}
|
||
else
|
||
MMap.Refresh();
|
||
|
||
|
||
}
|
||
function to2D()
|
||
{
|
||
OnFloorChanged(null, floor_key, 2);
|
||
}
|
||
|
||
function to3D()
|
||
{
|
||
OnFloorChanged(null, floor_key, 3);
|
||
}
|
||
|
||
function getCustomParameters()
|
||
{
|
||
return "&vKey=" + floor_key +
|
||
"&disc_key=<%=disc_key%>" +
|
||
"&discs=<%=discs%>" +
|
||
"&thema=<%=thema_key%>" +
|
||
"&themaI=<%=getQParamInt("themaI", -1)%>" +
|
||
"&themaW=<%=getQParamInt("themaW", -1)%>" +
|
||
"&label=" + (dimension==2&&<%=label_key%>==-1?<%=bordlabel_key%>:<%=label_key%>) +
|
||
"&labelI=<%=getQParamInt("labelI", -1)%>" +
|
||
"&labelW=<%=getQParamInt("labelW", -1)%>" +
|
||
"&antialias=<%=antialias%>" +
|
||
"&contmode=<%=contmode%>" +
|
||
"&highlight=" + window.alg_ruimte_key +
|
||
"&ins_key=" + window.ins_key // zojuist gereserveerd
|
||
+"&deel2res=" + <%=deel2res?deel2res:0%>
|
||
+"&resruimtefilter=" + <%=rrfilter?rrfilter:0%>
|
||
+"&datumfilter=" + <%= datumfilter?datumfilter.getTime():0 %>;
|
||
|
||
}
|
||
|
||
/************************************************************\
|
||
* This event gets fired by the SLNKDWF viewer after the user
|
||
* clicked on the drawing.
|
||
* Note that by now myFindInIMG.asp has already translated
|
||
* the room-label or object-label into a ALG_RUIMTE_KEY
|
||
* or INS_DEEL_KEY
|
||
\************************************************************/
|
||
window.ins_key = -1;
|
||
window.alg_ruimte_key = -1;
|
||
function callback_reserved(json)
|
||
{
|
||
if (json.cancel)
|
||
{
|
||
window.ins_key = -1;
|
||
window.alg_ruimte_key = -1;
|
||
}
|
||
myRefresh();
|
||
}
|
||
|
||
function MMap_onClick(SlnkEvent)
|
||
{
|
||
// Voorkom dat de popup verdwijnt door de reload. Laat wel een timeout staan zodat
|
||
// het scherm uiteindelijk zich wel ververst als iemand wegloopt met open popup
|
||
if (parent.resetReload)
|
||
parent.resetReload();
|
||
|
||
switch (SlnkEvent.Param)
|
||
{
|
||
case "onclick":
|
||
case "ondblclick":
|
||
{
|
||
if (SlnkEvent.Key)
|
||
{ // Zoek het object/ ruimte
|
||
var css_style = (window.innerWidth > 500 ? "min-width: 480px;" : ""); // fix too small modal on wide screen RABO#
|
||
if (String(SlnkEvent.Key).match(/^I:/)) // INS_DEEL
|
||
{
|
||
var intKey = parseInt(SlnkEvent.Key.substring(2),10);
|
||
window.ins_key = intKey; // onthouden
|
||
window.alg_ruimte_key = -1
|
||
var url = (SlnkEvent.click_urlI || "../pda/reserveringen.asp?qrc=1&modal=1&ins_key=") + intKey;
|
||
url += "&res_van=" + <%= datumfilter?datumfilter.getTime():0 %>;
|
||
url += "&deel2res=" + <%= deel2res %>;
|
||
url += "&restrict2res_disc=<%=restrict2res.join(',')%>"
|
||
MMap.noAutoResize(true); // rustiger
|
||
FcltMgr.openModalDetail(url, "", { callback: callback_reserved, alwaysCallback: true, xnoClose: true, style: css_style });
|
||
MMap.noAutoResize(false);
|
||
}
|
||
if (SlnkEvent.Key > 0 && SlnkEvent.ContourLayer == "SLNK Contours") // RUIMTE
|
||
{
|
||
var alg_ruimte_key = SlnkEvent.Key;
|
||
window.ins_key = -1;
|
||
window.alg_ruimte_key = alg_ruimte_key; // onthouden
|
||
var url = (SlnkEvent.click_urlR || "../pda/reserveringen.asp?qrc=1&modal=1&alg_ruimte_key=") + alg_ruimte_key;
|
||
url += "&res_van=" + <%= datumfilter?datumfilter.getTime():0 %>;
|
||
url += "&deel2res=" + <%= deel2res %>;
|
||
MMap.noAutoResize(true); // rustiger
|
||
FcltMgr.openModalDetail(url, "", { callback: callback_reserved, alwaysCallbackParams: {}, xnoClose: true, style: css_style });
|
||
MMap.noAutoResize(false);
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
function resetMap()
|
||
{
|
||
if (!MMap || !MMap.Reset)
|
||
return; // Safari: te vroeg
|
||
MMap.Reset();
|
||
MMap.SetLabelPosition(<%=S("fg_labelPosition")%>);
|
||
MMap.SetIMGGenerator("../CAD/mySlnk2IMG.asp");
|
||
MMap.SetPaperColor(<%=S("fg_paperColor")%>);
|
||
}
|
||
|
||
function resizeIframes()
|
||
{
|
||
return; // Hij is toch te laat want 3Dsize heeft al naar innerHeight gekeken
|
||
|
||
var tabheight = 10; // die is floating $("#theReport").height();
|
||
|
||
if ($('#MMap').height() != window.innerHeight - tabheight)
|
||
{
|
||
// $('#MMap').height(window.innerHeight - tabheight);
|
||
}
|
||
};
|
||
|
||
var /*global*/ resizeTimerID=null;
|
||
function init()
|
||
{
|
||
// IE11? window.MMap = document.getElementById("MMap");
|
||
resizeIframes();
|
||
resetMap();
|
||
if (floor_key > 0)
|
||
myRefresh();
|
||
|
||
window.onresize = function()
|
||
{
|
||
if (window.resizeTimerID) clearTimeout(window.resizeTimerID);
|
||
window.resizeTimerID = setTimeout(resizeIframes, 100);// use a delay for IE because the resize event fires repeatly
|
||
}
|
||
<% if (thema_key > 0 || themai_key > 0) { %>
|
||
$("#fslegenda").load("legenda.asp?thema=<%=thema_key%>&themai=<%=themai_key%>&scenario_key=0&parentKey="+floor_key+"&mode=0&fulldiscreet=1&showtitle=0&LegendaFilter=L<%= datumfilter?'&datumfilter='+datumfilter.getTime():'' %>");
|
||
<% } %>
|
||
}
|
||
|
||
function updateClock()
|
||
{
|
||
var newDate = new Date();
|
||
$('#date').html(toDateString(newDate));
|
||
$('#time').html(toTimeString(newDate, true));
|
||
}
|
||
$(function () {
|
||
setInterval( updateClock, 1000);
|
||
} );
|
||
</script>
|
||
</head>
|
||
|
||
<body id="floorscreen<%=geb_key%>" class="floorscreen <%=bodyclass%>">
|
||
|
||
<div id='fsmenu'>
|
||
<div id='fsnavigation'>
|
||
<%
|
||
Response.Write("<div id='fslogo'></div>");
|
||
sql = "SELECT alg_locatie_omschrijving"
|
||
+ " , alg_gebouw_naam"
|
||
+ " FROM alg_v_gebouw_gegevens ag"
|
||
+ " WHERE ag.alg_gebouw_key = " + geb_key;
|
||
var oRs = Oracle.Execute(sql);
|
||
Response.Write("<h2 class='floorscreen'>" + safe.html(oRs("alg_locatie_omschrijving").value) + "</h2>");
|
||
Response.Write("<h2 class='floorscreen'>" + safe.html(oRs("alg_gebouw_naam").value) + "</h2>");
|
||
if (datumfilter)
|
||
{
|
||
Response.Write("<h2 class='infodatumfilter'>" + toDateString(datumfilter, false, true) + "</h2>");
|
||
if (showmode == 0)
|
||
{
|
||
Response.Write("<button onclick='to2D()'>2D</button'><button onclick='to3D()'>3D</button>");
|
||
}
|
||
}
|
||
oRs.Close();
|
||
|
||
if (thema_key > 0)
|
||
{
|
||
sql = "SELECT cad_thema_view, cad_legenda_key"
|
||
+ " FROM cad_thema"
|
||
+ " WHERE cad_thema_key = " + thema_key;
|
||
var oRs = Oracle.Execute(sql);
|
||
var thema_view = oRs("cad_thema_view").Value;
|
||
var legenda_key = oRs("cad_legenda_key").Value;
|
||
oRs.Close();
|
||
|
||
if (disc_key > 0)
|
||
{
|
||
var sqlMaxKleur = "SELECT ar.alg_verdieping_key, MAX(thema.waarde) waarde, ti.cad_legendawaarde_rgb, count(*) aantal "
|
||
+ " FROM ins_deel id, "
|
||
+ " ins_srtdeel isd, "
|
||
+ " alg_ruimte ar, "
|
||
+ " ( "+ thema_view + ") THEMA, "
|
||
+ " cad_legendawaarde TI "
|
||
+ " WHERE id.ins_alg_ruimte_key = ar.alg_ruimte_key "
|
||
+ " AND id.ins_srtdeel_key = isd.ins_srtdeel_key "
|
||
+ " AND ins_deel_verwijder IS NULL "
|
||
+ " AND (ins_deel_vervaldatum IS NULL OR ins_deel_vervaldatum > TRUNC(SYSDATE))"
|
||
+ " AND ins_deel_parent_key IS NULL "
|
||
+ " AND ins_srtdeel_acadsymbol is not null "
|
||
+ " AND id.ins_discipline_key = " + disc_key
|
||
+ " AND THEMA.ins_deel_key = id.ins_deel_key "
|
||
+ " AND thema.waarde >= ti.cad_legendawaarde_value"
|
||
+ " AND NOT EXISTS" // geen grotere waarde waar hij onder zou vallen
|
||
+ " (SELECT '1' FROM cad_legendawaarde ti2"
|
||
+ " WHERE ti2.cad_legendawaarde_value > ti.cad_legendawaarde_value"
|
||
+ " AND thema.waarde >= ti2.cad_legendawaarde_value"
|
||
+ " AND ti2.cad_legenda_key = " + legenda_key + ")"
|
||
+ " AND ti.cad_legenda_key = " + legenda_key
|
||
+ " GROUP BY ar.alg_verdieping_key, ti.cad_legendawaarde_rgb, ti.cad_legendawaarde_rgb";
|
||
}
|
||
else // Ruimte mode
|
||
{
|
||
var sqlMaxKleur = "SELECT ar.alg_verdieping_key, MAX(thema.waarde) waarde, ti.cad_legendawaarde_rgb, count(*) aantal "
|
||
+ " FROM alg_ruimte ar, "
|
||
+ " ( "+ thema_view + ") THEMA, "
|
||
+ " cad_legendawaarde TI "
|
||
+ " WHERE THEMA.alg_ruimte_key = ar.alg_ruimte_key "
|
||
+ " AND thema.waarde >= ti.cad_legendawaarde_value"
|
||
+ " AND NOT EXISTS"
|
||
+ " (SELECT '1' FROM cad_legendawaarde ti2"
|
||
+ " WHERE ti2.cad_legendawaarde_value > ti.cad_legendawaarde_value"
|
||
+ " AND thema.waarde >= ti2.cad_legendawaarde_value"
|
||
+ " AND ti2.cad_legenda_key = " + legenda_key + ")"
|
||
+ " AND ti.cad_legenda_key = " + legenda_key
|
||
+ " GROUP BY ar.alg_verdieping_key, ti.cad_legendawaarde_rgb, ti.cad_legendawaarde_rgb";
|
||
}
|
||
} else {
|
||
var sqlMaxKleur = "/*TODO indien te ondersteunen*/ SELECT NULL alg_verdieping_key, NULL waarde, NULL cad_legendawaarde_rgb, NULL aantal FROM DUAL";
|
||
}
|
||
|
||
// TODO: Query optimalizeren zodat alleen <20><>n record met de hoogste 'waarde' er uit komen?
|
||
// Nu zijn we nog lui en sorteren de hoogste vooraan en negeren in de loop de rest.
|
||
sql = "SELECT v.alg_verdieping_key, v.alg_verdieping_code"
|
||
+ " , v.alg_verdieping_omschrijving"
|
||
+ " , maxkleur.cad_legendawaarde_rgb"
|
||
+ " , maxkleur.waarde"
|
||
+ " , aantal"
|
||
+ " FROM alg_v_aanwezigverdieping v, "
|
||
+ " cad_tekening ct," // er moet wel een tekenig voor zijn
|
||
+ " (" + sqlMaxKleur + ") maxkleur"
|
||
+ " WHERE v.alg_gebouw_key = " + geb_key
|
||
+ " AND v.alg_verdieping_key = maxkleur.alg_verdieping_key"
|
||
+ " AND ct.alg_verdieping_key = v.alg_verdieping_key";
|
||
if (disc_key > 0)
|
||
{
|
||
sql += " AND EXISTS"
|
||
+ " (SELECT ar.alg_verdieping_key"
|
||
+ " FROM ins_v_aanwezigdeel idd,"
|
||
+ " ins_srtdeel isd,"
|
||
+ " alg_ruimte ar"
|
||
+ " WHERE idd.ins_discipline_key = " + disc_key
|
||
+ " AND idd.ins_srtdeel_key = isd.ins_srtdeel_key"
|
||
+ " AND isd.ins_srtdeel_acadsymbol IS NOT NULL"
|
||
+ " AND idd.ins_alg_ruimte_type = 'R'"
|
||
+ " AND idd.ins_alg_ruimte_key = ar.alg_ruimte_key"
|
||
+ " AND ar.alg_verdieping_key = v.alg_verdieping_key"
|
||
+ " AND (idd.ins_deel_vervaldatum IS NULL OR idd.ins_deel_vervaldatum > TRUNC(SYSDATE))"
|
||
+ ")"
|
||
}
|
||
if (avail_flrs.length)
|
||
sql += " AND v.alg_verdieping_key IN (" + avail_flrs.join(", ") + ")"
|
||
sql += " ORDER BY v.alg_verdieping_volgnr, maxkleur.waarde DESC"; // 'Hoogste' waarde vooraan (PF: kleur irrelevant voor volgorde)
|
||
var oRs = Oracle.Execute(sql);
|
||
|
||
Response.Write("<div id='verdiepingen' style='"+(hidenav ? 'display:none': '')+"'>");
|
||
var last_floor_key = -1;
|
||
var nrfloors = 0;
|
||
while (!oRs.Eof)
|
||
{
|
||
if (last_floor_key == oRs("alg_verdieping_key").Value)
|
||
{
|
||
oRs.MoveNext();
|
||
continue;
|
||
}
|
||
nrfloors += 1;
|
||
var desc = oRs("alg_verdieping_omschrijving").Value;
|
||
if (oRs("aantal").Value > 0 && oRs("waarde").Value > 0)
|
||
desc += " ("+oRs("aantal").Value+ ")";
|
||
Response.Write("\n<input type='button' value='" + safe.htmlattr(desc) + "'"
|
||
+ (oRs("alg_verdieping_key").Value == floor_key?" class='selected flrbutton'":"class='flrbutton'")
|
||
+ (0 && oRs("cad_legendawaarde_rgb").Value ? " style='background-color:#" + safe.htmlattr(toHexValue(oRs("cad_legendawaarde_rgb").Value)) + "'":"")
|
||
+ " onclick='OnFloorChanged(this, "+oRs("alg_verdieping_key").Value+", showmode)'"
|
||
+">");
|
||
last_floor_key = oRs("alg_verdieping_key").Value;
|
||
oRs.MoveNext();
|
||
}
|
||
oRs.Close()
|
||
Response.Write("</div>");
|
||
// de default width volgens .flrbutton is 150px. Als er veel verdiepingen zijn wil je comprimeren
|
||
// door meer buttons naast elkaar te doen. We gaan uit van 10 button-regels hoogte
|
||
if (nrfloors > 20 ) {
|
||
%><script>$(".flrbutton").width("38px");</script><%
|
||
} else if (nrfloors > 10 ) {
|
||
%><script>$(".flrbutton").width("70px");</script><%
|
||
}
|
||
%>
|
||
</div>
|
||
<div id='fslegenda'></div>
|
||
</div>
|
||
|
||
<!-- ==========================
|
||
HET plaatje
|
||
============================ -->
|
||
|
||
<div id = 'mapCell3D' class="floorscreen">
|
||
<iframe id='MMap' name='MMap' src="<%=safe.htmlattr(showmode==2?mapper2D:mapper)%>&showSymbol=1"
|
||
frameborder='0' framespacing='0' scrolling='no'
|
||
onLoad='init();'
|
||
width="100%" height="100%">
|
||
</iframe>
|
||
</div>
|
||
<%
|
||
if (fac_usrrap_key > -1)
|
||
{
|
||
var rapper = rapperBase;
|
||
%>
|
||
<div id='theReport' class="floorscreen">
|
||
<iframe id='RRap' name='RRap' src="<%=safe.htmlattr(rapper)%>"
|
||
frameborder='0' framespacing='0' scrolling='no'
|
||
onload="FcltMgr.iframeLoaded(this)"
|
||
width="100%" height="26px">
|
||
</iframe>
|
||
</div>
|
||
|
||
<div id='theClock'>
|
||
<span id='date'></span><br>
|
||
<span id='time'></span>
|
||
</div>
|
||
<%
|
||
}
|
||
%>
|
||
</body>
|
||
</html>
|
||
<% ASPPAGE_END(); %>
|