Backlinktool

by fnagel

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MadMen Backlink-Tool</title>
    <script src="./script.js"></script>
</head>
<body>
  <em>Nothing to see here -> hit F12 and see console!</em>
</body>
</html>

JavaScript

// const file = './companies.json';

const amountOfPartners = 3;

getJson().then(function(companies) {
    const companyCount = companies.length;

    // Prepare data
    companies.forEach(function(company) {
        if (!company.partners) {
            company.partners = [];
        }
        if (!company.partnerCount) {
            company.partnerCount = 0;
        }
    });

    // Process data
    companies.forEach(function(company) {
        let count = 0;
        while (company.partners.length < amountOfPartners && count <= companyCount) {
            addPartner(companies, company)
            count++;
        }
    });
    console.table(companies, ["id", "name", "partners", "partnerCount"]);

    // Output tests / stats
    console.groupCollapsed("tests");
    let totalPartners = 0;
    companies.forEach(function(company) {
        let text = "Hat " + company.partners.length + " Partner / ist " + company.partnerCount + " mal Partner";
        totalPartners += company.partners.length;
        if (company.partners.length === amountOfPartners) {
            console.info(company, text);
        } else {
            console.warn(company, text);
        }

    });
    console.log("Anzahl Partner: " + totalPartners + " / " + companyCount * amountOfPartners + " => "
        + ((totalPartners / (companyCount * amountOfPartners)) * 100).toPrecision(2) + "%");
    console.groupEnd("tests")
});

function addPartner(companies, company) {
    console.debug("findPartner start", company);
    let partner = findPartner(companies, company);
    console.debug("findPartner end", partner);
    if (partner) {
        company.partners.push(partner);
        partner.partnerCount++;
    }
}

const isPartner = function(partners, company) {
    return partners.find(element => element.id === company.id);
};

function findPartner(companies, company) {
    findPartnerLoop: for (let i = 0; i < companies.length; i++) {
        let possiblePartner = companies[i];

        // A company...