Commit Graph

23 Commits

Author SHA1 Message Date
Martin/Geno df5a229fc8
merge json message to one node message 2018-08-10 16:47:34 +02:00
Geno 861531712c
[TASK] rewrite table (#10) 2018-08-10 11:52:46 +02:00
Martin/Geno 7c5d117784
use dropdown for channel selection 2018-08-03 09:13:23 +02:00
Martin/Geno 21c398ca42
sql rewrite 2018-08-03 09:13:12 +02:00
Oliver Gerlich 444d80f77e map: save list of enabled layers in localStorage 2018-07-22 21:56:00 +02:00
Oliver Gerlich f02b047f9a map: fix exception when enabling Clients layers
The layer data array must not contain "null" entries.
2018-07-22 21:47:26 +02:00
Oliver Gerlich 668ba59b8d node page: ask for confirmation before resetting node location 2018-07-22 21:47:20 +02:00
Oliver Gerlich bd7b9c10aa node page: add "Reset Location" button, to unset node location
This can be helpful if the node was placed far away (eg. due to IP-based
geolocation).
2018-07-22 21:47:11 +02:00
Oliver Gerlich 2cc533c481 node page: display map correctly also if node doesn't have location info 2018-07-22 21:46:29 +02:00
Oliver Gerlich d7e98625e2 node: don't show "Start follow position" button at all if browser does not support navigator.geolocation 2018-07-22 21:46:22 +02:00
Oliver Gerlich 2fca4b49fe fix exception in list.renderView() introduced by adding debouncer.run()
Use arrow function to keep "this" at the same value it has in render().
2018-07-19 22:48:40 +02:00
Oliver Gerlich e77e94ef85 list perf: limit list to 20 nodes by default
Also add links to bottom of list to select how many nodes shall be
displayed, and store the selection in localStorage.

The shorter list has much better performance. A long list is not really
useful anyway; rather let the user filter/sort it to display interesting
nodes only.
2018-07-19 02:00:39 +02:00
Oliver Gerlich 885b3232c3 move debouncing logic to separate Debouncer class, and use it for list view
While the normal GUI is re-rendered at most every 100 msec, the list is
re-rendered at most every second (since it is very expensive to render).
2018-07-19 01:51:21 +02:00
Oliver Gerlich b97ac6ea43 node page: display GPS coordinates next to toggle button 2018-07-17 22:51:41 +02:00
Oliver Gerlich fb0f2f054d node page: some fixes for GPS-following
- rename storePosition to gpsPosition
- don't check for btnGPS.innerHTML contents (this is fragile); check for
  this.gpsPosition instead
- fix call to updatePosition() when clicking "Stop following"
2018-07-17 22:51:41 +02:00
Oliver Gerlich ad7cc8d0aa node page: fix bug if navigator.geolocation.watchPosition() returns 0 as id 2018-07-17 22:51:41 +02:00
Oliver Gerlich 7f498b4a6e node page: set node details (hostname/owner etc.) also if location is unknown 2018-07-17 22:51:41 +02:00
Oliver Gerlich 043e7225fd list perf: use documentFragment to add all rows to table in one operation 2018-07-17 22:31:29 +02:00
Oliver Gerlich 66d8951ad9 list perf: use textContent instead of innerHTML 2018-07-17 22:31:29 +02:00
Oliver Gerlich 10a717f558 list: fix exception when typing in list filter fields 2018-07-17 22:31:29 +02:00
Martin/Geno 63f77d87c7
fix statistics channel view 2018-07-15 21:55:31 +02:00
Oliver Gerlich cd511dce8e web: rework store.js and interaction with view/node.js
- store.getNode() no longer adds new node to the list
- instead, store.createNode() can be used to create an empty new node
- view/node.js now now transfer a local copy of the node object it wants to
  modify, rather then modifying the real object from store.list. If the
  change is accepted by server, the server will send the new values for the
  changed object anyway.

Previously, if the user visited the node page for a nonexistent node but
didn't make any changes, the list view would always throw an exception
because an incomplete node object was contained in the list.
2018-07-15 21:51:11 +02:00
Martin/Geno 82270e6fa3
cleanup and migrate to newer libraries (use NEW Javascript env) + add secret 2018-06-30 17:22:20 +02:00