summaryrefslogtreecommitdiff
path: root/elm/UList/Opt.js
blob: 75a302b982a4a02b9d687a0668a3a15ec99fdf01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var init = Elm.UList.Opt.init;

var actualInit = function(opt) {
    var app = init(opt);

    app.ports.ulistVNDeleted.subscribe(function(b) {
        var e = document.getElementById('ulist_tr_'+opt.flags.vid);
        e.parentNode.removeChild(e.nextElementSibling);
        e.parentNode.removeChild(e);

        // Have to restripe after deletion :(
        var rows = document.querySelectorAll('.ulist > table > tbody > tr');
        for(var i=0; i<rows.length; i++)
            rows[i].classList.toggle('odd', Math.floor(i/2) % 2 == 0);
    });

    app.ports.ulistNotesChanged.subscribe(function(n) {
        document.getElementById('ulist_notes_'+opt.flags.vid).innerText = n;
    });

    app.ports.ulistRelChanged.subscribe(function(rels) {
        var e = document.getElementById('ulist_relsum_'+opt.flags.vid);
        e.classList.toggle('todo', rels[0] != rels[1]);
        e.classList.toggle('done', rels[1] > 0 && rels[0] == rels[1]);
        e.innerText = rels[0] + '/' + rels[1];
    });
};

// This module is typically hidden, lazily load it only when the module is visible to speed up page load time.
Elm.UList.Opt.init = function(opt) {
    var e = document.getElementById('collapse_vid'+opt.flags.vid);
    if(e.checked)
        actualInit(opt);
    else
        e.addEventListener('click', function() { actualInit(opt) }, { once: true });
};