Committed by
Gerrit Code Review
Add GUI badging to hosts
Change-Id: I5c791acd6696b455b4416d2dd413edcf30d41886
Showing
3 changed files
with
54 additions
and
2 deletions
... | @@ -131,6 +131,10 @@ public final class TopoJson { | ... | @@ -131,6 +131,10 @@ public final class TopoJson { |
131 | if (hh.subdued()) { | 131 | if (hh.subdued()) { |
132 | n.put(SUBDUE, true); | 132 | n.put(SUBDUE, true); |
133 | } | 133 | } |
134 | + NodeBadge badge = hh.badge(); | ||
135 | + if (badge != null) { | ||
136 | + n.set(BADGE, json(badge)); | ||
137 | + } | ||
134 | return n; | 138 | return n; |
135 | } | 139 | } |
136 | 140 | ... | ... |
... | @@ -265,6 +265,51 @@ | ... | @@ -265,6 +265,51 @@ |
265 | } | 265 | } |
266 | } | 266 | } |
267 | 267 | ||
268 | + function updateHostRendering(d) { | ||
269 | + var node = d.el, | ||
270 | + dim = icfg.host.radius.withGlyph, | ||
271 | + box, dx, dy, bsel, | ||
272 | + bdg = d.badge, | ||
273 | + bcr = badgeConfig.radius, | ||
274 | + bcgd = badgeConfig.gdelta; | ||
275 | + | ||
276 | + | ||
277 | + updateHostLabel(d); | ||
278 | + | ||
279 | + // TODO: fine-tune dx, dy for badge placement relative to host Circle. | ||
280 | + dx = -dim/2; | ||
281 | + dy = -dim/2; | ||
282 | + | ||
283 | + // handle badge, if defined | ||
284 | + if (bdg) { | ||
285 | + node.select('g.badge').remove(); | ||
286 | + | ||
287 | + bsel = node.append('g') | ||
288 | + .classed('badge', true) | ||
289 | + .classed(badgeStatus(bdg), true) | ||
290 | + .attr('transform', sus.translate(dx + dim, dy)); | ||
291 | + | ||
292 | + bsel.append('circle') | ||
293 | + .attr('r', bcr); | ||
294 | + | ||
295 | + if (bdg.txt) { | ||
296 | + bsel.append('text') | ||
297 | + .attr('dy', badgeConfig.yoff) | ||
298 | + .attr('text-anchor', 'middle') | ||
299 | + .text(bdg.txt); | ||
300 | + } else if (bdg.gid) { | ||
301 | + bsel.append('use') | ||
302 | + .attr({ | ||
303 | + width: bcgd * 2, | ||
304 | + height: bcgd * 2, | ||
305 | + transform: sus.translate(-bcgd, -bcgd), | ||
306 | + 'xlink:href': '#' + bdg.gid | ||
307 | + }); | ||
308 | + | ||
309 | + } | ||
310 | + } | ||
311 | + } | ||
312 | + | ||
268 | function updateHostLabel(d) { | 313 | function updateHostLabel(d) { |
269 | var label = trimLabel(hostLabel(d)); | 314 | var label = trimLabel(hostLabel(d)); |
270 | d.el.select('text').text(label); | 315 | d.el.select('text').text(label); |
... | @@ -292,7 +337,7 @@ | ... | @@ -292,7 +337,7 @@ |
292 | } | 337 | } |
293 | 338 | ||
294 | function hostExisting(d) { | 339 | function hostExisting(d) { |
295 | - updateHostLabel(d); | 340 | + updateHostRendering(d); |
296 | api.posNode(d, true); | 341 | api.posNode(d, true); |
297 | } | 342 | } |
298 | 343 | ... | ... |
... | @@ -312,8 +312,11 @@ | ... | @@ -312,8 +312,11 @@ |
312 | } | 312 | } |
313 | 313 | ||
314 | data.hosts.forEach(function (host) { | 314 | data.hosts.forEach(function (host) { |
315 | - var hdata = api.findNodeById(host.id); | 315 | + var hdata = api.findNodeById(host.id), |
316 | + badgeData = host.badge || null; | ||
317 | + | ||
316 | if (hdata && !hdata.el.empty()) { | 318 | if (hdata && !hdata.el.empty()) { |
319 | + hdata.badge = badgeData; | ||
317 | if (!host.subdue) { | 320 | if (!host.subdue) { |
318 | api.unsupNode(hdata.id, less); | 321 | api.unsupNode(hdata.id, less); |
319 | } | 322 | } | ... | ... |
-
Please register or login to post a comment