Commit e6c835809ff3378173c42cc91fccedf5521f6366
working scrolling for network tab
mix irving committed on 1/11/2017, 3:14:40 AMParent: a985a4d720c6d68c96dba230b7c58072d5663d71
Files changed
modules_extra/network.js | changed |
modules_extra/network.js | |||
---|---|---|---|
@@ -25,9 +25,8 @@ | |||
25 | 25 … | function legacyToMultiServer(addr) { | |
26 | 26 … | return 'net:'+addr.host + ':'+addr.port + '~shs:'+addr.key.substring(1).replace('.ed25519','') | |
27 | 27 … | } | |
28 | 28 … | ||
29 | -//types of peers | ||
30 | 29 … | ||
31 | 30 … | ||
32 | 31 … | //on the same wifi network | |
33 | 32 … | function isLocal (e) { | |
@@ -72,21 +71,9 @@ | |||
72 | 71 … | function origin (e) { | |
73 | 72 … | return e.source === 'local' ? 0 : 1 | |
74 | 73 … | } | |
75 | 74 … | ||
76 | -var states = { | ||
77 | - connected: 3, | ||
78 | - connecting: 2 | ||
79 | -} | ||
80 | 75 … | ||
81 | -var types = { | ||
82 | - modern: 4, | ||
83 | - legacy: 3, | ||
84 | - inactive: 2, | ||
85 | - unattempted: 1, | ||
86 | - other: 0 | ||
87 | -} | ||
88 | - | ||
89 | 76 … | function round(n) { | |
90 | 77 … | return Math.round(n*100)/100 | |
91 | 78 … | } | |
92 | 79 … | ||
@@ -99,75 +86,89 @@ | |||
99 | 86 … | else | |
100 | 87 … | return round(s)+'ms' | |
101 | 88 … | } | |
102 | 89 … | ||
90 … | +function peerListSort (a, b) { | ||
91 … | + var states = { | ||
92 … | + connected: 3, | ||
93 … | + connecting: 2 | ||
94 … | + } | ||
103 | 95 … | ||
96 … | + //types of peers | ||
97 … | + var types = { | ||
98 … | + modern: 4, | ||
99 … | + legacy: 3, | ||
100 … | + inactive: 2, | ||
101 … | + unattempted: 1, | ||
102 … | + other: 0 | ||
103 … | + } | ||
104 | 104 … | ||
105 … | + return ( | ||
106 … | + (states[b.state] || 0) - (states[a.state] || 0) | ||
107 … | + || origin(b) - origin(a) | ||
108 … | + || types[getType(b)] - types[getType(a)] | ||
109 … | + || b.stateChange - a.stateChange | ||
110 … | + ) | ||
111 … | +} | ||
112 … | + | ||
113 … | + | ||
105 | 114 … | exports.create = function (api) { | |
106 | 115 … | ||
107 | 116 … | return { | |
108 | 117 … | menu_items: () => h('a', {href: '#/network'}, '/network'), | |
109 | 118 … | builtin_tabs: () => ['/network'], | |
119 … | + screen_view | ||
120 … | + } | ||
121 … | + | ||
122 … | + function screen_view (path) { | ||
123 … | + if (path !== '/network') return | ||
110 | 124 … | ||
111 | - screen_view: function (path) { | ||
125 … | + var ol = h('ul', { className: 'network' }) | ||
112 | 126 … | ||
113 | - if(path !== '/network') return | ||
127 … | + ;(function poll () { | ||
114 | 128 … | ||
115 | - var ol = h('ul.network') | ||
129 … | + //if this tab isn't open, don't update. | ||
130 … | + //todo: make a better way to do this... | ||
131 … | + if (!isVisible(ol)) return setTimeout(poll, 1000) | ||
116 | 132 … | ||
117 | - ;(function poll () { | ||
118 | - | ||
119 | - //if this tab isn't open, don't update. | ||
120 | - //todo: make a better way to do this... | ||
121 | - if(!isVisible(ol)) | ||
122 | - return setTimeout(poll, 1000) | ||
123 | - | ||
124 | - api.sbot_gossip_peers(function (err, list) { | ||
125 | - ol.innerHTML = '' | ||
126 | - list.sort(function (a, b) { | ||
127 | - return ( | ||
128 | - (states[b.state] || 0) - (states[a.state] || 0) | ||
129 | - || origin(b) - origin(a) | ||
130 | - || types[getType(b)] - types[getType(a)] | ||
131 | - || b.stateChange - a.stateChange | ||
133 … | + api.sbot_gossip_peers((err, list) => { | ||
134 … | + ol.innerHTML = '' | ||
135 … | + list.sort(peerListSort).forEach(peer => { | ||
136 … | + ol.appendChild(h('div', [ | ||
137 … | + api.avatar(peer.key, 'thumbnail'), | ||
138 … | + h('div', [ | ||
139 … | + peer.state || 'not connected', | ||
140 … | + ' ', | ||
141 … | + getType(peer), | ||
142 … | + ' ', | ||
143 … | + //TODO: show nicer details, with labels. etc. | ||
144 … | + (peer.ping && peer.ping.rtt) ? duration(peer.ping.rtt.mean) : '', | ||
145 … | + ' ', | ||
146 … | + (peer.ping && peer.ping.skew) ? duration(peer.ping.skew.mean) : '', | ||
147 … | + h('label', | ||
148 … | + { title: new Date(peer.stateChange).toString() }, | ||
149 … | + peer.stateChange && ('(' + human(new Date(peer.stateChange))) + ')' | ||
150 … | + ) | ||
151 … | + ]), | ||
152 … | + 'source:'+peer.source, | ||
153 … | + h('pre', legacyToMultiServer(peer)), | ||
154 … | + h('button', { | ||
155 … | + 'ev-click': () => { | ||
156 … | + api.sbot_gossip_connect(peer, (err) => { | ||
157 … | + if(err) console.error(err) | ||
158 … | + else console.log('connected to', peer) | ||
159 … | + }) | ||
160 … | + }}, | ||
161 … | + 'connect' | ||
132 | 162 … | ) | |
133 | - }).forEach(function (peer) { | ||
134 | - ol.appendChild(h('div', [ | ||
135 | - api.avatar(peer.key, 'thumbnail'), | ||
136 | - h('div', [ | ||
137 | - peer.state || 'not connected', | ||
138 | - ' ', | ||
139 | - getType(peer), | ||
140 | - ' ', | ||
141 | - //TODO: show nicer details, with labels. etc. | ||
142 | - (peer.ping && peer.ping.rtt) ? duration(peer.ping.rtt.mean) : '', | ||
143 | - ' ', | ||
144 | - (peer.ping && peer.ping.skew) ? duration(peer.ping.skew.mean) : '', | ||
145 | - h('label', | ||
146 | - {title: new Date(peer.stateChange).toString()}, | ||
147 | - peer.stateChange && ('(' + human(new Date(peer.stateChange))) + ')') | ||
148 | - ]), | ||
149 | - 'source:'+peer.source, | ||
150 | - h('pre', legacyToMultiServer(peer)), | ||
151 | - h('button', { | ||
152 | - 'ev-click': () => { | ||
153 | - api.sbot_gossip_connect(peer, (err) => { | ||
154 | - if(err) console.error(err) | ||
155 | - else console.log('connected to', peer) | ||
156 | - }) | ||
157 | - }}, | ||
158 | - 'connect' | ||
159 | - )]) | ||
160 | - ) | ||
161 | - }) | ||
162 | - | ||
163 | - setTimeout(poll, 5000) | ||
163 … | + ])) | ||
164 | 164 … | }) | |
165 | 165 … | ||
166 | - })() | ||
166 … | + setTimeout(poll, 5000) | ||
167 … | + }) | ||
167 | 168 … | ||
168 | - return h('div.column.scroll-y', ol) | ||
169 | - } | ||
169 … | + })() | ||
170 … | + | ||
171 … | + return h('div', { className: 'column scroll-y' }, ol) | ||
170 | 172 … | } | |
171 | 173 … | } | |
172 | 174 … | ||
173 | - |
Built with git-ssb-web