cordova-plugin-estimote
Version:
Cordova/PhoneGap plugin for Estimote beacons.
75 lines (64 loc) • 1.84 kB
JavaScript
// Range beacons screen.
;(function(app)
{
app.startRangingBeacons = function()
{
function onRange(beaconInfo)
{
displayBeconInfo(beaconInfo);
}
function onError(errorMessage)
{
console.log('Range error: ' + errorMessage);
}
function displayBeconInfo(beaconInfo)
{
// Clear beacon HTML items.
$('#id-screen-range-beacons .style-item-list').empty();
// Sort beacons by distance.
beaconInfo.beacons.sort(function(beacon1, beacon2) {
return beacon1.distance > beacon2.distance; });
// Generate HTML for beacons.
$.each(beaconInfo.beacons, function(key, beacon)
{
var element = $(createBeaconHTML(beacon));
$('#id-screen-range-beacons .style-item-list').append(element);
});
};
function createBeaconHTML(beacon)
{
var colorClasses = app.beaconColorStyle(beacon.color);
var htm = '<div class="' + colorClasses + '">'
+ '<table><tr><td>Major</td><td>' + beacon.major
+ '</td></tr><tr><td>Minor</td><td>' + beacon.minor
+ '</td></tr><tr><td>RSSI</td><td>' + beacon.rssi
if (beacon.proximity)
{
htm += '</td></tr><tr><td>Proximity</td><td>'
+ app.formatProximity(beacon.proximity)
}
if (beacon.distance)
{
htm += '</td></tr><tr><td>Distance</td><td>'
+ app.formatDistance(beacon.distance)
}
htm += '</td></tr></table></div>';
return htm;
};
// Show screen.
app.showScreen('id-screen-range-beacons');
$('#id-screen-range-beacons .style-item-list').empty();
// Request authorisation.
estimote.beacons.requestAlwaysAuthorization();
// Start ranging.
estimote.beacons.startRangingBeaconsInRegion(
{}, // Empty region matches all beacons.
onRange,
onError);
};
app.stopRangingBeacons = function()
{
estimote.beacons.stopRangingBeaconsInRegion({});
app.showHomeScreen();
};
})(app);