* initial commit
This commit is contained in:
commit
eb827a255a
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
dist/*.js
|
||||
dist/*.map
|
||||
680
dist/index.html
vendored
Normal file
680
dist/index.html
vendored
Normal file
@ -0,0 +1,680 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>ETH map</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<link rel="stylesheet" type="text/css" href="ethmap.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="controls">
|
||||
<div class="ui input">
|
||||
<select id="floorSelect">
|
||||
<option value="-1">All floors</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="ui input">
|
||||
<input type="text" id="filter" list="roomList" autocomplete="off" placeholder="Find room..."/>
|
||||
</div>
|
||||
<datalist id="roomList"></datalist>
|
||||
<h1 id="label"></h1>
|
||||
</div>
|
||||
|
||||
<div class="svgbox" id="map-container">
|
||||
<svg class="floor floor-0" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<clipPath id="outerWallClip0">
|
||||
<path id="outerWall0" class="wall" d="M142.5,7
|
||||
C275,10 275,10 279,105
|
||||
C275,200 275,200 142.5,203
|
||||
C10,200 10,200 7,105
|
||||
C10,10 10,10 142.5,7
|
||||
z" />
|
||||
</clipPath>
|
||||
<g class="walls">
|
||||
<use class="wall" href="#outerWall0" />
|
||||
|
||||
<!-- Northern Elevator block-->
|
||||
<g id="northElevators" class="elevators">
|
||||
<rect x="132" y="30" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="142.5" y="30" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="132" y="50" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="142.5" y="50" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="133" y="31" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="144" y="31" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="133" y="51" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="144" y="51" />
|
||||
</g>
|
||||
|
||||
<!-- Northern stairs block-->
|
||||
<g id="northStairs">
|
||||
<path class="inner-wall stairs" d="M165,30 h22 v30 h-22 z"/>
|
||||
<use href="sprites.svg#stairs-icon" width="14" height="14" x="169" y="38" />
|
||||
</g>
|
||||
<rect x="102" y="30" width="18" height="30" class="inner-wall here-must-be-aliens"/>
|
||||
|
||||
<!-- Southern Elevator block-->
|
||||
<g id="southElevators" class="elevators">
|
||||
<rect x="132" y="150" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="142.5" y="150" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="132" y="170" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
<rect x="142.5" y="170" width="10.5" height="10" class="inner-wall elevator"/>
|
||||
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="133" y="151" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="144" y="151" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="133" y="171" />
|
||||
<use href="sprites.svg#elevator-icon" width="8" height="8" x="144" y="171" />
|
||||
</g>
|
||||
|
||||
<!-- Southern stairs block-->
|
||||
<g id="southStairs">
|
||||
<path class="inner-wall stairs" d="M120,150 h-22 v30 h22 z"/>
|
||||
<use href="sprites.svg#stairs-icon" width="14" height="14" x="102" y="158" />
|
||||
</g>
|
||||
<rect x="165" y="150" width="17" height="30" class="inner-wall here-must-be-aliens"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- West side -->
|
||||
<g><path class="room" d="M0,90 h75 v-30 h-28 v-60 H0 z" clip-path="url(#outerWallClip0)" id="r_ericsson_garage"/><use class="door-marker" href="sprites.svg#door-e" x="75" y="80" width="8" height="8"/></g>
|
||||
<path class="room" d="M47,00 v60 h30 v-60 z" clip-path="url(#outerWallClip0)" id="r_bike_storage"/>
|
||||
<g><path class="room" d="M77,00 v40 h25 v-10 h18 V0 z" clip-path="url(#outerWallClip0)" id="r_medical_bay"/><use class="door-marker" href="sprites.svg#door-e" x="120" y="22" width="8" height="8"/></g>
|
||||
<g><path class="room" d="M77,40 h25 v20 h18 v15 h-45 v-15 h2 z" id="r_cross_bar_club"/><use class="door-marker" href="sprites.svg#door-s" x="77" y="75" width="8" height="8"/></g>
|
||||
<rect x="88" y="75" width="15" height="15" class="storage"/>
|
||||
<g><rect x="103" y="75" width="17" height="15" class="room" id="r_security"/><use class="door-marker" href="sprites.svg#door-e" x="120" y="80" width="8" height="8"/></g>
|
||||
|
||||
<path class="speedgate" d="M120,90 v30"/>
|
||||
|
||||
<g><rect x="60" y="90" width="15" height="30" class="room" id="r_bluetooth"/><use class="door-marker" href="sprites.svg#door-e" x="75" y="105" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="0" y="120" width="75" height="30" class="room" id="r_hilda" clip-path="url(#outerWallClip0)"/><use class="door-marker" href="sprites.svg#door-e" x="75" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="150" width="75" height="30" class="room" id="r_lars_magnus_ericsson" clip-path="url(#outerWallClip0)"/><use class="door-marker" href="sprites.svg#door-e" x="75" y="172" width="8" height="8"/></g>
|
||||
<g><rect x="45" y="180" width="60" height="30" class="room" id="r_titan" clip-path="url(#outerWallClip0)"/><use class="door-marker" href="sprites.svg#door-n" x="75" y="172" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="88" y="120" width="15" height="30" class="room" id="r_erlang"/><use class="door-marker" href="sprites.svg#door-n" x="88" y="112" width="8" height="8"/></g>
|
||||
<g><rect x="103" y="120" width="17" height="30" class="room" id="r_axe"/><use class="door-marker" href="sprites.svg#door-n" x="112" y="112" width="8" height="8"/></g>
|
||||
|
||||
<!-- East side -->
|
||||
<g><rect x="165" y="120" width="17" height="20" class="room" id="r_reception"/><use class="door-marker" href="sprites.svg#door-s" x="174" y="140" width="8" height="8"/></g>
|
||||
<g><path class="room" d="M165,210 v-30 h17 v-10 h10 v10v-10 h12 v40 z" clip-path="url(#outerWallClip0)" id="r_food_heating_area"/><use class="door-marker" href="sprites.svg#door-w" x="157" y="180" width="8" height="8"/></g>
|
||||
<path class="inner-wall" d="M182,120 h13 v50 h-13 v-20 h3 v-10 h-3 z" clip-path="url(#outerWallClip0)"/>
|
||||
|
||||
<path class="storage" d="M180,0 v30 h7 v30 H285 V0 z" clip-path="url(#outerWallClip0)" id="kitchen_aka_mordor"/>
|
||||
<rect x="165" y="60" width="30" height="30" class="inner-wall bar" id="r_bar"/>
|
||||
<g><path class="room canteen" d="M195,60 v110 h7 V210 H285 V60 z" clip-path="url(#outerWallClip0)" id="r_canteen"/><use class="door-marker" href="sprites.svg#door-w" x="187" y="101.5" width="8" height="8"/></g>
|
||||
|
||||
<use href="sprites.svg#toilet-men-icon" width="14" height="10" x="182" y="125"/>
|
||||
<use href="sprites.svg#toilet-women-icon" width="14" height="10" x="182" y="155"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
<svg class="floor floor-1" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<clipPath id="outerWallClip1">
|
||||
<path id="outerWall1" d="M0,0
|
||||
h120 v8 q22.5,-1 45,0 v-8 h120
|
||||
v90 h-8 q1,15 0,30 h8 v90
|
||||
h-120 v-8 q-22.5,1 -45,0 v8 h-120
|
||||
v-90 h8 q-1-15 0,-30 h-8 v-90
|
||||
z M120,60
|
||||
h45 v90 h-45 v-90
|
||||
z" />
|
||||
</clipPath>
|
||||
<g class="walls">
|
||||
<use class="wall" href="#outerWall1" />
|
||||
|
||||
<path class="room" d="M120,60h12v73h21v-73h12v90h-45z" id="t_1_25"/>
|
||||
|
||||
<!-- Northern WC + Elevator block-->
|
||||
<g id="northTechBlock">
|
||||
<path id="northToilet" class="inner-wall toilet" d="M103,30 h9 v3 h20 v27 h-29 z"/>
|
||||
<use href="sprites.svg#toilet-icon" width="14" height="14" x="111" y="40"/>
|
||||
<use href="#northElevators" />
|
||||
<use href="#northStairs" />
|
||||
<path class="speedgate" d="M155,30 h10" />
|
||||
</g>
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="10"/>
|
||||
|
||||
<!-- Southern WC + Elevator block-->
|
||||
<g id="southTechBlock">
|
||||
<path class="inner-wall toilet" d="M153,150 h29 v30 h-9 v-3 h-20 z"/>
|
||||
<use href="sprites.svg#toilet-icon" width="14" height="14" x="160" y="157"/>
|
||||
<use href="#southElevators" />
|
||||
<use href="#southStairs" />
|
||||
<path class="speedgate" d="M120,180 h10" />
|
||||
</g>
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="183"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- North west -->
|
||||
<g><rect x="104" y="0" width="16" height="20" class="room" id="r_1_24"/><use class="door-marker" href="sprites.svg#door-s" x="113" y="20" width="8" height="8"/></g>
|
||||
<g>
|
||||
<rect x="0" y="20" width="60" height="170" class="room" id="r_lab_main" clip-path="url(#outerWallClip1)"/>
|
||||
<use class="door-marker" href="sprites.svg#door-e" x="60" y="20" width="8" height="8"/>
|
||||
<use class="door-marker" href="sprites.svg#door-e" x="60" y="180" width="8" height="8"/>
|
||||
</g>
|
||||
|
||||
<!-- North east -->
|
||||
<g><rect x="165" y="0" width="16" height="20" class="room" id="r_1_01"/><use class="door-marker" href="sprites.svg#door-s" x="174" y="20" width="8" height="8"/></g>
|
||||
|
||||
<rect x="200" y="36" width="11" height="12" class="storage"/>
|
||||
<g><rect x="200" y="48" width="11" height="6" class="room" id="r_1_06"/><use class="door-marker" href="sprites.svg#door-w" x="192" y="47" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="217" y="36" width="6" height="8" class="room" id="r_1_04"/><use class="door-marker" href="sprites.svg#door-n" x="216" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="223" y="36" width="6" height="8" class="room" id="pb_1_03"/><use class="door-marker" href="sprites.svg#door-n" x="222" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="36" width="12" height="8" class="room" id="r_1_05"/><use class="door-marker" href="sprites.svg#door-n" x="228" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="44" width="12" height="16" class="room" id="r_1_02"/><use class="door-marker" href="sprites.svg#door-w" x="209" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="44" width="12" height="16" class="room" id="r_1_07"/><use class="door-marker" href="sprites.svg#door-e" x="241" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="60" width="12" height="8" class="room" id="r_1_09"/><use class="door-marker" href="sprites.svg#door-w" x="209" y="60" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="60" width="12" height="8" class="room" id="r_1_08"/><use class="door-marker" href="sprites.svg#door-e" x="241" y="60" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="68" width="24" height="16" class="room" id="r_1_10"/><use class="door-marker" href="sprites.svg#door-s" x="217" y="84" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="199" y="60" width="12" height="10" class="room" id="r_1_26"/><use class="door-marker" href="sprites.svg#door-e" x="211" y="60" width="8" height="8"/></g>
|
||||
<g><rect x="165" y="60" width="34" height="38" class="room" id="r_coor"/><use class="door-marker" href="sprites.svg#door-n" x="191" y="52" width="8" height="8"/></g>
|
||||
<rect x="199" y="70" width="12" height="28" class="storage"/>
|
||||
<g><rect x="165" y="98" width="34" height="22" class="room" id="r_itte"/><use class="door-marker" href="sprites.svg#door-e" x="199" y="97.5" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west : EMPTY -->
|
||||
<!-- South east -->
|
||||
<rect x="199" y="105" width="12" height="5" class="storage"/>
|
||||
<g><rect x="199" y="110" width="12" height="10" class="room" id="r_1_27"/><use class="door-marker" href="sprites.svg#door-e" x="211" y="110" width="8" height="8"/></g>
|
||||
<g><rect x="199" y="140" width="12" height="10" class="room" id="r_1_28"/><use class="door-marker" href="sprites.svg#door-e" x="211" y="140" width="8" height="8"/></g>
|
||||
<g><rect x="165" y="120" width="34" height="30" class="room" id="r_hp"/><use class="door-marker" href="sprites.svg#door-s" x="191" y="150" width="8" height="8"/></g>
|
||||
<rect x="199" y="120" width="12" height="20" class="storage"/>
|
||||
|
||||
<g><rect x="217" y="104" width="6" height="8" class="room" id="pb_1_12"/><use class="door-marker" href="sprites.svg#door-n" x="216" y="96" width="8" height="8"/></g>
|
||||
<g><rect x="223" y="104" width="6" height="8" class="room" id="pb_1_13"/><use class="door-marker" href="sprites.svg#door-n" x="222" y="96" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="112" width="12" height="8" class="room" id="r_1_11"/><use class="door-marker" href="sprites.svg#door-w" x="209" y="112" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="104" width="12" height="16" class="room" id="r_1_14"/><use class="door-marker" href="sprites.svg#door-e" x="241" y="112" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="120" width="12" height="8" class="room" id="r_1_16"/><use class="door-marker" href="sprites.svg#door-w" x="209" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="120" width="12" height="8" class="room" id="r_1_15"/><use class="door-marker" href="sprites.svg#door-e" x="241" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="128" width="24" height="16" class="room" id="r_1_17"/><use class="door-marker" href="sprites.svg#door-s" x="217" y="144" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="217" y="161" width="6" height="8" class="room" id="pb_1_18"/><use class="door-marker" href="sprites.svg#door-n" x="216" y="153" width="8" height="8"/></g>
|
||||
<g><rect x="223" y="161" width="6" height="8" class="room" id="pb_1_19"/><use class="door-marker" href="sprites.svg#door-n" x="222" y="153" width="8" height="8"/></g>
|
||||
<g><rect x="217" y="169" width="12" height="8" class="room" id="r_1_21"/><use class="door-marker" href="sprites.svg#door-s" x="217" y="177" width="8" height="8"/></g>
|
||||
<g><rect x="229" y="161" width="12" height="16" class="room" id="r_1_22"/><use class="door-marker" href="sprites.svg#door-s" x="229" y="177" width="8" height="8"/></g>
|
||||
|
||||
<rect x="182" y="157" width="18" height="10" class="storage"/>
|
||||
<g><rect x="182" y="167" width="18" height="10" class="room" id="r_1_20"/><use class="door-marker" href="sprites.svg#door-e" x="200" y="169" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="165" y="190" width="16" height="20" class="room" id="r_1_23"/><use class="door-marker" href="sprites.svg#door-n" x="173" y="182" width="8" height="8"/></g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="floor floor-2" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<g class="walls">
|
||||
<path class="wall" d="M0,0
|
||||
h120 v8 q22.5,-1 45,0 v-8 h120
|
||||
v90 h-8 q1,15 0,30 h8 v90
|
||||
h-120 v-8 q-22.5,1 -45,0 v8 h-120
|
||||
v-90 h8 q-1-15 0,-30 h-8 v-90
|
||||
z M120,60
|
||||
h45 v30 h60 v30 h-60 v30 h-45 v-30 h-60 v-30 h60 v-30
|
||||
z" />
|
||||
|
||||
<g>
|
||||
<path class="room" d="M60,90 h60 v30 h-60 z" id="t_2_46"/>
|
||||
<use class="door-marker" href="sprites.svg#door-n" x="90" y="82" width="8" height="8"/>
|
||||
<use class="door-marker" href="sprites.svg#door-s" x="90" y="120" width="8" height="8"/>
|
||||
</g>
|
||||
<g>
|
||||
<path class="room" d="M165,90 h60 v30 h-60 z" id="t_2_47"/>
|
||||
<use class="door-marker" href="sprites.svg#door-n" x="180" y="82" width="8" height="8"/>
|
||||
<use class="door-marker" href="sprites.svg#door-s" x="180" y="120" width="8" height="8"/>
|
||||
</g>
|
||||
|
||||
<!-- Northern WC + Elevator + Stairs block-->
|
||||
<use href="#northTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="98" y="60"/>
|
||||
|
||||
<!-- Southern WC + Elevator + Stairs block-->
|
||||
<use href="#southTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="168" y="134"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- North west -->
|
||||
<g><rect x="93" y="36" width="10" height="12" class="room" id="r_2_37"/><use class="door-marker" href="sprites.svg#door-w" x="85" y="36" width="8" height="8"/></g>
|
||||
<g><rect x="93" y="48" width="10" height="12" class="room" id="r_2_38"/><use class="door-marker" href="sprites.svg#door-w" x="85" y="52" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="36" width="15" height="16" class="room" id="r_2_01"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="36" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="54" y="36" width="15" height="16" class="room" id="r_2_02"/><use class="door-marker" href="sprites.svg#door-w" x="46" y="36" width="8" height="8"/></g>
|
||||
<g><rect x="69" y="36" width="15" height="8" class="room" id="r_2_03"/><use class="door-marker" href="sprites.svg#door-e" x="84" y="36" width="8" height="8"/></g>
|
||||
<g><rect x="69" y="44" width="7.5" height="8" class="room" id="pb_2_04"/><use class="door-marker" href="sprites.svg#door-s" x="68.75" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="76.5" y="44" width="7.5" height="8" class="room" id="pb_2_05"/><use class="door-marker" href="sprites.svg#door-s" x="76.25" y="52" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="54" y="60" width="7.5" height="8" class="room" id="pb_2_06"/><use class="door-marker" href="sprites.svg#door-n" x="53.75" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="61.5" y="60" width="7.5" height="8" class="room" id="pb_2_07"/><use class="door-marker" href="sprites.svg#door-n" x="61.25" y="52" width="8" height="8"/></g>
|
||||
<rect x="69" y="60" width="15" height="8" class="storage"/>
|
||||
<g><rect x="54" y="68" width="30" height="16" class="room" id="r_2_10"/><use class="door-marker" href="sprites.svg#door-s" x="54" y="84" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="66" width="15" height="8" class="room" id="r_2_08"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="66" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="74" width="15" height="16" class="room" id="r_2_09"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="74" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="0" y="60" width="22" height="16" class="room" id="r_2_39"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="60" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="76" width="22" height="14" class="room" id="r_2_40"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="82" width="8" height="8"/></g>
|
||||
|
||||
<!-- North east -->
|
||||
<rect x="200" y="36" width="11" height="12" class="storage"/>
|
||||
<g><rect x="200" y="48" width="11" height="12" class="room" id="r_2_31"/><use class="door-marker" href="sprites.svg#door-w" x="192" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="36" width="16" height="12" class="room" id="r_2_35"/><use class="door-marker" href="sprites.svg#door-e" x="227" y="36" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="48" width="16" height="32" class="room" id="r_2_32"/><use class="door-marker" href="sprites.svg#door-e" x="227" y="72" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="36" width="15" height="16" class="room" id="r_2_36"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="36" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="66" width="7.5" height="8" class="room" id="pb_2_33"/><use class="door-marker" href="sprites.svg#door-n" x="239.75" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="247.5" y="66" width="7.5" height="8" class="room" id="pb_2_34"/><use class="door-marker" href="sprites.svg#door-n" x="247.25" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="74" width="15" height="16" class="room" id="r_2_30"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="82" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="90" width="15" height="10" class="room" id="r_2_29"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="90" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west -->
|
||||
<g><rect x="0" y="120" width="22" height="10" class="room" id="r_2_41"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="130" width="22" height="20" class="room" id="r_2_42"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="142" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="150" width="22" height="20" class="room" id="r_2_43"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="170" width="22" height="17" class="room" id="r_2_44"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="170" width="8" height="8"/></g>
|
||||
<g><rect x="0" y="187" width="22" height="23" class="room" id="r_2_45"/><use class="door-marker" href="sprites.svg#door-e" x="22" y="187" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="110" width="15" height="10" class="room" id="r_2_11"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="112" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="120" width="15" height="22" class="room" id="r_2_12"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="142" width="7.5" height="8" class="room" id="pb_2_13"/><use class="door-marker" href="sprites.svg#door-s" x="30.25" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="37.5" y="142" width="7.5" height="8" class="room" id="pb_2_14"/><use class="door-marker" href="sprites.svg#door-s" x="37.75" y="150" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="158" width="15" height="16" class="room" id="r_2_17"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="166" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="55" y="134" width="16" height="28" class="room" id="r_2_15"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="134" width="8" height="8"/></g>
|
||||
<g><rect x="55" y="162" width="16" height="12" class="room" id="r_2_18"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="166" width="8" height="8"/></g>
|
||||
<g><rect x="71" y="150" width="15" height="12" class="room" id="r_2_16"/><use class="door-marker" href="sprites.svg#door-e" x="86" y="150" width="8" height="8"/></g>
|
||||
<rect x="71" y="162" width="15" height="12" class="storage"/>
|
||||
|
||||
<!-- South east -->
|
||||
<g><rect x="240" y="120" width="15" height="16" class="room" id="r_2_28"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="136" width="15" height="8" class="room" id="r_2_27"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="136" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="158" width="7.5" height="8" class="room" id="pb_2_22"/><use class="door-marker" href="sprites.svg#door-n" x="239.75" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="247.5" y="158" width="7.5" height="8" class="room" id="pb_2_23"/><use class="door-marker" href="sprites.svg#door-n" x="247.25" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="166" width="15" height="8" class="room" id="r_2_21"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="166" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="201" y="134" width="24" height="16" class="room" id="r_2_26"/><use class="door-marker" href="sprites.svg#door-n" x="217" y="126" width="8" height="8"/></g>
|
||||
<g><rect x="201" y="150" width="12" height="8" class="room" id="r_2_24"/><use class="door-marker" href="sprites.svg#door-w" x="193" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="213" y="150" width="12" height="8" class="room" id="r_2_25"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="201" y="158" width="12" height="16" class="room" id="r_2_19"/><use class="door-marker" href="sprites.svg#door-w" x="193" y="166" width="8" height="8"/></g>
|
||||
<g><rect x="213" y="158" width="12" height="16" class="room" id="r_2_20"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="166" width="8" height="8"/></g>
|
||||
|
||||
<rect x="182" y="150" width="10" height="12" class="storage"/>
|
||||
<rect x="182" y="162" width="10" height="12" class="storage"/>
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="floor floor-3" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<g class="walls">
|
||||
<path class="wall" d="M0,0
|
||||
h120 v8 q22.5,-1 45,0 v-8 h120
|
||||
v90 h-8 q1,15 0,30 h8 v90
|
||||
h-120 v-8 q-22.5,1 -45,0 v8 h-120
|
||||
v-90 h8 q-1-15 0,-30 h-8 v-90
|
||||
z M120,60
|
||||
h45 v30 h60 v30 h-60 v30 h-45 v-30 h-60 v-30 h60 v-30
|
||||
z" />
|
||||
|
||||
<!-- Northern WC + Elevator + Stairs block-->
|
||||
<use href="#northTechBlock" />
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="10"/>
|
||||
|
||||
<!-- Southern WC + Elevator + Stairs block-->
|
||||
<use href="#southTechBlock" />
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="183"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- North west -->
|
||||
<g><rect x="90" y="0" width="30" height="20" class="room" id="r_3_36"/><use class="door-marker" href="sprites.svg#door-s" x="112" y="20" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="93" y="36" width="10" height="12" class="room" id="r_3_06"/><use class="door-marker" href="sprites.svg#door-w" x="85" y="36" width="8" height="8"/></g>
|
||||
<rect x="93" y="48" width="10" height="12" class="storage"/>
|
||||
|
||||
<g><rect x="30" y="36" width="15" height="16" class="room" id="r_3_09"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="36" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="55" y="36" width="6" height="8" class="room" id="pb_3_01"/><use class="door-marker" href="sprites.svg#door-n" x="54" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="61" y="36" width="6" height="8" class="room" id="pb_3_05"/><use class="door-marker" href="sprites.svg#door-n" x="60" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="67" y="36" width="6" height="8" class="room" id="pb_3_02"/><use class="door-marker" href="sprites.svg#door-n" x="66" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="73" y="36" width="6" height="8" class="room" id="pb_3_03"/><use class="door-marker" href="sprites.svg#door-n" x="72" y="28" width="8" height="8"/></g>
|
||||
<rect x="55" y="44" width="12" height="8" class="storage"/>
|
||||
<g><rect x="55" y="52" width="12" height="8" class="room" id="r_3_04"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="67" y="44" width="12" height="16" class="room" id="r_3_12"/><use class="door-marker" href="sprites.svg#door-e" x="79" y="52" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="66" width="15" height="8" class="room" id="r_3_08"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="66" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="74" width="15" height="16" class="room" id="r_3_07"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="82" width="8" height="8"/></g>
|
||||
|
||||
<!-- North east -->
|
||||
<g><rect x="165" y="0" width="35" height="20" class="room" id="r_3_35"/><use class="door-marker" href="sprites.svg#door-s" x="165" y="20" width="8" height="8"/></g>
|
||||
|
||||
<rect x="200" y="36" width="11" height="12" class="storage"/>
|
||||
<g><rect x="200" y="48" width="11" height="12" class="room" id="r_3_34"/><use class="door-marker" href="sprites.svg#door-w" x="192" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="36" width="14" height="14" class="room" id="r_3_33"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="42" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="50" width="14" height="10" class="room" id="r_3_32"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="50" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="36" width="15" height="16" class="room" id="r_3_31"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="44" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="66" width="7.5" height="8" class="room" id="pb_3_30"/><use class="door-marker" href="sprites.svg#door-n" x="239.75" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="247.5" y="66" width="7.5" height="8" class="room" id="pb_3_29"/><use class="door-marker" href="sprites.svg#door-n" x="247.25" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="74" width="15" height="16" class="room" id="r_3_28"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="82" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="90" width="15" height="10" class="room" id="r_3_27"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="90" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west -->
|
||||
<g><rect x="30" y="110" width="15" height="10" class="room" id="r_3_37"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="111" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="120" width="15" height="22" class="room" id="r_3_39"/><use class="door-marker" href="sprites.svg#door-w" x="22" y="134" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="142" width="15" height="8" class="room" id="r_3_38"/><use class="door-marker" href="sprites.svg#door-w" x="22" y="142" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="150" width="15" height="8" class="room" id="r_3_41"/><use class="door-marker" href="sprites.svg#door-w" x="22" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="158" width="15" height="8" class="room" id="r_3_42"/><use class="door-marker" href="sprites.svg#door-w" x="22" y="158" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="166" width="7.5" height="8" class="room" id="pb_3_40"/><use class="door-marker" href="sprites.svg#door-s" x="29.75" y="174" width="8" height="8"/></g>
|
||||
<g><rect x="37.5" y="166" width="7.5" height="8" class="room" id="pb_3_21"/><use class="door-marker" href="sprites.svg#door-s" x="37.25" y="174" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="55" y="150" width="8" height="6" class="room" id="pb_3_11"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="149" width="8" height="8"/></g>
|
||||
<g><rect x="55" y="156" width="8" height="6" class="room" id="pb_3_10"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="155" width="8" height="8"/></g>
|
||||
<g><rect x="63" y="150" width="8" height="12" class="room" id="r_3_13"/><use class="door-marker" href="sprites.svg#door-n" x="63" y="142" width="8" height="8"/></g>
|
||||
<g><rect x="55" y="162" width="16" height="12" class="room" id="r_3_14"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="162" width="8" height="8"/></g>
|
||||
<g><rect x="71" y="162" width="15" height="12" class="room" id="r_3_15"/><use class="door-marker" href="sprites.svg#door-e" x="86" y="166" width="8" height="8"/></g>
|
||||
<rect x="71" y="150" width="15" height="12" class="storage"/>
|
||||
|
||||
<g><rect x="85" y="190" width="35" height="20" class="room" id="r_3_16"/><use class="door-marker" href="sprites.svg#door-n" x="112" y="182" width="8" height="8"/></g>
|
||||
|
||||
<!-- South east -->
|
||||
<g>
|
||||
<rect x="240" y="120" width="15" height="8" class="room" id="r_3_26"/>
|
||||
<use class="door-marker" href="sprites.svg#door-w" x="232" y="120" width="8" height="8"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect x="240" y="128" width="15" height="16" class="room" id="r_3_25"/>
|
||||
<use class="door-marker" href="sprites.svg#door-w" x="232" y="128" width="8" height="8"/>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="240" y="158" width="15" height="16" class="room" id="r_3_18"/>
|
||||
<use class="door-marker" href="sprites.svg#door-w" x="232" y="166" width="8" height="8"/>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="201" y="150" width="12" height="8" class="room" id="r_3_23"/>
|
||||
<use class="door-marker" href="sprites.svg#door-w" x="193" y="150" width="8" height="8"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect x="213" y="150" width="12" height="8" class="room" id="r_3_22"/>
|
||||
<use class="door-marker" href="sprites.svg#door-e" x="225" y="150" width="8" height="8"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect x="201" y="158" width="12" height="16" class="room" id="r_3_24"/>
|
||||
<use class="door-marker" href="sprites.svg#door-w" x="193" y="166" width="8" height="8"/>
|
||||
</g>
|
||||
<rect x="213" y="158" width="12" height="8" class="storage"/>
|
||||
<g>
|
||||
<rect x="213" y="166" width="6" height="8" class="room" id="pb_3_20"/>
|
||||
<use class="door-marker" href="sprites.svg#door-s" x="212" y="174" width="8" height="8"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect x="219" y="166" width="6" height="8" class="room" id="pb_3_19"/>
|
||||
<use class="door-marker" href="sprites.svg#door-s" x="218" y="174" width="8" height="8"/>
|
||||
</g>
|
||||
|
||||
<g>
|
||||
<rect x="165" y="190" width="30" height="20" class="room" id="r_3_17"/>
|
||||
<use class="door-marker" href="sprites.svg#door-n" x="165" y="182" width="8" height="8"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="floor floor-4" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<g class="walls">
|
||||
<path class="wall" d="M0,0
|
||||
h120 v8 q22.5,-1 45,0 v-8 h120
|
||||
v90 h-8 q1,15 0,30 h8 v90
|
||||
h-120 v-8 q-22.5,1 -45,0 v8 h-120
|
||||
v-90 h8 q-1-15 0,-30 h-8 v-90
|
||||
z M120,60
|
||||
h45 v30 h60 v30 h-60 v30 h-45 v-30 h-60 v-30 h60 v-30
|
||||
z" />
|
||||
|
||||
<!-- Northern WC + Elevator + Stairs block-->
|
||||
<use href="#northTechBlock" />
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="10"/>
|
||||
<!-- Southern WC + Elevator + Stairs block-->
|
||||
<use href="#southTechBlock" />
|
||||
<use href="#kitchen-icon" width="30" height="15" x="128" y="183"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- North west -->
|
||||
<g><rect x="90" y="0" width="30" height="20" class="room" id="r_4_35"/><use class="door-marker" href="sprites.svg#door-s" x="113" y="20" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="93" y="36" width="10" height="12" class="room" id="r_4_06"/><use class="door-marker" href="sprites.svg#door-w" x="85" y="36" width="8" height="8"/></g>
|
||||
<rect x="93" y="48" width="10" height="12" class="storage"/>
|
||||
|
||||
<g><rect x="30" y="36" width="15" height="16" class="room" id="r_4_09"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="35" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="55" y="36" width="6" height="8" class="room" id="pb_4_01"/><use class="door-marker" href="sprites.svg#door-n" x="54" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="61" y="36" width="6" height="8" class="room" id="pb_4_05"/><use class="door-marker" href="sprites.svg#door-n" x="60" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="67" y="36" width="6" height="8" class="room" id="pb_4_02"/><use class="door-marker" href="sprites.svg#door-n" x="66" y="28" width="8" height="8"/></g>
|
||||
<g><rect x="73" y="36" width="6" height="8" class="room" id="pb_4_03"/><use class="door-marker" href="sprites.svg#door-n" x="72" y="28" width="8" height="8"/></g>
|
||||
<rect x="55" y="44" width="12" height="8" class="storage"/>
|
||||
<g><rect x="55" y="52" width="12" height="8" class="room" id="r_4_04"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="67" y="44" width="12" height="16" class="room" id="r_4_12"/><use class="door-marker" href="sprites.svg#door-e" x="79" y="52" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="66" width="15" height="8" class="room" id="r_4_08"/><use class="door-marker" href="sprites.svg#door-n" x="38" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="74" width="15" height="16" class="room" id="r_4_07"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="83" width="8" height="8"/></g>
|
||||
|
||||
<!-- North east -->
|
||||
<g><rect x="165" y="0" width="35" height="20" class="room" id="r_4_34"/><use class="door-marker" href="sprites.svg#door-s" x="165" y="20" width="8" height="8"/></g>
|
||||
|
||||
<rect x="200" y="36" width="11" height="12" class="storage"/>
|
||||
<g><rect x="200" y="48" width="11" height="12" class="room" id="r_4_33"/><use class="door-marker" href="sprites.svg#door-w" x="192" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="36" width="14" height="14" class="room" id="r_4_32"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="42" width="8" height="8"/></g>
|
||||
<g><rect x="211" y="50" width="14" height="10" class="room" id="r_4_31"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="51" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="36" width="15" height="16" class="room" id="r_4_30"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="44" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="66" width="7.5" height="8" class="room" id="pb_4_29"/><use class="door-marker" href="sprites.svg#door-n" x="239.5" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="247.5" y="66" width="7.5" height="8" class="room" id="pb_4_28"/><use class="door-marker" href="sprites.svg#door-n" x="247" y="58" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="74" width="15" height="16" class="room" id="r_4_27"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="82" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="90" width="15" height="10" class="room" id="r_4_26"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="90" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west -->
|
||||
<g><rect x="30" y="110" width="15" height="10" class="room" id="r_4_36"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="112" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="120" width="15" height="16" class="room" id="r_4_38"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="121" width="8" height="8"/></g>
|
||||
<g><rect x="30" y="136" width="15" height="8" class="room" id="r_4_37"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="136" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="30" y="158" width="15" height="16" class="room" id="r_4_39"/><use class="door-marker" href="sprites.svg#door-e" x="45" y="166" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="55" y="150" width="8" height="6" class="room" id="pb_4_11"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="149" width="8" height="8"/></g>
|
||||
<g><rect x="55" y="156" width="8" height="6" class="room" id="pb_4_10"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="155" width="8" height="8"/></g>
|
||||
<g><rect x="63" y="150" width="8" height="12" class="room" id="r_4_13"/><use class="door-marker" href="sprites.svg#door-n" x="63" y="142" width="8" height="8"/></g>
|
||||
<g><rect x="55" y="162" width="16" height="12" class="room" id="r_4_14"/><use class="door-marker" href="sprites.svg#door-w" x="47" y="162" width="8" height="8"/></g>
|
||||
<rect x="71" y="162" width="15" height="12" class="storage"/>
|
||||
<g><rect x="71" y="150" width="15" height="12" class="room" id="r_4_15"/><use class="door-marker" href="sprites.svg#door-e" x="86" y="150" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="85" y="190" width="35" height="20" class="room" id="r_4_16"/><use class="door-marker" href="sprites.svg#door-n" x="112" y="182" width="8" height="8"/></g>
|
||||
|
||||
<!-- South east -->
|
||||
<g><rect x="240" y="120" width="15" height="8" class="room" id="r_4_25"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="240" y="128" width="15" height="16" class="room" id="r_4_24"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="128" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="240" y="158" width="15" height="16" class="room" id="r_4_18"/><use class="door-marker" href="sprites.svg#door-w" x="232" y="166" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="201" y="150" width="12" height="8" class="room" id="r_4_22"/><use class="door-marker" href="sprites.svg#door-w" x="193" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="213" y="150" width="12" height="8" class="room" id="r_4_21"/><use class="door-marker" href="sprites.svg#door-e" x="225" y="150" width="8" height="8"/></g>
|
||||
<g><rect x="201" y="158" width="12" height="16" class="room" id="r_4_23"/><use class="door-marker" href="sprites.svg#door-w" x="192" y="166" width="8" height="8"/></g>
|
||||
<rect x="213" y="158" width="12" height="8" class="storage"/>
|
||||
<g><rect x="213" y="166" width="6" height="8" class="room" id="pb_4_20"/><use class="door-marker" href="sprites.svg#door-s" x="212" y="174" width="8" height="8"/></g>
|
||||
<g><rect x="219" y="166" width="6" height="8" class="room" id="pb_4_19"/><use class="door-marker" href="sprites.svg#door-s" x="218" y="174" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="165" y="190" width="30" height="20" class="room" id="r_4_17"/><use class="door-marker" href="sprites.svg#door-n" x="165" y="182" width="8" height="8"/></g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="floor floor-5" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<clipPath id="outerWallClip5">
|
||||
<path id="outerWall5" d="M142.5,7
|
||||
C275,10 275,10 279,105
|
||||
C275,200 275,200 142.5,203
|
||||
C10,200 10,200 7,105
|
||||
C10,10 10,10 142.5,7
|
||||
z M60,60
|
||||
h165 v90 h-165 v-90
|
||||
z" />
|
||||
</clipPath>
|
||||
<g class="walls">
|
||||
<g><rect x="165" y="0" width="120" height="90" class="room" id="t_5_39"/><use class="door-marker" href="sprites.svg#door-n" x="167" y="0" width="8" height="8"/></g>
|
||||
<g><rect x="165" y="120" width="120" height="90" class="room" id="t_5_40"/><use class="door-marker" href="sprites.svg#door-s" x="167" y="202" width="8" height="8"/></g>
|
||||
|
||||
<use class="wall" href="#outerWall5" />
|
||||
|
||||
<g><path class="room" d="M60,60 h60 v30 h-60 z" id="t_5_41"/><use class="door-marker" href="sprites.svg#door-s" x="89" y="60" width="8" height="8"/></g>
|
||||
<g><path class="room" d="M165,60 h60 v30 h-60 z" id="t_5_44"/><use class="door-marker" href="sprites.svg#door-n" x="187" y="52" width="8" height="8"/></g>
|
||||
<g><path class="room" d="M60,120 h60 v30 h-60 z" id="t_5_42"/><use class="door-marker" href="sprites.svg#door-s" x="89" y="150" width="8" height="8"/></g>
|
||||
<g><path class="room" d="M165,120 h60 v30 h-60 z" id="t_5_43"/><use class="door-marker" href="sprites.svg#door-s" x="197" y="150" width="8" height="8"/></g>
|
||||
|
||||
<!-- Northern WC + Elevator + Stairs block-->
|
||||
<use href="#northTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="148" y="7"/>
|
||||
|
||||
<!-- Southern WC + Elevator + Stairs block-->
|
||||
<use href="#southTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="148" y="188"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<!-- North west -->
|
||||
<g><rect x="98" y="0" width="10" height="21" class="room" id="r_5_02" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-s" x="100" y="21" width="8" height="8"/></g>
|
||||
<g><rect x="108" y="0" width="10" height="21" class="room" id="r_5_01" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-s" x="108" y="21" width="8" height="8"/></g>
|
||||
<g><rect x="118" y="0" width="20" height="21" class="room" id="r_5_36" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-s" x="118" y="21" width="8" height="8"/></g>
|
||||
|
||||
<rect x="75" y="30" width="28" height="7" class="storage"/>
|
||||
<g><path class="room" id="r_hr" d="M103,37 h-37 v16 h-14 v7 h51 z"/><use class="door-marker" href="sprites.svg#door-n" x="66" y="29" width="8" height="8"/></g>
|
||||
<g><rect x="45" y="37" width="7" height="8" class="room" id="pb_5_05"/><use class="door-marker" href="sprites.svg#door-n" x="44.5" y="29" width="8" height="8"/></g>
|
||||
<g><rect x="52" y="37" width="14" height="8" class="room" id="r_5_03"/><use class="door-marker" href="sprites.svg#door-n" x="52" y="29" width="8" height="8"/></g>
|
||||
<g><rect x="45" y="45" width="7" height="8" class="room" id="pb_5_04"/><use class="door-marker" href="sprites.svg#door-s" x="44.5" y="53" width="8" height="8"/></g>
|
||||
<g><rect x="52" y="45" width="7" height="8" class="room" id="pb_5_07"/><use class="door-marker" href="sprites.svg#door-s" x="51.5" y="53" width="8" height="8"/></g>
|
||||
<g><rect x="59" y="45" width="7" height="8" class="room" id="pb_5_37"/><use class="door-marker" href="sprites.svg#door-s" x="58.5" y="53" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="44" y="60" width="16" height="20" class="room" id="r_5_38"/><use class="door-marker" href="sprites.svg#door-n" x="52" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="44" y="80" width="16" height="10" class="room" id="r_5_06"/><use class="door-marker" href="sprites.svg#door-w" x="36" y="80" width="8" height="8"/></g>
|
||||
|
||||
<!-- North east -->
|
||||
<g><rect x="178" y="0" width="10" height="21" class="room" id="r_5_35" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-s" x="180" y="21" width="8" height="8"/></g>
|
||||
<g><rect x="188" y="0" width="10" height="21" class="room" id="r_5_34" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-s" x="188" y="21" width="8" height="8"/></g>
|
||||
|
||||
<rect x="195" y="34" width="10" height="12" class="storage"/>
|
||||
<g><rect x="195" y="46" width="10" height="8" class="room" id="r_5_31"/><use class="door-marker" href="sprites.svg#door-w" x="187" y="46" width="8" height="8"/></g>
|
||||
<g><rect x="205" y="34" width="14" height="10" class="room" id="r_5_32"/><use class="door-marker" href="sprites.svg#door-n" x="205" y="26" width="8" height="8"/></g>
|
||||
<g><rect x="205" y="44" width="14" height="10" class="room" id="r_5_30"/><use class="door-marker" href="sprites.svg#door-s" x="205" y="54" width="8" height="8"/></g>
|
||||
<g><rect x="219" y="34" width="14" height="10" class="room" id="r_5_33"/><use class="door-marker" href="sprites.svg#door-n" x="225" y="26" width="8" height="8"/></g>
|
||||
<g><rect x="219" y="44" width="7" height="10" class="room" id="pb_5_29"/><use class="door-marker" href="sprites.svg#door-s" x="218.5" y="54" width="8" height="8"/></g>
|
||||
<g><rect x="226" y="44" width="7" height="10" class="room" id="pb_5_28"/><use class="door-marker" href="sprites.svg#door-s" x="225.5" y="54" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="225" y="60" width="16" height="40" class="room" id="r_5_27"/><use class="door-marker" href="sprites.svg#door-n" x="225" y="52" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west -->
|
||||
<rect x="44" y="110" width="12" height="10" class="storage"/>
|
||||
<g><rect x="44" y="120" width="12" height="10" class="room" id="r_5_08"/><use class="door-marker" href="sprites.svg#door-e" x="56" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="44" y="130" width="12" height="10" class="room" id="r_5_09"/><use class="door-marker" href="sprites.svg#door-e" x="56" y="132" width="8" height="8"/></g>
|
||||
<g><rect x="44" y="140" width="6" height="9" class="room" id="pb_5_10"/><use class="door-marker" href="sprites.svg#door-w" x="36" y="140" width="8" height="8"/></g>
|
||||
<g><rect x="50" y="140" width="6" height="9" class="room" id="pb_5_11"/><use class="door-marker" href="sprites.svg#door-s" x="49.5" y="149" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="46" y="156" width="29" height="18" class="room" id="r_5_12"/><use class="door-marker" href="sprites.svg#door-n" x="67" y="148" width="8" height="8"/></g>
|
||||
<rect x="75" y="157" width="13" height="17" class="storage"/>
|
||||
|
||||
<g><rect x="98" y="189" width="10" height="21" class="room" id="r_5_13" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-n" x="100" y="181" width="8" height="8"/></g>
|
||||
<g><rect x="108" y="189" width="10" height="21" class="room" id="r_5_14" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-n" x="108" y="181" width="8" height="8"/></g>
|
||||
<g><rect x="118" y="189" width="20" height="21" class="room" id="r_5_15" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-e" x="138" y="189" width="8" height="8"/></g>
|
||||
|
||||
<!-- South east -->
|
||||
<g><rect x="230" y="120" width="12" height="10" class="room" id="r_5_26"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="120" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="130" width="12" height="10" class="room" id="r_5_25"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="132" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="140" width="12" height="10" class="room" id="r_5_24"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="140" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="204" y="155" width="14" height="10" class="room" id="r_5_19"/><use class="door-marker" href="sprites.svg#door-n" x="204" y="147" width="8" height="8"/></g>
|
||||
<g><rect x="204" y="165" width="14" height="10" class="room" id="r_5_23"/><use class="door-marker" href="sprites.svg#door-w" x="196" y="165" width="8" height="8"/></g>
|
||||
<g><rect x="218" y="155" width="14" height="10" class="room" id="r_5_20"/><use class="door-marker" href="sprites.svg#door-n" x="224" y="147" width="8" height="8"/></g>
|
||||
<g><rect x="218" y="165" width="7" height="10" class="room" id="pb_5_21"/><use class="door-marker" href="sprites.svg#door-s" x="217.5" y="175" width="8" height="8"/></g>
|
||||
<g><rect x="225" y="165" width="7" height="10" class="room" id="pb_5_22"/><use class="door-marker" href="sprites.svg#door-s" x="224.5" y="175" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="182" y="150" width="16" height="30" class="room" id="r_5_18"/><use class="door-marker" href="sprites.svg#door-e" x="198" y="152" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="178" y="189" width="10" height="21" class="room" id="r_5_16" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-n" x="180" y="181" width="8" height="8"/></g>
|
||||
<g><rect x="188" y="189" width="10" height="21" class="room" id="r_5_17" clip-path="url(#outerWallClip5)"/><use class="door-marker" href="sprites.svg#door-n" x="188" y="181" width="8" height="8"/></g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg class="floor floor-6" viewBox="-1 -1 287 212" xmlns="http://www.w3.org/2000/svg">
|
||||
<clipPath id="outerWallClip6">
|
||||
<path id="outerWall6" d="M142.5,7
|
||||
C275,10 275,10 279,105
|
||||
C275,200 275,200 142.5,203
|
||||
C10,200 10,200 7,105
|
||||
C10,10 10,10 142.5,7
|
||||
z M60,60
|
||||
h165 v90 h-165 v-90
|
||||
z" />
|
||||
</clipPath>
|
||||
<g class="walls">
|
||||
<use class="wall" href="#outerWall6" />
|
||||
|
||||
<!-- Northern WC + Elevator + Stairs block-->
|
||||
<use href="#northTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="135" y="7"/>
|
||||
|
||||
<!-- Southern WC + Elevator + Stairs block-->
|
||||
<use href="#southTechBlock" />
|
||||
<use href="#kitchen-icon" width="20" height="15" x="135" y="188"/>
|
||||
</g>
|
||||
<g class="rooms">
|
||||
<path class="inner-wall storage" d="M103,0 v60 h-43 v90 h38 v60 H0 V0 z" clip-path="url(#outerWallClip6)"/>
|
||||
|
||||
<!-- North west -->
|
||||
<g><rect x="103" y="0" width="23" height="22" class="room" id="r_6_01" clip-path="url(#outerWallClip6)"/><use class="door-marker" href="sprites.svg#door-e" x="126" y="15" width="8" height="8"/></g>
|
||||
<path d="M165,0 v23" class="inner-wall kitchen" clip-path="url(#outerWallClip6)"/>
|
||||
|
||||
<!-- North east -->
|
||||
<rect x="195" y="34" width="10" height="12" class="storage"/>
|
||||
<g><rect x="195" y="46" width="10" height="8" class="room" id="r_6_02"/><use class="door-marker" href="sprites.svg#door-s" x="195" y="54" width="8" height="8"/></g>
|
||||
<g><rect x="205" y="34" width="28" height="20" class="room" id="r_6_03"/><use class="door-marker" href="sprites.svg#door-s" x="226" y="54" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="230" y="60" width="12" height="10" class="room" id="r_6_04"/><use class="door-marker" href="sprites.svg#door-n" x="230" y="52" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="70" width="12" height="9" class="room" id="r_6_05"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="70" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="79" width="12" height="9" class="room" id="r_6_06"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="79" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="230" y="96" width="6" height="9" class="room" id="pb_6_07"/><use class="door-marker" href="sprites.svg#door-n" x="229" y="88" width="8" height="8"/></g>
|
||||
<g><rect x="236" y="96" width="6" height="9" class="room" id="pb_6_08"/><use class="door-marker" href="sprites.svg#door-n" x="235" y="88" width="8" height="8"/></g>
|
||||
|
||||
<!-- South west -->
|
||||
<g><rect x="98" y="188" width="28" height="22" class="room" id="r_6_18" clip-path="url(#outerWallClip6)"/><use class="door-marker" href="sprites.svg#door-e" x="126" y="187" width="8" height="8"/></g>
|
||||
|
||||
<!-- South east -->
|
||||
<g><rect x="230" y="105" width="12" height="9" class="room" id="r_6_09"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="106" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="230" y="122" width="12" height="9" class="room" id="r_6_10"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="122" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="131" width="12" height="9" class="room" id="r_6_11"/><use class="door-marker" href="sprites.svg#door-w" x="222" y="131" width="8" height="8"/></g>
|
||||
<g><rect x="230" y="140" width="12" height="10" class="room" id="r_6_12"/><use class="door-marker" href="sprites.svg#door-s" x="230" y="150" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="204" y="155" width="14" height="10" class="room" id="r_6_13"/><use class="door-marker" href="sprites.svg#door-w" x="196" y="157" width="8" height="8"/></g>
|
||||
<g><rect x="218" y="155" width="7" height="10" class="room" id="pb_6_14"/><use class="door-marker" href="sprites.svg#door-n" x="217.5" y="147" width="8" height="8"/></g>
|
||||
<g><rect x="225" y="155" width="7" height="10" class="room" id="pb_6_15"/><use class="door-marker" href="sprites.svg#door-n" x="224.5" y="147" width="8" height="8"/></g>
|
||||
<g><rect x="204" y="165" width="14" height="10" class="room" id="r_6_16"/><use class="door-marker" href="sprites.svg#door-w" x="196" y="165" width="8" height="8"/></g>
|
||||
<g><rect x="218" y="165" width="14" height="10" class="room" id="r_6_17"/><use class="door-marker" href="sprites.svg#door-e" x="232" y="165" width="8" height="8"/></g>
|
||||
|
||||
<g><rect x="165" y="190" width="10" height="21" class="room" id="r_6_19" clip-path="url(#outerWallClip6)"/><use class="door-marker" href="sprites.svg#door-n" x="167" y="182" width="8" height="8"/></g>
|
||||
<g><rect x="175" y="190" width="10" height="21" class="room" id="r_6_20" clip-path="url(#outerWallClip6)"/><use class="door-marker" href="sprites.svg#door-n" x="177" y="182" width="8" height="8"/></g>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="legend active">
|
||||
<svg viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="8" class="room bookable special" />
|
||||
<text x="20" y="15">Bookable Special</text>
|
||||
</svg>
|
||||
<svg viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="8" class="room non-bookable mini" />
|
||||
<text x="20" y="15">Non-bookable Mini</text>
|
||||
</svg>
|
||||
<svg viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="8" class="room non-bookable scrum" />
|
||||
<text x="20" y="15">Non-bookable Scrum</text>
|
||||
</svg>
|
||||
<svg viewBox="0 0 250 20" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="10" cy="10" r="8" class="room non-bookable research" />
|
||||
<text x="20" y="15">Non-bookable Research</text>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
<script src="main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
165
dist/sprites.svg
vendored
Normal file
165
dist/sprites.svg
vendored
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 27 KiB |
4336
package-lock.json
generated
Normal file
4336
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
22
package.json
Normal file
22
package.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "eth-map",
|
||||
"version": "1.0.0",
|
||||
"description": "Ericsson House map",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "webpack",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "edvidan",
|
||||
"license": "ISC",
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"css-loader": "^1.0.1",
|
||||
"file-loader": "^2.0.0",
|
||||
"mini-css-extract-plugin": "^0.4.4",
|
||||
"ts-loader": "^5.3.0",
|
||||
"typescript": "^3.1.6",
|
||||
"webpack": "^4.25.1",
|
||||
"webpack-cli": "^3.1.2"
|
||||
}
|
||||
}
|
||||
201
src/app.class.ts
Normal file
201
src/app.class.ts
Normal file
@ -0,0 +1,201 @@
|
||||
import { Room } from "./room.class";
|
||||
|
||||
export class App {
|
||||
static floorLabels = [
|
||||
'Ground floor',
|
||||
'1st floor',
|
||||
'2nd floor',
|
||||
'3rd floor',
|
||||
'4th floor',
|
||||
'5th floor',
|
||||
'6th floor',
|
||||
];
|
||||
static removeClasses = ['active', 'lower', 'raise', 'hilite'];
|
||||
|
||||
private rooms: Array<Room> = [];
|
||||
|
||||
private roomsDataListElement: HTMLDataListElement;
|
||||
private floorSelectElement: HTMLSelectElement;
|
||||
private filterElement: HTMLInputElement;
|
||||
private labelElement: HTMLHeadingElement;
|
||||
private svgElements: Array<SVGSVGElement>;
|
||||
private svgRooms: Array<Element>;
|
||||
|
||||
constructor(params: {rooms: Array<Room>}) {
|
||||
this.rooms = params.rooms;
|
||||
|
||||
this.roomsDataListElement = <HTMLDataListElement>document.getElementById('roomList');
|
||||
this.floorSelectElement = <HTMLSelectElement>document.getElementById('floorSelect');
|
||||
this.filterElement = <HTMLInputElement>document.getElementById('filter');
|
||||
this.labelElement = <HTMLHeadingElement>document.getElementById('label');
|
||||
|
||||
const mapContainer = <HTMLElement>document.getElementById('map-container');
|
||||
this.svgElements = Array.from(mapContainer.getElementsByTagName('svg'));
|
||||
this.svgRooms = Array.from(mapContainer.getElementsByClassName('room'));
|
||||
}
|
||||
|
||||
run() {
|
||||
// init floor selector and input datalist
|
||||
this.initFloorSelect(App.floorLabels)
|
||||
.populateDataList();
|
||||
|
||||
// add event listeners for restoring application state
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const hash = (<Location>document.location).hash;
|
||||
return hash ? this.restoreState(hash.split('.')) : null;
|
||||
});
|
||||
window.addEventListener('popstate', event => this.restoreState(event.state));
|
||||
|
||||
// what happens when the floor selector is changed
|
||||
this.floorSelectElement.addEventListener('change', event => this.applyFloorFilter(+(<HTMLInputElement>event.target).value));
|
||||
|
||||
// what happens when the room filter is changed
|
||||
this.filterElement.addEventListener('change', event => {
|
||||
const room = this.rooms.find(room => room.name.toLocaleLowerCase() === this.filterElement.value.toLocaleLowerCase());
|
||||
this.selectFloor(room ? room.floor : 7).deselectAllRooms();
|
||||
if (room) this.selectRoom(room.id).pushRoomState(room);
|
||||
});
|
||||
|
||||
// what should happen when a floor is clicked on
|
||||
this.svgElements.map(svg => svg.addEventListener('click', event => {
|
||||
event.stopPropagation();
|
||||
const svgRoom = this.svgRooms.find(svgRoom => svgRoom.classList.contains('hilite'));
|
||||
if (svgRoom) this.setFloorLabel((<Room>this.rooms.find(room => room.id == svgRoom.id)).floor);
|
||||
this.deselectAllRooms();
|
||||
}));
|
||||
|
||||
// what should happen when a room is clicked on
|
||||
this.svgRooms.map(svgRoom => svgRoom.addEventListener('click', event => {
|
||||
event.stopPropagation();
|
||||
const room = <Room>this.rooms.find(room => room.id === svgRoom.id);
|
||||
if ((<HTMLElement>event.target).classList.contains('hilite')) {
|
||||
this.deselectAllRooms().setFloorLabel(room.floor);
|
||||
} else {
|
||||
this.deselectAllRooms().selectRoom(room.id).pushRoomState(room);
|
||||
}
|
||||
}));
|
||||
|
||||
// add roomname as title to all rooms when user hovers mouse over the room
|
||||
this.rooms.map(room => {
|
||||
const titleElement = document.createElementNS("http://www.w3.org/2000/svg", "title");
|
||||
titleElement.textContent = `${room.name}`;
|
||||
const svgRoom = <HTMLElement>document.getElementById(room.id);
|
||||
svgRoom.appendChild(titleElement);
|
||||
svgRoom.classList.add(...Room.typeClassMap[room.type]);
|
||||
});
|
||||
}
|
||||
|
||||
genFloorHash(idx: number): string {
|
||||
return `#f.${idx}`;
|
||||
}
|
||||
|
||||
genRoomHash(room: Room): string {
|
||||
return `#r.${room.floor}.${room.id}`;
|
||||
}
|
||||
|
||||
initFloorSelect(labels: Array<string>): App {
|
||||
labels.map((floor, idx) => this.floorSelectElement.appendChild(new Option(floor, idx.toLocaleString())));
|
||||
return this;
|
||||
}
|
||||
|
||||
populateDataList(floor: number = -1): App {
|
||||
this.rooms.filter(room => floor == -1 ? true : room.floor == floor)
|
||||
.map(room => room.name).sort()
|
||||
.map(roomName => this.roomsDataListElement.appendChild(new Option(roomName)));
|
||||
return this;
|
||||
}
|
||||
|
||||
clearDataList(): App {
|
||||
while(this.roomsDataListElement.lastChild) {
|
||||
this.roomsDataListElement.removeChild(this.roomsDataListElement.lastChild);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
setLabel(label: string): App {
|
||||
this.labelElement.innerHTML = label;
|
||||
return this;
|
||||
}
|
||||
|
||||
setFloorLabel(idx: number): App {
|
||||
this.setLabel(App.floorLabels[idx]);
|
||||
return this;
|
||||
}
|
||||
|
||||
setRoomLabel(room: Room): App {
|
||||
this.setLabel(`${App.floorLabels[room.floor]} - ${room.formattedName}`);
|
||||
return this;
|
||||
}
|
||||
|
||||
selectFloor(idx: number): App {
|
||||
this.svgElements.map((svg, svgidx) => {
|
||||
svg.classList.remove(...App.removeClasses);
|
||||
svg.classList.add(idx == svgidx ? 'active' : (
|
||||
svgidx > idx ? 'raise' : 'lower'
|
||||
));
|
||||
});
|
||||
return this;
|
||||
}
|
||||
|
||||
selectRoom(id: string): App {
|
||||
const room = <Room>this.rooms.find(room => room.id === id);
|
||||
this.setRoomLabel(room).filterElement.value = room.name;
|
||||
(<HTMLElement>document.getElementById(id)).classList.add('hilite');
|
||||
Array.from(document.getElementsByClassName(`floor-${room.floor}`))
|
||||
.filter(floor => !floor.classList.contains('hilite'))
|
||||
.map(floor => floor.classList.add('hilite'));
|
||||
return this;
|
||||
}
|
||||
|
||||
deselectAllRooms(): App {
|
||||
this.svgElements.map(svg => svg.classList.remove('hilite'));
|
||||
this.svgRooms.map(room => room.classList.remove('hilite'));
|
||||
return this;
|
||||
}
|
||||
|
||||
applyFloorFilter(idx: number): App {
|
||||
this.filterElement.value = '';
|
||||
this.deselectAllRooms().clearDataList().populateDataList(idx);
|
||||
if (idx == -1) {
|
||||
this.setLabel('').svgElements
|
||||
.map(svg => svg.classList.remove(...App.removeClasses));
|
||||
return this;
|
||||
}
|
||||
return this.setFloorLabel(idx).selectFloor(idx).pushFloorState(idx);
|
||||
}
|
||||
|
||||
pushState(state: {}, title: string, url: string): App {
|
||||
window.history.pushState(state, title, url);
|
||||
return this;
|
||||
}
|
||||
|
||||
pushFloorState(idx: number): App {
|
||||
return this.pushState(
|
||||
['#f', idx],
|
||||
`ETH map - ${App.floorLabels[idx]}`,
|
||||
this.genFloorHash(idx)
|
||||
);
|
||||
}
|
||||
|
||||
pushRoomState(room: Room): App {
|
||||
return this.pushState(
|
||||
['#r', room.floor, room.id],
|
||||
`ETH map - ${App.floorLabels[room.floor]} / ${room.formattedName}`,
|
||||
this.genRoomHash(room)
|
||||
);
|
||||
}
|
||||
|
||||
restoreState(params: Array<any>): App {
|
||||
const [cmd,floor,roomId] = [...params];
|
||||
this.deselectAllRooms();
|
||||
switch(cmd) {
|
||||
case '#r':
|
||||
this.selectFloor(floor).selectRoom(roomId);
|
||||
break;
|
||||
case '#f':
|
||||
this.selectFloor(floor);
|
||||
break;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
211
src/ethmap.css
Normal file
211
src/ethmap.css
Normal file
@ -0,0 +1,211 @@
|
||||
@font-face {
|
||||
font-family: 'EricssonCapital';
|
||||
src: url(utm-ericsson-capital.ttf);
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
html {
|
||||
--ericsson-white: #fafafa;
|
||||
--ericsson-grey1: #f1f1f1;
|
||||
--ericsson-grey2: #e0e0e0;
|
||||
--ericsson-grey3: #9f9f9f;
|
||||
--ericsson-grey4: #757575;
|
||||
--ericsson-black: #242424;
|
||||
|
||||
--ericsson-yellow: #f8d12c;
|
||||
--ericsson-green: #10c372;
|
||||
--ericsson-blue: #0082ef;
|
||||
--ericsson-red: #fe3030;
|
||||
--ericsson-orange: #fe8b0a;
|
||||
--ericsson-purple: #ad75ce;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: EricssonCapital;
|
||||
}
|
||||
|
||||
svg text {
|
||||
font-family: EricssonCapital;
|
||||
}
|
||||
|
||||
.wall {
|
||||
fill: var(--ericsson-white);
|
||||
fill-rule: evenodd;
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
}
|
||||
.inner-wall {
|
||||
fill: var(--ericsson-white);
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
}
|
||||
.speedgate { stroke: var(--ericsson-black); stroke-width: 0.5; stroke-dasharray: 2,2; }
|
||||
|
||||
.room {
|
||||
fill: var(--ericsson-white);
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
transition-property: fill, fill-opacity;
|
||||
transition-duration: 0.25s;
|
||||
transition-timing-function: linear;
|
||||
}
|
||||
#door-marker {
|
||||
z-index: 10;
|
||||
}
|
||||
.room ~ .door-marker {
|
||||
display: none;
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
fill: none;
|
||||
}
|
||||
.room.hilite ~ .door-marker { display: initial; }
|
||||
|
||||
.active .bookable.special { fill: var(--ericsson-blue); }
|
||||
.active .non-bookable.mini { fill: var(--ericsson-green); }
|
||||
.active .non-bookable.scrum { fill: var(--ericsson-orange); }
|
||||
.active .non-bookable.research { fill: var(--ericsson-red); }
|
||||
|
||||
svg.hilite .bookable.special:not(.hilite),
|
||||
svg.hilite .non-bookable.mini:not(.hilite),
|
||||
svg.hilite .non-bookable.scrum:not(.hilite),
|
||||
svg.hilite .non-bookable.research:not(.hilite) {
|
||||
fill-opacity: .2;
|
||||
}
|
||||
|
||||
.room.hilite {
|
||||
animation: colors 0.75s ease-in-out infinite alternate;
|
||||
}
|
||||
|
||||
@keyframes colors {
|
||||
from { fill: var(--ericsson-yellow) }
|
||||
to { fill: var(--ericsson-red) }
|
||||
}
|
||||
|
||||
.stairs { fill: var(--ericsson-grey2); }
|
||||
.terrace {
|
||||
fill: var(--ericsson-grey3);
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
}
|
||||
.storage,
|
||||
.phonebooth {
|
||||
stroke: var(--ericsson-black);
|
||||
stroke-width: 0.5;
|
||||
}
|
||||
.storage { fill: var(--ericsson-grey3); }
|
||||
.phonebooth { fill: var(--ericsson-grey2); }
|
||||
.elevator { fill: var(--ericsson-grey2); }
|
||||
.here-must-be-aliens { fill: var(--ericsson-grey4); }
|
||||
|
||||
.controls { height: 110px; padding: 10px; }
|
||||
.ui.input {
|
||||
position: relative;
|
||||
font-size: 1em;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
display: inline-flex;
|
||||
color: rgba(0,0,0,.87);
|
||||
}
|
||||
.ui.input > select,
|
||||
.ui.input > input {
|
||||
margin: 0;
|
||||
max-width: 100%;
|
||||
flex: 1 0 auto;
|
||||
outline: 0;
|
||||
-webkit-tap-highlight-color: rgba(255,255,255,0);
|
||||
text-align: left;
|
||||
line-height: 1.21428571em;
|
||||
font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
|
||||
padding: .67857143em 1em;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(34,36,38,.15);
|
||||
color: rgba(0,0,0,.87);
|
||||
border-radius: .28571429rem;
|
||||
transition: box-shadow .1s ease, border-color .1s ease;
|
||||
box-shadow: none;
|
||||
}
|
||||
.ui.input > select:active,
|
||||
.ui.input > input:focus {
|
||||
color: rgba(0,0,0,.8);
|
||||
border-color: #85b7d9;
|
||||
background: #fff;
|
||||
box-shadow: none;
|
||||
}
|
||||
svg.active .room { cursor: pointer; }
|
||||
svg.active .room:hover { stroke-dasharray: 1 1; }
|
||||
.svgbox {
|
||||
position: relative;
|
||||
perspective: 800px;
|
||||
transform-style: preserve-3d;
|
||||
margin-top: 20%;
|
||||
margin-left: 10%;
|
||||
margin-right: 10%;
|
||||
}
|
||||
.svgbox svg {
|
||||
position: absolute;
|
||||
transition-property: bottom, transform, z-index;
|
||||
transition-duration: 0.35s;
|
||||
transition-timing-function: ease-in-out;
|
||||
transform: matrix3d(1, 0, 0, 0,
|
||||
0, 0.3048, 0.9524, 0,
|
||||
0, -0.9524, 0.3048, 0,
|
||||
0, 0, -250, 1);
|
||||
bottom: var(--bottom-distance);
|
||||
}
|
||||
.svgbox svg.active {
|
||||
transform: matrix3d(0.85, 0, 0, 0,
|
||||
0, 0.85, 0, 0,
|
||||
0, 0, 1, 0,
|
||||
0, 0, 200, 1);
|
||||
}
|
||||
|
||||
.svgbox .floor-0 { z-index: 1; --bottom-distance: 0px; }
|
||||
.svgbox .floor-1 { z-index: 2; --bottom-distance: 20px; }
|
||||
.svgbox .floor-2 { z-index: 3; --bottom-distance: 40px; }
|
||||
.svgbox .floor-3 { z-index: 4; --bottom-distance: 60px; }
|
||||
.svgbox .floor-4 { z-index: 5; --bottom-distance: 80px; }
|
||||
.svgbox .floor-5 { z-index: 6; --bottom-distance: 100px; }
|
||||
.svgbox .floor-6 { z-index: 7; --bottom-distance: 120px; }
|
||||
@media only screen and (max-width: 779px) {
|
||||
.svgbox { width: 75%; height: 50%; }
|
||||
.svgbox svg.lower { bottom: calc(var(--bottom-distance) - 20%) }
|
||||
.svgbox svg.raise { bottom: calc(var(--bottom-distance) + 40%) }
|
||||
.legend svg {
|
||||
width: 50%;
|
||||
height: auto;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 780px) and (max-width: 1219px) {
|
||||
.svgbox { width: 75%; height: 50%; }
|
||||
.svgbox svg.lower { bottom: calc(var(--bottom-distance) - 40%) }
|
||||
.svgbox svg.raise { bottom: calc(var(--bottom-distance) + 70%) }
|
||||
.legend svg {
|
||||
width: 33%;
|
||||
height: auto;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 1220px) {
|
||||
.svgbox { width: 40%; height: 40%; }
|
||||
.svgbox svg.lower { bottom: calc(var(--bottom-distance) - 180px) }
|
||||
.svgbox svg.raise { bottom: calc(var(--bottom-distance) + 420px) }
|
||||
.legend svg {
|
||||
width: 25%;
|
||||
height: auto;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
.legend {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: calc(100% - 16px);
|
||||
padding: 8px;
|
||||
}
|
||||
255
src/index.ts
Normal file
255
src/index.ts
Normal file
@ -0,0 +1,255 @@
|
||||
import { App } from "./app.class";
|
||||
import { Room, RoomTypes } from "./room.class";
|
||||
|
||||
const rooms = [
|
||||
new Room({ floor: 0, number: 0, name: 'AXE', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_axe' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Bike storage', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_bike_storage' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Bluetooth', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_bluetooth' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Canteen', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_canteen' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Cross bar club', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_cross_bar_club' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Ericsson Garage', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_ericsson_garage' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Erlang', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_erlang' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Heat & eat', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_food_heating_area' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Hilda', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_hilda' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Lars Magnus Ericsson', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_lars_magnus_ericsson' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Medical bay', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_medical_bay' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Reception', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_reception' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Security', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_security' }),
|
||||
new Room({ floor: 0, number: 0, name: 'Titan', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_titan' }),
|
||||
|
||||
new Room({ floor: 1, number: 1, name: 'Aggtelek', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_01' }),
|
||||
new Room({ floor: 1, number: 11, name: 'Andrássy út', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_11' }),
|
||||
new Room({ floor: 1, number: 8, name: 'Bazilika', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_08' }),
|
||||
new Room({ floor: 1, number: 13, name: 'Budai vár', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_13' }),
|
||||
new Room({ floor: 1, number: 12, name: 'Busó', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_12' }),
|
||||
new Room({ floor: 1, number: 21, name: 'Car Fleet Manager', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_21' }),
|
||||
new Room({ floor: 1, number: 3, name: 'Cimbalom', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_03' }),
|
||||
new Room({ floor: 1, number: 0, name: 'COOR office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_coor' }),
|
||||
new Room({ floor: 1, number: 9, name: 'Copy room 1NE', type: RoomTypes.TYPE_COPYROOM, id: 'r_1_09' }),
|
||||
new Room({ floor: 1, number: 20, name: 'Copy room 1SE', type: RoomTypes.TYPE_COPYROOM, id: 'r_1_20' }),
|
||||
new Room({ floor: 1, number: 25, name: 'Füvészkert', type: RoomTypes.TYPE_TERRACE, id: 't_1_25' }),
|
||||
new Room({ floor: 1, number: 15, name: 'Gundel', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_15' }),
|
||||
new Room({ floor: 1, number: 6, name: 'Gyulai', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_06' }),
|
||||
new Room({ floor: 1, number: 2, name: 'Herend', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_02' }),
|
||||
new Room({ floor: 1, number: 19, name: 'Hévíz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_19' }),
|
||||
new Room({ floor: 1, number: 18, name: 'Hollókő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_1_18' }),
|
||||
new Room({ floor: 1, number: 5, name: 'Hortobágy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_05' }),
|
||||
new Room({ floor: 1, number: 16, name: 'Hősök tere', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_1_16' }),
|
||||
new Room({ floor: 1, number: 0, name: 'HP office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_hp' }),
|
||||
new Room({ floor: 1, number: 0, name: 'ITTE office', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_itte' }),
|
||||
new Room({ floor: 1, number: 14, name: 'Kodály', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_14' }),
|
||||
new Room({ floor: 1, number: 0, name: 'Lab', type: RoomTypes.TYPE_LAB, id: 'r_lab_main' }),
|
||||
new Room({ floor: 1, number: 24, name: 'Nagycsarnok', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_24' }),
|
||||
new Room({ floor: 1, number: 7, name: 'Operaház', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_1_07' }),
|
||||
new Room({ floor: 1, number: 10, name: 'Pannonhalma', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_10' }),
|
||||
new Room({ floor: 1, number: 17, name: 'Parlament', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_17' }),
|
||||
new Room({ floor: 1, number: 4, name: 'Szóda', type: RoomTypes.TYPE_PHONEBOOTH, id: 'r_1_04' }),
|
||||
new Room({ floor: 1, number: 22, name: 'Tokaj', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_22' }),
|
||||
new Room({ floor: 1, number: 26, name: 'Walk-in COOR', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_26' }),
|
||||
new Room({ floor: 1, number: 27, name: 'Walk-in ITTE', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_27' }),
|
||||
new Room({ floor: 1, number: 28, name: 'Walk-in HP', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_28' }),
|
||||
new Room({ floor: 1, number: 23, name: 'Zsolnay', type: RoomTypes.TYPE_BOOKABLE, id: 'r_1_23' }),
|
||||
|
||||
new Room({ floor: 2, number: 4, name: 'Achát', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_04' }),
|
||||
new Room({ floor: 2, number: 12, name: 'Akvamarin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_12' }),
|
||||
new Room({ floor: 2, number: 2, name: 'Almandin', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_02' }),
|
||||
new Room({ floor: 2, number: 1, name: 'Amazonit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_01' }),
|
||||
new Room({ floor: 2, number: 10, name: 'Ametiszt', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_10' }),
|
||||
new Room({ floor: 2, number: 6, name: 'Andradit', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_06' }),
|
||||
new Room({ floor: 2, number: 41, name: 'Berill', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_41' }),
|
||||
new Room({ floor: 2, number: 5, name: 'Borostyán', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_05' }),
|
||||
new Room({ floor: 2, number: 36, name: 'Cirkon', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_36' }),
|
||||
new Room({ floor: 2, number: 31, name: 'Copy room 2E', type: RoomTypes.TYPE_COPYROOM, id: 'r_2_31' }),
|
||||
new Room({ floor: 2, number: 16, name: 'Copy room 2W', type: RoomTypes.TYPE_COPYROOM, id: 'r_2_16' }),
|
||||
new Room({ floor: 2, number: 7, name: 'Diopszid', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_07' }),
|
||||
new Room({ floor: 2, number: 9, name: 'Fluorit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_09' }),
|
||||
new Room({ floor: 2, number: 13, name: 'Gránát', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_13' }),
|
||||
new Room({ floor: 2, number: 39, name: 'Gyémánt', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_39' }),
|
||||
new Room({ floor: 2, number: 22, name: 'Holdkő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_22' }),
|
||||
new Room({ floor: 2, number: 27, name: 'Jade', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_27' }),
|
||||
new Room({ floor: 2, number: 3, name: 'Jáspis', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_03' }),
|
||||
new Room({ floor: 2, number: 20, name: 'Kalcedon', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_20' }),
|
||||
new Room({ floor: 2, number: 17, name: 'Karneol', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_17' }),
|
||||
new Room({ floor: 2, number: 40, name: 'Korund', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_40' }),
|
||||
new Room({ floor: 2, number: 8, name: 'Labradorit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_08' }),
|
||||
new Room({ floor: 2, number: 14, name: 'Larimar', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_14' }),
|
||||
new Room({ floor: 2, number: 18, name: 'Lazurit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_18' }),
|
||||
new Room({ floor: 2, number: 19, name: 'Malachit', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_19' }),
|
||||
new Room({ floor: 2, number: 11, name: 'Morganit', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_11' }),
|
||||
new Room({ floor: 2, number: 34, name: 'Napkő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_34' }),
|
||||
new Room({ floor: 2, number: 45, name: 'Obszidián', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_45' }),
|
||||
new Room({ floor: 2, number: 24, name: 'Opál', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_24' }),
|
||||
new Room({ floor: 2, number: 23, name: 'Ortoklász', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_23' }),
|
||||
new Room({ floor: 2, number: 28, name: 'Pirit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_28' }),
|
||||
new Room({ floor: 2, number: 25, name: 'Pirop', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_25' }),
|
||||
new Room({ floor: 2, number: 30, name: 'Rodonit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_30' }),
|
||||
new Room({ floor: 2, number: 33, name: 'Rózsakvarc', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_2_33' }),
|
||||
new Room({ floor: 2, number: 32, name: 'Rubin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_32' }),
|
||||
new Room({ floor: 2, number: 15, name: 'Smaragd', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_2_15' }),
|
||||
new Room({ floor: 2, number: 42, name: 'Spinell', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_42' }),
|
||||
new Room({ floor: 2, number: 35, name: 'Tanzanit', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_2_35' }),
|
||||
new Room({ floor: 2, number: 29, name: 'Tigrisszem', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_29' }),
|
||||
new Room({ floor: 2, number: 43, name: 'Topaz', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_43' }),
|
||||
new Room({ floor: 2, number: 44, name: 'Turmalin', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_44' }),
|
||||
new Room({ floor: 2, number: 37, name: 'Türkiz', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_37' }),
|
||||
new Room({ floor: 2, number: 26, name: 'Zafír', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_26' }),
|
||||
new Room({ floor: 2, number: 21, name: 'Ónix', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_2_21' }),
|
||||
new Room({ floor: 2, number: 38, name: 'Variszcit', type: RoomTypes.TYPE_BOOKABLE, id: 'r_2_38' }),
|
||||
new Room({ floor: 2, number: 46, name: 'Városliget', type: RoomTypes.TYPE_TERRACE, id: 't_2_46' }),
|
||||
new Room({ floor: 2, number: 47, name: 'Tabán', type: RoomTypes.TYPE_TERRACE, id: 't_2_47' }),
|
||||
|
||||
new Room({ floor: 3, number: 40, name: 'Almás-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_40' }),
|
||||
new Room({ floor: 3, number: 2, name: 'Által-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_02' }),
|
||||
new Room({ floor: 3, number: 39, name: 'Balaton', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_39' }),
|
||||
new Room({ floor: 3, number: 42, name: 'Baláta-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_42' }),
|
||||
new Room({ floor: 3, number: 14, name: 'Bánki-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_14' }),
|
||||
new Room({ floor: 3, number: 23, name: 'Békás-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_23' }),
|
||||
new Room({ floor: 3, number: 25, name: 'Berettyo', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_25' }),
|
||||
new Room({ floor: 3, number: 34, name: 'Copy room 3E', type: RoomTypes.TYPE_COPYROOM, id: 'r_3_34' }),
|
||||
new Room({ floor: 3, number: 15, name: 'Copy room 3W', type: RoomTypes.TYPE_COPYROOM, id: 'r_3_15' }),
|
||||
new Room({ floor: 3, number: 31, name: 'Deseda', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_31' }),
|
||||
new Room({ floor: 3, number: 11, name: 'Donát-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_11' }),
|
||||
new Room({ floor: 3, number: 4, name: 'Dráva', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_04' }),
|
||||
new Room({ floor: 3, number: 16, name: 'Duna', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_3_16' }),
|
||||
new Room({ floor: 3, number: 22, name: 'Fehér-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_22' }),
|
||||
new Room({ floor: 3, number: 21, name: 'Fekete-víz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_21' }),
|
||||
new Room({ floor: 3, number: 32, name: 'Fertő-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_32' }),
|
||||
new Room({ floor: 3, number: 29, name: 'Galga-patak', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_29' }),
|
||||
new Room({ floor: 3, number: 33, name: 'Hernád', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_33' }),
|
||||
new Room({ floor: 3, number: 41, name: 'Hévizi-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_41' }),
|
||||
new Room({ floor: 3, number: 3, name: 'Ikva', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_03' }),
|
||||
new Room({ floor: 3, number: 27, name: 'Kapos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_27' }),
|
||||
new Room({ floor: 3, number: 10, name: 'Koppány', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_10' }),
|
||||
new Room({ floor: 3, number: 20, name: 'Kórógy-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_20' }),
|
||||
new Room({ floor: 3, number: 1, name: 'Kozár-Borzó', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_01' }),
|
||||
new Room({ floor: 3, number: 24, name: 'Körös', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_24' }),
|
||||
new Room({ floor: 3, number: 37, name: 'Lajta', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_37' }),
|
||||
new Room({ floor: 3, number: 19, name: 'Magos-ér', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_19' }),
|
||||
new Room({ floor: 3, number: 9, name: 'Marcal', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_09' }),
|
||||
new Room({ floor: 3, number: 17, name: 'Maros', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_17' }),
|
||||
new Room({ floor: 3, number: 38, name: 'Orfűi-tó', type: RoomTypes.TYPE_NONBOOKABLE_RESEARCH, id: 'r_3_38' }),
|
||||
new Room({ floor: 3, number: 36, name: 'Rába', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_3_36' }),
|
||||
new Room({ floor: 3, number: 13, name: 'Sajó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_13' }),
|
||||
new Room({ floor: 3, number: 8, name: 'Sió', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_08' }),
|
||||
new Room({ floor: 3, number: 18, name: 'Szamos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_18' }),
|
||||
new Room({ floor: 3, number: 26, name: 'Szelidi-tó', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_3_26' }),
|
||||
new Room({ floor: 3, number: 35, name: 'Tisza', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_35' }),
|
||||
new Room({ floor: 3, number: 30, name: 'Túr', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_30' }),
|
||||
new Room({ floor: 3, number: 5, name: 'Váli-víz', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_3_05' }),
|
||||
new Room({ floor: 3, number: 6, name: 'Velencei-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_06' }),
|
||||
new Room({ floor: 3, number: 12, name: 'Vadkerti-tó', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_12' }),
|
||||
new Room({ floor: 3, number: 28, name: 'Zagyva', type: RoomTypes.TYPE_BOOKABLE, id: 'r_3_28' }),
|
||||
new Room({ floor: 3, number: 7, name: 'Zala', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_3_07' }),
|
||||
|
||||
new Room({ floor: 4, number: 1, name: 'Abaliget', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_01' }),
|
||||
new Room({ floor: 4, number: 7, name: 'Alföld', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_07' }),
|
||||
new Room({ floor: 4, number: 16, name: 'Bakony', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_16' }),
|
||||
new Room({ floor: 4, number: 2, name: 'Borsod', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_02' }),
|
||||
new Room({ floor: 4, number: 13, name: 'Börzsöny', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_13' }),
|
||||
new Room({ floor: 4, number: 35, name: 'Bugac', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_35' }),
|
||||
new Room({ floor: 4, number: 22, name: 'Bükk', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_22' }),
|
||||
new Room({ floor: 4, number: 31, name: 'Cserhát', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_31' }),
|
||||
new Room({ floor: 4, number: 5, name: 'Csóványos', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_05' }),
|
||||
new Room({ floor: 4, number: 33, name: 'Copy room 4E', type: RoomTypes.TYPE_COPYROOM, id: 'r_4_33' }),
|
||||
new Room({ floor: 4, number: 15, name: 'Copy room 4W', type: RoomTypes.TYPE_COPYROOM, id: 'r_4_15' }),
|
||||
new Room({ floor: 4, number: 27, name: 'Dunazug', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_27' }),
|
||||
new Room({ floor: 4, number: 8, name: 'Galya-tető', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_08' }),
|
||||
new Room({ floor: 4, number: 6, name: 'Gellért-hegy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_06' }),
|
||||
new Room({ floor: 4, number: 34, name: 'Gemenc', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_34' }),
|
||||
new Room({ floor: 4, number: 38, name: 'Gerecse', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_38' }),
|
||||
new Room({ floor: 4, number: 3, name: 'Hajdúság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_03' }),
|
||||
new Room({ floor: 4, number: 21, name: 'Hanság', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_21' }),
|
||||
new Room({ floor: 4, number: 39, name: 'Illancs', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_39' }),
|
||||
new Room({ floor: 4, number: 10, name: 'Jászság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_10' }),
|
||||
new Room({ floor: 4, number: 12, name: 'Kékes', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_12' }),
|
||||
new Room({ floor: 4, number: 25, name: 'Kőris-hegy', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_25' }),
|
||||
new Room({ floor: 4, number: 19, name: 'Kunság', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_19' }),
|
||||
new Room({ floor: 4, number: 30, name: 'Magos-fa', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_30' }),
|
||||
new Room({ floor: 4, number: 32, name: 'Mátra', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_32' }),
|
||||
new Room({ floor: 4, number: 17, name: 'Mecsek', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_17' }),
|
||||
new Room({ floor: 4, number: 4, name: 'Mezőföld', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_04' }),
|
||||
new Room({ floor: 4, number: 36, name: 'Nagy-Milic', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_36' }),
|
||||
new Room({ floor: 4, number: 20, name: 'Nyírség', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_20' }),
|
||||
new Room({ floor: 4, number: 9, name: 'Pilis', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_09' }),
|
||||
new Room({ floor: 4, number: 28, name: 'Ördögmalom', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_28' }),
|
||||
new Room({ floor: 4, number: 29, name: 'Őrség', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_29' }),
|
||||
new Room({ floor: 4, number: 14, name: 'Rétköz', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_14' }),
|
||||
new Room({ floor: 4, number: 24, name: 'Szigetköz', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_24' }),
|
||||
new Room({ floor: 4, number: 18, name: 'Tolna', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_18' }),
|
||||
new Room({ floor: 4, number: 23, name: 'Vértes', type: RoomTypes.TYPE_NONBOOKABLE_SCRUM, id: 'r_4_23' }),
|
||||
new Room({ floor: 4, number: 37, name: 'Zemplén', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_4_37' }),
|
||||
new Room({ floor: 4, number: 11, name: 'Zengő', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_4_11' }),
|
||||
new Room({ floor: 4, number: 26, name: 'Zselic', type: RoomTypes.TYPE_BOOKABLE, id: 'r_4_26' }),
|
||||
|
||||
new Room({ floor: 5, number: 11, name: 'BASIC', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_11' }),
|
||||
new Room({ floor: 5, number: 16, name: 'Bánki Donát', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_16' }),
|
||||
new Room({ floor: 5, number: 24, name: 'Bárány Róbert', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_24' }),
|
||||
new Room({ floor: 5, number: 26, name: 'Békésy György', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_26' }),
|
||||
new Room({ floor: 5, number: 12, name: 'Bolyai János', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_12' }),
|
||||
new Room({ floor: 5, number: 23, name: 'Copy room 5E', type: RoomTypes.TYPE_COPYROOM, id: 'r_5_23' }),
|
||||
new Room({ floor: 5, number: 3, name: 'Copy room 5W', type: RoomTypes.TYPE_COPYROOM, id: 'r_5_03' }),
|
||||
new Room({ floor: 5, number: 40, name: 'Csepel-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_40' }),
|
||||
new Room({ floor: 5, number: 28, name: 'Dinamo', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_28' }),
|
||||
new Room({ floor: 5, number: 1, name: 'Eötvös Loránd', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_01' }),
|
||||
new Room({ floor: 5, number: 21, name: 'Floppy', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_21' }),
|
||||
new Room({ floor: 5, number: 35, name: 'Galamb József', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_35' }),
|
||||
new Room({ floor: 5, number: 19, name: 'Ganz Ábrahám', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_19' }),
|
||||
new Room({ floor: 5, number: 34, name: 'Gábor Dénes', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_34' }),
|
||||
new Room({ floor: 5, number: 4, name: 'Golyóstoll', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_04' }),
|
||||
new Room({ floor: 5, number: 10, name: 'Gömböc', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_10' }),
|
||||
new Room({ floor: 5, number: 25, name: 'Hevesy György', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_25' }),
|
||||
new Room({ floor: 5, number: 13, name: 'Hugonnai Vilma', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_13' }),
|
||||
new Room({ floor: 5, number: 0, name: 'HR', type: RoomTypes.TYPE_NONBOOKABLE, id: 'r_hr' }),
|
||||
new Room({ floor: 5, number: 30, name: 'Irinyi János', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_30' }),
|
||||
new Room({ floor: 5, number: 36, name: 'Jedlik Ányos', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_36' }),
|
||||
new Room({ floor: 5, number: 9, name: 'Kandó Kálmán', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_09' }),
|
||||
new Room({ floor: 5, number: 29, name: 'Karburátor', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_29' }),
|
||||
new Room({ floor: 5, number: 2, name: 'Kármán Tódor', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_02' }),
|
||||
new Room({ floor: 5, number: 15, name: 'Kempelen Farkas', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_15' }),
|
||||
new Room({ floor: 5, number: 37, name: 'Kocsi', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_37' }),
|
||||
new Room({ floor: 5, number: 20, name: 'Lénárd Fülöp', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_20' }),
|
||||
new Room({ floor: 5, number: 43, name: 'Lupa-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_43' }),
|
||||
new Room({ floor: 5, number: 39, name: 'Margitsziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_39' }),
|
||||
new Room({ floor: 5, number: 27, name: 'Neumann János', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_5_27' }),
|
||||
new Room({ floor: 5, number: 41, name: 'Óbudai-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_41' }),
|
||||
new Room({ floor: 5, number: 32, name: 'Petzvál József', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_32' }),
|
||||
new Room({ floor: 5, number: 33, name: 'Péter Rózsa', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_33' }),
|
||||
new Room({ floor: 5, number: 14, name: 'Puskás Tivadar', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_14' }),
|
||||
new Room({ floor: 5, number: 5, name: 'Rubik-kocka', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_05' }),
|
||||
new Room({ floor: 5, number: 18, name: 'Semmelweis Ignác', type: RoomTypes.TYPE_BOOKABLE, id: 'r_5_18' }),
|
||||
new Room({ floor: 5, number: 6, name: 'Simonyi Károly', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_06' }),
|
||||
new Room({ floor: 5, number: 17, name: 'Szent-Györgyi Albert', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_17' }),
|
||||
new Room({ floor: 5, number: 44, name: 'Szentendrei-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_44' }),
|
||||
new Room({ floor: 5, number: 42, name: 'Szúnyog-sziget', type: RoomTypes.TYPE_TERRACE, id: 't_5_42' }),
|
||||
new Room({ floor: 5, number: 31, name: 'Telehor', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_31' }),
|
||||
new Room({ floor: 5, number: 38, name: 'Telkes Mária', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_38' }),
|
||||
new Room({ floor: 5, number: 8, name: 'Tihanyi Kálmán', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_5_08' }),
|
||||
new Room({ floor: 5, number: 22, name: 'Transzformátor', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_22' }),
|
||||
new Room({ floor: 5, number: 7, name: 'Üvegbeton', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_5_07' }),
|
||||
|
||||
new Room({ floor: 6, number: 18, name: 'Andromeda', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_18' }),
|
||||
new Room({ floor: 6, number: 19, name: 'Carina', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_19' }),
|
||||
new Room({ floor: 6, number: 10, name: 'Cassiopeia', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_10' }),
|
||||
new Room({ floor: 6, number: 4, name: 'Copy room 6NE', type: RoomTypes.TYPE_COPYROOM, id: 'r_6_04' }),
|
||||
new Room({ floor: 6, number: 12, name: 'Copy room 6SW', type: RoomTypes.TYPE_COPYROOM, id: 'r_6_12' }),
|
||||
new Room({ floor: 6, number: 20, name: 'Crux', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_20' }),
|
||||
new Room({ floor: 6, number: 16, name: 'Cygnus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_16' }),
|
||||
new Room({ floor: 6, number: 17, name: 'Draco', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_17' }),
|
||||
new Room({ floor: 6, number: 13, name: 'Gemini', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_13' }),
|
||||
new Room({ floor: 6, number: 3, name: 'Hydra', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_03' }),
|
||||
new Room({ floor: 6, number: 14, name: 'Lacerta', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_14' }),
|
||||
new Room({ floor: 6, number: 15, name: 'Leo', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_15' }),
|
||||
new Room({ floor: 6, number: 11, name: 'Libra', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_11' }),
|
||||
new Room({ floor: 6, number: 9, name: 'Lynx', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_09' }),
|
||||
new Room({ floor: 6, number: 7, name: 'Octans', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_07' }),
|
||||
new Room({ floor: 6, number: 8, name: 'Orion', type: RoomTypes.TYPE_PHONEBOOTH, id: 'pb_6_08' }),
|
||||
new Room({ floor: 6, number: 6, name: 'Pegasus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_06' }),
|
||||
new Room({ floor: 6, number: 5, name: 'Phoenix', type: RoomTypes.TYPE_BOOKABLE, id: 'r_6_05' }),
|
||||
new Room({ floor: 6, number: 2, name: 'Taurus', type: RoomTypes.TYPE_NONBOOKABLE_MINI, id: 'r_6_02' }),
|
||||
new Room({ floor: 6, number: 1, name: 'Ursa Major', type: RoomTypes.TYPE_BOOKABLE_SPECIAL, id: 'r_6_01' }),
|
||||
];
|
||||
|
||||
const app = new App({
|
||||
rooms: rooms,
|
||||
});
|
||||
app.run();
|
||||
48
src/room.class.ts
Normal file
48
src/room.class.ts
Normal file
@ -0,0 +1,48 @@
|
||||
export enum RoomTypes {
|
||||
TYPE_BOOKABLE,
|
||||
TYPE_BOOKABLE_SPECIAL,
|
||||
TYPE_NONBOOKABLE,
|
||||
TYPE_NONBOOKABLE_MINI,
|
||||
TYPE_NONBOOKABLE_SCRUM,
|
||||
TYPE_NONBOOKABLE_RESEARCH,
|
||||
TYPE_COPYROOM,
|
||||
TYPE_PHONEBOOTH,
|
||||
TYPE_TERRACE,
|
||||
TYPE_LAB,
|
||||
}
|
||||
|
||||
export class Room {
|
||||
|
||||
static typeClassMap = {
|
||||
[RoomTypes.TYPE_BOOKABLE]: ['bookable'],
|
||||
[RoomTypes.TYPE_BOOKABLE_SPECIAL]: ['bookable', 'special'],
|
||||
[RoomTypes.TYPE_NONBOOKABLE]: ['non-bookable'],
|
||||
[RoomTypes.TYPE_NONBOOKABLE_MINI]: ['non-bookable', 'mini'],
|
||||
[RoomTypes.TYPE_NONBOOKABLE_SCRUM]: ['non-bookable', 'scrum'],
|
||||
[RoomTypes.TYPE_NONBOOKABLE_RESEARCH]: ['non-bookable', 'research'],
|
||||
[RoomTypes.TYPE_COPYROOM]: ['copy-room'],
|
||||
[RoomTypes.TYPE_PHONEBOOTH]: ['phonebooth'],
|
||||
[RoomTypes.TYPE_TERRACE]: ['terrace'],
|
||||
[RoomTypes.TYPE_LAB]: ['storage'],
|
||||
};
|
||||
|
||||
public floor: number;
|
||||
public number: number;
|
||||
public name: string;
|
||||
public type: RoomTypes;
|
||||
public id: string;
|
||||
|
||||
constructor({floor, number, name, type, id}:{
|
||||
floor:number, number:number, name:string, type: RoomTypes, id: string
|
||||
}) {
|
||||
this.floor = floor;
|
||||
this.number = number;
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
get formattedName() {
|
||||
return this.number ? `${this.name} (${this.number})` : this.name;
|
||||
}
|
||||
}
|
||||
BIN
src/utm-ericsson-capital.ttf
Normal file
BIN
src/utm-ericsson-capital.ttf
Normal file
Binary file not shown.
59
tsconfig.json
Normal file
59
tsconfig.json
Normal file
@ -0,0 +1,59 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Basic Options */
|
||||
"target": "ES2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
|
||||
// "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
||||
// "lib": [], /* Specify library files to be included in the compilation. */
|
||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||
// "checkJs": true, /* Report errors in .js files. */
|
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||
"sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
// "outFile": "./dist/index.js", /* Concatenate and emit output to single file. */
|
||||
"outDir": "ts-out", /* Redirect output structure to the directory. */
|
||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
// "composite": true, /* Enable project compilation */
|
||||
// "removeComments": true, /* Do not emit comments to output. */
|
||||
// "noEmit": true, /* Do not emit outputs. */
|
||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||
|
||||
/* Strict Type-Checking Options */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
// "strictNullChecks": true, /* Enable strict null checks. */
|
||||
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
|
||||
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
|
||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
|
||||
/* Additional Checks */
|
||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||
|
||||
/* Module Resolution Options */
|
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
||||
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
|
||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||
// "types": [], /* Type declaration files to be included in compilation. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
|
||||
|
||||
/* Source Map Options */
|
||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||
}
|
||||
}
|
||||
43
webpack.config.js
Normal file
43
webpack.config.js
Normal file
@ -0,0 +1,43 @@
|
||||
const path = require('path');
|
||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||||
|
||||
module.exports = {
|
||||
mode: 'production',
|
||||
entry: {
|
||||
js: './src/index.ts',
|
||||
css: './src/ethmap.css'
|
||||
},
|
||||
devtool: 'source-map',
|
||||
plugins: [
|
||||
new MiniCssExtractPlugin({
|
||||
filename: "[name].css",
|
||||
chunkFilename: "[id].css"
|
||||
})
|
||||
],
|
||||
module: {
|
||||
rules: [{
|
||||
test: /\.tsx?$/,
|
||||
loader: 'ts-loader',
|
||||
exclude: /node_modules/
|
||||
},{
|
||||
test: /\.css$/,
|
||||
use: [{
|
||||
loader: 'css-loader',
|
||||
options: { minimize: true }
|
||||
}]
|
||||
},{
|
||||
test: /\.ttf$/,
|
||||
use: [{
|
||||
loader: 'file-loader',
|
||||
options: { name: '[name].[ext]', outputPath: 'fonts/' }
|
||||
}]
|
||||
}]
|
||||
},
|
||||
resolve: {
|
||||
extensions: [ '.tsx', '.ts', '.js' ]
|
||||
},
|
||||
output: {
|
||||
filename: '[name].bundle.js',
|
||||
path: path.resolve(__dirname, 'dist')
|
||||
}
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user