function analytics()

in src/html_files/system_info.ts [86:159]


function analytics() {
    let all_analytics = [];
    for (var i = 0; i < all_rules.length; i++) {
        let rules_group = all_rules[i];
        let data_type = rules_group.data_type;
        let analytics = {
            name: rules_group.pretty_name,
            analysis: [],
        }
        for (var j = 0; j < rules_group.rules.length; j++) {
            let rule = rules_group.rules[j];
            let opts = formRuleOpts(data_type, rule);
            if (runs_raw.length > 1) {
                for (const [key, value] of opts.other_run_data) {
                    opts.this_run = key;
                    opts.this_run_data = value;
                    let gen = rule.per_run_rule?.(opts);
                    if (gen) {
                        let result = gen.next();
                        while (!result.done) {
                            analytics.analysis = analytics.analysis.concat(result.value);
                            result = gen.next();
                        }
                    }
                }
                let gen = rule.all_run_rule?.(opts);
                if (gen) {
                    let result = gen.next();
                    while (!result.done) {
                        analytics.analysis = analytics.analysis.concat(result.value);
                        result = gen.next();
                    }
                }
            }
            for (var k = 0; k < runs_raw.length; k++) {
                let run = runs_raw[k];
                let per_run_data = get_data_key(data_type, rule.name);
                let run_data = per_run_data.get(run);
                opts.base_run = run;
                opts.base_run_data = run_data;
                let gen = rule.single_run_rule?.(opts);
                if (gen) {
                    let result = gen.next();
                    while (!result.done) {
                        analytics.analysis = analytics.analysis.concat(result.value);
                        result = gen.next();
                    }
                }
            }
        }
        all_analytics.push(analytics);
    }
    var table = document.createElement('table');
    table.style.border = 'none';
    table.id = 'analytics-table';
    addElemToNode("findings-data", table);
    for (let j = 0; j < all_analytics.length; j++) {
        let analytics = all_analytics[j];
        for (let k = 0; k < analytics.analysis.length; k++) {
            const row = table.insertRow();
            if (k == 0) {
                const key = row.insertCell();
                key.textContent = `${analytics.name}`;
            } else {
                const key = row.insertCell();
                key.textContent = '';
            }
            const tick = row.insertCell();
            tick.textContent = `${analytics.analysis[k].status}`;
            const data = row.insertCell();
            data.textContent = `${analytics.analysis[k].text}`;
        }
    }
}