PasswordGenerator

mail@pastecode.io avatar
unknown
javascript
a year ago
4.8 kB
3
Indexable
Never
// window.onload = function() {

//Input Range och Counter
    const sliderElement = document.querySelector('#lengthRange'); // Detta hämtar jag från HTML (Input Range)
    const sliderValue = document.querySelector('#lengthCounter'); // Detta hämtar jag från HTML (Räknaren)
    const btn = document.querySelector('#btn');

    sliderElement.addEventListener('input', (event) => {
        const tempSliderValue = event.target.value; //Event integrera med HTML och gör så att en en text ändras om man t.ex
        //trycker på en knapp. Target är det som utlöste händelsen i HTML, när knappen trycks så ändras det.
        //Value är ett attribut för HTML, textrutor, lösenordsfält är ett slags "value" som personen skriver i.
        sliderValue.textContent = tempSliderValue; //Här ändrar (kan hämta) texten som finns från början i HTML. Vi gör
        //ändring efter vad slidern befinner sig för att få antalet karaktärer.
        const progress = (tempSliderValue / sliderElement.max) * 20;
        sliderElement.style.background = 'linear-gradient(#A638F6, 100%)';
    })

    //Lösenordet, alla checkbox och generara lösenord
    function generatePassword() {
        const length = document.getElementById('lengthRange').value;
        const useUppercase = document.getElementById('check-upper').checked;
        const useLowercase = document.getElementById('check-lower').checked;
        const useNumbers = document.getElementById('check-numbers').checked;
        const useSymbols = document.getElementById('check-symbol').checked;

        const uppercaseChars = "ABCDEFGIJHLMNOPQRSTVWXZÅÄÖ"
        const lowercaseChars = "abcdefgijhlmnopqrstvwxzåäö"
        const numberChars = "0123456789"
        const symbolChars = "!><|@#£¤$%&/{([)]=}?+'*¨^-_.:,;"

        let characters = '';

        if (useUppercase) characters += uppercaseChars;
        if (useLowercase) characters += lowercaseChars;
        if (useNumbers) characters += numberChars;
        if (useSymbols) characters += symbolChars;

        if (!characters) {
            alert("Vänligen välj minst en av kategorierna!");
            return;
        }

        let password = "";
        for( let i = 0; i < length; i++) {
            password += characters[Math.floor(Math.random() * characters.length)];
        }

    document.getElementById("generatedPassword").textContent = password;
}
    
//Styrka på lösenordet

const box1 = document.querySelector("#bar1");
const box2 = document.querySelector("#bar2");
const box3 = document.querySelector("#bar3");
const box4 = document.querySelector("#bar4");

// Funktion för att beräkna styrkan baserat på valda alternativ
function calculateStrength() {
    const useUppercase = document.getElementById('check-upper').checked;
    const useLowercase = document.getElementById('check-lower').checked;
    const useNumbers = document.getElementById('check-numbers').checked;
    const useSymbols = document.getElementById('check-symbol').checked;

    const totalOptions = useUppercase + useLowercase + useNumbers + useSymbols;

    return totalOptions;
}

// Uppdatera styrkabalkarnas färg baserat på antalet valda alternativ
function updateStrengthBars() {
    const strength = calculateStrength();

    if (strength === 0) {
        box1.style.backgroundColor = "transparent";
        box2.style.backgroundColor = "transparent";
        box3.style.backgroundColor = "transparent";
        box4.style.backgroundColor = "transparent";
    } else if (strength === 1) {
        box1.style.backgroundColor = "red";
        box2.style.backgroundColor = "transparent";
        box3.style.backgroundColor = "transparent";
        box4.style.backgroundColor = "transparent";
    } else if (strength === 2) {
        box1.style.backgroundColor = "orange";
        box2.style.backgroundColor = "orange";
        box3.style.backgroundColor = "transparent";
        box4.style.backgroundColor = "transparent";
    } else if (strength === 3) {
        box1.style.backgroundColor = "yellow";
        box2.style.backgroundColor = "yellow";
        box3.style.backgroundColor = "yellow";
        box4.style.backgroundColor = "transparent";
    } else if (strength === 4) {
        box1.style.backgroundColor = "#37FD12";
        box2.style.backgroundColor = "#37FD12";
        box3.style.backgroundColor = "#37FD12";
        box4.style.backgroundColor = "#37FD12";
    }
};


// Eventlyssnare för checkboxar, uppdatera styrkabalkarna när checkboxar ändras
const checkboxes = document.querySelectorAll('.item-checkbox input');
checkboxes.forEach(checkbox => {
    checkbox.addEventListener('change', updateStrengthBars);
});