Files
servicedock/client/servicedock.js

79 lines
2.6 KiB
JavaScript
Raw Normal View History

2018-11-30 21:52:10 +01:00
var socket = io.connect()
var docker = new Docker(socket, error, sigstack)
var parameters = docker.graphics.parameters
2018-11-30 22:35:34 +01:00
function error(e) {
2018-11-30 21:52:10 +01:00
$('#status').removeClass().addClass('error')
2018-11-30 22:35:34 +01:00
$('#error').html('<h1>Error</h1><p>'+(new Date()).toLocaleString()+'</p><p>'+e.msg+'</p><pre>'+e.data+'</pre>').show()
2018-10-30 12:51:23 +01:00
}
function sigstack() {
$('#error').hide()
2018-11-30 21:52:10 +01:00
$('#clock').text((new Date()).toLocaleString())
$('#status').removeClass().addClass('wait')
var dot = docker.graphics.stack(parameters)
2018-11-29 14:20:18 +01:00
$('a#dot').attr('href', 'data:text/vnd.graphviz;base64,'+btoa(dot))
.attr('target', '_blank')
.attr('download', window.location.hostname+'.dot')
2018-11-30 22:35:34 +01:00
try {
$('#clock').text((new Date()).toLocaleString())
var svg = docker.graphics.viz(dot)
$('#stacks').html(svg)
$('#status').removeClass().addClass('success')
$('a#svg').attr('href', 'data:image/svg;base64,'+btoa(svg))
.attr('target', '_blank')
.attr('download', window.location.hostname+'.svg')
} catch (e) {
error(e)
}
$('#clock').text((new Date()).toLocaleString())
}
2018-11-30 21:52:10 +01:00
function setParameters() {
localStorage.rankdir = (++localStorage.rankdir)%setParameters.rankdirs.length
parameters.rankdir = setParameters.rankdirs[localStorage.rankdir]
$('#orientation').removeClass().addClass(parameters.rankdir.toLowerCase())
}
setParameters.rankdirs = ['LR', 'TB', 'RL', 'BT']
if (!localStorage.rankdir)
localStorage.rankdir = -1
else
--localStorage.rankdir
2018-10-30 12:51:23 +01:00
function init() {
2018-11-30 21:52:10 +01:00
setParameters()
$('#orientation').on('click', () => {
setParameters()
sigstack()
})
if (localStorage.position)
$('body').removeClass().addClass(localStorage.position)
2018-11-29 14:20:18 +01:00
$('header').attr('draggable', 'true')
.on('dragstart', (event) => {
2018-11-30 21:52:10 +01:00
event.originalEvent.dataTransfer.setData("text", "");
2018-11-29 14:20:18 +01:00
})
$('*').on('dragover', (event) => {
event.preventDefault()
var e = event.originalEvent
var obj = $('body')
var w = window.innerWidth
var h = window.innerHeight
if (e.clientY < h*.1) {
2018-11-30 21:52:10 +01:00
obj.removeClass().addClass('top')
if (localStorage) localStorage.position = 'top';
2018-11-29 14:20:18 +01:00
} else if (e.clientY > h*.9) {
2018-11-30 21:52:10 +01:00
obj.removeClass().addClass('bottom')
if (localStorage) localStorage.position = 'bottom';
2018-11-29 14:20:18 +01:00
} else if (e.clientX < w*.1) {
2018-11-30 21:52:10 +01:00
obj.removeClass().addClass('left')
if (localStorage) localStorage.position = 'left';
2018-11-29 14:20:18 +01:00
} else if (e.clientX > w*.9) {
2018-11-30 21:52:10 +01:00
obj.removeClass().addClass('right')
if (localStorage) localStorage.position = 'right';
2018-11-29 14:20:18 +01:00
}
}).on('drop', (event) => {
event.preventDefault()
})
2018-10-30 12:51:23 +01:00
}
2018-11-03 13:34:37 +01:00
$(init)