1
0
mirror of https://github.com/dmsl/anyplace.git synced 2021-06-25 09:21:17 +03:00
Files
2020-07-16 03:59:27 +03:00

1289 lines
80 KiB
HTML

<!DOCTYPE html>
<html ng-app="anyArchitect">
<head>
<!--<script>-->
<!-- if (window.location.protocol != "https:")-->
<!-- window.location.href = "https:" + window.location.href.substring(window.location.protocol.length);-->
<!--</script>-->
<link rel="icon" type="image/png" href="build/images/favicon.png">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<meta name="google-signin-scope" content="profile email">
<meta name="google-signin-client_id" content="587500723971-si8s4qqat9v5efgemnebihpi3qe9onlp.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
<link href="bower_components/jquery-ui/themes/base/all.css" rel="stylesheet" type="text/css"/>
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/jquery-ui/jquery-ui.min.js"></script>
<script src="libs/jquery.ui.rotatable.min.js"></script>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBCRLbtsuuKx5cdY2ydiri2r4ji3FTYdbY&libraries=places,visualization,drawing,geometry">
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/xls/0.7.4-a/xls.js"></script>
<script type="text/javascript" src="bower_components/angular/angular.min.js"></script>
<script type="text/javascript" type="text/javascript" src="bower_components/angular-route/angular-route.min.js"></script>
<link rel="stylesheet" type="text/css" href="build/css/anyplace.css"/>
<link rel="stylesheet" type="text/css" href="bower_components/bootstrap/dist/css/bootstrap.css"/>
<link href="https://fonts.googleapis.com/css?family=Lato:400,700,900,400italic,700italic,900italic" rel="stylesheet"
type="text/css">
<!-- Must come after jquery/ui imports -->
<script type="text/javascript" src="bower_components/jqueryui-touch-punch/jquery.ui.touch-punch.min.js"></script>
<script src="bower_components/angular-ui-select/dist/select.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.min.js"></script>
<link rel="stylesheet" type="text/css" href="bower_components/angular-ui-select/dist/select.css"/>
<link rel="stylesheet" href="bower_components/select2/select2.css">
<!-- TODO Deprecate/Remove angularjs-dropdown-multiselect -->
<script type="text/javascript" src="bower_components/angularjs-dropdown-multiselect/dist/angularjs-dropdown-multiselect.min.js"></script>
<link rel="stylesheet" type="text/css" href="bower_components/angularjs-dropdown-multiselect/pages/stylesheets/stylesheet.css"/>
<link rel="stylesheet" href="style/rrssb.css"/>
<title>Anyplace Architect</title>
<script type="text/javascript" src="bower_components/angular-bootstrap/ui-bootstrap.min.js"></script>
<script type="text/javascript" src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
<script type="text/javascript" src="bower_components/angular-loading-bar/src/loading-bar.js"></script>
<link rel="stylesheet" href="bower_components/angular-loading-bar/src/loading-bar.css">
<script type="text/javascript" src="build/js/anyplace.js"></script>
<link rel="stylesheet" type="text/css" href="build/css/anyplace.min.css"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<!--<script src="/bower_components/angular-cookies/angular-cookies.js"></script>-->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular-cookies.js"></script>
</head>
<body >
<div id="top-container">
<div id="control-bar" class="ng-cloak box-shadow-1" ng-controller="ControlBarController as ctrlBarCtrl" ng-cloak>
<button type="button" id="maximize-btn" class="btn btn-maximize" ng-click="showFullControls=true" ng-show="!showFullControls">
<i class="fa fa-window-maximize" ></i>
</button>
<div id="logistics" ng-show="showFullControls">
<span class="logistics-header text-center">
<span><img class="logistics-header-img" src='build/images/logo-blue.png'/></span>
<span class="logistics-header-title">rchitect </span>
<span id="anyplace-version" class="logistics-header-version"></span>
</span>
<!--<button id="minimize-btn" class="btn btn-default" ng-click="toggleFullControls()"></button>-->
<button type="button" id="minimize-btn" class="btn btn-minimize" ng-click="toggleFullControls()">
<i class="fa fa-window-minimize" ></i>
</button>
<span id="login-details" ng-show="isAuthenticated">
<span class="subnote">
{{person.displayName}}
</span>
<button class="btn profile-photo-wrapper">
<span class="profile-photo" ng-style="{'background-image': 'url('+person.image+')'}"></span>
</button>
<button ng-click="signOut()" class="btn btn-primary">Log Out</button>
</span>
</div>
<div id="sign-in-box" ng-hide="isAuthenticated || !showFullControls">
<span id="signinButton" style="display: block; text-align: center">
<div
class="g-signin2"
data-onsuccess="onSignIn"
data-onfailure="onSignInFailure"
data-width="wide"
data-height="tall"
data-accesstype="offline">
</div>
</span>
</div>
<div ng-show="isAuthenticated" ng-controller="BuildingController as buildingCtrl">
<ul id="ctrl-bar-tablist" class="nav nav-tabs" role="tablist" ng-show="showFullControls">
<li role="presentation" ng-class="{ active:isTabSet(1) }">
<a href="" ng-click="setTab(1)">Buildings</a>
</li>
<li role="presentation" ng-class="{ active:isTabSet(2) }">
<a href="" ng-click="setTab(2)">Floors</a>
</li>
<li role="presentation" ng-class="{ active:isTabSet(3) }">
<a href="" ng-click="setTab(3)">POIs</a>
</li>
<li role="presentation" ng-class="{ active:isTabSet(4) }">
<a href="" ng-click="setTab(4)">Campuses</a>
</li>
<li role="presentation" ng-class="{ active:isTabSet(6) }">
<a href="" ng-click="setTab(6)" id="wifiTab">Wi-Fi</a>
</li>
<li role="presentation" ng-class="{ active:isTabSet(5) }">
<a href="" ng-click="setTab(5)">More</a>
</li>
</ul>
<div id="ctrl-bar-buildings" ng-show="showFullControls">
<div ng-show="isTabSet(1)" >
<ui-select ng-model="anyService.selectedBuilding" theme="bootstrap" ng-disabled="disabled">
<ui-select-match placeholder="Select a Building...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices
repeat="b in myBuildings | orderBy : 'name' | propsFilter: { name: $select.search, description: $select.search }">
<div ng-bind-html="b.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
<div class="divider-top-15-line">
<div class="subnote">Building Toolbox</div>
<div class="divider-top-10">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" ng-class="{ active:isCrudTabSelected(1) }">
<a href="" ng-click="setCrudTabSelected(1)">Add</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(2) }">
<a href="" ng-click="setCrudTabSelected(2)">Edit</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(3) }">
<a href="" ng-click="setCrudTabSelected(3)">Delete</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(4) }">
<a href="" ng-click="setCrudTabSelected(4)">Backup</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(5) }">
<a href="" ng-click="setCrudTabSelected(5)">Share</a>
</li>
</ul>
<!-- Tab 1-->
<div class="divider-top-10" ng-show="isCrudTabSelected(1)">
<div class="draggable-border">
<img id="draggable-building" src='build/images/building-icon.png'/>
</div>
<span class="subnote">drag to add new building</span>
</div>
<!-- Tab 2 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(2) && anyService.selectedBuilding">
<div class="form-group">Drag the building's marker to change its position.</div>
<form name="buildingEditForm">
<fieldset class="form-group">
<input ng-model="anyService.selectedBuilding.bucode"
class="form-control" type="text"
placeholder="Building Code">
</fieldset>
<fieldset class="form-group">
<input ng-model="anyService.selectedBuilding.name"
class="form-control" type="text"
placeholder="Building Name">
</fieldset>
<fieldset class="form-group">
<textarea ng-model="anyService.selectedBuilding.description"
class="form-control" type="text"
placeholder="Building Description"></textarea>
</fieldset>
<fieldset class="form-group">
<input ng-model="anyService.selectedBuilding.is_published" type="checkbox"><span> Make building public to view.</span>
</fieldset>
<fieldset>
<button type="submit" class="btn btn-success pull-right add-any-button"
ng-click="updateBuilding()"><span class="glyphicon glyphicon-pencil"></span>
click to update
</button>
</fieldset>
</form>
</div>
<!-- Tab 3-->
<div class="divider-top-10 center-delete-div"
ng-show="isCrudTabSelected(3) && anyService.selectedBuilding">
<div><b>WARNING</b>: Once you click the delete button below, every floor, POI and connection
that is attached to the building <i>{{anyService.getBuildingName()}}</i> will be lost
<b>PERMANENTLY.</b></div>
<button class="btn btn-danger divider-top-10" ng-click="deleteBuilding()">Confirm Deletion
</button>
</div>
<!-- Tab 4 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(4) && anyService.selectedBuilding">
<div>
<div class="divider-top-10">
<div class="midnote">Backup</div>
<div class="subnote">You can backup all elements related to a building</div>
<div class="subnote">(floormaps, radiomaps, pois and connectors)</div>
<div>
<button class="btn btn-success" ng-click="DownloadBackup()">Download
</button>
</div>
<div ng-hide="!anyService.progress" ng-show="anyService.progress" class="progress" style="margin: 3px;">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: {{anyService.progress}}%">
</div>
</div>
</div>
</div>
</div>
<!-- Tab 5 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(5) && anyService.selectedBuilding">
<div>
<div class="subnote">Share your building through the following URL.</div>
<div>
<input class="form-control" value="{{anyService.BASE_URL}}/viewer/?buid={{anyService.getBuildingViewerUrl()}}">
</div>
<script>
;(function($){
$.fn.customerPopup = function (e, intWidth, intHeight, blnResize) {
// Prevent default anchor event
e.preventDefault();
// Set values for window
intWidth = intWidth || '500';
intHeight = intHeight || '400';
strResize = (blnResize ? 'yes' : 'no');
// Set title and open popup with focus on it
var strTitle = ((typeof this.attr('title') !== 'undefined') ? this.attr('title') : 'Social Share'),
strParam = 'width=' + intWidth + ',height=' + intHeight + ',resizable=' + strResize,
objWindow = window.open(this.attr('href'), strTitle, strParam).focus();
}
/* ================================================== */
$(document).ready(function ($) {
$('.customer.share').on("click", function(e) {
$(this).customerPopup(e);
});
});
}(jQuery));
</script>
<!-- Buttons start here. Copy this ul to your document. -->
<ul class="rrssb-buttons rrssb-1">
<li data-initwidth="25" style="width: 25%;" data-size="0" class="rrssb-facebook">
<!-- Replace with your URL. For best results, make sure you page has the proper FB Open Graph tags in header: https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/ -->
<a class="facebook customer share" href="https://www.facebook.com/sharer/sharer.php?u={{anyService.BASE_URL}}/viewer/?buid={{anyService.getBuildingViewerUrl()}}">
<span class="rrssb-icon">
<svg viewBox="0 0 29 29" xmlns="http://www.w3.org/2000/svg">
<path d="M26.4 0H2.6C1.714 0 0 1.715 0 2.6v23.8c0 .884 1.715 2.6 2.6 2.6h12.393V17.988h-3.996v-3.98h3.997v-3.062c0-3.746 2.835-5.97 6.177-5.97 1.6 0 2.444.173 2.845.226v3.792H21.18c-1.817 0-2.156.9-2.156 2.168v2.847h5.045l-.66 3.978h-4.386V29H26.4c.884 0 2.6-1.716 2.6-2.6V2.6c0-.885-1.716-2.6-2.6-2.6z"/>
</svg>
</span>
<span class="rrssb-text">facebook</span>
</a>
</li>
<li class="rrssb-twitter" data-size="0" style="width: 25%;" data-initwidth="25">
<!-- Replace href with your Meta and URL information -->
<a class="facebook customer share" href="https://twitter.com/intent/tweet?text={{anyService.BASE_URL}}%2Fviewer%2F%3Fbuid%3D{{anyService.getBuildingViewerUrl()}}">
<span class="rrssb-icon">
<svg viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg">
<path d="M24.253 8.756C24.69 17.08 18.297 24.182 9.97 24.62a15.093 15.093 0 0 1-8.86-2.32c2.702.18 5.375-.648 7.507-2.32a5.417 5.417 0 0 1-4.49-3.64c.802.13 1.62.077 2.4-.154a5.416 5.416 0 0 1-4.412-5.11 5.43 5.43 0 0 0 2.168.387A5.416 5.416 0 0 1 2.89 4.498a15.09 15.09 0 0 0 10.913 5.573 5.185 5.185 0 0 1 3.434-6.48 5.18 5.18 0 0 1 5.546 1.682 9.076 9.076 0 0 0 3.33-1.317 5.038 5.038 0 0 1-2.4 2.942 9.068 9.068 0 0 0 3.02-.85 5.05 5.05 0 0 1-2.48 2.71z"/>
</svg>
</span>
<span class="rrssb-text">twitter</span>
</a>
</li>
<li class="rrssb-email" data-size="0" style="width: 25%;" data-initwidth="25">
<!-- Replace subject with your message using URL Endocding: http://meyerweb.com/eric/tools/dencoder/ -->
<a href="mailto:?&amp;body={{anyService.BASE_URL}}%2Fviewer%2F%3Fbuid%3D{{anyService.getBuildingViewerUrl()}}">
<span class="rrssb-icon">
<svg viewBox="0 0 28 28" xmlns="http://www.w3.org/2000/svg">
<path d="M20.11 26.147c-2.335 1.05-4.36 1.4-7.124 1.4C6.524 27.548.84 22.916.84 15.284.84 7.343 6.602.45 15.4.45c6.854 0 11.8 4.7 11.8 11.252 0 5.684-3.193 9.265-7.398 9.3-1.83 0-3.153-.934-3.347-2.997h-.077c-1.208 1.986-2.96 2.997-5.023 2.997-2.532 0-4.36-1.868-4.36-5.062 0-4.75 3.503-9.07 9.11-9.07 1.713 0 3.7.4 4.6.972l-1.17 7.203c-.387 2.298-.115 3.3 1 3.4 1.674 0 3.774-2.102 3.774-6.58 0-5.06-3.27-8.994-9.304-8.994C9.05 2.87 3.83 7.545 3.83 14.97c0 6.5 4.2 10.2 10 10.202 1.987 0 4.09-.43 5.647-1.245l.634 2.22zM16.647 10.1c-.31-.078-.7-.155-1.207-.155-2.572 0-4.596 2.53-4.596 5.53 0 1.5.7 2.4 1.9 2.4 1.44 0 2.96-1.83 3.31-4.088l.592-3.72z"/>
</svg>
</span>
<span class="rrssb-text">email</span>
</a>
</li>
<li class="rrssb-googleplus" data-size="0" style="width: 25%;" data-initwidth="25">
<!-- Replace href with your meta and URL information. -->
<a class="facebook customer share" href="https://plus.google.com/share?url={{anyService.BASE_URL}}%2Fviewer%2F%3Fbuid%3D{{anyService.getBuildingViewerUrl()}}">
<span class="rrssb-icon">
<svg viewBox="0 0 24 24" height="24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M21 8.29h-1.95v2.6h-2.6v1.82h2.6v2.6H21v-2.6h2.6v-1.885H21V8.29zM7.614 10.306v2.925h3.9c-.26 1.69-1.755 2.925-3.9 2.925-2.34 0-4.29-2.016-4.29-4.354s1.885-4.353 4.29-4.353c1.104 0 2.014.326 2.794 1.105l2.08-2.08c-1.3-1.17-2.924-1.883-4.874-1.883C3.65 4.586.4 7.835.4 11.8s3.25 7.212 7.214 7.212c4.224 0 6.953-2.988 6.953-7.082 0-.52-.065-1.104-.13-1.624H7.614z"/></svg> </span>
<span class="rrssb-text">google+</span>
</a>
</li>
</ul>
<!-- Buttons end here -->
</div>
</div>
</div>
</div>
</div>
<!-- CAMPUS -->
<div ng-show="isTabSet(4)" >
<ui-select ng-model="anyService.selectedCampus" theme="bootstrap" ng-disabled="disabled">
<ui-select-match placeholder="See my Campuses...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices
repeat="b in myCampus | orderBy : 'name' | propsFilter: { name: $select.search, description: $select.search }">
<div ng-bind-html="b.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
<div class="divider-top-15-line">
<div class="subnote">Campus Toolbox</div>
<div class="divider-top-10">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" ng-class="{ active:isCrudTabSelected(1) }">
<a href="" ng-click="setCrudTabSelected(1)">Add</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(2) }">
<a href="" ng-click="setCrudTabSelected(2)">Edit</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(3) }">
<a href="" ng-click="setCrudTabSelected(3)">Delete</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(4) }">
<a href="" ng-click="setCrudTabSelected(4)">Backup</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(5) }">
<a href="" ng-click="setCrudTabSelected(5)">Share</a>
</li>
</ul>
<!-- Tab 1-->
<div class="divider-top-10" ng-show="isCrudTabSelected(1)">
<div class="divider-top-10">
<div ng-dropdown-multiselect="" options="example9data" selected-model="example9model" extra-settings="example9settings" ></div>
<div class="form-group">Set Campus Informations.</div>
<form id="myForm" class="form-group">
<input type="text" id="CampusName" size="25" class="form-control" placeholder="Campus Name"/>
<br />
<input type="text" id="CampusDescription" size="25" class="form-control" placeholder="Campus Description"/>
<br />
<input type="text" id="CampusID" size="25" class="form-control" placeholder="Campus id (unique per building)"/>
<br />
<input type="checkbox" id="Greeklish-OnOff" value=""/><a href="https://en.m.wikipedia.org/wiki/Greeklish" target="_blank"> Enable Greeklish search for this Campus</a>
<br /><br />
<button type="submit" class="btn btn-success pull-right add-any-button"
ng-click="addCampus()"><span class="glyphicon glyphicon-pencil"></span>
Click to add Campus
</button>
<br />
</form>
</div>
</div>
<!-- Tab 2 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(2) && anyService.selectedCampus">
<form name="buildingEditForm">
<div ng-dropdown-multiselect="" options="example9dataedit" selected-model="example9modeledit" extra-settings="example9settingsedit" ></div>
<fieldset class="form-group">
<input ng-model="anyService.selectedCampus.name"
class="form-control" type="text"
placeholder="Campus Name" id="CampusNameedit">
</fieldset>
<fieldset class="form-group">
<input ng-model="anyService.selectedCampus.description"
class="form-control" type="text"
placeholder="Campus Description" id="CampusDescriptionedit">
</fieldset>
<br />
<input type="checkbox" id="Greeklish-OnOffedit" value=""/><a href="https://en.m.wikipedia.org/wiki/Greeklish" target="_blank"> Enable Greeklish search for this Campus</a>
<br /><br />
<fieldset>
<button type="submit" class="btn btn-success pull-right add-any-button"
ng-click="updateCampus()"><span class="glyphicon glyphicon-pencil"></span>
click to update
</button>
</fieldset>
</form>
</div>
<!-- Tab 3-->
<div class="divider-top-10 center-delete-div"
ng-show="isCrudTabSelected(3) && anyService.selectedCampus">
<div><b>WARNING</b>: Once you click the delete button below, Campus <i>{{anyService.getCampusName()}}</i>
will be deleted but every building which is included in Campus will not be affected.</div>
<button class="btn btn-danger divider-top-10" ng-click="deleteCampus()">Confirm Deletion
</button>
</div>
<!-- Tab 4 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(4) && anyService.selectedCampus">
<div>
<div class="divider-top-10">
<div class="subnote">Export / Import</div>
<button class="btn btn-success" ng-click="exportCampusToJson()">Export to JSON
</button>
</div>
</div>
</div>
<!-- Tab 5 -->
<div class="divider-top-10" ng-show="isCrudTabSelected(5) && anyService.selectedCampus">
<div>
<div>
<div class="subnote">Share your campus through the following URL.</div>
<div>
<input class="form-control" value="{{anyService.getCampusViewerUrl()}}">
</div>
<script>
;(function($){
$.fn.customerPopup = function (e, intWidth, intHeight, blnResize) {
// Prevent default anchor event
e.preventDefault();
// Set values for window
intWidth = intWidth || '500';
intHeight = intHeight || '400';
strResize = (blnResize ? 'yes' : 'no');
// Set title and open popup with focus on it
var strTitle = ((typeof this.attr('title') !== 'undefined') ? this.attr('title') : 'Social Share'),
strParam = 'width=' + intWidth + ',height=' + intHeight + ',resizable=' + strResize,
objWindow = window.open(this.attr('href'), strTitle, strParam).focus();
}
/* ================================================== */
$(document).ready(function ($) {
$('.customer.share').on("click", function(e) {
$(this).customerPopup(e);
});
});
}(jQuery));
</script>
<!-- Buttons start here. Copy this ul to your document. -->
<ul class="rrssb-buttons">
<li class="rrssb-facebook">
<!-- Replace with your URL. For best results, make sure you page has the proper FB Open Graph tags in header: https://developers.facebook.com/docs/opengraph/howtos/maximizing-distribution-media-content/ -->
<a href="https://www.facebook.com/sharer/sharer.php?u={{anyService.getCampusViewerUrl()}}" class="facebook customer share">
<span class="rrssb-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 29 29">
<path d="M26.4 0H2.6C1.714 0 0 1.715 0 2.6v23.8c0 .884 1.715 2.6 2.6 2.6h12.393V17.988h-3.996v-3.98h3.997v-3.062c0-3.746 2.835-5.97 6.177-5.97 1.6 0 2.444.173 2.845.226v3.792H21.18c-1.817 0-2.156.9-2.156 2.168v2.847h5.045l-.66 3.978h-4.386V29H26.4c.884 0 2.6-1.716 2.6-2.6V2.6c0-.885-1.716-2.6-2.6-2.6z"/>
</svg>
</span>
<span class="rrssb-text">facebook</span>
</a>
</li>
<li class="rrssb-twitter">
<!-- Replace href with your Meta and URL information -->
<a href="https://twitter.com/intent/tweet?text={{anyService.getCampusViewerUrlEncoded()}}"
class="facebook customer share">
<span class="rrssb-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path d="M24.253 8.756C24.69 17.08 18.297 24.182 9.97 24.62a15.093 15.093 0 0 1-8.86-2.32c2.702.18 5.375-.648 7.507-2.32a5.417 5.417 0 0 1-4.49-3.64c.802.13 1.62.077 2.4-.154a5.416 5.416 0 0 1-4.412-5.11 5.43 5.43 0 0 0 2.168.387A5.416 5.416 0 0 1 2.89 4.498a15.09 15.09 0 0 0 10.913 5.573 5.185 5.185 0 0 1 3.434-6.48 5.18 5.18 0 0 1 5.546 1.682 9.076 9.076 0 0 0 3.33-1.317 5.038 5.038 0 0 1-2.4 2.942 9.068 9.068 0 0 0 3.02-.85 5.05 5.05 0 0 1-2.48 2.71z"/>
</svg>
</span>
<span class="rrssb-text">twitter</span>
</a>
</li>
<li class="rrssb-email">
<!-- Replace subject with your message using URL Endocding: http://meyerweb.com/eric/tools/dencoder/ -->
<a href="mailto:?&amp;body={{anyService.getCampusViewerUrlEncoded()}}">
<span class="rrssb-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
<path d="M20.11 26.147c-2.335 1.05-4.36 1.4-7.124 1.4C6.524 27.548.84 22.916.84 15.284.84 7.343 6.602.45 15.4.45c6.854 0 11.8 4.7 11.8 11.252 0 5.684-3.193 9.265-7.398 9.3-1.83 0-3.153-.934-3.347-2.997h-.077c-1.208 1.986-2.96 2.997-5.023 2.997-2.532 0-4.36-1.868-4.36-5.062 0-4.75 3.503-9.07 9.11-9.07 1.713 0 3.7.4 4.6.972l-1.17 7.203c-.387 2.298-.115 3.3 1 3.4 1.674 0 3.774-2.102 3.774-6.58 0-5.06-3.27-8.994-9.304-8.994C9.05 2.87 3.83 7.545 3.83 14.97c0 6.5 4.2 10.2 10 10.202 1.987 0 4.09-.43 5.647-1.245l.634 2.22zM16.647 10.1c-.31-.078-.7-.155-1.207-.155-2.572 0-4.596 2.53-4.596 5.53 0 1.5.7 2.4 1.9 2.4 1.44 0 2.96-1.83 3.31-4.088l.592-3.72z"/>
</svg>
</span>
<span class="rrssb-text">email</span>
</a>
</li>
<li class="rrssb-googleplus">
<!-- Replace href with your meta and URL information. -->
<a href="https://plus.google.com/share?url={{anyService.getCampusViewerUrlEncoded()}}" class="facebook customer share">
<span class="rrssb-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M21 8.29h-1.95v2.6h-2.6v1.82h2.6v2.6H21v-2.6h2.6v-1.885H21V8.29zM7.614 10.306v2.925h3.9c-.26 1.69-1.755 2.925-3.9 2.925-2.34 0-4.29-2.016-4.29-4.354s1.885-4.353 4.29-4.353c1.104 0 2.014.326 2.794 1.105l2.08-2.08c-1.3-1.17-2.924-1.883-4.874-1.883C3.65 4.586.4 7.835.4 11.8s3.25 7.212 7.214 7.212c4.224 0 6.953-2.988 6.953-7.082 0-.52-.065-1.104-.13-1.624H7.614z"/></svg> </span>
<span class="rrssb-text">google+</span>
</a>
</li>
</ul>
<!-- Buttons end here -->
</div>
</div>
</div>
</div>
</div>
</div> <!-- BUILDINGS -->
</div>
<div id="ctrl-bar-floors" ng-show="isTabSet(2) && showFullControls" ng-controller="FloorController as floorCtrl">
<div ng-show="anyService.selectedBuilding !== undefined && anyService.selectedBuilding !== null">
<div class="working-on-indicator">{{anyService.selectedBuilding.name}}</div>
<div class="divider-top-15-line">
<div class="subnote">Floor Toolbox</div>
<div class="divider-top-10">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" ng-class="{ active:isCrudTabSelected(1) }">
<a href="" ng-click="setCrudTabSelected(1)">Add</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(2) }">
<a href="" ng-click="setCrudTabSelected(2)">Edit</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(3) }">
<a href="" ng-click="setCrudTabSelected(3)">Delete</a>
</li>
</ul>
<div ng-show="isCrudTabSelected(1)">
<div class="divider-top-10">
<label for="input-new-floor-num">Floor Number </label>
<input class="form-control" id="input-new-floor-num" type="number" min="-256"
max="256"
ng-model="newFloorNumber">
<label for="input-floor-plan">Floor Plan </label>
<input class="form-control" type="file" id="input-floor-plan"
name="files[]"
data-file="param.file"/>
</div>
<div class="divider-top-10" ng-show="isCanvasOverlayActive">
<button class="btn btn-success" ng-click="setFloorPlan()"><span
class="glyphicon glyphicon-ok"></span></button>
<button class="btn btn-danger" ng-click="removeFloorPlan()"><span
class="glyphicon glyphicon-remove"></span></button>
</div>
<div class="divider-top-10">
<span class="subnote"><b>Note:</b> Zooming in the map as much as possible while placing the floor plan will result to better image quality.</span>
</div>
</div>
<div ng-show="isCrudTabSelected(2)">
<div class="divider-top-10">
<div style="text-align: center" class="divider-top-10">
<span>To edit a floor's plan you can switch to the "Add" tab, select the "Floor Number" you want to change and upload the new image. The old image will be overwritten.</span>
</div>
</div>
</div>
<div class="divider-top-10 center-delete-div"
ng-show="isCrudTabSelected(3) && anyService.selectedBuilding">
<div><b>WARNING</b>: Once you click the delete button below, every POI and connection
that
is attached to floor <i>{{anyService.getFloorNumber()}}</i> of building <i>{{anyService.getBuildingName()}}</i>
will be lost <b>PERMANENTLY.</b></div>
<button ng-click="deleteFloor()" class="btn btn-danger divider-top-10">Confirm Deletion
</button>
</div>
</div>
</div>
</div>
<div class="warning-prereq"
ng-show="anyService.selectedBuilding === undefined || anyService.selectedBuilding === null">
<div class="midnote">
No building selected.
</div>
<div class="midnote">
You can add a new one from the Building Toolbox.
</div>
</div>
</div>
<!-- POIS -->
<div id="ctrl-bar-pois" ng-show="isTabSet(3) && showFullControls" ng-controller="PoiController as poiCtrl">
<div ng-show="anyService.selectedBuilding !== undefined && anyService.selectedBuilding !== null && anyService.selectedFloor !== undefined && anyService.selectedFloor !== null">
<div class="working-on-indicator">[ {{anyService.selectedFloor.floor_number}} ] :
{{anyService.selectedBuilding.name}}
</div>
<ui-select ng-model="anyService.selectedPoi" theme="bootstrap" ng-disabled="disabled">
<ui-select-match placeholder="Select POI...">{{$select.selected.name}}
</ui-select-match>
<ui-select-choices
repeat="p in myPois | filter : { pois_type : '!None' } | propsFilter: { name: $select.search, description: $select.search, floor_number: $select.search } | orderBy : orderByName">
<div ng-bind-html="p.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
<div id="poi-toolbox" class="divider-top-15-line">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" ng-class="{ active:isCrudTabSelected(1) }">
<a href="" ng-click="setCrudTabSelected(1)">Add</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(2) }">
<a href="" ng-click="setCrudTabSelected(2)">Import (JSON)</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(3) }">
<a href="" ng-click="setCrudTabSelected(3)">Import (EXCEL)</a>
</li>
</ul>
<div class="divider-top-10" ng-show="isCrudTabSelected(1)">
<div class="subnote">POI Toolbox</div>
<div class="divider-top-10">
<div class="draggable-border">
<img id="draggable-poi" src='build/images/poi-icon.png'/>
</div>
<span class="subnote">drag to add new POI</span>
</div>
<div class="divider-top-10">
<span id="helper-connector" class="draggable-border">
<img id="draggable-connector" class="poi-toolbox-btn"
src='build/images/edge-connector-icon.png'/>
</span>
<span class="subnote">drag to add new connector</span>
</div>
<div class="divider-top-10">
<span id="poi-edge-mode" ng-class="(edgeMode) ? 'draggable-border-green' : ''"
ng-click="toggleEdgeMode()">
<img id="edge-mode-btn" src="build/images/edge-mode.png"/>
</span>
<span ng-hide="edgeMode" class="subnote">toggle edge mode (off)</span>
<span ng-show="edgeMode" class="subnote">toggle edge mode (on)</span>
</div>
</div>
<div class="divider-top-10" ng-show="isCrudTabSelected(22)">
<div class="form-group">POI's types.</div>
<div style="height: 150px;">
<div style="overflow: scroll; height: 100%;">
<div ng-repeat="item in poicategories track by $index" style="margin: 2px;">
<input class="form-control" type="text" placeholder="Type new location" ng-disabled="{{item.disenable}}" ng-model="item.poicat" placeholder="{{item.poicatPlaceholder}}" value="{{poicategory.poicat}}"/>
<button class="fieldsme" ng-click="remove($index)">X</button>
</div>
</div>
</div>
<button style="margin: 2px;" id="buttononmap" class="btn btn-success pull-right add-any-button" ng-click="add()">Add POI type</button>
<div id="routes3-map"></div>
<div style="height: 150px;">
<div style="overflow: scroll; height: 100%;">
<div ng-repeat="poicategory in poicategories">
<span ng-click="deletetype(poicategory.id)" class="glyphicon glyphicon-remove-circle">
<input style="margin: 2px; width: 80%;" class="form-control" type="text" ng-disabled="{{poicategory.disenable}}" placeholder="{{poicategory.poicatPlaceholder}}" id="{{poicategory.id}}" ng-model="poicategory.poicat" value="{{poicategory.poicat}}" >
</span>
</div>
</div>
</div>
</div>
<div class="divider-top-10" ng-show="isCrudTabSelected(2) && anyService.selectedBuilding">
<div>
<div class="divider-top-10">
<div class="midnote">Export / Import</div>
<div class="subnote">Export EXISTING building POIs, edit them with a text editor</div>
<div class="subnote">and Import them back.Manually set the “overwrite” field to “true”</div>
<div class="subnote">for every record that needs to be updated.</div>
<div>
<button class="btn btn-success" ng-click="exportBuildingToJson()">Export to JSON
</button>
</div>
<div>
<input class="form-control" style="margin: 3px;" type="file" id="file-input" value=""/>
<button class="btn btn-success" ng-click="importBuildingFromJson()">Import from JSON
</button>
</div>
</div>
</div>
</div>
<div class="divider-top-10" ng-show="isCrudTabSelected(3) && anyService.selectedBuilding">
<div>
<div class="divider-top-10">
<div class="midnote">Export / Import</div>
<div class="subnote">To update the POIs from an excel file, with same name,</div>
<div class="subnote">create an excel with 6 columns.</div>
<div class="subnote">Name the 1st 'buid',the 2nd name and from the 3rd to 6th name them </div>
<div class="subnote">'des1','des2','des3','des4' respectively.</div>
<div class="subnote">Furthermore in 'buid' column complete the buids,</div>
<div class="subnote">in 'name' column complete the names that mach with POIs names,</div>
<div class="subnote">and finally in use the des1,des2,des3,des4 to complete the description.</div>
<div class="subnote">The structure of descriptions is "des3 des4\ndes1\ndes2".</div>
<div class="subnote">Example of .xls file:<a href="{{anyService.BASE_URL}}/architect/build/images/xls-file.png" target="_blank">demo.xls</a></div>
<div>
<input class="form-control" style="margin: 3px;" type="file" id="my_file_input" value=""/>
<button class="btn btn-success" ng-click="importBuildingFromExcel()">Import from EXCEL
</button>
</div>
<div ng-hide="!anyService.progress" ng-show="anyService.progress" class="progress" style="margin: 3px;">
<div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: {{anyService.progress}}%">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="warning-prereq"
ng-show="anyService.selectedBuilding === undefined || anyService.selectedBuilding === null || anyService.selectedFloor === undefined || anyService.selectedFloor === null">
<div class="midnote">
No floor selected.
</div>
<div class="midnote">
You can add a new one from the Floor Toolbox.
</div>
</div>
</div>
<!--Wi-Fi -->
<div id="ctrl-bar-areas" ng-controller="WiFiController as wifiCtrl">
<div ng-show="anyService.selectedBuilding !== undefined && anyService.selectedBuilding !== null">
<div id="control-bar-FMS" class="ng-cloak box-shadow-1" ng-cloak>
<div class="diveder-top-1">
<span title="Time MODE: {{ getFingerPrintsTimeModeText() }}" id="FPs_2" class="A_0" ng-show="fingerPrintsMode || radioHeatmapRSSMode" >
<span id="fingerPrints-time-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-clock-o"></i>
</button>
</span>
</span>
</div>
<div class="divider-top-1" >
<span title="{{ getFingerPrintsModeText() }}" id="FPs_1" class="A_0 box-shadow-1" >
<span id="fingerPrints-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-podcast"></i>
</button>
</span>
</span>
<span title="Delete FingerPrints MODE: {{ getDeleteFingerPrintsModeText() }}" id="DL_1" class="A_0" ng-show="fingerPrintsMode" >
<span id="delete-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-trash"></i>
</button>
</span>
</span>
</div>
<div class="divider-top-1">
<span title="{{ getHeatmapModeText() }}" id="HMs_1" class="A_0">
<span id="radioHeatmapRSS-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-area-chart"></i>
</button>
</span>
</span>
</div>
<div class="divider-top-1">
<span title="{{ getAPsModeText() }}" id="APs_1" class="A_0">
<span id="APs-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-wifi"></i>
</button>
</span>
</span>
</div>
<div class="divider-top-1">
<span title="{{ getLocalizationAccuracyModeText() }}" id="LA_1" class="A_0">
<span id="localizationAccuracy-mode">
<button type="button" class="btn btn-default">
<i class="fa fa-map"></i>
</button>
</span>
</span>
</div>
<div class="divider-top-1">
<span title="{{ getPOIsModeText() }}" id="POIs_1" class="A_0" >
<span id="POIs-mode">
<button type="button" class="btn btn-default">
<img src="build/images/poi-icon.png" height="16px" width="14px"/>
</button>
</span>
</span>
</div>
<div class="divider-top-1">
<span title="{{ getConnectionsModeText() }}" id="CNs_1" class="A_0" >
<span id="connections-mode">
<button type="button" class="btn btn-default">
<img src="build/images/edge-mode.png" height="16px" width="14px"/>
</button>
</span>
</span>
</div>
</div>
<div ng-show="showFullControls && isTabSet(6)">
<div class="working-on-indicator">{{anyService.selectedBuilding.name}}</div>
<div class="divider-top-15-line">
<div class="divider-top-10">
<ul class="nav nav-pills" role="tablist">
<li role="presentation" ng-class="{ active:isCrudTabSelected(1) }">
<a href="" ng-click="setCrudTabSelected(1)" id="FPs">FingerPrints</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(2) }">
<a href="" ng-click="setCrudTabSelected(2)" id="HMs">Wi-Fi Coverage</a>
</li>
<li role="presentation" ng-class="{ active:isCrudTabSelected(3) }">
<a href="" ng-click="setCrudTabSelected(3)" id="LAs">Localization</a>
</li>
</ul>
<div ng-show="isCrudTabSelected(1)" class="divider-top-10 center-wifi-div">
<div class="subnote">
This area shows the Wi-Fi fingerprints that have been collected
<a data-toggle="modal" data-target="#myModal_1">read more...</a>
</div>
<div style="margin: 10px; font-weight: bold">
<button id="FPsButton" class="btn btn-success" ng-click="toggleFingerPrints()">
{{getFingerPrintsButtonText()}}
</button>
<button id="deleteButton" class="btn btn-success" ng-click="deleteFingerPrints()">
Delete FingerPrints
</button>
</div>
<div style="margin: 10px; font-weight: bold" ng-show="fingerPrintsMode">
<button id="FPsTimeButton" class="btn btn-success" ng-click="toggleFingerPrintsTime()" >
{{getFingerPrintTimeButtonText()}}
</button>
</div>
<div style="margin: 10px; font-weight: bold">
<button id="POIsButton" class="btn btn-success" ng-click="togglePOIs()">
{{getPOIsButtonText()}}
</button>
<button id="connectionsButton" class="btn btn-success" ng-click="toggleConnections()">
{{getConnectionsButtonText()}}
</button>
</div>
<div ng-show="deleteButtonWarning" class="subnote">
<b>Please <u>select</u> with your <u>mouse</u> the area where
fingerprints should be deleted.</b>
</div>
</div>
<div ng-show="isCrudTabSelected(2)" class="divider-top-10 center-wifi-div">
<div class="subnote">
This area allows you to observe the network coverage
<a data-toggle="modal" data-target="#myModal_2">read more...</a>
</div>
<div style="margin: 10px; font-weight: bold">
<button id="HMsButton" class="btn btn-success" ng-click="toggleRadioHeatmapRSS()">
{{getHeatMapButtonText()}}
</button>
<button id="APsButton" class="btn btn-success" ng-click="toggleAPs()">
{{getAPsButtonText()}}
</button>
<select class="btn" style="margin: 10px; font-weight: bold" ng-model="selected" ng-change="selectFilterForAPs()" ng-show="APsMode">
<option id="defaultOption" selected disabled>Filters:</option>
<option style="margin: 10px; font-weight: bold" value="0">By MAC</option>
<option style="margin: 10px; font-weight: bold" value="1">By manufacturer</option>
</select>
<div ng-dropdown-multiselect="" events="multiuserevents" options="example9data" selected-model="example9model" extra-settings="example9settings" ng-show="filterByMAC" ></div>
<div ng-dropdown-multiselect="" events="multiuserevents1" options="example8data" selected-model="example8model" extra-settings="example9settings" ng-show="filterByMAN" ></div>
</div>
</div>
<div ng-show="isCrudTabSelected(3)" class="divider-top-10 center-wifi-div">
<div class="subnote scroll">
This area allows you to observe the expected localization accuracy
<a data-toggle="modal" data-target="#myModal_3">read more...</a>
</div>
<div style="margin: 10px; font-weight: bold">
<button id="LAButton" class="btn btn-success" ng-click="toggleLocalizationAccuracy()" >
{{getLocalizationAccuracyText()}}
<i id="LAButtonProgress" class="fa fa-circle-o-notch fa-spin hidden"></i>
</button>
<button id="LAButton1" class="btn btn-success" ng-click="deleteRadiomaps()" >
Delete Radiomap
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="warning-prereq"
ng-show="(anyService.selectedBuilding === undefined || anyService.selectedBuilding === null) && isTabSet(6) ">
<div class="midnote">
No building selected.
</div>
<div class="midnote">
You can add a new one from the Building Toolbox.
</div>
</div>
<div id="color-bar" ng-show="anyService.radioHeatmapRSSMode" class="">
<ul class="spot">
<span ng-click="hideRSSExcept('g')" title="{{getColorBarTextFor('green')}}" class="A_0" >
<button style="background-color: rgb(78, 212, 25); width: 100px;" id="greenSquares">0 to -60</button>
</span>
<span ng-click="hideRSSExcept('y')" title="{{getColorBarTextFor('yellow')}}" class="A_0" >
<button style="background-color: rgb(255, 255, 0); width: 100px;" id="yellowSquares">-60 to -70</button>
</span>
<span ng-click="hideRSSExcept('o')" title="{{getColorBarTextFor('orange')}}" class="A_0">
<button style="background-color: rgb(255, 165, 0); width: 100px;" id="orangeSquares">-70 to -90</button>
</span>
<span ng-click="hideRSSExcept('p')" title="{{getColorBarTextFor('purple')}}" class="A_0">
<button style="background-color: rgb(189,6,189); width: 100px;" id="purpleSquares">-90 to -100</button>
</span>
<span ng-click="hideRSSExcept('r')" title="{{getColorBarTextFor('red')}}" class="A_0" >
<button style="background-color: rgb(255, 0, 0); width: 100px;" id="redSquares">-100 to -110</button>
</span>
<li style="background-color: rgb(255, 255, 255); width: 50px; text-align: center;">dBm</li>
<a data-toggle="modal" data-target="#myModal_2">
<button style="width: 50px;">
<i class="fa fa-info-circle"></i>
</button>
</a>
</ul>
</div>
<div id="time-bar" ng-show="anyService.fingerPrintsTimeMode || anyService.radioHeatmapRSSTimeMode" class="" >
<div id="charts">
<div id="date-chart" class="chart">
<div class="title">Date</div>
</div>
</div>
<script src="libs/crossfilter.v1.min.js"></script>
<script src="libs/d3.v3.min.js"></script>
</div>
</div>
<!-- Wi-Fi ends -->
</div>
<div id="ctrl-bar-more" ng-show="isTabSet(5) && showFullControls">
<div class="subnote">Your API Key</div>
<div class="divider-top-10">
<input class="form-control" value="{{gAuth.access_token}}">
</div>
<a data-toggle="modal" data-target="#myModal_Welcome">
<button style="width: 50px; float: right; margin:10px;">
<i class="fa fa-question-circle"></i>
</button>
</a>
</div>
<div id="notification_panel" ng-controller="AlertController as alertCtrl" ng-show="alerts.length">
<alert ng-repeat="alert in alerts" type="{{alert.type}}" close="anyService.closeAlert($index)">
{{alert.msg}}
</alert>
</div>
<div id="my-loc-control" class="ng-cloak" ng-cloak>
<div ng-click="centerViewToSelectedItem()"
class="center-view-box-parent box-shadow-1">
<div id="center-view-box">
<span>
<img width="25" height="25" src="build/images/any-bullseye.png">
</span>
</div>
</div>
<div ng-click="showUserLocation()" class="find-me-box-parent box-shadow-1">
<div id="find-me-box">
<span>
<img ng-show="getIsUserLocVisible()" width="25" height="25" src="build/images/html5-location-blue.png">
<img ng-hide="getIsUserLocVisible()" width="25" height="25" src="build/images/html5-location-grey.png">
</span>
</div>
</div>
<div ng-show="getIsUserLocVisible()" ng-click="panToUserLocation()" class="pan-find-me-box-parent box-shadow-1">
<div id="pan-find-me-box">
<span>
<img width="25" height="25" src="build/images/bullseye.png">
</span>
</div>
</div>
</div>
</div>
<input id="pac-input" class="controls" type="text" placeholder="Search for desired area to add a Building">
<div id="map-canvas"></div>
<!-- Logo at bottom right -->
<!--<div id="div-logo">-->
<!--<img style="width: 150px; height: auto" src="build/images/logo4.0-blue-full-wide.png"/>-->
<!--</div>-->
</div>
<div id="floor-controls">
<div id="DIV_1" ng-show="anyService.selectedBuilding !== undefined && anyService.selectedBuilding !== null" class="ng-cloak" ng-cloak ng-controller="SelectFloorController as selectfloorCtrl">
<span ng-click="floorUp()" title="Level up" id="A_2">
<i class="fa fa-building"></i>
<i class="fa fa-caret-up"></i>
</span>
<a id="A_5">
<select id="floor-select-list-bar" ng-model="anyService.selectedFloor"
style="border: none; outline-style: none; width: 45px; font-size: 15px; background-color: white; padding-left: 5px;"
ng-options="floor.floor_number for floor in xFloors | orderBy:orderByFloorNo"
title="Floors" >
</select>
</a>
<span ng-click="floorDown()" title="Level Down" id="A_6">
<i class="fa fa-building"></i>
<i class="fa fa-caret-down"></i>
</span>
</div>
</div>
<script type="text/javascript" src="build/js/anyplace.js"></script>
<script type="text/javascript" src="bower_components/FileSaver/FileSaver.min.js"></script>
<script type="text/javascript" src="bower_components/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="libs/lodash.min.js"></script>
<script type="text/javascript" src="libs/flurry.js"></script>
<script>FlurryAgent.startSession("DND8DGH2MT7VZGBMNBPP");</script>
<!-- Modals -->
<div class="modal fade" id="myModal_1" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<b>FingerPrints</b>
</div>
<div class="modal-body">
<p>This area shows the Wi-Fi fingerprints that have been collected using
<a href="//play.google.com/store/apps/details?id=com.dmsl.anyplace"
target="_blank">Anyplace Logger</a> on Android as shown in the video below:<br>
<iframe width="100%" height="315" src="https://www.youtube.com/embed/8EvioLZ6hvg?autoplay=0" frameborder="0" allow="encrypted-media" allowfullscreen></iframe><br>
Collecting the Wi-Fi fingerprints allows our users to localize with greater accuracy but
allows you also to observe the coverage of Wi-Fi infrastructure.<br>
For greater accuracy on those tasks, please collect as many fingerprints as possible
using your Android Phone.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="myModal_2" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<b>Wi-Fi Coverage</b>
</div>
<div class="modal-body">
<p>
This area allows you to observe the network coverage of your Wi-Fi Installation.<br>
You can observe how much Wi-Fi signal intensity your mobile phone received during the
fingerprint collection process.<br>Higher intensity (i.e, green or -30 dBm) means that
your network has a GOOD Wi-Fi coverage (for a given square).<br>Lower signal intensity
(i.e., red or -110 dBm) means that you have NO coverage (at particular square).<br>
The image below shows the Wi-Fi signal intensity:<br>
<ul class="spot">
<span ng-click="hideRSSExcept('g')" title="{{getColorBarTextFor('green')}}" class="A_0">
<li style="background-color: rgb(78, 212, 25); width: 100px;">0 to 60</li>
</span>
<span ng-click="hideRSSExcept('y')" title="{{getColorBarTextFor('yellow')}}" class="A_0">
<li style="background-color: rgb(255, 255, 0); width: 100px;">-60 to -70</li>
</span>
<span ng-click="hideRSSExcept('o')" title="{{getColorBarTextFor('orange')}}" class="A_0">
<li style="background-color: rgb(255, 165, 0); width: 100px;">-70 to -90</li>
</span>
<span ng-click="hideRSSExcept('p')" title="{{getColorBarTextFor('purple')}}" class="A_0">
<li style="background-color: rgb(128, 0, 128); width: 100px;">-90 to -100</li>
</span>
<span ng-click="hideRSSExcept('r')" title="{{getColorBarTextFor('r')}}" class="A_0">
<li style="background-color: rgb(255, 0, 0); width: 100px;">-100 to -110</li>
</span> dBm<br>
</ul>
<b>You can click on a certain color (range) to filter the measurements in that range.</b><br>
</p>
<p>Connectivity Scale:
<ul>
<li>PERFECT: 0-60 (GREEN) <br>excellent connectivity at the highest speeds.</li>
<li>GOOD: 60-70 (YELLOW) <br>good connectivity to your Wi-Fi, but not always at the highest speeds.</li>
<li>ACCEPTABLE: 70-90 (ORANGE) <br> fine connectivity to your Wi-Fi, accept occasional interruptions but should be fine for email and web browsing.</li>
<li>INTERMITTENT: 90-100 (PURPLE) <br> intermittent (flaky) connectivity, slow transfer rates and performance issues with multimedia content.</li>
<li>NO-CONNECTIVITY: 100-110 (RED) <br> expect no connectivity to your Wi-Fi.</li>
</ul></p>
</div>
<div class="modal-header">
<b>ESTIMATED ACCESS POINTS (APs)</b>
</div>
<div class="modal-body">
<p>
By clicking on the “Show Estimated Wi-Fi AP position” button, you can calculate from the
fingerprints where the Access Points (APs) are located in your building.
These locations are inferred (i.e., estimated)
and might not correspond to the real location of the APs.
To improve the accuracy of the AP derivation process, try to upload as many high
fingerprints close to the real AP as possible using the Anyplace Logger.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="myModal_3" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<b>Localization Accuracy Estimation:</b>
</div>
<div class="modal-body">
This area allows you to observe the expected localization accuracy (i.e., different than Wi-Fi coverage) using the ACCES algorithm .<br>
Green shows higher localization accuracy and red lower accuracy. To improve the expected localization accuracy you have to improve the data collection process as it is described under the <a href="https://github.com/dmsl/anyplace/wiki"
target="_blank">Wiki page</a>.<br>
More details on how the localization accuracy works in theory are documented in the following publications.<br>
<ul>
<li><a href=" http://www.cs.ucy.ac.cy/~dzeina/papers/mdm17-acces.pdf"
target="_blank">[C66] "Indoor Localization Accuracy Estimation from Fingerprint Data", Artyom Nikitin,
Christos Laoudias, Georgios Chatzimilioudis, Panagiotis Karras and Demetrios Zeinalipour-Yazti
"Proceedings of the 18th IEEE International Conference on Mobile Data Management"
(MDM '17), IEEE Computer Society, Pages: 196--205, May 29 - June 1, 2017,
Daejeon, South Korea, 2017.[ Honorable Mention Award! ]</a>,
</li>
<li><a href="http://www.cs.ucy.ac.cy/~dzeina/papers/mdm17-acces-demo.pdf"
target="_blank"> [C65] "ACCES: Offline Accuracy Estimation for Fingerprint-based Localization",
Artyom Nikitin, Christos Laoudias, Georgios Chatzimilioudis, Panagiotis Karras and Demetrios Zeinalipour-Yazti "Proceedings of the 18th IEEE International
Conference on Mobile Data Management" (MDM '17), IEEE Computer Society, Pages: 358--359, May 29 - June 1, 2017, Daejeon, South Korea, 2017.</a>
</li>
</ul>
You can see a demo of ACCES in the video below:<br>
<iframe width="100%" height="315" src="https://www.youtube.com/embed/xPZlwKngcGo?autoplay=0" frameborder="0" allow="encrypted-media" allowfullscreen></iframe></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="myModal_Welcome" role="dialog" >
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<b>ANYPLACE ARCHITECT</b>
</div>
<div class="modal-body">
<p>
Use <a href="{{anyService.BASE_URL}}/architect/"
target="_blank">Anyplace Architect</a> to <b>create</b> a venue in a few clicks!<br>
Just upload your image floor plans, add <b>Points-of-Interest (POIs)</b>
(e.g., offers, rooms, equipment) and links.
Make your venue <b>public</b> and it instantly appears on
<a href="{{anyService.BASE_URL}}/viewer/" target="_blank">Anyplace Viewer</a>.
Keep your venue <b>private</b> and it can be shared more personally through a URL.
<b>Export and Import</b> buildings in JSON format or use the Anyplace
<a href="{{anyService.BASE_URL}}/developers/" target="_blank">Developers API</a> to link the
mapped information to your proprietary application!<br>
Live Crowdsourcing tasks, heatmaps and many more!<br>
<iframe width="100%" height="315" src="https://www.youtube.com/embed/dIVxcQ_5Wbg?autoplay=0" frameborder="0" allow="encrypted-media" allowfullscreen></iframe></p>
</div>
<div class="modal-footer">
<label class="pull-left"><input type="checkbox" name="dismiss" id="dismiss">Don't show again!</label>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
<footer>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <!-- Optional theme -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
</footer>
</html>