affectedYesNo: function()

in public/js/util.js [335:414]


affectedYesNo: function(affects){
    var status={yes:[],no:[],unknown:[]};
    for (var vendor of affects.vendor.vendor_data) {
        var vendor_name = vendor.vendor_name;
        for(var product of vendor.product.product_data) {
            var product_name = product.product_name;
            for(var version of product.version.version_data) {
                var vv = version.version_value;
                var cat = "yes";
                var prefix = vn = "";
                if(version.version_name && version.version_name != "") {
                    vn = version.version_name;
                }
                if(version.version_affected) {
                    if(version.version_affected.startsWith('?')) {
                        cat = "unknown";
                    } else if (version.version_affected.startsWith('!')) {
                        cat = "no";
                    }
                    switch (version.version_affected) {
                        case "!":
                        case "?":
                        case "=":
                            vv = version.version_value;
                            break;
                        case "<":
                        case "!<":
                        case "?<":
                            vv = "< " + version.version_value;
                            break;
                        case ">":
                        case "?>":
                            vv = "> " + version.version_value;
                            break;
                        case "<=":
                        case "!<=":
                        case "?<=":
                            vv = "<= " + version.version_value;
                            break;
                        case ">=":
                        case "!>=":
                        case "?>=":
                            vv = ">= " + version.version_value;
                            break;
                        default:
                            vv = version.version_value;
                    }
                    if(version.platform && version.platform != "") {
                            vv += ' on ' + version.platform;
                    }
                }
                var ph = status[cat][product_name];
                if(ph == undefined) {
                    ph = status[cat][product_name] = {};
                }
                vns = ph.version_names;
                if(vns == undefined) {
                    vns = ph.version_names = []
                }
                if(vns.indexOf(vn)<0) {
                    vns.push(vn);
                }
                vvs = ph.version_values;
                if(vvs == undefined) {
                    vvs = ph.version_values = []
                }
                if(vvs.indexOf(vv)<0) {
                    vvs.push(vv);
                }
            }
        }
    }
    var rstatus = {yes:[],no:[],unknown:[]};
    for (var cat of ['yes','no','unknown']){
        for(var p in status[cat]) {
           rstatus[cat].push({product:p, version_names:status[cat][p].version_names, version_values: status[cat][p].version_values})
        }
    }
    return rstatus;
},