annot-server/webapp/templates/annotviz.html
author ymh <ymh.work@gmail.com>
Thu, 22 Jan 2015 07:04:42 +0100
changeset 108 082b64a5c699
child 110 e4f0c105090d
permissions -rw-r--r--
add vizualizations to server

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