make eslint happy
This commit is contained in:
parent
ecb65c9171
commit
3e143435e6
@ -1,5 +1,3 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.loadTasks("tasks")
|
||||
|
||||
|
@ -9,7 +9,7 @@ define(["tablesort", "tablesort.numeric"], function (Tablesort) {
|
||||
}
|
||||
|
||||
self.setData = function (links) {
|
||||
if (links.length == 0)
|
||||
if (links.length === 0)
|
||||
return
|
||||
|
||||
var h2 = document.createElement("h2")
|
||||
|
34
lib/main.js
34
lib/main.js
@ -1,14 +1,14 @@
|
||||
define(["config", "moment", "chroma-js", "router", "map", "sidebar", "tabs", "container", "meshstats", "linklist", "nodelist", "simplenodelist", "infobox/main"],
|
||||
function (config, moment, chroma, Router, Map, Sidebar, Tabs, Container, Meshstats, Linklist, Nodelist, SimpleNodelist, Infobox) {
|
||||
define(["config", "moment", "chroma-js", "router", "map", "sidebar", "tabs", "container", "meshstats", "linklist", "nodelist", "simplenodelist", "infobox/main", "leaflet"],
|
||||
function (config, moment, chroma, Router, Map, Sidebar, Tabs, Container, Meshstats, Linklist, Nodelist, SimpleNodelist, Infobox, L) {
|
||||
return function () {
|
||||
var linklist, lostnodeslist, map, meshstats, newnodeslist, nodelist, router
|
||||
|
||||
function createGUI() {
|
||||
moment.locale("de")
|
||||
|
||||
router = new Router(config)
|
||||
router = new Router()
|
||||
|
||||
var linkScale = chroma.scale(chroma.interpolate.bezier(['green', 'yellow', 'red'])).domain([1, 5])
|
||||
var linkScale = chroma.scale(chroma.interpolate.bezier(["green", "yellow", "red"])).domain([1, 5])
|
||||
var sidebar = new Sidebar(document.body)
|
||||
var infobox = new Infobox(config, sidebar, router)
|
||||
var tabs = new Tabs()
|
||||
@ -36,16 +36,7 @@ function (config, moment, chroma, Router, Map, Sidebar, Tabs, Container, Meshsta
|
||||
router.addTarget(map)
|
||||
}
|
||||
|
||||
var urls = [ config.dataPath + 'nodes.json',
|
||||
config.dataPath + 'graph.json'
|
||||
]
|
||||
|
||||
Promise.all(urls.map(getJSON))
|
||||
.then(function (d) { createGUI(); return d })
|
||||
.then(handle_data)
|
||||
.then(function () { router.start() })
|
||||
|
||||
function handle_data(data) {
|
||||
function handleData(data) {
|
||||
var nodedict = data[0]
|
||||
var nodes = Object.keys(nodedict.nodes).map(function (key) { return nodedict.nodes[key] })
|
||||
|
||||
@ -59,7 +50,7 @@ function (config, moment, chroma, Router, Map, Sidebar, Tabs, Container, Meshsta
|
||||
})
|
||||
|
||||
var now = moment()
|
||||
var age = moment(now).subtract(14, 'days')
|
||||
var age = moment(now).subtract(14, "days")
|
||||
|
||||
var newnodes = limit("firstseen", age, sortByKey("firstseen", nodes).filter(online))
|
||||
var lostnodes = limit("lastseen", age, sortByKey("lastseen", nodes).filter(offline))
|
||||
@ -116,5 +107,18 @@ function (config, moment, chroma, Router, Map, Sidebar, Tabs, Container, Meshsta
|
||||
lostnodeslist.setData(lostnodes)
|
||||
router.setData(nodes, links)
|
||||
}
|
||||
|
||||
var urls = [ config.dataPath + "nodes.json",
|
||||
config.dataPath + "graph.json"
|
||||
]
|
||||
|
||||
Promise.all(urls.map(getJSON))
|
||||
.then(function (d) {
|
||||
createGUI()
|
||||
return d
|
||||
})
|
||||
.then(handleData)
|
||||
.then(function () { router.start() })
|
||||
|
||||
}
|
||||
})
|
||||
|
44
lib/map.js
44
lib/map.js
@ -10,7 +10,7 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
m.setStyle(iconFunc(d))
|
||||
}
|
||||
|
||||
m.on('click', router.node(d))
|
||||
m.on("click", router.node(d))
|
||||
m.bindLabel(d.nodeinfo.hostname)
|
||||
|
||||
dict[d.nodeinfo.node_id] = m
|
||||
@ -38,7 +38,7 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
}
|
||||
|
||||
line.bindLabel(d.source.node.nodeinfo.hostname + " – " + d.target.node.nodeinfo.hostname + "<br><strong>" + showDistance(d) + " / " + showTq(d) + "</strong>")
|
||||
line.on('click', router.link(d))
|
||||
line.on("click", router.link(d))
|
||||
|
||||
dict[linkId(d)] = line
|
||||
|
||||
@ -60,7 +60,7 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
var self = this
|
||||
|
||||
var el = document.createElement("div")
|
||||
el.classList.add("map")
|
||||
el.classList.add("map")
|
||||
self.div = el
|
||||
|
||||
var map = L.map(el, options)
|
||||
@ -88,17 +88,17 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
var nodesOffline = subtract(nodes.filter(offline), lostnodes)
|
||||
|
||||
var markersOnline = nodesOnline.filter(has_location)
|
||||
.map(mkMarker(nodeDict, function (d) { return iconOnline }, router))
|
||||
.map(mkMarker(nodeDict, function () { return iconOnline }, router))
|
||||
|
||||
var markersOffline = nodesOffline.filter(has_location)
|
||||
.map(mkMarker(nodeDict, function (d) { return iconOffline }, router))
|
||||
.map(mkMarker(nodeDict, function () { return iconOffline }, router))
|
||||
|
||||
var markersNew = newnodes.filter(has_location)
|
||||
.map(mkMarker(nodeDict, function (d) { return iconNew }, router))
|
||||
.map(mkMarker(nodeDict, function () { return iconNew }, router))
|
||||
|
||||
var markersLost = lostnodes.filter(has_location)
|
||||
.map(mkMarker(nodeDict, function (d) {
|
||||
if (d.lastseen.isAfter(moment(now).subtract(3, 'days')))
|
||||
if (d.lastseen.isAfter(moment(now).subtract(3, "days")))
|
||||
return iconAlert
|
||||
|
||||
return iconLost
|
||||
@ -110,6 +110,20 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
groupLost = L.featureGroup(markersLost).addTo(map)
|
||||
}
|
||||
|
||||
function resetMarkerStyles(nodes, links) {
|
||||
Object.keys(nodes).forEach( function (d) {
|
||||
nodes[d].resetStyle()
|
||||
})
|
||||
|
||||
Object.keys(links).forEach( function (d) {
|
||||
links[d].resetStyle()
|
||||
})
|
||||
}
|
||||
|
||||
function setView(bounds) {
|
||||
map.fitBounds(bounds, {paddingTopLeft: [sidebar.getWidth(), 0]})
|
||||
}
|
||||
|
||||
function resetView() {
|
||||
resetMarkerStyles(nodeDict, linkDict)
|
||||
|
||||
@ -127,24 +141,10 @@ define(["leaflet", "moment", "leaflet.label"], function (L, moment) {
|
||||
setView(bounds)
|
||||
}
|
||||
|
||||
function setView(bounds) {
|
||||
map.fitBounds(bounds, {paddingTopLeft: [sidebar.getWidth(), 0]})
|
||||
}
|
||||
|
||||
function resetMarkerStyles(nodes, links) {
|
||||
Object.keys(nodes).forEach( function (d) {
|
||||
nodes[d].resetStyle()
|
||||
})
|
||||
|
||||
Object.keys(links).forEach( function (d) {
|
||||
links[d].resetStyle()
|
||||
})
|
||||
}
|
||||
|
||||
function goto(dict, id) {
|
||||
var m = dict[id]
|
||||
if (m === undefined)
|
||||
return
|
||||
return undefined
|
||||
|
||||
var bounds
|
||||
|
||||
|
@ -1,15 +1,34 @@
|
||||
define(["tablesort", "tablesort.numeric"], function (Tablesort) {
|
||||
return function(router) {
|
||||
function showUptime(el, now, d) {
|
||||
var uptime
|
||||
if (d.flags.online && "uptime" in d.statistics)
|
||||
uptime = Math.round(d.statistics.uptime / 3600)
|
||||
else if (!d.flags.online && "lastseen" in d)
|
||||
uptime = Math.round(-(now - d.lastseen) / 3600000)
|
||||
|
||||
var s = ""
|
||||
|
||||
if (uptime !== undefined)
|
||||
if (Math.abs(uptime) >= 24)
|
||||
s = Math.round(uptime / 24) + "d"
|
||||
else
|
||||
s = uptime + "h"
|
||||
|
||||
el.textContent = s
|
||||
el.setAttribute("data-sort", uptime !== undefined ? -uptime : 0)
|
||||
}
|
||||
|
||||
var self = this
|
||||
var el
|
||||
|
||||
self.render = function (d) {
|
||||
self.render = function (d) {
|
||||
el = document.createElement("div")
|
||||
d.appendChild(el)
|
||||
}
|
||||
|
||||
self.setData = function (now, nodes) {
|
||||
if (nodes.length == 0)
|
||||
if (nodes.length === 0)
|
||||
return
|
||||
|
||||
var h2 = document.createElement("h2")
|
||||
@ -60,7 +79,7 @@ define(["tablesort", "tablesort.numeric"], function (Tablesort) {
|
||||
}
|
||||
|
||||
var td2 = document.createElement("td")
|
||||
showUptime(td2, d)
|
||||
showUptime(td2, now, d)
|
||||
row.appendChild(td2)
|
||||
|
||||
var td3 = document.createElement("td")
|
||||
@ -75,26 +94,6 @@ define(["tablesort", "tablesort.numeric"], function (Tablesort) {
|
||||
new Tablesort(table)
|
||||
|
||||
el.appendChild(table)
|
||||
|
||||
function showUptime(el, d) {
|
||||
var uptime
|
||||
if (d.flags.online && "uptime" in d.statistics)
|
||||
uptime = Math.round(d.statistics.uptime / 3600)
|
||||
else if (!d.flags.online && "lastseen" in d)
|
||||
uptime = Math.round(-(now - d.lastseen) / 3600000)
|
||||
|
||||
var s = ""
|
||||
|
||||
if (uptime !== undefined) {
|
||||
if (Math.abs(uptime) >= 24)
|
||||
s = Math.round(uptime/24) + "d"
|
||||
else
|
||||
s = uptime + "h"
|
||||
}
|
||||
|
||||
el.textContent = s
|
||||
el.setAttribute("data-sort", uptime !== undefined ? -uptime : 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -1,9 +1,23 @@
|
||||
define(function () {
|
||||
return function (config) {
|
||||
return function () {
|
||||
var objects = { nodes: {}, links: {} }
|
||||
var targets = []
|
||||
var self = this
|
||||
|
||||
function saveState(d) {
|
||||
var s = "#!"
|
||||
|
||||
if (d) {
|
||||
if ("node" in d)
|
||||
s += "n:" + d.node.nodeinfo.node_id
|
||||
|
||||
if ("link" in d)
|
||||
s += "l:" + linkId(d.link)
|
||||
}
|
||||
|
||||
window.history.pushState(s, undefined, s)
|
||||
}
|
||||
|
||||
function resetView(push) {
|
||||
push = trueDefault(push)
|
||||
|
||||
@ -27,20 +41,6 @@ define(function () {
|
||||
})
|
||||
}
|
||||
|
||||
function saveState(d) {
|
||||
var s = "#!"
|
||||
|
||||
if (d) {
|
||||
if ("node" in d)
|
||||
s += "n:" + d.node.nodeinfo.node_id
|
||||
|
||||
if ("link" in d)
|
||||
s += "l:" + linkId(d.link)
|
||||
}
|
||||
|
||||
window.history.pushState(s, undefined, s)
|
||||
}
|
||||
|
||||
function loadState(s) {
|
||||
if (!s)
|
||||
return false
|
||||
@ -49,9 +49,10 @@ define(function () {
|
||||
return false
|
||||
|
||||
var args = s.slice(2).split(":")
|
||||
var id
|
||||
|
||||
if (args[0] === "n") {
|
||||
var id = args[1]
|
||||
id = args[1]
|
||||
|
||||
if (id in objects.nodes) {
|
||||
gotoNode(objects.nodes[id])
|
||||
@ -60,7 +61,7 @@ define(function () {
|
||||
}
|
||||
|
||||
if (args[0] === "l") {
|
||||
var id = args[1]
|
||||
id = args[1]
|
||||
|
||||
if (id in objects.links) {
|
||||
gotoLink(objects.links[id])
|
||||
@ -102,9 +103,6 @@ define(function () {
|
||||
saveState()
|
||||
}
|
||||
|
||||
self.addMarkers = function (d) {
|
||||
markers = d
|
||||
}
|
||||
self.addTarget = function (d) { targets.push(d) }
|
||||
|
||||
self.setData = function (nodes, links) {
|
||||
|
@ -19,7 +19,7 @@ define([], function () {
|
||||
sidebar.appendChild(container)
|
||||
|
||||
self.getWidth = function () {
|
||||
var small = window.matchMedia("(max-width: 60em)");
|
||||
var small = window.matchMedia("(max-width: 60em)")
|
||||
return small.matches ? 0 : sidebar.offsetWidth
|
||||
}
|
||||
|
||||
|
@ -3,13 +3,13 @@ define(["moment"], function (moment) {
|
||||
var self = this
|
||||
var el
|
||||
|
||||
self.render = function (d) {
|
||||
self.render = function (d) {
|
||||
el = document.createElement("div")
|
||||
d.appendChild(el)
|
||||
}
|
||||
|
||||
self.setData = function (list) {
|
||||
if (list.length == 0)
|
||||
if (list.length === 0)
|
||||
return
|
||||
|
||||
var h2 = document.createElement("h2")
|
||||
|
@ -7,7 +7,7 @@ define([], function () {
|
||||
|
||||
var container = document.createElement("div")
|
||||
|
||||
function switchTab(ev) {
|
||||
function switchTab() {
|
||||
for (var i = 0; i < tabs.children.length; i++) {
|
||||
var el = tabs.children[i]
|
||||
el.classList.remove("visible")
|
||||
|
25
package.json
25
package.json
@ -13,6 +13,29 @@
|
||||
"grunt-contrib-requirejs": "^0.4.4",
|
||||
"grunt-contrib-uglify": "^0.5.1",
|
||||
"grunt-contrib-watch": "^0.6.1",
|
||||
"grunt-eslint": "^1.1.0"
|
||||
"grunt-eslint": "^10.0.0"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"env": {
|
||||
"browser": true,
|
||||
"amd": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"globals": {
|
||||
"getJSON": false,
|
||||
"has_location": false,
|
||||
"limit": false,
|
||||
"linkId": false,
|
||||
"offline": false,
|
||||
"one": false,
|
||||
"online": false,
|
||||
"showDistance": false,
|
||||
"showTq": false,
|
||||
"sortByKey": false,
|
||||
"subtract": false,
|
||||
"sum": false,
|
||||
"trueDefault": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function(grunt) {
|
||||
grunt.config.merge({
|
||||
copy: {
|
||||
@ -31,7 +29,7 @@ module.exports = function(grunt) {
|
||||
],
|
||||
expand: true,
|
||||
dest: "build/",
|
||||
cwd: "bower_components/ionicons/",
|
||||
cwd: "bower_components/ionicons/"
|
||||
}
|
||||
},
|
||||
cssmin: {
|
||||
@ -61,5 +59,5 @@ module.exports = function(grunt) {
|
||||
|
||||
grunt.loadNpmTasks("grunt-contrib-copy")
|
||||
grunt.loadNpmTasks("grunt-contrib-requirejs")
|
||||
grunt.loadNpmTasks('grunt-contrib-cssmin')
|
||||
grunt.loadNpmTasks("grunt-contrib-cssmin")
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.config.merge({
|
||||
clean: {
|
||||
|
@ -1,5 +1,3 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.config.merge({
|
||||
connect: {
|
||||
|
@ -1,5 +1,3 @@
|
||||
"use strict"
|
||||
|
||||
module.exports = function (grunt) {
|
||||
grunt.config.merge({
|
||||
checkDependencies: {
|
||||
@ -15,10 +13,13 @@ module.exports = function (grunt) {
|
||||
},
|
||||
eslint: {
|
||||
options: {
|
||||
rule: {
|
||||
semi: [2, "never"],
|
||||
strict: [2, "never"],
|
||||
curly: [2, "multi"]
|
||||
rules: {
|
||||
"semi": [2, "never"],
|
||||
"curly": [2, "multi"],
|
||||
"strict": [2, "never"],
|
||||
"no-multi-spaces": 0,
|
||||
"no-new": 0,
|
||||
"no-shadow": 0
|
||||
}
|
||||
},
|
||||
sources: {
|
||||
|
Loading…
Reference in New Issue
Block a user