function list_rules()

in server/site/js/source/ruleset.js [55:103]


function list_rules(state, json) {
    let obj = document.getElementById('rules');
    obj.innerHTML = ''; // clear object
    if (json.rules && json.rules.length > 0) {
        let div = _div();
        div.inject(_hr());
        let wheader = _h3({class:'subtitle'},"Current ban rules (%u):".format(json.rules.length));
        div.inject(wheader);
        let tbl = new HTML('table', { style: {fontSize: '0.8rem'}});
        let tbh = new HTML('thead');
        let tbody = new HTML('tbody');
        
        tbh.inject(new HTML('tr', {}, [
            new HTML('th', 'Ruleset'),
        ]));
        tbl.inject(tbh);
        
        div.inject(tbl);
        for (var i = 0; i < json.rules.length; i++) {
            let res = json.rules[i];
            rule_json[res.rid] = res;
            let innards = _div();
            
            let form = _form({onsubmit: "add_rule('%s'); return false;".format(res.rid)});
            create_rule_form(form, res.rid);
            innards.inject(form);

            let tr = new HTML('tr', {}, [
                new HTML('td', {style: {padding: '5px'}}, [
                                     _a({href: 'javascript:void();', onclick:"showrule('%s');".format(res.rid)}, _kbd(res.name)),
                                     "   ",
                                     _a({style: {color: '#930', float: 'right'}, href: 'javascript:void();', onclick:"remove_rule('%s');".format(res.rid)}, "Remove ruleset"),
                                     _div({id: res.rid, style: {margin: '6px', background: '#3692', border: '1.5px  solid #3339', padding: '3px', display: 'none'}}, innards)
                  ])
            ]);
            tbody.inject(tr);
        }
        tbl.inject(tbody);
        
        obj.inject(div);
        
        obj.inject(_hr());
        obj.inject(_h3("Create a new rule:"));
        let form = _form({onsubmit: "add_rule('new'); return false;"});
        create_rule_form(form, '');
        obj.inject(form);
        
    }
}