diff --git a/src/c3nav/editor/static/editor/css/editor.scss b/src/c3nav/editor/static/editor/css/editor.scss index c90400ca..bf3702e0 100644 --- a/src/c3nav/editor/static/editor/css/editor.scss +++ b/src/c3nav/editor/static/editor/css/editor.scss @@ -407,24 +407,32 @@ body > .scancollector { .scancollector:not(.running) .btn.stop, .scancollector:not(.done) .btn.reset, .scancollector.empty .count-line, +.scancollector.empty table, +.abcdefg, body:not(.mobileclient) .scancollector .btn { display: none; } +.scancollector .count-line { + font-style: italic; +} .scancollector .btn { margin: 0 5px 0 0; } .scancollector p:first-child { height: 26px; - margin: 0; } .scancollector table { width: 100%; - border-style: solid; - border-width: 0 0 1px; - border-color: #666666; + margin-top: -8px; + &:not(:last-child) { + margin-bottom: 15px; + } +} +.scancollector table { + } .scancollector table td { - padding: 5px 5px 0 0; + padding: 2px 2px 0 0; } .scancollector table td:last-child { padding-right: 0; diff --git a/src/c3nav/editor/static/editor/js/editor.js b/src/c3nav/editor/static/editor/js/editor.js index 3b2b0386..23a4c68e 100644 --- a/src/c3nav/editor/static/editor/js/editor.js +++ b/src/c3nav/editor/static/editor/js/editor.js @@ -1341,7 +1341,7 @@ editor = { }, _scancollector_reset: function () { var $collector = $('#sidebar').find('.scancollector'); - $collector.removeClass('done').removeClass('running').addClass('empty').find('table').forEach(function(elem) {elem.html('');}); + $collector.removeClass('done').removeClass('running').addClass('empty').find('table tbody').each(function(elem) {elem.html('');}); $collector.siblings('[name=data]').val(''); $collector.closest('form').addClass('scan-lock'); }, @@ -1349,7 +1349,7 @@ editor = { _scancollector_wifi_last_result: 0, _scancollector_wifi_result: function(data) { var $collector = $('#sidebar').find('.scancollector.running'), - $table = $collector.find('.wifi-table'), + $table = $collector.find('.wifi-table tbody'), item, i, line, apid, color, max_last = 0, now = Date.now(); editor._wifi_scan_waits = false; @@ -1402,7 +1402,7 @@ editor = { }, _scancollector_ibeacon_result: function(data) { var $collector = $('#sidebar').find('.scancollector.running'), - $table = $collector.find('.ibeacon-table'), + $table = $collector.find('.ibeacon-table tbody'), item, i, line, beaconid, color = Date.now(); if (!data.length) return; @@ -1410,8 +1410,7 @@ editor = { $table.find('tr').addClass('old'); for (i=0; i < data.length; i++) { item = data[i]; - - beaconid = 'beacon-'+item.uuid+'-'+item.major+'-'+item-minor; + beaconid = 'beacon-'+item.uuid+'-'+item.major+'-'+item.minor; line = $table.find('tr.'+beaconid); color = Math.max(0, Math.min(50, item.distance)); color = 'rgb('+String(color*5)+', '+String(200-color*4)+', 0)'; @@ -1443,7 +1442,7 @@ function nearby_stations_available() { } function ibeacon_results_available() { - c3nav._scancollector_ibeacon_result(mobileclient.getNearbyBeacons()); + editor._scancollector_ibeacon_result(JSON.parse(mobileclient.getNearbyBeacons())); } LevelControl = L.Control.extend({ diff --git a/src/c3nav/editor/templates/editor/base.html b/src/c3nav/editor/templates/editor/base.html index 9c3754a9..f83ad458 100644 --- a/src/c3nav/editor/templates/editor/base.html +++ b/src/c3nav/editor/templates/editor/base.html @@ -79,9 +79,15 @@ {% trans 'mobileclient not found. Please install the c3nav app for wifi scanning support.' %}

0 WiFi scans

-
+ + + +
BSSIDSSIDRSSI

0 iBeacon scans

-
+ + + +
MajorMinorDist
diff --git a/src/c3nav/mapdata/models/geometry/space.py b/src/c3nav/mapdata/models/geometry/space.py index 8ebd538a..80b6cdee 100644 --- a/src/c3nav/mapdata/models/geometry/space.py +++ b/src/c3nav/mapdata/models/geometry/space.py @@ -461,7 +461,7 @@ class BeaconMeasurement(SpaceGeometryMixin, models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_('author')) comment = models.TextField(null=True, blank=True, verbose_name=_('comment')) - data = models.JSONField(_('Measurement list'), default=list) # would be nice if this used pydantic + data = models.JSONField(_('Measurement list'), default=dict) # would be nice if this used pydantic class Meta: verbose_name = _('Beacon Measurement')