annot-server/webapp/templates/annotviz.html
changeset 108 082b64a5c699
child 110 e4f0c105090d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/annot-server/webapp/templates/annotviz.html	Thu Jan 22 07:04:42 2015 +0100
@@ -0,0 +1,105 @@
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>Piano Roll {{event.label}}</title>
+    <link href="{{ config['STATIC_URL'] }}/css/annotviz.min.css" rel="stylesheet">
+</head>
+<body>
+    <h1>Piano Roll {{event.label}}</h1>
+    <noscript>You must enable JavaScript</noscript>
+    <div id="canvasContainer"></div>
+    <p>
+        <a href="#" onclick="stop(); return false;">stop intervals</a> -
+        <a href="#" onclick="start(); return false;">start intervals</a> -
+        temps écoulé : <span id="timeStarted"></span>
+    </p>
+    <pre id="log"></pre>
+    <script src="{{ config['STATIC_URL'] }}/js/libs-annotviz.min.js"></script>
+    <script src="{{ config['STATIC_URL'] }}/js/annotviz.min.js"></script>
+    <script>
+
+    var PIXI = require('pixi');
+    var annotCategories = [];
+
+    function colorToHex(input) {
+        if (input.substring(0, 1) === '#') {
+            return input;
+        }
+        else {
+            var m = input.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i);
+            var r = m[1], g=[2], b=[3];
+            return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
+        }
+    }
+
+    function getAnnotCategories(ecode, serverUrl) {
+
+        var url = serverUrl+"/p/api/v1/event/" + ecode;
+
+        var jsonLoader = new PIXI.JsonLoader(url, true);
+        jsonLoader.on('loaded', function(res) {
+            var data = res.target.json;
+
+            while(annotCategories.length > 0) {
+                annotCategories.pop();
+            }
+
+            data.sessions.forEach(function(session) {
+                var annotCat = {
+                    ts: session.start_ts === null ? new Date(0) : Date.parse(session.start_ts),
+                    colors: {}
+                }
+                var categoriesJson = session.categories_json;
+                annotCat.order = categoriesJson.order;
+                categoriesJson.categories.forEach(function(cat) {
+                    annotCat.colors[cat.code] = colorToHex(cat.color);
+                });
+                annotCat.defaultColor = categoriesJson.defaultColor || "#536991";
+                annotCategories.push(annotCat);
+            });
+            console.log(annotCategories);
+        });
+
+        jsonLoader.load();
+    }
+
+
+
+    var pianorollChannel  = 'PIANOROLL';
+    var annotationChannel = 'ANNOT';
+    var eventCode = '{{event.code}}';
+    getAnnotCategories(eventCode, 'http://' + window.location.hostname + ':8080');
+    var wsUri = 'ws://' + window.location.hostname + ':8090/broadcast';
+
+    wsUriPianoroll = wsUri + '?channel=' + pianorollChannel + '&event_code=' + eventCode;
+    wsUriAnnotation = wsUri + '?channel=' + annotationChannel + '&event_code=' + eventCode;
+
+    var logger = new annotviz.ConsoleLogger(true);
+
+    var stageView = new annotviz.StageView({
+        logger: logger
+    });
+
+
+    var annotsvizview = new annotviz.AnnotsVizView({
+        logger: logger,
+        stageView: stageView,
+        wsPianoroll: new annotviz.WsWrapper(wsUriPianoroll, logger),
+        wsAnnot: new annotviz.WsWrapper(wsUriAnnotation, logger),
+    });
+
+
+    function stop() {
+        stageView.stop();
+    }
+    function start() {
+        stageView.start();
+    }
+
+    window.onload = function() {
+        stageView.init();
+        start();
+    }
+</script>
+</body>
+</html>