You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.4 KiB
88 lines
2.4 KiB
function getHashFromString(string) { |
|
let hash = 1; |
|
for (let i = 0; i < string.length; i++) { |
|
const codepoint = string.charCodeAt(i); |
|
hash *= codepoint; |
|
} |
|
|
|
return Math.abs(hash); |
|
} |
|
|
|
function digitsFromNumber(number) { |
|
const numberString = number.toString(); |
|
let digits = []; |
|
|
|
for (let i = 0, len = numberString.length; i < len; i += 1) { |
|
digits.push(numberString.charAt(i)); |
|
} |
|
|
|
return digits; |
|
} |
|
|
|
// function avatarFromString(string) { |
|
// const hash = getHashFromString(string); |
|
// const digits = digitsFromNumber(hash); |
|
// // eslint-disable-next-line |
|
// const sum = digits.reduce(function (total, number) { |
|
// return total + number; |
|
// }); |
|
// const sumDigits = digitsFromNumber(sum); |
|
// const first = sumDigits[0]; |
|
// const second = sumDigits[1]; |
|
// let filename = '/avatars/'; |
|
|
|
// // eslint-disable-next-line |
|
// if (first == 1 || first == 2) { |
|
// filename += '1' + second.toString(); |
|
// // eslint-disable-next-line |
|
// } else if (first == 3 || first == 4) { |
|
// filename += '2' + second.toString(); |
|
// // eslint-disable-next-line |
|
// } else if (first == 5 || first == 6) { |
|
// filename += '3' + second.toString(); |
|
// // eslint-disable-next-line |
|
// } else if (first == 7 || first == 8) { |
|
// filename += '4' + second.toString(); |
|
// } else { |
|
// filename += '5'; |
|
// } |
|
|
|
// return filename + '.svg'; |
|
// } |
|
|
|
function colorForString(str) { |
|
let hash = 0; |
|
for (let i = 0; i < str.length; i++) { |
|
// eslint-disable-next-line |
|
hash = str.charCodeAt(i) + ((hash << 5) - hash); |
|
} |
|
let colour = '#'; |
|
for (let i = 0; i < 3; i++) { |
|
// eslint-disable-next-line |
|
let value = (hash >> (i * 8)) & 0xff; |
|
colour += ('00' + value.toString(16)).substr(-2); |
|
} |
|
return colour; |
|
} |
|
|
|
function messageBubbleColorForString(str) { |
|
let hash = 0; |
|
for (let i = 0; i < str.length; i++) { |
|
// eslint-disable-next-line |
|
hash = str.charCodeAt(i) + ((hash << 5) - hash); |
|
} |
|
let color = '#'; |
|
for (let i = 0; i < 3; i++) { |
|
// eslint-disable-next-line |
|
let value = (hash >> (i * 8)) & 0xff; |
|
color += ('00' + value.toString(16)).substr(-2); |
|
} |
|
// Convert to RGBA |
|
let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color); |
|
let rgb = result ? { |
|
r: parseInt(result[1], 16), |
|
g: parseInt(result[2], 16), |
|
b: parseInt(result[3], 16), |
|
} : null; |
|
return 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ', 0.3)'; |
|
} |