//Dom Elements
let clipboard = document.getElementById('clipboard');
let generatepassword = document.getElementById('generatepassword');
let textarea = document.getElementById('textarea');
let upperCase = document.getElementById('upperCase');
let lowerCase = document.getElementById('lowerCase');
let number = document.getElementById('number');
let symbol = document.getElementById('symbol');
let lengthTaker = document.getElementById('length')
//copy password to clipboard
clipboard.addEventListener('click',()=>{
const text = document.createElement('textarea');
const pass = textarea.value;
text.value = pass;
document.body.appendChild(text);
text.select();
document.execCommand('copy');
text.remove();
alert('password copied!')
})
//function for generating password
generatepassword.addEventListener('click',()=>{
const length = +lengthTaker.value;
const hasUpper = upperCase.checked;
const hasLower = lowerCase.checked;
const hasNumber = number.checked;
const hasSymbol = symbol.checked;
textarea.value = generate(hasUpper,hasLower,hasNumber,hasSymbol,length);
});
function generate(upper,lower,number,symbol,length){
let password = '';
let typesCount = upper + lower + number + symbol;
let typesArr = [{upper},{lower},{number},{symbol}].filter(item=>Object.values(item)[0]);
// console.log('Types arraay',typesArr);
if(typesCount === 0){
return '';
}
for(i=0;i<length;i+=typesCount){
typesArr.forEach(type=>{
const generateFuncName = Object.keys(type)[0];
// console.log('FuncName',generateFuncName);
password +=generateFunc[generateFuncName]();
});
};
// console.log(password.slice(0, length));
// const finalpassword = password.slice(0,length);
// console.log('final',final);
let finalpassword = ''
for(i=0;i<length;i++){
let final = password[Math.floor(Math.random() * password.length)];
finalpassword += final;
}
return finalpassword;
}
//generator Object
const generateFunc = {
upper : generateUpperCase,
lower :generateLowerCase,
number:generateNumber,
symbol:generateSymbol
};
//generator functions
function generateUpperCase(){
console.log(String.fromCharCode(Math.floor(Math.random()*26)+65));
return String.fromCharCode(Math.floor(Math.random()*26)+65);
}
function generateLowerCase(){
console.log(String.fromCharCode(Math.floor(Math.random()*26)+97));
return String.fromCharCode(Math.floor(Math.random()*26)+97);
}
function generateNumber(){
console.log(Math.floor(Math.random()*10));
return (Math.floor(Math.random()*10));
}
function generateSymbol(){
let symbols = '@#$%&*()!';
console.log(symbols[Math.floor(Math.random() * symbols.length)]);
return symbols[Math.floor(Math.random() * symbols.length)];
}
No comments:
Post a Comment