annot-server/webapp/templates/annotviz.html
changeset 112 3e075a48e19e
parent 110 e4f0c105090d
child 113 7531e4180915
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/annot-server/webapp/templates/annotviz.html	Thu Jan 22 09:29:49 2015 +0100
@@ -0,0 +1,117 @@
+<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 = [
+        {
+            "ts": 1421928213000,
+            "colors": {
+                "transgressions": "#b90000",
+                "rythmique": "#af931e",
+                "narration": "#4bdd71",
+                "relation": "#1c28ba"
+            },
+            "order": [
+                "transgressions",
+                "rythmique",
+                "narration",
+                "relation"
+            ],
+            "defaultColor": "#536991"
+        }
+    ];
+
+    function colorToHex(c) {
+        var m = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(c);
+        return m ? '#' + (1 << 24 | m[1] << 16 | m[2] << 8 | m[3]).toString(16).substr(1) : c;
+    }
+
+    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(JSON.stringify(annotCategories, null, '  '));
+        });
+
+        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),
+        annotCategories: annotCategories
+    });
+
+
+    function stop() {
+        stageView.stop();
+    }
+    function start() {
+        stageView.start();
+    }
+
+    window.onload = function() {
+        stageView.init();
+        start();
+    }
+</script>
+</body>
+</html>