use webfont and fix tooltip size
This commit is contained in:
@@ -46,7 +46,7 @@ export default class App {
|
|||||||
//Create a container object called the `stage`
|
//Create a container object called the `stage`
|
||||||
const stage = new PIXI.Container()
|
const stage = new PIXI.Container()
|
||||||
|
|
||||||
const searchPrompt = new PIXI.Text('>', {fontSize: 18, fill: 0xaaaaff})
|
const searchPrompt = new PIXI.Text('>', {fontFamily: 'ShareTechMono', fontSize: 18, fill: 0xaaaaff})
|
||||||
searchPrompt.x = 20
|
searchPrompt.x = 20
|
||||||
searchPrompt.y = 5
|
searchPrompt.y = 5
|
||||||
PIXI.ticker.shared.add(function(_) {
|
PIXI.ticker.shared.add(function(_) {
|
||||||
@@ -55,7 +55,7 @@ export default class App {
|
|||||||
})
|
})
|
||||||
stage.addChild(searchPrompt)
|
stage.addChild(searchPrompt)
|
||||||
|
|
||||||
const searchText = new PIXI.Text('', {fontSize: 18, fill: 0xaaaaff})
|
const searchText = new PIXI.Text('', {fontFamily: 'ShareTechMono', fontSize: 18, fill: 0xaaaaff})
|
||||||
searchText.x = 40
|
searchText.x = 40
|
||||||
searchText.y = 5
|
searchText.y = 5
|
||||||
stage.addChild(searchText)
|
stage.addChild(searchText)
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ export default class Bars extends PIXI.Graphics {
|
|||||||
s += '\t\t Capacity : ' + podsCap + '\n'
|
s += '\t\t Capacity : ' + podsCap + '\n'
|
||||||
s += '\t\t Used : ' + podsUsed + '\n'
|
s += '\t\t Used : ' + podsUsed + '\n'
|
||||||
|
|
||||||
bars.tooltip.text.text = s
|
bars.tooltip.setText(s)
|
||||||
bars.tooltip.position = bars.toGlobal(new PIXI.Point(22, 16))
|
bars.tooltip.position = bars.toGlobal(new PIXI.Point(22, 16))
|
||||||
bars.tooltip.visible = true
|
bars.tooltip.visible = true
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ export default class Cluster extends PIXI.Graphics {
|
|||||||
topHandle.beginFill(0xaaaaff, 1)
|
topHandle.beginFill(0xaaaaff, 1)
|
||||||
topHandle.drawRect(0, 0, width, 15)
|
topHandle.drawRect(0, 0, width, 15)
|
||||||
topHandle.endFill()
|
topHandle.endFill()
|
||||||
var text = new PIXI.Text(this.cluster.api_server_url, {fontSize: 10, fill: 0x000000})
|
var text = new PIXI.Text(this.cluster.api_server_url, {fontFamily: 'ShareTechMono', fontSize: 10, fill: 0x000000})
|
||||||
text.x = 2
|
text.x = 2
|
||||||
text.y = 2
|
text.y = 2
|
||||||
topHandle.addChild(text)
|
topHandle.addChild(text)
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ export default class Node extends PIXI.Graphics {
|
|||||||
topHandle.beginFill(0xaaaaff, 1)
|
topHandle.beginFill(0xaaaaff, 1)
|
||||||
topHandle.drawRect(0, 0, 105, 15)
|
topHandle.drawRect(0, 0, 105, 15)
|
||||||
topHandle.endFill()
|
topHandle.endFill()
|
||||||
const ellipsizedNodeName = this.node.name.substring(0, 20).concat('...')
|
const ellipsizedNodeName = this.node.name.substring(0, 18).concat('...')
|
||||||
const text = new PIXI.Text(ellipsizedNodeName, {fontSize: 10, fill: 0x000000})
|
const text = new PIXI.Text(ellipsizedNodeName, {fontFamily: 'ShareTechMono', fontSize: 10, fill: 0x000000})
|
||||||
text.x = 2
|
text.x = 2
|
||||||
text.y = 2
|
text.y = 2
|
||||||
topHandle.addChild(text)
|
topHandle.addChild(text)
|
||||||
@@ -65,7 +65,7 @@ export default class Node extends PIXI.Graphics {
|
|||||||
for (var key of Object.keys(nodeBox.node.labels)) {
|
for (var key of Object.keys(nodeBox.node.labels)) {
|
||||||
s += '\n' + key + ': ' + nodeBox.node.labels[key]
|
s += '\n' + key + ': ' + nodeBox.node.labels[key]
|
||||||
}
|
}
|
||||||
nodeBox.tooltip.text.text = s
|
nodeBox.tooltip.setText(s)
|
||||||
nodeBox.tooltip.position = nodeBox.toGlobal(new PIXI.Point(0, 15))
|
nodeBox.tooltip.position = nodeBox.toGlobal(new PIXI.Point(0, 15))
|
||||||
nodeBox.tooltip.visible = true
|
nodeBox.tooltip.visible = true
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -79,12 +79,6 @@ export class Pod extends PIXI.Graphics {
|
|||||||
|
|
||||||
draw() {
|
draw() {
|
||||||
|
|
||||||
if (this.tick) {
|
|
||||||
PIXI.ticker.shared.remove(this.tick, this)
|
|
||||||
this.tick = null
|
|
||||||
this.alpha = this._progress
|
|
||||||
this.tint = 0xffffff
|
|
||||||
}
|
|
||||||
|
|
||||||
// pod.status.containerStatuses might be undefined!
|
// pod.status.containerStatuses might be undefined!
|
||||||
const containerStatuses = this.pod.status.containerStatuses || []
|
const containerStatuses = this.pod.status.containerStatuses || []
|
||||||
@@ -102,6 +96,8 @@ export class Pod extends PIXI.Graphics {
|
|||||||
const allRunning = running >= containerStatuses.length
|
const allRunning = running >= containerStatuses.length
|
||||||
const resources = this.getResourceUsage()
|
const resources = this.getResourceUsage()
|
||||||
|
|
||||||
|
var newTick = null
|
||||||
|
|
||||||
const podBox = this
|
const podBox = this
|
||||||
podBox.interactive = true
|
podBox.interactive = true
|
||||||
podBox.on('mouseover', function() {
|
podBox.on('mouseover', function() {
|
||||||
@@ -133,9 +129,8 @@ export class Pod extends PIXI.Graphics {
|
|||||||
s += '\n\t\tLimit: ' + (resources.memory.limit / FACTORS.Mi).toFixed(0) + ' MiB'
|
s += '\n\t\tLimit: ' + (resources.memory.limit / FACTORS.Mi).toFixed(0) + ' MiB'
|
||||||
s += '\n\t\tUsed: ' + (resources.memory.used / FACTORS.Mi).toFixed(0) + ' MiB'
|
s += '\n\t\tUsed: ' + (resources.memory.used / FACTORS.Mi).toFixed(0) + ' MiB'
|
||||||
|
|
||||||
this.tooltip.text.text = s
|
this.tooltip.setText(s)
|
||||||
this.tooltip.x = this.toGlobal(new PIXI.Point(10, 10)).x
|
this.tooltip.position = this.toGlobal(new PIXI.Point(10, 10))
|
||||||
this.tooltip.y = this.toGlobal(new PIXI.Point(10, 10)).y
|
|
||||||
this.tooltip.visible = true
|
this.tooltip.visible = true
|
||||||
})
|
})
|
||||||
podBox.on('mouseout', function () {
|
podBox.on('mouseout', function () {
|
||||||
@@ -156,14 +151,14 @@ export class Pod extends PIXI.Graphics {
|
|||||||
podBox.lineStyle(2, 0xaaffaa, 1)
|
podBox.lineStyle(2, 0xaaffaa, 1)
|
||||||
} else if (this.pod.status.phase == 'Running' && allRunning && !allReady) {
|
} else if (this.pod.status.phase == 'Running' && allRunning && !allReady) {
|
||||||
// all containers running, but some not ready (readinessProbe)
|
// all containers running, but some not ready (readinessProbe)
|
||||||
this.tick = this.pulsate
|
newTick = this.pulsate
|
||||||
podBox.lineStyle(2, 0xaaffaa, 1)
|
podBox.lineStyle(2, 0xaaffaa, 1)
|
||||||
} else if (this.pod.status.phase == 'Pending') {
|
} else if (this.pod.status.phase == 'Pending') {
|
||||||
this.tick = this.pulsate
|
newTick = this.pulsate
|
||||||
podBox.lineStyle(2, 0xffffaa, 1)
|
podBox.lineStyle(2, 0xffffaa, 1)
|
||||||
} else {
|
} else {
|
||||||
// CrashLoopBackOff, ImagePullBackOff or other unknown state
|
// CrashLoopBackOff, ImagePullBackOff or other unknown state
|
||||||
this.tick = this.crashing
|
newTick = this.crashing
|
||||||
podBox.lineStyle(2, 0xff9999, 1)
|
podBox.lineStyle(2, 0xff9999, 1)
|
||||||
}
|
}
|
||||||
podBox.beginFill(0x999999, 0.5)
|
podBox.beginFill(0x999999, 0.5)
|
||||||
@@ -183,10 +178,16 @@ export class Pod extends PIXI.Graphics {
|
|||||||
this.addChild(cross)
|
this.addChild(cross)
|
||||||
this.cross = cross
|
this.cross = cross
|
||||||
}
|
}
|
||||||
this.tick = this.terminating
|
newTick = this.terminating
|
||||||
}
|
}
|
||||||
if (this.tick) {
|
if (newTick) {
|
||||||
|
this.tick = newTick
|
||||||
PIXI.ticker.shared.add(this.tick, this)
|
PIXI.ticker.shared.add(this.tick, this)
|
||||||
|
} else if (this.tick) {
|
||||||
|
PIXI.ticker.shared.remove(this.tick, this)
|
||||||
|
this.tick = null
|
||||||
|
this.alpha = this._progress
|
||||||
|
this.tint = 0xffffff
|
||||||
}
|
}
|
||||||
|
|
||||||
const cpuHeight = resources.cpu.limit !== 0 ? 8 / resources.cpu.limit : 0
|
const cpuHeight = resources.cpu.limit !== 0 ? 8 / resources.cpu.limit : 0
|
||||||
|
|||||||
@@ -3,19 +3,23 @@ const PIXI = require('pixi.js')
|
|||||||
export default class Tooltip extends PIXI.Graphics {
|
export default class Tooltip extends PIXI.Graphics {
|
||||||
constructor () {
|
constructor () {
|
||||||
super()
|
super()
|
||||||
|
this.text = new PIXI.Text('', {fontFamily: 'ShareTechMono', fontSize: 12, fill: 0xffffff})
|
||||||
|
this.text.x = 4
|
||||||
|
this.text.y = 4
|
||||||
|
this.addChild(this.text)
|
||||||
|
this.visible = false
|
||||||
|
}
|
||||||
|
|
||||||
|
setText(text) {
|
||||||
|
this.text.text = text
|
||||||
|
this.draw()
|
||||||
}
|
}
|
||||||
|
|
||||||
draw () {
|
draw () {
|
||||||
var tooltip = this
|
this.clear()
|
||||||
tooltip.lineStyle(1, 0x000000, 1)
|
this.lineStyle(2, 0x333333, 0.8)
|
||||||
tooltip.beginFill(0x666666, 0.8)
|
this.beginFill(0x333333, 0.8)
|
||||||
tooltip.drawRect(0, 0, 200, 400)
|
this.drawRect(0, 0, this.text.width + 8, this.text.height + 8)
|
||||||
tooltip.endFill()
|
this.endFill()
|
||||||
var text = new PIXI.Text('', {fontSize: 12, fill: 0xffffff})
|
|
||||||
text.x = 2
|
|
||||||
text.y = 2
|
|
||||||
tooltip.addChild(text)
|
|
||||||
tooltip.text = text
|
|
||||||
tooltip.visible = false
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
static/sharetechmono.woff2
Normal file
BIN
static/sharetechmono.woff2
Normal file
Binary file not shown.
@@ -3,10 +3,24 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<title>Kubernetes Operational View</title>
|
<title>Kubernetes Operational View</title>
|
||||||
<style>* {padding: 0; margin: 0}</style>
|
<style>* {padding: 0; margin: 0} body { color: #aaaaff; background: #000; }</style>
|
||||||
|
<style>
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'ShareTechMono';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
/* ShareTechMono-Regular.ttf: Copyright (c) 2012, Carrois Type Design, Ralph du Carrois (www.carrois.com post@carrois.com), with Reserved Font Name 'Share'
|
||||||
|
License: SIL Open Font License, 1.1 */
|
||||||
|
src: local('Share Tech Mono'), local('ShareTechMono-Regular'), url(static/sharetechmono.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<!-- make sure the font is loaded -->
|
||||||
|
<div id="loading" style="font-family: ShareTechMono">Loading..</div>
|
||||||
<script src="static/{{ app_js }}"></script>
|
<script src="static/{{ app_js }}"></script>
|
||||||
<script>const app = new App(); app.run()</script>
|
<script>document.getElementById('loading').style.display = 'none'; const app = new App(); app.run()</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user