1545 lines
60 KiB
Plaintext
1545 lines
60 KiB
Plaintext
<%@ language="javascript"%>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: CAD/default.asp
|
|
Description: Hoofdscherm voor Facilitor Graphics II
|
|
Parameters:
|
|
mode optional: [MODE_IN] or [MODE_OUT]. Default via fg_startBuiten
|
|
loc_key optional locatie key (default eigen werkplek)
|
|
scenario_key optional: dan zitten we in PRJ-mode (en impliciet binnen)
|
|
floor_key optional (als in scenario_mode)
|
|
Context: Geen, wordt geopend in een nieuw window
|
|
Note:
|
|
*/
|
|
%>
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/selector.inc" -->
|
|
<!-- #include file="../Shared/iface.inc" -->
|
|
<!-- #include file="../Shared/plaatsselector.inc" -->
|
|
<!-- #include file="./tabs.inc" -->
|
|
<!-- #include file="FGII.inc" -->
|
|
|
|
<%
|
|
FCLTHeader.Requires({ js: ["jquery-ui.js", "./main.js", "./draganddrop.js"],
|
|
css: ["../slnkdwf/slnkdwf.css"]
|
|
});
|
|
|
|
var inoutMode = getQParamInt("mode", S("fg_startBuiten")? MODE_OUT : MODE_IN);
|
|
var loc_key = getQParamInt("loc_key", user.alg_locatie_key());
|
|
var scenario_key = getQParamInt("scenario_key", 0); // current scenario, 0 voor geen
|
|
var concept = getQParamInt("concept", 0) == 1; // concept er naast?
|
|
var showcontour = getQParamInt("contour", 1) == 1; // Contour initieel tonen?
|
|
|
|
var floor_key = getQParamInt("floor_key", user.alg_verdieping_key()); // current floor
|
|
if (floor_key > 0)
|
|
{
|
|
sql = " SELECT g.alg_locatie_key, g.alg_gebouw_key"
|
|
+ " FROM alg_verdieping v, alg_gebouw g"
|
|
+ " WHERE g.alg_gebouw_key = v.alg_gebouw_key"
|
|
+ " AND v.alg_verdieping_key = " + floor_key;
|
|
|
|
oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
{
|
|
loc_key = oRs("alg_locatie_key").value;
|
|
this_bld = oRs("alg_gebouw_key").value;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this_bld = -1;
|
|
}
|
|
|
|
var my_cadrechten = user.func_enabled("CAD"); // negeer scope, we kunnen zo maar van verdieping wisselen
|
|
var autfunction=(scenario_key == 0)? "WEB_CADUSE" : "WEB_PRJBOF";
|
|
var authparams = user.checkAutorisation(autfunction); // voor kiezen *andere* verdiepingen
|
|
|
|
cleanup_tempfolder (); // FGII werkt niet zonder schrijfrechten op temp dus
|
|
// heb je in ieder geval wel de rechten om op te ruimen
|
|
|
|
if (scenario_key != 0)
|
|
{
|
|
var scenario_omschrijving = "";
|
|
sql = " SELECT m.mld_melding_omschrijving"
|
|
+ " FROM prj_scenario s, mld_melding m"
|
|
+ " WHERE s.mld_melding_key = m.mld_melding_key"
|
|
+ " AND prj_scenario_key = " + scenario_key;
|
|
var oRs = Oracle.Execute(sql);
|
|
if (!oRs.eof)
|
|
scenario_omschrijving = oRs(0).value;
|
|
oRs.Close();
|
|
}
|
|
// Altijd scrollbar voor lange tabbladen onderin. Voorkom dat
|
|
// hij er soms bijkomt en een repaint van het plaatje veroorzaakt.
|
|
%>
|
|
<html style='overflow-y:scroll'>
|
|
<head>
|
|
<% FCLTHeader.Generate(); %>
|
|
<title><%=(scenario_key == 0)? L("lcl_graphics") : (L("lcl_prj_graphics") + ": " + L("lcl_prj_scenario") + " " + scenario_omschrijving) %> </title>
|
|
|
|
<script type="text/javascript">
|
|
var scenario_key = <%=scenario_key%>;
|
|
var floor_key = <%=floor_key%>;
|
|
|
|
function onScenarioChange(sel)
|
|
{
|
|
/*global*/scenario_key = sel[sel.selectedIndex].value;
|
|
floor_key = $("#verdiepingkey").val();
|
|
OnFloorChanged(floor_key, true); // Keep zoom
|
|
}
|
|
|
|
function OnLocationChanged(sel)
|
|
{
|
|
<% if (inoutMode == MODE_OUT)
|
|
{ %>
|
|
ter = -1;
|
|
loc_key = $("#locatiekey").val();
|
|
if (loc_key > 0)
|
|
{
|
|
$("#terr").load("../Shared/loadTerreinOptions.asp?loc_key=" + loc_key, myRefresh);
|
|
}
|
|
<% } %>
|
|
}
|
|
|
|
var forceRoom = -1; // dadelijk highlighten (main.js/gotoRoom)
|
|
function OnFloorChanged()
|
|
{
|
|
floor_key = -1; // Eventkes invalid
|
|
resetMap();
|
|
floor_key = $("#verdiepingkey").val();
|
|
if (floor_key > 0)
|
|
{
|
|
<% if (scenario_key == 0)
|
|
{ %>
|
|
$("#rooms").load("../Shared/loadRuimteOptions.asp?floor_key=" + floor_key + "&ruimte_key=" + forceRoom, myRefresh);
|
|
<% }
|
|
else
|
|
{ %>
|
|
updatePRJRooms(floor_key, scenario_key); // Load the rooms when not loaded yet
|
|
<% } %>
|
|
}
|
|
// else is aanroeper daar zelf verantwoordelijk voor
|
|
forceRoom = -1;
|
|
RefreshLegenda(); // Deze altijd omdat hij toch onafhankelijk is van de inhoud van het plaatje
|
|
}
|
|
|
|
/************************************************************\
|
|
* We know all we need. Now refresh the image on the right
|
|
\************************************************************/
|
|
function myRefresh()
|
|
{ // $("#rooms:option").dblclick(function() { MMap.zoom2DWG(???) });
|
|
|
|
sDiscsChanged();
|
|
|
|
<% if (inoutMode == MODE_IN) { %>
|
|
myRefreshInside();
|
|
<% } else { %>
|
|
myRefreshOutside();
|
|
<% } %>
|
|
}
|
|
|
|
function getCustomParameters(noVKey)
|
|
{
|
|
thmSelect = document.getElementById("sThemaIn");
|
|
lblSelect = document.getElementById("sLabelIn");
|
|
var opts = document.getElementById("sDiscsIn").options;
|
|
<% if (inoutMode == MODE_IN) { %>
|
|
key = floor_key;
|
|
<% } else { %>
|
|
key = $("#locatiekey").val();
|
|
<% } %>
|
|
thmKey = thmSelect[thmSelect.selectedIndex].value;
|
|
lblKey = lblSelect[lblSelect.selectedIndex].value;
|
|
|
|
var keyList = ""
|
|
var i;
|
|
for(i = 0; i < opts.length; i++)
|
|
{
|
|
if (opts[i].selected && opts[i].value != "-1")
|
|
keyList += "," + opts[i].value;
|
|
}
|
|
if (keyList != "") keyList = keyList.substring(1);
|
|
|
|
var c0 = document.getElementById("contour0");
|
|
var c1 = document.getElementById("contour1");
|
|
var c2 = document.getElementById("contour2");
|
|
var contmode = -1; // Welke contour (alt1/alt2) moet ik tonen
|
|
if (c0&&c0.checked) contmode = 0;
|
|
if (c1&&c1.checked) contmode = 1;
|
|
if (c2&&c2.checked) contmode = 2;
|
|
|
|
<% if (inoutMode == MODE_IN)
|
|
{ %>
|
|
var wp = document.getElementById("werkplek").checked? 1 : 0;
|
|
<% }
|
|
else
|
|
{ %>
|
|
var wp = 0;
|
|
<% } %>
|
|
|
|
var rmList = selectedRoomsList("<%=(inoutMode==MODE_IN)? "rooms" : "terr"%>");
|
|
|
|
return (noVKey?"":("&vKey=" + key))+
|
|
"&gKey=" + $("#gebouwkey").val() + // (voor printen)
|
|
"&scenario_key="+scenario_key+
|
|
"&thema=" + thmKey +
|
|
"&label=" + lblKey +
|
|
"&werkplek=" + wp +
|
|
"&mode=<%=inoutMode%>"+
|
|
"&contmode="+contmode+
|
|
(rmList != ""? "&highlight=" + escape(rmList) : "") +
|
|
(keyList != ""? "&discs=" + keyList : "");
|
|
}
|
|
|
|
function myRefreshInside()
|
|
{
|
|
if (floor_key > 0)
|
|
{
|
|
MMap.SetCustomParameters(getCustomParameters())
|
|
MMap.Refresh(false, true); // Try not to zoom extents, wel force
|
|
<% if (concept)
|
|
{ %>
|
|
MMap2.SetCustomParameters(getCustomParameters() + "&concept=1")
|
|
MMap2.Refresh(); // Try not to zoom extents
|
|
<% } %>
|
|
showReport(null);
|
|
}
|
|
else
|
|
{
|
|
MMap.SetText("<%=safe.jsstring(L("lcl_fg_select_floor"))%>");
|
|
showReport();
|
|
}
|
|
}
|
|
|
|
function myRefreshOutside()
|
|
{
|
|
var loc_key = $("#locatiekey").val();
|
|
if (loc_key)
|
|
{
|
|
MMap.SetCustomParameters(getCustomParameters())
|
|
MMap.Refresh(false, true); // Try not to zoom extents, wel force
|
|
showReport(null);
|
|
}
|
|
else
|
|
{
|
|
MMap.SetText("<%=L("lcl_select_location")%>");
|
|
showReport();
|
|
}
|
|
}
|
|
|
|
// Gets called by Shared/load_rooms.asp when rooms-listbox has been
|
|
// dynamically filled with all rooms on the current floor
|
|
function onRoomsLoaded()
|
|
{
|
|
myRefresh(); // Gaf stack overflow in IE7? Niet meer nodig sinds TUDE#12139 te grote rooms list
|
|
}
|
|
|
|
/************************************************************\
|
|
*
|
|
\************************************************************/
|
|
function MMap_onIMGRefresh()
|
|
{
|
|
$('#MinMaxBtn').hide(); // Zodat busy.gif zichtbaar
|
|
}
|
|
|
|
function MMap_onMapperLoad(pSLNKEvent)
|
|
{
|
|
var ob = $('#MinMaxBtn').show(); // Zodat weer zichtbaar
|
|
ob.css('left', ($("#mapCell").offset().left + $("#mapCell").width() - ob.outerWidth() -2) + "px");
|
|
ob.css('top', ($("#mapCell").offset().top + 32) + "px");
|
|
<% if (concept)
|
|
{ %>
|
|
if (pSLNKEvent.success)
|
|
MMap2.zoom2DWG((pSLNKEvent.viewminX+pSLNKEvent.viewmaxX) / 2,
|
|
(pSLNKEvent.viewminY+pSLNKEvent.viewmaxY) / 2,
|
|
(pSLNKEvent.sizeX) / (pSLNKEvent.viewmaxX - pSLNKEvent.viewminX)
|
|
);
|
|
<% } %>
|
|
}
|
|
|
|
function MMap_onDblClick()
|
|
{
|
|
// Liefst willen we 'alles aan buffer toevoegen' maar dat is complexer
|
|
}
|
|
|
|
/************************************************************\
|
|
* Gets fired after the user drops something on the drawing.
|
|
* Enabled in function EnableDragAndDrop
|
|
\************************************************************/
|
|
function MMap_onDrop(SlnkEvent)
|
|
{
|
|
dragAndDropNotify(SlnkEvent);
|
|
}
|
|
|
|
// notifyDrop is de functie die aangeroepen wordt als de drop voltooid is
|
|
// html is wat je daadwerkelijk kunt droppen
|
|
function EnableDragAndDrop(notifyDrop, html)
|
|
{
|
|
dragAndDropNotify = notifyDrop;
|
|
MMap.EnableDragAndDrop(html);
|
|
}
|
|
|
|
// Pas een symbool (ins_deel of prs_werkplek)(via Ajax) in de database aan
|
|
function ChangeSymbol(symbolKey, params)
|
|
{
|
|
if (symbolKey.match(/^I:/)) // INS_DEEL
|
|
{
|
|
var url = "./ins_change.asp?deel_key=" + symbolKey.substring(2);
|
|
}
|
|
else if (symbolKey.match(/^P:/)) // PRJ_DEEL
|
|
{
|
|
var url = "./ins_change.asp?deel_key=" + symbolKey.substring(2);
|
|
}
|
|
else if (symbolKey.match(/^IW:/)) // WERKPLEK gebonden INS_DEEL
|
|
{
|
|
var url = "./ins_change.asp?wpdeel=1&deel_key=" + symbolKey.substring(3);
|
|
}
|
|
else if (symbolKey.match(/^W:/)) // PRS_WERKPLEK
|
|
{
|
|
var url = "./wp_change.asp?wp_key=" + symbolKey.substring(2);
|
|
}
|
|
else
|
|
return; // Zeer vreemd
|
|
|
|
url += "&floor=" + floor_key;
|
|
url += "&scenario_key=" + scenario_key;
|
|
url += params;
|
|
var data = {};
|
|
<% protectRequest.dataToken("data"); %>
|
|
$.post(url, data, FcltCallbackAndThen(myRefresh), "json");
|
|
}
|
|
|
|
function DoMoveSymbol(deelKey, orgX, orgY, dwgX, dwgY, lblContour)
|
|
{
|
|
var params;
|
|
if (orgX)
|
|
{
|
|
params = "&newX=" + dwgX + "&newY=" + dwgY;
|
|
params += "&orgX=" + orgX + "&orgY=" + orgY;
|
|
params += "&Contour=" + lblContour;
|
|
}
|
|
else
|
|
params = "&clearXY=1"
|
|
|
|
ChangeSymbol(deelKey, params)
|
|
}
|
|
|
|
function RemoveSymbol(deelKey)
|
|
{
|
|
FcltMgr.confirm(L("lcl_obj_del_confirm"), function() {
|
|
ChangeSymbol(deelKey, "&delete=1");
|
|
});
|
|
}
|
|
|
|
var _symbolKey; // wordt gezet in MMap_onPickcontextmenu
|
|
function RotateSymbol(symbolKey, angle)
|
|
{
|
|
if (typeof angle == "undefined")
|
|
{
|
|
angle = prompt('Geef hoek (0-359)', '0');
|
|
if (angle && !isNaN(parseInt(angle)))
|
|
ChangeSymbol(symbolKey, "&rot=" + parseInt(angle));
|
|
}
|
|
else
|
|
ChangeSymbol(symbolKey, "&deltarot=" + parseInt(angle));
|
|
}
|
|
|
|
function ScaleSymbol(angle)
|
|
{
|
|
var scl = prompt('Geef schaal', '1.0');
|
|
if (scl && !isNaN(parseFloat(scl)))
|
|
ChangeSymbol(_symbolKey, "&scale=" + parseFloat(scl));
|
|
}
|
|
|
|
function AlignSymbol(evt)
|
|
{
|
|
var params = "&AutoAlign=1" + getCustomParameters();
|
|
params += "&findX=" + PickEvtX + "&findY=" + PickEvtY;
|
|
params += MMap.qryShow;
|
|
ChangeSymbol(_symbolKey, params);
|
|
}
|
|
|
|
// Gebruiker heeft 'eigenschappen' in het contextmenu gekozen.
|
|
function showSymbol(SlnkEvent)
|
|
{
|
|
SlnkEvent = SlnkEvent || {};
|
|
var intKey = -1;
|
|
if (scenario_key > 0)
|
|
{
|
|
// TODO: Hier willen we eigenlijk ins_info.asp van het originele symbool tonen
|
|
FcltMgr.alert("Niet in scenario mode");
|
|
return intKey;
|
|
}
|
|
if (_symbolKey.match(/^IW:/)) // INS_DEEL aan werkplek
|
|
{
|
|
intKey = _symbolKey.substring(3);
|
|
if (SlnkEvent.click_urlI)
|
|
FcltMgr.openModalDetail(SlnkEvent.click_urlI + intKey, "<%=L('lcl_shared_object')%>", { callback: myRefresh, alwaysCallback: true });
|
|
else
|
|
FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + intKey);
|
|
}
|
|
if (_symbolKey.match(/^I:/)) // INS_DEEL aan ruimte
|
|
{
|
|
intKey = _symbolKey.substring(2);
|
|
if (SlnkEvent.click_urlI)
|
|
FcltMgr.openModalDetail(SlnkEvent.click_urlI + intKey, "<%=L('lcl_shared_object')%>", { callback: myRefresh, alwaysCallback: true });
|
|
else
|
|
FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + intKey);
|
|
}
|
|
if (_symbolKey.match(/^W:/)) // PRS of PRJ_WERKPLEK
|
|
{
|
|
intKey = _symbolKey.substring(2);
|
|
if (SlnkEvent.click_urlW)
|
|
FcltMgr.openModalDetail(SlnkEvent.click_urlW + intKey, "<%=L('lcl_workspace')%>: " + SlnkEvent.ContourLabel, { callback: myRefresh, alwaysCallback: true });
|
|
else
|
|
{
|
|
<% if (S("prs_werkplek_implicit") == 0) //Impliciet FLEX ook
|
|
{ %>
|
|
FcltMgr.openDetail("appl/alg/alg_wp.asp?key=" + intKey);
|
|
<% }
|
|
else
|
|
{ %>
|
|
if (window._wp_type == 1) // Impliciet flex
|
|
FcltMgr.openDetail("appl/alg/alg_wp.asp?key=" + intKey);
|
|
else
|
|
{
|
|
var url = "../prs/prs_edit_perslidwerkplek.asp?wp_key=" + intKey;
|
|
FcltMgr.openModalDetail(url, "<%=L("lcl_change")%>", {callback: myRefresh });
|
|
}
|
|
<% } %>
|
|
}
|
|
}
|
|
return intKey;
|
|
}
|
|
|
|
/************************************************************\
|
|
* 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
|
|
\************************************************************/
|
|
function MMap_onClick(SlnkEvent)
|
|
{ // FcltMgr.alert("Geklikt op dwgXY=" + SlnkEvent.dwgX + "," + SlnkEvent.dwgY +
|
|
// " \nik denk ruimte " + SlnkEvent.ContourKey + " op laag: " + SlnkEvent.ContourLayer +
|
|
// " \nof object " + SlnkEvent.TextLabel + " op laag: " + SlnkEvent.TextLayer +
|
|
// " \nmet ruimte/object key=" + SlnkEvent.Key)
|
|
switch (SlnkEvent.Param)
|
|
{
|
|
case "onclick":
|
|
case "ondblclick":
|
|
{
|
|
if (SlnkEvent.Key &&
|
|
(SlnkEvent.TextLabel != "" ||
|
|
SlnkEvent.ContourLayer == "SLNK Symbols"))
|
|
{ // Zoek het object of de werkplek (die staan ook op Symbols)
|
|
window._symbolKey = SlnkEvent.Key; // Onthouden
|
|
window._wp_type = SlnkEvent.wp_type; // Onthouden
|
|
var intKey = showSymbol(SlnkEvent); // Hetzelfde als bij 'Eigenschappen' kiezen in de context
|
|
|
|
var wp_key = -1;
|
|
if (SlnkEvent.Key.match(/^W:/)) // WERKPLEK
|
|
{
|
|
wp_key = intKey;
|
|
intKey = "";
|
|
}
|
|
|
|
// naar de tabjes doorgeven, bijvoorbeeld PRJ werkplek symbool.
|
|
showReport(intKey, wp_key);
|
|
}
|
|
else // Op ruimte geklikt
|
|
{ // buiten tekening klikken wist highlight if (SlnkEvent.ContourKey != "")
|
|
|
|
if (SlnkEvent.click_urlR && SlnkEvent.Key)
|
|
{
|
|
FcltMgr.openModalDetail(SlnkEvent.click_urlR + SlnkEvent.Key, "<%=L("lcl_room")%>: " +SlnkEvent.ContourLabel, { callback: myRefresh, alwaysCallback: true })
|
|
}
|
|
else
|
|
{
|
|
var sl = document.getElementById("<%=inoutMode == MODE_IN? "rooms" : "terr"%>");
|
|
if (!SlnkEvent.event.ctrlKey) // Allow Ctrl key for Multi-select
|
|
sl.selectedIndex = -1;
|
|
|
|
var ob = sl.options;
|
|
found = false;
|
|
for (i = 0; i<ob.length; i++)
|
|
{
|
|
if (ob[i].value == SlnkEvent.Key)
|
|
{
|
|
ob[i].selected = true;
|
|
}
|
|
}
|
|
myRefresh(); // (un)highlight selected room
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case "ONMOVE":
|
|
{
|
|
if (SlnkEvent.fromKey != -1 && SlnkEvent.fromDwgX) // Nieuwe plek
|
|
{
|
|
//if (SlnkEvent.ContourLayer != 'SLNK Contours')
|
|
//FcltMgr.confirm("Buiten ruimte geplaatst. Doorgaan?", function() {
|
|
|
|
DoMoveSymbol(SlnkEvent.fromKey,
|
|
SlnkEvent.fromDwgX, SlnkEvent.fromDwgY,
|
|
SlnkEvent.dwgX, SlnkEvent.dwgY, SlnkEvent.ContourKey)
|
|
//});
|
|
}
|
|
break;
|
|
}
|
|
case "ONCOPY": // Dit kan een symbool zijn of een werkplek
|
|
{
|
|
newSymbol(SlnkEvent, true); // isCopy
|
|
break;
|
|
}
|
|
case "ONROTATE":
|
|
{
|
|
if (SlnkEvent.fromKey != -1 && SlnkEvent.fromDwgX) // Nieuwe rotatie
|
|
{
|
|
var angle = Math.atan((SlnkEvent.dwgY - SlnkEvent.fromDwgY) / (SlnkEvent.dwgX - SlnkEvent.fromDwgX));
|
|
var rot = Math.round(0.5 + (360 + angle / 3.1415926 * 180) % 360);
|
|
if (SlnkEvent.fromDwgX > SlnkEvent.dwgX)
|
|
rot = (rot + 180) % 360;
|
|
ChangeSymbol(SlnkEvent.fromKey, "&deltarot=" + rot)
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/************************************************************\
|
|
* Wordt aangeroepen als gebruiker rechts klikt op pickboxje
|
|
* van een symbool
|
|
* myEvent.symbolKey
|
|
* myEvent.event
|
|
\************************************************************/
|
|
|
|
function MMap_onPickcontextmenu(myEvent)
|
|
{
|
|
_symbolKey = myEvent.symbolKey; // Onthouden
|
|
// TODO: Context menu afhankelijk maken van autorisatie en soort geklikt object
|
|
PickEvtX = myEvent.event.clientX;
|
|
PickEvtY = myEvent.event.clientY;
|
|
MMap.showContextMenu(myEvent.event, document.getElementById("PickcontextMenu"));
|
|
}
|
|
|
|
/************************************************************\
|
|
* Gets fired after the user presses Print.
|
|
\************************************************************/
|
|
function MMap_onPrint_callback(data)
|
|
{
|
|
if (data.cancel) return false; // cancel
|
|
if (data.style == "SLNKDWF")
|
|
{
|
|
MMap.PrintDialog();
|
|
return; // Done
|
|
}
|
|
|
|
// Dan maar advanced
|
|
var url = "../cad/PrintFG.asp";
|
|
url += "?XSLmode=" + data.style;
|
|
url += getCustomParameters();
|
|
var pngURL = MMap.GetPrintURL(true); // true for current zoom
|
|
|
|
if (data.allFloor)
|
|
{
|
|
MMap.SetCustomParameters(getCustomParameters(true)); // Even zonder vKey
|
|
var pngURL = MMap.GetPrintURL(true); // true for current zoom
|
|
MMap.SetCustomParameters(getCustomParameters());
|
|
url += "&allFloor=1";
|
|
data.DWGscale = -1; // Altijd FIT
|
|
}
|
|
if (data.DWGscale == 0) // current
|
|
{
|
|
data.DWGscale = MMap.gSLNKEvent.scaleY;
|
|
}
|
|
else if (data.DWGscale == -1) // Maximaal
|
|
{
|
|
pngURL += "&maximize=1"; // omdat anders -1 een aanduiding is van DWGSchaal 1:1
|
|
}
|
|
else if (data.DWGscale > 0) // factor gekozen in select-box
|
|
{
|
|
data.DWGscale = -data.DWGscale; // speel vals: negatief betekent: paperScale (ipv. pixelScale)
|
|
}
|
|
|
|
url += "&DWGscale=" + data.DWGscale;
|
|
url += "&pngURL=" + escape(pngURL);
|
|
|
|
FcltMgr.windowopen(url);
|
|
}
|
|
|
|
function MMap_onPrint(SlnkEvent)
|
|
{
|
|
<% if (inoutMode == MODE_OUT)
|
|
{ %>
|
|
return true; // Altijd alleen de default 'Flexibel' optie
|
|
<% }
|
|
else
|
|
{ %>
|
|
var sFeatures="dialogHeight:400px;dialogWidth:600px;status=no";
|
|
var url="../cad/printWhat.asp?x=x"+getCustomParameters();
|
|
FcltMgr.openModalDetail(url, "<%=L("lcl_print")%>",
|
|
{ callback: MMap_onPrint_callback }
|
|
);
|
|
<% } %>
|
|
}
|
|
|
|
function sThemeChanged()
|
|
{
|
|
myRefresh(); // Plaatje aanpassen
|
|
RefreshLegenda(true); // Legenda aanpassen en in beeld brengen
|
|
}
|
|
|
|
// Updatable thema's kunnen filter uitbreiden
|
|
var LegendaFilter = "V"; // Default op verdieping
|
|
function onLegendaFilterChange(niveau)
|
|
{
|
|
LegendaFilter = niveau;
|
|
RefreshLegenda();
|
|
}
|
|
|
|
// De legenda is afhankelijk van wat er daadwerkelijk op de verdieping (database)
|
|
// voorkomt, daarom wordt hij heel vaak gerefreshed
|
|
function RefreshLegenda(scrollintoview)
|
|
{
|
|
<% if (inoutMode == MODE_IN)
|
|
{ %>
|
|
pSelect = "verdiepingkey"
|
|
<% }
|
|
else
|
|
{ %>
|
|
pSelect = "locatiekey"
|
|
<% } %>
|
|
|
|
sThema = document.getElementById("sThemaIn") // Listboxje
|
|
var thmKey = sThema[sThema.selectedIndex].value;
|
|
|
|
document.getElementById("fLegenda").innerHTML="";
|
|
if (thmKey > 0)
|
|
{
|
|
var pKey = parseInt($("#"+pSelect).val());
|
|
if (pKey > 0)
|
|
$("#fLegenda").load(
|
|
"Legenda.asp?thema=" + thmKey +
|
|
"&scenario_key=" + scenario_key +
|
|
"&parentKey=" + pKey + "&mode=<%=inoutMode%>" +
|
|
"&LegendaFilter="+LegendaFilter,
|
|
scrollintoview?function () { scrollview($("#fLegenda"));}:null
|
|
)
|
|
}
|
|
}
|
|
|
|
function sLabelChanged(newLabel)
|
|
{
|
|
var thmKey = newLabel[newLabel.selectedIndex].value;
|
|
if (scenario_key == 0)
|
|
{
|
|
var search = document.getElementById("SearchLbl");
|
|
|
|
search.style.display=(thmKey <= 0)? "none" : ""; // Geen label? Niet zoeken
|
|
}
|
|
myRefresh();
|
|
}
|
|
|
|
function sDiscsChanged()
|
|
{ // Werkt de lijst met toevoeg-disciplines bij
|
|
<% if (S("fg_ins_symbols"))
|
|
{ %>
|
|
$("#dinsAdd").load("LoadInsNew.asp?x=x" + getCustomParameters(),
|
|
function(respText) {
|
|
var empty = $(respText).find("img").length == 0; // Beetje illegaal
|
|
$("tr#tinsAdd").toggle(!empty);
|
|
});
|
|
$("#dinsLegend").load("LoadInsLegenda.asp?x=x" + getCustomParameters(),
|
|
function(respText) {
|
|
var empty = $(respText).find("img").length == 0; // Beetje illegaal
|
|
$("tr#tinsLegend").toggle(!empty);
|
|
});
|
|
<% } %>
|
|
}
|
|
|
|
// Toon de locatie mbv Google Maps
|
|
function openLocGMaps()
|
|
{
|
|
var loc_key = $("#locatiekey").val();
|
|
if (loc_key >= 0)
|
|
{
|
|
FcltMgr.windowopen("../cad/ShowGoogleMap.asp?loc_key=" + loc_key, "FGShow",
|
|
"width=640,height=480,directories=no,location=no,menubar=no,"
|
|
+ "resizable=yes,status=no,titlebar=yes,toolbar=no");
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Toon het gebouw mbv Google Maps
|
|
function openBldGMaps()
|
|
{
|
|
var bld_key = document.getElementById("gebouwkey");
|
|
if (bld_key)
|
|
{
|
|
FcltMgr.windowopen("../cad/ShowGoogleMap.asp?bld_key=" + bld_key, 'FGShow',
|
|
"width=640,height=480,directories=no,location=no,menubar=no,"
|
|
+ "resizable=yes,status=no,titlebar=yes,toolbar=no");
|
|
return;
|
|
}
|
|
}
|
|
|
|
function toggleContour(cnt)
|
|
{
|
|
if (cnt.checked) // Mogelijk anderen uitzetten
|
|
{
|
|
var c0 = document.getElementById("contour0");
|
|
var c1 = document.getElementById("contour1");
|
|
var c2 = document.getElementById("contour2");
|
|
if (cnt.id == "contour0")
|
|
{
|
|
if (c1) c1.checked=false;
|
|
if (c2) c2.checked=false;
|
|
}
|
|
else if (cnt.id == "contour1")
|
|
{
|
|
if (c0) c0.checked=false;
|
|
if (c2) c2.checked=false;
|
|
}
|
|
else // contour2
|
|
{
|
|
if (c0) c0.checked=false;
|
|
if (c1) c1.checked=false;
|
|
}
|
|
}
|
|
myRefresh();
|
|
}
|
|
|
|
// Zorg dat je met Enter de zoekveldjes kunt activeren
|
|
function onEnter(evt, fn)
|
|
{
|
|
if (!evt) evt = window.event;
|
|
if (evt.keyCode == 13)
|
|
{
|
|
fn();
|
|
return false; // Voorkom echte submit van het formulier
|
|
}
|
|
}
|
|
|
|
// Zoek naar een objectcode die de gebruiker heeft ingevoerd
|
|
function doSearchObj()
|
|
{
|
|
var zoekcode = document.getElementById("SearchCode").value;
|
|
if (zoekcode == "") return false;
|
|
|
|
var loc = $("#locatiekey").val();
|
|
var url="../cad/obj_search.asp?objCode="+escape(zoekcode) + "&loc_key=" + loc;
|
|
FcltMgr.openModalDetail(url, "<%= L("lcl_search") %> " + escape(zoekcode) + "%",
|
|
{ callback: function (data)
|
|
{
|
|
gotoRoom(data, data.disc_key);
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
// Zoek naar een label code die de gebruiker heeft ingevoerd
|
|
// Er moet/zal een label thema aan staan
|
|
function doSearchLbl()
|
|
{
|
|
var lblSelect = document.getElementById("sLabelIn");
|
|
var lblKey = lblSelect[lblSelect.selectedIndex].value;
|
|
|
|
var zoekcode = document.getElementById("SearchLbl").value;
|
|
var loc = $("#locatiekey").val();
|
|
var url="../cad/lbl_search.asp?lblCode="+escape(zoekcode)+"&loc_key=" + loc + "&label=" + lblKey
|
|
FcltMgr.openModalDetail(url, "<%= L("lcl_search") %> " + escape(zoekcode) + "%",
|
|
{ callback: function (data)
|
|
{
|
|
gotoRoom(data);
|
|
}
|
|
}
|
|
)
|
|
}
|
|
|
|
function showReport(obj_key, wp_key)
|
|
{
|
|
var tabParam = (obj_key? "obj=" + obj_key : "dummy=")
|
|
+ (wp_key? "&wp_key=" + wp_key : "")
|
|
+ getCustomParameters();
|
|
|
|
tabSetParam(tabParam);
|
|
tabRefresh();
|
|
}
|
|
|
|
function onFullScreen(evt)
|
|
{
|
|
FcltMgr.stopPropagation(evt);
|
|
if (evt.ctrlKey)
|
|
var url = "./InfoBord.asp?floor_key=" + floor_key+getCustomParameters();
|
|
else
|
|
var url = "./maximize.asp?x=x" + getCustomParameters();
|
|
FcltMgr.windowopen(url,'FGShow',
|
|
"directories=no,location=no,menubar=no,"
|
|
+ "resizable=yes,status=no,titlebar=yes,toolbar=no");
|
|
}
|
|
|
|
function scrollview($elm)
|
|
{
|
|
var navdiv = $('#navigationCell');
|
|
var top = $elm.position().top + navdiv.scrollTop();
|
|
var bottom = top + $elm.height();
|
|
|
|
if (bottom > navdiv.height() + navdiv.scrollTop())
|
|
navdiv.scrollTop(Math.min(top, bottom - navdiv.height() + 5));
|
|
}
|
|
// Open/dicht klappen blokje
|
|
function toggleFG(elm, idList)
|
|
{
|
|
$(elm).toggleClass("openFG")
|
|
$(elm).toggleClass("closedFG")
|
|
var idl = idList.split(",");
|
|
for (var i = 0; i < idl.length; i++)
|
|
{
|
|
$("#"+idl[i]).toggle();
|
|
var $lastelm = $("#"+idl[i]);
|
|
}
|
|
if ($(elm).hasClass("openFG"))
|
|
{ // Probeer lastelm in beeld te brengen
|
|
scrollview($lastelm);
|
|
}
|
|
}
|
|
|
|
function resetMap()
|
|
{
|
|
if (!MMap || !MMap.Reset)
|
|
return; // Safari: te vroeg
|
|
MMap.Reset();
|
|
MMap.SetLabelPosition(<%=S("fg_labelPosition")%>);
|
|
MMap.SetIMGGenerator("../cad/mySlnk2IMG.asp");
|
|
// Door de volgende regel kunnen symbolen versleept worden
|
|
MMap.SetKeyToSymbol("../cad/mykeyToSymbol.asp");
|
|
|
|
MMap.SetPaperColor(<%=S("fg_paperColor")%>);
|
|
|
|
if ($('#MMap2').length)
|
|
{
|
|
MMap2.Reset();
|
|
MMap2.SetLabelPosition(<%=S("fg_labelPosition")%>);
|
|
MMap2.SetIMGGenerator("../cad/mySlnk2IMG.asp");
|
|
|
|
MMap2.SetPaperColor(<%=S("fg_paperColorCpt")%>);
|
|
}
|
|
}
|
|
|
|
// Wordt automagisch aangeroepen als tabje wordt geactiveerd
|
|
var isVisible = true;
|
|
function fcltontabshow()
|
|
{
|
|
isVisible = true;
|
|
}
|
|
function fcltontabhide()
|
|
{
|
|
isVisible = false;
|
|
}
|
|
|
|
var pctImg = 65; // vertical Percentage for image
|
|
function resizeIframes()
|
|
{
|
|
if (!isVisible)
|
|
return; // Don't bother
|
|
|
|
var height = parseInt(document.documentElement.clientHeight);
|
|
var td2=document.getElementById("theTabs");
|
|
if (td2.style.marginLeft == "")
|
|
{
|
|
var height2 = Math.floor(height * pctImg / 100);
|
|
}
|
|
else
|
|
{
|
|
var height2 = height; // Want de tabjes zijn naar rechts geschoven
|
|
}
|
|
if (document.getElementById('MMap').style.height != Math.floor(height * pctImg / 100) + "px")
|
|
{
|
|
$('#MMap').css('height', Math.floor(height * pctImg / 100) + "px");
|
|
$('#mapCell').css('height', Math.floor(height * pctImg / 100) + "px");
|
|
}
|
|
$('#navigationCell').height(height2 - 1);
|
|
$("#fgmenutoggler").css("top", $('#MMap').height() - $("#fgmenutoggler").outerHeight() - 3 + "px");
|
|
if ($("#fgmenutoggler").hasClass("collapsed"))
|
|
$("#fgmenutoggler").css("left", 0);
|
|
else
|
|
$("#fgmenutoggler").css("left", $("#navigationCell").width() - $("#fgmenutoggler").width() + 2);
|
|
|
|
$("#fgtabtoggler").css('top' , $('#MMap').height() - (window.pctImg == 100?$("#fgtabtoggler").height():0) + "px");
|
|
$("#fgtabtoggler").css('left', $(window).width() - $("#fgtabtoggler").width() - 8 + "px");
|
|
|
|
resizetabIframe();
|
|
};
|
|
$(function () { resizeIframes(); });
|
|
|
|
var needInit = <%= concept?2:1 %>
|
|
function init()
|
|
{
|
|
needInit--;
|
|
if (needInit > 0)
|
|
return; // concept afwachten
|
|
|
|
var defOn = $("#sDiscsIn>option").filter(function()
|
|
{
|
|
return $(this).attr("defaultOn")==4 || $(this).attr("defaultOn")==8;
|
|
});
|
|
if (defOn.length)
|
|
{
|
|
defOn.prop("selected", true); // moet nog even gebeuren
|
|
$("#sDiscsIn>option[value=-1]").prop("selected", false); // die kan dan uit
|
|
}
|
|
|
|
OnLocationChanged(document.getElementById("loc"));
|
|
<% if (floor_key>0) { %>
|
|
OnFloorChanged(); // Vullen listbox ruimte
|
|
<% } %>
|
|
// eerste keer vullen legenda
|
|
|
|
sDiscsChanged(); // Vullen legenda en 'toevoeg' listbox
|
|
draginit();
|
|
|
|
var timerID=null;
|
|
window.onresize = function()
|
|
{
|
|
if (timerID) clearTimeout(timerID);
|
|
timerID = setTimeout(resizeIframes, 100);// use a delay for IE because the resize event fires repeatly
|
|
}
|
|
|
|
fcltontabhide(); // IE8: Eerst fgmenutoggler inklappen...
|
|
resizeIframes();
|
|
fcltontabshow(); // IE8: en nu weer zichtbaar. Dan klopt de hoogte ook weer.
|
|
resetMap();
|
|
// Komt vanzelf? myRefresh();
|
|
}
|
|
|
|
// start Symbolen draggen vanuit menu. Zie LoadInsNew.asp
|
|
|
|
// variant op draganddrop.js/dragstart
|
|
// Wij willen bij het starten van het draggen een ander (op schaal) symbool gebruiken
|
|
// bronInfo { type:"W" } voor werkplekken,
|
|
// { type: "I", key: 1234") ins_srtdeel_key
|
|
// { type: "L", key: 1234") ins_legendawaarde_key
|
|
function mydragstart(evt, imgHTML, bronInfo)
|
|
{
|
|
/* global */ naviTop = $("#navigationCell").scrollTop();
|
|
|
|
if (!evt) evt=window.event;
|
|
var elmSymbol = document.getElementById("dragSymbol");
|
|
elmSymbol.innerHTML=imgHTML;
|
|
elmSymbol.style.display = 'block';
|
|
elmSymbol.setAttribute("bronInfoType", bronInfo.type);
|
|
elmSymbol.setAttribute("bronInfoKey", bronInfo.key);
|
|
dragAndDropNotify = notifyDrop;
|
|
dragapproved=true;
|
|
dragElement=elmSymbol;
|
|
temp1=evt.clientX;
|
|
temp2=evt.clientY;
|
|
dragStartX=evt.clientX;
|
|
dragStartY=evt.clientY;
|
|
dragmove(evt);
|
|
}
|
|
|
|
// Start draggen van een nieuw INS_DEEL
|
|
function Reposition(elmSymb)
|
|
{
|
|
elmSymb.style.top = (- (elmSymb.naturalHeight||elmSymb.height) / 2) + "px";
|
|
elmSymb.style.left = (- (elmSymb.naturalWidth||elmSymb.width) / 2) + "px";
|
|
}
|
|
|
|
function mydragstartINS(evt, srtdeel_key)
|
|
{
|
|
// Door de Reposition truc centreert het symbool rond de cursor.
|
|
// Dat is niet 100% correct want eigenlijk zouden we rond het zwaartepunt van de symboolcontour moeten centreren
|
|
var imgHTML = "<img style='position:absolute;top:-40px;left:-40px' onload='if (parent.Reposition) parent.Reposition(this)'";
|
|
imgHTML+= " src =\"../cad/mysymbol.asp?paperColor="+MMap.gSLNKEvent.paperColor+"&srtdeel="+srtdeel_key+"&sdwgScale=" + MMap.gSLNKEvent.scaleY + "\"></img>";
|
|
mydragstart(evt, imgHTML, { type:"I", key:srtdeel_key });
|
|
}
|
|
|
|
// Start draggen van een nieuwe werkplek
|
|
function mydragstartWP(evt)
|
|
{
|
|
var imgHTML = "<img style='position:absolute;top:-10px;left:-10px' onload='if (parent.Reposition) parent.Reposition(this)'";
|
|
imgHTML+= " src =\"../cad/myWerkplek.asp?paperColor="+MMap.gSLNKEvent.paperColor+"&sdwgScale=" + MMap.gSLNKEvent.scaleY + "\"></img>";
|
|
mydragstart(evt, imgHTML, { type:"W" });
|
|
}
|
|
|
|
// Start draggen van een legendawaarde
|
|
function mydragstartLegenda(evt, kleur, waarde)
|
|
{
|
|
var imgHTML = "<div style='position:absolute;top:-10px;left:-10px;border:1px solid black;width:16px;height:16px'>"
|
|
+ " <div style='border:8px solid #"+kleur+";line-height:0px;font-size:0px;'> </div>"
|
|
+ "</div>"
|
|
mydragstart(evt, imgHTML, { type: "L", key:waarde });
|
|
}
|
|
|
|
function selectLegendaCallback(data)
|
|
{
|
|
var i, j;
|
|
var sl = document.getElementById("<%=inoutMode == MODE_IN? "rooms" : "terr"%>");
|
|
sl.selectedIndex = -1; // leeg beginnen
|
|
var ob = sl.options;
|
|
for (i in data.keys)
|
|
{
|
|
for (j = 0; j<ob.length; j++)
|
|
{
|
|
if (ob[j].value == data.keys[i])
|
|
{
|
|
ob[j].selected = true;
|
|
}
|
|
}
|
|
|
|
}
|
|
myRefresh()
|
|
}
|
|
// Geklikt op een legendawaarde tekst. Highlight bijbehorende ruimtes
|
|
function selectfromLegenda(evt, tekst)
|
|
{
|
|
// FcltMgr.alert("Geklikt op 'kleur': {0}, tijd om die te highlighten".format(tekst));
|
|
var url = "cad_selectbylegend.asp?legenddesc=" + escape(tekst);
|
|
url += getCustomParameters();
|
|
$.post(url, {}, FcltCallbackAndThen(selectLegendaCallback), "json");
|
|
}
|
|
|
|
// Wordt aangeroepen als we boven het plaatje komen met ons dragobject
|
|
function drag_onMouseOut(dragElement, evt)
|
|
{
|
|
EnableDragAndDrop(notifyDrop, dragElement.innerHTML);
|
|
}
|
|
|
|
// Wordt aangeroepen als we klaar zijn met draggen
|
|
function drag_onDragEnd(dragElement, evt)
|
|
{ // 5.2.1 Met FireFox komen we hier nooit?
|
|
var elmSymbol = document.getElementById("dragSymbol");
|
|
elmSymbol.style.display = 'none';
|
|
$("#navigationCell").scrollTop(naviTop);
|
|
if (!evt) evt=window.event;
|
|
MMap.doDrop(evt, evt.clientX - $("#mapCell").offset().left, evt.clientY - $("#mapCell").offset().top);
|
|
}
|
|
|
|
// Callback functie: er is iets gedropt op het plaatje
|
|
// (een symbool of werkplek vanuit de legenda)
|
|
function notifyDrop(SlnkEvent)
|
|
{
|
|
var ruimteKey = SlnkEvent.Key;
|
|
if (!ruimteKey)
|
|
{
|
|
// niet op herkenbare ruimte gedropt
|
|
return;
|
|
}
|
|
|
|
if (dragElement.getAttribute("bronInfoType") == "L") // Legendawaarde
|
|
{
|
|
var ruimteKey = SlnkEvent.Key; // TODO: oppassen voor droppen op WP's
|
|
var url = "legenda_create.asp?room_key=" + ruimteKey; // gedropt op ruimte
|
|
url += "&lwkey="+dragElement.getAttribute("bronInfoKey");
|
|
if (SlnkEvent.event.shiftKey)
|
|
url+="&addmode=1"; // Toevoegen aan de ruimte ipv vervangen
|
|
|
|
url += getCustomParameters(); // Geeft ook mooi thema-key mee
|
|
|
|
var data = {};
|
|
<% protectRequest.dataToken("data"); %>
|
|
$.post(url, data, FcltCallbackAndThen(myRefresh), "json");
|
|
}
|
|
else
|
|
newSymbol(SlnkEvent, false); // !isCopy, isMove dus
|
|
dragapproved=false;
|
|
dragElement.style.display="none";
|
|
document.onmousemove=null;
|
|
}
|
|
|
|
// Kopieer een symbool of werkplek vanuit de tekening (draggen en dan shift indrukken)
|
|
// Of maak een nieuw symbool of werkplek aan (draggen vanuit navigate pane)
|
|
// symbolen kunnen vervolgens weer gedropt zijn op een werkplek
|
|
// isCopy is true voor kopie (vanuit de tekening) en false voor draggen vanuit legenda
|
|
// globale dragElement.bronInfo is gezet en daar zien we het onderscheid aan
|
|
function newSymbol(SlnkEvent, isCopy)
|
|
{
|
|
var ruimteKey = SlnkEvent.Key;
|
|
if (!ruimteKey || (SlnkEvent.ContourLayer != "SLNK Contours" && !ruimteKey.match(/^W:/)))
|
|
{
|
|
FcltMgr.alert(L("lcl_fg_obj_firstnew")); // Eerst in ruimte of op werkplek
|
|
return;
|
|
}
|
|
|
|
var dwgX = SlnkEvent.dwgX;
|
|
var dwgY = SlnkEvent.dwgY;
|
|
|
|
var loc = $("#locatiekey").val();
|
|
|
|
if (isCopy)
|
|
{
|
|
if (SlnkEvent.fromKey.match(/^W:/))
|
|
var url= "wp_create.asp?wp_key=" + SlnkEvent.fromKey.substring(2);
|
|
else
|
|
var url= "ins_create.asp?deel_key=" + SlnkEvent.fromKey;
|
|
}
|
|
else
|
|
{
|
|
if (dragElement.getAttribute("bronInfoType") == "W")
|
|
var url= "wp_create.asp?x=x";
|
|
else
|
|
var url= "ins_create.asp?srtdeel_key=" + dragElement.getAttribute("bronInfoKey");
|
|
}
|
|
|
|
url += "&loc_key=" + loc + getCustomParameters();
|
|
|
|
// Werkplek is nog niet vertaald door mySlnk2IMG.asp/myFindKeys()
|
|
if (SlnkEvent.ContourKey.match(/^W:/))
|
|
url += "&wp_key="+SlnkEvent.ContourKey.substring(2); // gedropt op werkplek
|
|
else
|
|
url += "&room_key="+ruimteKey; // gedropt op ruimte
|
|
|
|
if (!SlnkEvent.event.ctrlKey)
|
|
url += "&dwgX="+dwgX+"&dwgY="+dwgY;
|
|
|
|
var data = {};
|
|
<% protectRequest.dataToken("data"); %>
|
|
$.post(url, data, FcltCallbackAndThen(myRefresh), "json")
|
|
}
|
|
|
|
function toggleLayout(elm)
|
|
{
|
|
$(elm).toggleClass("collapsed");
|
|
$("#navigationCell").toggleClass("collapsed");
|
|
if ($("#navigationCell").hasClass("collapsed"))
|
|
$("#mapCell").css("margin-left", 0);
|
|
else
|
|
$("#mapCell").css("margin-left", "");
|
|
resizeIframes();
|
|
}
|
|
|
|
function toggleTabLayout(elm)
|
|
{
|
|
$(elm).toggleClass("collapsed");
|
|
window.pctImg = window.pctImg == 65?100:65;
|
|
resizeIframes();
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="dragSymbol" style="display:none;position:absolute;z-index:1;">Hier komt dragsymbool</div>
|
|
<div id="PickcontextMenu" class="slnkmenu" style="display:none">
|
|
<div class="menuItem" style="margin-top:5px" monClick="parent.RotateSymbol(parent._symbolKey,-90)">Roteer rechts</div>
|
|
<div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,90)">Roteer links</div>
|
|
<div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,180)">Roteer 180</div>
|
|
<div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey,0)">Roteer rechtop</div>
|
|
<div class="menuItem" monClick="parent.RotateSymbol(parent._symbolKey)">Roteer vrij</div>
|
|
<div class="menuItem" monClick="parent.AlignSymbol(event)">Uitlijnen met muur</div>
|
|
<hr>
|
|
<div class="menuItem" monClick="parent.ScaleSymbol()">Schaal</div>
|
|
<hr>
|
|
<div class="menuItem" monClick="parent.DoMoveSymbol(parent._symbolKey, null)">Standaard positie</div>
|
|
<div class="menuItem" monClick="parent.RemoveSymbol(parent._symbolKey)"><%=L("lcl_delete")%></div>
|
|
<hr>
|
|
<div class="menuItem" style="margin-bottom:5px" monClick="parent.showSymbol()">Eigenschappen</div>
|
|
</div>
|
|
|
|
<div id='navigationCell'>
|
|
<table cellpadding=0 cellspacing=0>
|
|
<!-- ==========================
|
|
SCENARIOS
|
|
============================ -->
|
|
<% if (scenario_key > 0)
|
|
{ %>
|
|
<tr>
|
|
<td valign=top align="left" id=scenario_help><label><%=L("lcl_prj_scenario")%>:</label></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<% // We tonen hier de scenarios die bij dezelfde melding horen, alternatieven voor dezelfde actie dus.
|
|
sql = "SELECT prj_scenario_key, prj_scenario_omschrijving FROM prj_scenario "
|
|
+ " WHERE mld_melding_key = "
|
|
+ " (SELECT mld_melding_key FROM prj_scenario"
|
|
+ " WHERE prj_scenario_key = " + scenario_key + ")"
|
|
+ " OR (prj_scenario_key = " + scenario_key + " AND mld_melding_key IS NULL)"
|
|
+ " ORDER BY 2"
|
|
|
|
FCLTselector("scenario",
|
|
sql,
|
|
{ initKey: scenario_key,
|
|
onChange: "onScenarioChange(this)"
|
|
});
|
|
%>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
<!-- ==========================
|
|
LOKATIES
|
|
============================ -->
|
|
<tr>
|
|
<td class="fixedFG"><% =L("lcl_fg_navigator")%></td>
|
|
</tr><tr><td>
|
|
<%
|
|
FCLTplaatsselector(authparams.ALGreadlevel, {no_table: true,
|
|
xcompact: true,
|
|
nolabel: true,
|
|
locatiekey: loc_key,
|
|
gebouwkey: this_bld,
|
|
verdiepingkey: floor_key,
|
|
startlevel: 2, // Locatie
|
|
autoselect: true,
|
|
filtercode: "CAD",
|
|
moreinfo: true,
|
|
eindlevel: inoutMode == MODE_IN? 4 : 2, // Verdieping of locatie
|
|
onLocChange: "OnLocationChanged()",
|
|
onVerChange: "OnFloorChanged()"
|
|
});
|
|
%></td></tr>
|
|
|
|
<% if (inoutMode == MODE_IN)
|
|
{
|
|
// Hebben ik schrijfrechten op werkplekken?
|
|
// We negeren nog even verdieping, dat controleert het wp_create save script wel.
|
|
var sql = "SELECT MIN(fac_gebruiker_alg_level_write) lvl"
|
|
+ " FROM fac_v_webgebruiker w, fac_functie f"
|
|
+ " WHERE w.fac_functie_key = f.fac_functie_key "
|
|
+ " AND w.prs_perslid_key = " + user_key
|
|
+ " AND fac_functie_code = 'WEB_PRSBOF'";
|
|
var oRs = Oracle.Execute(sql);
|
|
var canWriteWP = !oRs.Eof && oRs("lvl").Value < 9;
|
|
oRs.Close();
|
|
%>
|
|
<!-- ==========================
|
|
RUIMTES
|
|
============================ -->
|
|
<tr class="openFG" id="rooms_help" onClick="toggleFG(this, 'rooms,conts');">
|
|
<td><%=L("lcl_room")%></td>
|
|
</tr>
|
|
|
|
<tr id="conts">
|
|
<td style="padding:0;">
|
|
<input id=werkplek type=checkbox onclick='myRefresh();'>
|
|
<label for=werkplek>
|
|
<span <%= canWriteWP ? "style='cursor:pointer;' onmousedown='mydragstartWP(event);'" : "" %>>
|
|
<%=L("lcl_fg_thema_werkplek")%>
|
|
</span>
|
|
</label>
|
|
<br>
|
|
<input id=contour0 type=checkbox <%=showcontour?"checked":""%> onclick='toggleContour(this)'>
|
|
<label for=contour0><%=L("lcl_fg_thema_contour")%></label>
|
|
<%
|
|
if ((my_cadrechten.canRead('WEB_CADBOF') || my_cadrechten.canRead('WEB_CADFOF')) && inoutMode == MODE_IN)
|
|
{ // Gebruik -2 en -3 voor de alternatieve lagen
|
|
if (S("fg_contourlayers_alt1")!=""&&S("fg_labellayers_alt1") != "")
|
|
{ %>
|
|
<br><input id=contour1 type=checkbox onclick='toggleContour(this)'>
|
|
<label for=contour1><%=L("lcl_fg_thema_contour_alt1")%></label>
|
|
<% }
|
|
if (S("fg_contourlayers_alt2")!=""&&S("fg_labellayers_alt2") != "")
|
|
{ %>
|
|
<br><input id=contour2 type=checkbox onclick='toggleContour(this)'>
|
|
<label for=contour2><%=L("lcl_fg_thema_contour_alt2")%></label>
|
|
<% }
|
|
} %>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<% sql = "";
|
|
|
|
FCLTselector("rooms",
|
|
sql,
|
|
{ initKey: -1,
|
|
emptyOption: "",
|
|
initEmpty: true,
|
|
size: 6,
|
|
multi: true,
|
|
startmulti: true,
|
|
onChange: "myRefresh()"
|
|
}); %>
|
|
</td>
|
|
</tr>
|
|
<% }
|
|
else
|
|
{ // buiten
|
|
%>
|
|
<!-- ==========================
|
|
TERREINEN
|
|
============================ -->
|
|
|
|
<tr class="openFG" id=rooms_help onClick="toggleFG(this, 'terr');">
|
|
<td><label><%=L("lcl_terra")%></label></td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<% sql = "";
|
|
if (loc_key > 0)
|
|
sql = "SELECT alg_terreinsector_key,"
|
|
+ " alg_terreinsector_naam"
|
|
+ " FROM alg_v_aanwezigterreinsector"
|
|
+ " WHERE alg_locatie_key = " + loc_key
|
|
+ " ORDER BY 2";
|
|
|
|
FCLTselector("terr",
|
|
sql,
|
|
{ initKey: -1,
|
|
emptyOption: "",
|
|
initEmpty: true,
|
|
size: 6,
|
|
multi: true,
|
|
onChange: "myRefresh()"
|
|
});
|
|
%>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
|
|
<!-- ==========================
|
|
DISCIPLINES tonen
|
|
============================ -->
|
|
<tr class="closedFG" onClick="toggleFG(this, 'insDisc<%=(inoutMode == MODE_IN)? ",insZoek" : ""%>');">
|
|
<td><%=L("lcl_fg_obj_filter")%></td>
|
|
</tr>
|
|
<tr id="insDisc" style="display:none">
|
|
<td>
|
|
<%
|
|
if (scenario_key == 0)
|
|
var sqlfilter = " fac_functie_code IN ('WEB_INSMAN', 'WEB_INSUSE')" // @??@?SCOPE nog?
|
|
else
|
|
var sqlfilter = " fac_functie_code = 'WEB_INSPRJ'";
|
|
|
|
if (S("fg_publiclayers").length)
|
|
sqlfilter += " OR d.ins_discipline_key IN (" + S("fg_publiclayers").join(",") + ")"
|
|
|
|
sql = "SELECT DISTINCT d.ins_discipline_key"
|
|
+ ", " + lcl.xsqla('d.ins_discipline_omschrijving', 'd.ins_discipline_key')
|
|
+ ", BITAND(dp.ins_disc_params_type, " + (inoutMode == MODE_IN? 4 : 8) + ") defaultOn "
|
|
+ " FROM fac_v_my_disciplines m, ins_v_aanwezigdiscipline d, ins_disc_params dp "
|
|
+ " WHERE d.ins_discipline_key = m.ins_discipline_key(+)" // outer joins voor S("fg_publiclayers")
|
|
+ " AND m.prs_perslid_key (+)="+user_key
|
|
+ " AND d.ins_discipline_min_level = 1"
|
|
+ " AND dp.ins_disc_params_cadlayers IS NOT NULL"
|
|
+ " AND BITAND(dp.ins_disc_params_type, " + (inoutMode == MODE_IN? 1 : 2) + ")>0"
|
|
+ " AND dp.ins_discipline_key = d.ins_discipline_key"
|
|
+ " AND (" + sqlfilter + ")"
|
|
+ " ORDER BY 2";
|
|
|
|
// in init() worden de default-on's gezet
|
|
FCLTselector("sDiscsIn", sql,
|
|
{ onChange: "myRefresh()",
|
|
size: 6,
|
|
extraParamValue: "defaultOn",
|
|
emptyOption: L("lcl_none"),
|
|
multi: true,
|
|
startmulti: true
|
|
});
|
|
%> </td>
|
|
</tr>
|
|
<% if (inoutMode == MODE_IN)
|
|
{ // Zoeken kan alleen (nog maar) binnen
|
|
%>
|
|
<tr id="insZoek" style="display:none">
|
|
<td>
|
|
<table cellspacing="0">
|
|
<tr>
|
|
<td><label for="SearchCode"><%=L("lcl_search")%>:</label></td>
|
|
<td align="right" title="<%=L("lcl_search")%>">
|
|
<input type="text" id="SearchCode" onKeyPress="return onEnter(event, doSearchObj);">
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
<!-- ==========================
|
|
DISCIPLINES Legenda
|
|
============================ -->
|
|
<% if (S("fg_ins_symbols"))
|
|
{ %>
|
|
<tr id='tinsLegend' style="display:none" class="closedFG" onClick="toggleFG(this, 'insLegend');">
|
|
<td><%=L("lcl_fg_obj_legend")%></td>
|
|
<!-- <td><%=L("lcl_fg_obj_legend")%></td> -->
|
|
</tr>
|
|
<tr id=insLegend style="display:none">
|
|
<td><div id=dinsLegend class="canMaxFG" onclick="this.className=(this.className=='canMaxFG'?'isMaxFG':'canMaxFG');">
|
|
<% /* Gevuld in sDiscsChanged/Ajax.Updater/LoadInsLegenda.asp */ %></div>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
<!-- ==========================
|
|
DISCIPLINES toevoegen
|
|
============================ -->
|
|
<% if (S("fg_ins_symbols"))
|
|
{ %>
|
|
<tr id='tinsAdd' style="display:none" class="closedFG" onClick="toggleFG(this, 'insAdd');">
|
|
<!-- <td><%=L("lcl_fg_obj_add")%></td> -->
|
|
<td><%=L("lcl_fg_obj_add")%></td>
|
|
</tr>
|
|
<tr id=insAdd style="display:none">
|
|
<td>
|
|
<div id=dinsAdd class="canMaxFG" onclick="this.className=(this.className=='canMaxFG'?'isMaxFG':'canMaxFG');">
|
|
<% /* Gevuld in sDiscsChanged/Ajax.Updater/LoadInsNew.asp */ %>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<% } %>
|
|
<!-- ==========================
|
|
LABEL THEMA's
|
|
============================ -->
|
|
<tr class="closedFG" onClick="toggleFG(this, 'labelIn,thmIn1,thmIn2,thmIn3')">
|
|
<td><%=L("lcl_fg_info")%></td>
|
|
</tr>
|
|
<tr id="labelIn" style="display:none">
|
|
<td align="left">
|
|
<table cellspacing=0>
|
|
<tr>
|
|
<td>
|
|
<label for="SearchLbl"><%=L("lcl_fg_labels")%>:</label>
|
|
</td>
|
|
<td title="<%=L("lcl_search")%>">
|
|
<% if (scenario_key == 0) { %>
|
|
<input type="text" id="SearchLbl" style="display:none;"
|
|
onKeyPress="return onEnter(event, doSearchLbl);">
|
|
<% } %>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
<tr id="thmIn1" style="display:none">
|
|
<td>
|
|
<% var bitcode = 0x01; // binnen
|
|
if (inoutMode==MODE_OUT)
|
|
bitcode = 0x02; // buiten
|
|
if (scenario_key>0)
|
|
bitcode |= 0x04;
|
|
sql = "SELECT CAD_LABEL_KEY,"
|
|
+ lcl.xsqla('CAD_LABEL_OMSCHRIJVING', 'cad_label_key')
|
|
+ " FROM CAD_LABEL"
|
|
+ " WHERE BITAND(CAD_LABEL_TYPE, " + bitcode + ") = " + bitcode
|
|
+ (scenario_key == 0? " AND BITAND(CAD_LABEL_TYPE, 4) = 0" : "")
|
|
+ " AND (FAC_FUNCTIE_KEY IS NULL"
|
|
+ " OR FAC_FUNCTIE_KEY IN "
|
|
+ " (SELECT FAC_FUNCTIE_KEY FROM fac_v_webgebruiker"
|
|
+ " WHERE prs_perslid_key = " + user_key + "))"
|
|
+ " ORDER BY 2";
|
|
|
|
FCLTselector("sLabelIn", sql,
|
|
{ xxlabel: L("lcl_activity"),
|
|
emptyOption: L("lcl_fg_nolabels"),
|
|
onChange: "sLabelChanged(this)"
|
|
}); %>
|
|
</td>
|
|
</tr>
|
|
<!-- ==========================
|
|
KLEUREN THEMA's
|
|
============================ -->
|
|
<tr id="thmIn2" style="display:none">
|
|
<td id="sThemaIn_help" align="left" style="margin:0"><label><%=L("lcl_fg_thema")%>:</label>
|
|
</td>
|
|
</tr>
|
|
<tr id="thmIn3" style="display:none">
|
|
<td>
|
|
<% sql = "SELECT CAD_THEMA_KEY, "
|
|
+ lcl.xsqla('cad_thema_omschrijving', 'cad_thema_key')
|
|
+ " FROM CAD_THEMA "
|
|
+ " WHERE BITAND(CAD_THEMA_TYPE, " + bitcode + ") = " + bitcode
|
|
+ (scenario_key == 0? " AND BITAND(CAD_THEMA_TYPE, 4) = 0" : "")
|
|
+ " AND (FAC_FUNCTIE_KEY IS NULL"
|
|
+ " OR FAC_FUNCTIE_KEY IN "
|
|
+ " (SELECT FAC_FUNCTIE_KEY FROM fac_v_webgebruiker"
|
|
+ " WHERE prs_perslid_key = " + user_key + "))"
|
|
+ " ORDER BY 2";
|
|
|
|
FCLTselector("sThemaIn", sql,
|
|
{ xxlabel: L("lcl_activity"),
|
|
emptyOption: L("lcl_fg_nothema"),
|
|
onChange: "sThemeChanged(this)"
|
|
}); %>
|
|
</td>
|
|
</tr>
|
|
<!-- ==========================
|
|
De thema legenda wordt dynamisch gevuld
|
|
============================ -->
|
|
<tr id="legendCell">
|
|
<td>
|
|
<div id=fLegenda style='overflow-y:visible;overflow-x:hidden;'>
|
|
<% /* Gevuld in Ajax.Updater/Legenda.asp */ %>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div id="fgmenutoggler" class='toggler' onClick="toggleLayout(this)" title='<%=L("lcl_toggler")%>'>
|
|
</div>
|
|
|
|
<!-- ==========================
|
|
HET plaatje
|
|
============================ -->
|
|
<div id = 'mapCell'>
|
|
<img onclick='onFullScreen(event)'
|
|
src="../Pictures/fullscreen.gif"
|
|
width='21' height='20' id='MinMaxBtn'
|
|
style="cursor:pointer;display:none;position:absolute;z-index:1;height:20px;width:20px;"
|
|
>
|
|
<iframe id=MMap name=MMap src="../SlnkDWF/ToonIMG.asp?ShowButtons=1&ShowLabelMenu=1"
|
|
frameborder='0' framespacing='0' scrolling='no'
|
|
onLoad='init();'
|
|
width="<%=concept? 49 : 100%>%" height="100%">
|
|
</iframe>
|
|
<% if (concept)
|
|
{ %>
|
|
<iframe id=MMap2 name=MMap2 src="../SlnkDWF/ToonIMG.asp?ShowButtons=1&ShowLabelMenu=1&concept=1"
|
|
frameborder='0' framespacing='0' scrolling='no'
|
|
onLoad='init();'
|
|
width="49%" height="100%" style="border-left:4px solid #808080">
|
|
</iframe>
|
|
<% } %>
|
|
</div>
|
|
<div id="fgtabtoggler" class='toggler' onClick="toggleTabLayout(this)" title='<%=L("lcl_toggler")%>'></div>
|
|
|
|
<%
|
|
if (scenario_key > 0)
|
|
{
|
|
AddTabItem(L("lcl_room"), 'PRJ7', 'WEB_PRJBOF', '', "../prj/rap_prj7.asp");
|
|
AddTabItem(L("lcl_prj_workplacecontrol"), 'PRJ1', 'WEB_PRJBOF', '', "../prj/rap_prj3.asp");
|
|
AddTabItem(L("lcl_prj_prsbuffer"), 'PRJ6', 'WEB_PRJBOF', '', "../prj/rap_prj6.asp");
|
|
AddTabItem(L("lcl_prj_objbuffer"), 'PRJ5', 'WEB_PRJBOF', '', "../prj/rap_prj5.asp");
|
|
AddTabItem(L("lcl_prj_persons"), 'PRJ9', 'WEB_INSMAN', '', "../prj/rap_prj9.asp");
|
|
AddTabItem(L("lcl_prj_scenario_notes"), 'PRJ8', 'WEB_PRJBOF', '', "../prj/rap_prj8.asp");
|
|
}
|
|
else if (inoutMode == MODE_IN)
|
|
{
|
|
if (concept)
|
|
AddTabItem(L("lcl_space_manage_h"), 'ALG', 'WEB_CADBOF', '', S("fg_rap_algc"));
|
|
else
|
|
AddTabItem(L("lcl_space_manage_h"), 'ALG', 'WEB_CADALG', '', S("fg_rap_alg"));
|
|
AddTabItem(L("lcl_search_pers"), 'PRS', 'WEB_CADPRS', '', S("fg_rap_prs"));
|
|
AddTabItem(L("lcl_objmanagment_h"), 'INS', 'WEB_CADOBJ', '', S("fg_rap_ins"));
|
|
AddTabItem(L("lcl_cleaning_h"), 'SCH', 'WEB_CADSCH', '', S("fg_rap_sch"));
|
|
AddTabItem(L("lcl_complains"), 'MLD', 'WEB_CADMLD', '', S("fg_rap_mld"));
|
|
AddTabItem(L("lcl_sle_toegang"), 'SLE', 'WEB_CADSLE', '', S("fg_rap_sle"));
|
|
AddTabItem(L("lcl_cnt_contracts"), 'CNT', 'WEB_CADCNT', '', S("fg_rap_cnt"));
|
|
AddTabItem(L("lcl_fg_verhuizing"), 'MOV', 'WEB_PRSBOF', '', S("fg_rap_mov"), true);
|
|
if (S("fg_ins_symbols"))
|
|
{
|
|
AddTabItem(L("lcl_fg_consistentie"), 'MO2', 'WEB_CADOBJ', '', "../cad/rap_insXY.asp");
|
|
}
|
|
}
|
|
else // inoutMode == MODE_OUT
|
|
{
|
|
AddTabItem(L("lcl_terra_manage_h"), 'ALG2', 'WEB_CADALG', 'WEB_ALGMAN', S("fg_rap_alg2"));
|
|
AddTabItem(L("lcl_objmanagment_h"), 'INS2', 'WEB_CADOBJ', 'WEB_INSMAN', S("fg_rap_ins2"));
|
|
AddTabItem(L("lcl_cnt_contracts"), 'CNT', 'WEB_CADCNT', 'WEB_CNTUSE', S("fg_rap_cnt2")); // Stelling: Als je WEB_CNTMAN rechten hebt moet je ook dezelfde WEB_CNTUSE rechten hebben/krijgen.
|
|
}
|
|
%>
|
|
<!-- ==========================
|
|
RAPPORT DEEL
|
|
============================ -->
|
|
<div id='theTabs' class='ui-tabs ui-widget ui-widget-content ui-corner-all'>
|
|
<% var nrTabs = CreateTabs();
|
|
if (!nrTabs) {
|
|
%>
|
|
<script>$(function () { toggleTabLayout(document.getElementById("fgtabtoggler")) });</script>
|
|
<% } %>
|
|
</div>
|
|
</body>
|
|
</html>
|