diff --git a/experimental/tracer/ui/.gitignore b/experimental/tracer/ui/.gitignore
new file mode 100644
index 000000000..a471811ad
--- /dev/null
+++ b/experimental/tracer/ui/.gitignore
@@ -0,0 +1,4 @@
+container.json
+traces.json
+node_modules
+
diff --git a/experimental/tracer/ui/README.md b/experimental/tracer/ui/README.md
new file mode 100644
index 000000000..a2dc141ef
--- /dev/null
+++ b/experimental/tracer/ui/README.md
@@ -0,0 +1,10 @@
+Develop UI
+##########
+
+* npm install
+* npm start
+
+`server.js` serves a fake backend. You can add `container.json` and
+`traces.json` to this directory to serve them as /traces and /container
+respectively.
+
diff --git a/experimental/tracer/ui/favicon.ico b/experimental/tracer/ui/favicon.ico
new file mode 100644
index 000000000..2d15c7808
Binary files /dev/null and b/experimental/tracer/ui/favicon.ico differ
diff --git a/experimental/tracer/ui/index.html b/experimental/tracer/ui/index.html
index a2463a987..c9a1aed35 100644
--- a/experimental/tracer/ui/index.html
+++ b/experimental/tracer/ui/index.html
@@ -3,14 +3,12 @@
Weave Tracer
-
-
-
-
+
+
+
-
@@ -24,6 +22,12 @@
var containers = [];
var traces = [];
+ Handlebars.registerHelper('isSelected', function(input) {
+ if (currentContainer && input === currentContainer.Id) {
+ return 'class=selected';
+ }
+ });
+
Handlebars.registerHelper('spaces', function(input) {
return new Array(input + 1).join("> ");
});
@@ -75,6 +79,10 @@
$.each(data, function(i, container) {
containersByID[container.Id] = container
});
+ // auto-select first container
+ if (containers.length) {
+ currentContainer = containersByID[containers[0].Id];
+ }
render();
window.setTimeout(updateContainers, 5 * 1000);
});
@@ -113,13 +121,70 @@
})
diff --git a/experimental/tracer/ui/logo.svg b/experimental/tracer/ui/logo.svg
new file mode 100644
index 000000000..406732034
--- /dev/null
+++ b/experimental/tracer/ui/logo.svg
@@ -0,0 +1,54 @@
+
\ No newline at end of file
diff --git a/experimental/tracer/ui/package.json b/experimental/tracer/ui/package.json
new file mode 100644
index 000000000..d2d91d3ed
--- /dev/null
+++ b/experimental/tracer/ui/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "scope-tracer",
+ "version": "1.0.0",
+ "description": "",
+ "main": "server.js",
+ "scripts": {
+ "start": "node server.js",
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "David Kaltschmidt ",
+ "license": "UNLICENSED",
+ "devDependencies": {
+ "express": "^4.13.3"
+ }
+}
diff --git a/experimental/tracer/ui/server.js b/experimental/tracer/ui/server.js
new file mode 100644
index 000000000..e56d77342
--- /dev/null
+++ b/experimental/tracer/ui/server.js
@@ -0,0 +1,25 @@
+var express = require('express')
+
+var app = express();
+
+app.get('/', function(req, res) {
+ res.sendFile(__dirname + '/index.html');
+});
+
+app.get('/container', function(req, res) {
+ res.sendFile(__dirname + '/container.json');
+});
+
+app.get('/traces', function(req, res) {
+ res.sendFile(__dirname + '/traces.json');
+});
+
+app.use(express.static('./'));
+
+var port = process.env.PORT || 4050;
+var server = app.listen(port, function () {
+ var host = server.address().address;
+ var port = server.address().port;
+
+ console.log('Scope Tracer UI listening at http://%s:%s', host, port);
+});