Added static media for floorplans.
- Legacy-Id: 11539
This commit is contained in:
parent
874000fd6d
commit
c84c18926a
BIN
ietf/static/ietf/images/arrow-ani.gif
Normal file
BIN
ietf/static/ietf/images/arrow-ani.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
173
ietf/static/ietf/js/room_params.js
Normal file
173
ietf/static/ietf/js/room_params.js
Normal file
|
@ -0,0 +1,173 @@
|
|||
var verbose = 0;
|
||||
|
||||
function suffixmap(nm)
|
||||
// Given a name like "foo-ab" or "foo-X-and-Y", change it to the "list-of-room-names" format, "foo-a/foo-b".
|
||||
{
|
||||
var andsuffix = /^(.*-)([^-]+)-and-(.*)$/;
|
||||
var andMatch = andsuffix.exec(nm);
|
||||
if (andMatch && andMatch[0] != '') {
|
||||
nm = andMatch[1] + andMatch[2] + "-" + andMatch[3];
|
||||
}
|
||||
// xyz-a/b/c => xyz-a/xyz-b/xyz-c
|
||||
var abcsuffix = /^(.*)-([a-h0-9]+)[-\/]([a-h0-9]+)([-\/][a-h0-9]+)?$/;
|
||||
var suffixMatch = abcsuffix.exec(nm);
|
||||
if (verbose) alert("nm=" + nm);
|
||||
if (suffixMatch && suffixMatch[0] != '') {
|
||||
if (verbose) alert("matched");
|
||||
nm = suffixMatch[1] + "-" + suffixMatch[2] + "/" +
|
||||
suffixMatch[1] + "-" + suffixMatch[3];
|
||||
if (verbose) alert("nm=>" + nm);
|
||||
if (suffixMatch[4] && suffixMatch[4] != '')
|
||||
nm += "/" + suffixMatch[1] + "-" + suffixMatch[4];
|
||||
if (verbose) alert("nm=>" + nm);
|
||||
}
|
||||
// xyz-abc => xyz-a/xyz-b/xyz-c
|
||||
abcsuffix = /^(.*)-([a-h])([a-h]+)([a-h])?$/;
|
||||
var suffixMatch = abcsuffix.exec(nm);
|
||||
if (suffixMatch && suffixMatch[0] != '') {
|
||||
nm = suffixMatch[1] + "-" + suffixMatch[2] + "/" +
|
||||
suffixMatch[1] + "-" + suffixMatch[3];
|
||||
if (suffixMatch[4] && suffixMatch[4] != '')
|
||||
nm += "/" + suffixMatch[1] + "-" + suffixMatch[4];
|
||||
}
|
||||
if (verbose) alert("suffixmap returning: " + nm);
|
||||
return nm;
|
||||
}
|
||||
|
||||
function roomcoords(nm)
|
||||
// Find the coordinates of a room or list of room names separated by "/".
|
||||
// Calls the function findroom() to get the coordinates for a specific room.
|
||||
{
|
||||
if (!nm) return null;
|
||||
|
||||
if (nm.match("/")) {
|
||||
var nms = nm.split("/");
|
||||
var nm0 = findroom(nms[0]);
|
||||
if (!nm0) return null;
|
||||
for (var i = 1; i < nms.length; i++) {
|
||||
var nmi = roomcoords(nms[i]);
|
||||
if (!nmi) return null;
|
||||
if (nmi[0] < nm0[0]) nm0[0] = nmi[0];
|
||||
if (nmi[1] < nm0[1]) nm0[1] = nmi[1];
|
||||
if (nmi[2] > nm0[2]) nm0[2] = nmi[2];
|
||||
if (nmi[3] > nm0[3]) nm0[3] = nmi[3];
|
||||
}
|
||||
return [nm0[0], nm0[1], nm0[2], nm0[3]];
|
||||
} else {
|
||||
return findroom(nm);
|
||||
}
|
||||
}
|
||||
|
||||
function setarrow(nm, fl)
|
||||
// Place an arrow at the center of a given room name (or list of room names separated by "/").
|
||||
{
|
||||
for (var i = 0; i < arrowsuffixlist.length; i++) {
|
||||
removearrow(arrowsuffixlist[i], fl);
|
||||
}
|
||||
for (var i = 0; i < arguments.length; i+=2) {
|
||||
nm = roommap(arguments[i]);
|
||||
if (verbose) alert("nm=" + nm);
|
||||
var rooms = nm.split(/[|]/);
|
||||
for (var j = 0; j < rooms.length; j++) {
|
||||
var room = rooms[j];
|
||||
var ret = roomcoords(room);
|
||||
if (verbose) alert("roomcoords returned: " + ret);
|
||||
if (!ret) continue;
|
||||
|
||||
var left = ret[0], top = ret[1], right = ret[2], bottom = ret[3], offsetleft = -25, offsettop = -25;
|
||||
if (verbose) alert("left=" + left + ", top=" + top + ", right=" + right + ", bottom=" + bottom);
|
||||
//alert("left=" + left + ", top=" + top + ", right=" + right + ", bottom=" + bottom);
|
||||
var arrowdiv = fl+'-arrowdiv' + (j > 0 ? j : "");
|
||||
//if (verbose) alert("arrowdiv: " + arrowdiv);
|
||||
var adiv = document.getElementById(arrowdiv);
|
||||
// if (verbose) alert("looking for 'arrowdiv'+" + j);
|
||||
if (adiv) {
|
||||
//if (verbose) alert("adiv found");
|
||||
adiv.style.left = left + (right - left) / 2 + offsetleft;
|
||||
adiv.style.top = top + (bottom - top) / 2 + offsettop;
|
||||
adiv.style.visibility = "visible";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function removearrow(which, fl)
|
||||
{
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
var which = arguments[i];
|
||||
var arrowdiv = fl+'-arrowdiv' + (which ? which : "");
|
||||
var adiv = document.getElementById(arrowdiv);
|
||||
// if (verbose) alert("looking for '" + arrowdiv + "'");
|
||||
if (adiv) {
|
||||
// if (verbose) alert("adiv found");
|
||||
adiv.style.left = -500;
|
||||
adiv.style.top = -500;
|
||||
adiv.style.visibility = "hidden";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setarrowlist(which, names)
|
||||
{
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
setarrow(arguments[i], which);
|
||||
}
|
||||
}
|
||||
|
||||
function QueryString()
|
||||
// Create a QueryString object
|
||||
{
|
||||
// get the query string, ignore the ? at the front.
|
||||
var querystring = location.search.substring(1);
|
||||
|
||||
// parse out name/value pairs separated via &
|
||||
var args = querystring.split('&');
|
||||
|
||||
// split out each name = value pair
|
||||
for (var i = 0; i < args.length; i++) {
|
||||
var pair = args[i].split('=');
|
||||
|
||||
// Fix broken unescaping
|
||||
var temp = unescape(pair[0]).split('+');
|
||||
var name_ = temp.join(' ');
|
||||
|
||||
var value_ = '';
|
||||
if (typeof pair[1] == 'string') {
|
||||
temp = unescape(pair[1]).split('+');
|
||||
value_ = temp.join(' ');
|
||||
}
|
||||
|
||||
this[name_] = value_;
|
||||
}
|
||||
|
||||
this.get = function(nm, def) {
|
||||
var value_ = this[nm];
|
||||
if (value_ == null) return def;
|
||||
else return value_;
|
||||
};
|
||||
}
|
||||
|
||||
function checkParams()
|
||||
// Check the parameters for one named "room". If found, call setarrow(room).
|
||||
{
|
||||
var querystring = new QueryString();
|
||||
var room = querystring.get("room");
|
||||
if (room && room != "") setarrow(room);
|
||||
}
|
||||
|
||||
// new functions
|
||||
function located(loc)
|
||||
{
|
||||
if (loc.civic && loc.civic.ROOM) {
|
||||
// map from "TerminalRoom" to "terminal-room" as necessary.
|
||||
setarrow(loc.civic.ROOM.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(), "-green");
|
||||
}
|
||||
}
|
||||
|
||||
// this needs to be called onload
|
||||
function automaticarrow()
|
||||
{
|
||||
// if (navigator.geolocation) {
|
||||
// navigator.geolocation.getCurrentPosition(located);
|
||||
// }
|
||||
}
|
Loading…
Reference in a new issue