<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>