-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetColors.js
149 lines (131 loc) · 5.6 KB
/
getColors.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
import {colors, colorsArray, nameColors} from './constants.js'
const filtersDiv = document.querySelector('.nav-filtros');
const redFilter =document.querySelector('.red');
const blueFilter =document.querySelector('.blue');
const greenFilter =document.querySelector('.green');
const yellowFilter =document.querySelector('.yellow');
const aquaFilter =document.querySelector('.aqua');
const violetFilter =document.querySelector('.violet');
const blackFilter =document.querySelector('.black');
const filtersArray = [redFilter,blueFilter,violetFilter,aquaFilter,greenFilter,yellowFilter,blackFilter];
const hexDigits = ['F','E','D','C','B','A','9','8','7','6','5','4','3','2','1','0'];
const backg = document.querySelector('.container');
const spanColor = document.querySelector('.bc-span');
const equivHex = {
"0": 0,
"1": 1,
"2": 2,
"3": 3,
"4": 4,
"5": 5,
"6": 6,
"7": 7,
"8": 8,
"9": 9,
"A": 10,
"B": 11,
"C": 12,
"D": 13,
"E": 14,
"F": 15,
};
//local storage
export const myStorage = window.localStorage;
export function saveBackground(background){
myStorage.setItem('bg',background);
}
export function getHexColor(){
let hexad = '#'
for (let index = 0; index < 6; index++) {
let randomNumber = Math.floor(Math.random() * (hexDigits.length));
hexad += hexDigits[randomNumber];
}
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
saveBackground(hexad)
}
export function getDefaultColor(){
let randomNumber =Math.floor(Math.random() * (colorsArray.length))
backg.style.backgroundColor = colorsArray[randomNumber];
spanColor.textContent = nameColors[randomNumber]
saveBackground(colorsArray[randomNumber])
}
export function getSearchedColor(){
const filterNames = ['red','blue','yellow','green','aqua','violet','black'];
let hexColorFilter;
//Get the hexCode format by the selectioned filter
for (let active of filtersArray){
if (active.classList.contains('filter-active')){
let colorName = active.classList[1]
hexColorFilter = colors[colorName];
break;
}
}
if (hexColorFilter == undefined){ // if any filter is currently active, call the getHexColor()
getHexColor()
}else{
clarifyColor(hexColorFilter)
}
}
function clarifyColor(hexColorFilter){
let hexad,intensity,randomNumber,randomNumber2,hexadClarifyY,hexadClarifyX;
let hexDigits2 =['F','E','D','C','B','A','9','8','7','6','5','4','3','2','1','0']
let colorArray = hexColorFilter.split('').slice(1); // Convert the selectiones hexCode in a array
//Count the number of F's
let cantF = colorArray.filter(function(valor){
return valor == 'F'
}).length
//if it's has 4 F, it's a secondary color
if (cantF == 4){
//Clarify in Y
randomNumber = Math.floor(Math.random() * ((hexDigits2.slice(3).length))); // Until 13 digits
randomNumber2 = Math.floor(Math.random() * (hexDigits2.length));
hexadClarifyY = hexColorFilter.replaceAll('FF',`${hexDigits2[randomNumber]+hexDigits2[randomNumber2]}`) //From 3
//Clarify in X
intensity = hexDigits2[randomNumber]
if (intensity <= 2){
hexadClarifyX = hexadClarifyY.replaceAll('00',`00`)
hexad = hexadClarifyX
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
}else{
randomNumber = Math.floor(Math.random() * ((equivHex[intensity] -2) < 0 ? 0 : equivHex[intensity] -2))
randomNumber2 = Math.floor(Math.random() * (hexDigits.length));
hexadClarifyX = hexadClarifyY.replace('00',`${hexDigits2.slice(hexDigits2.indexOf(intensity)+3)[randomNumber]+hexDigits2[randomNumber2]}`)
hexad = hexadClarifyX
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
}
//if it's has 2 F, it's a primary color
}else if (cantF == 2){
//Aclarar en Y
randomNumber = Math.floor(Math.random() * ((hexDigits2.slice(4).length))); //just 12 digits
randomNumber2 = Math.floor(Math.random() * (hexDigits2.length));
hexadClarifyY = hexColorFilter.replace('FF',`${hexDigits.reverse().slice(3)[randomNumber]+hexDigits[randomNumber2]}`) // From F to 3
// Aclarar en X
intensity = hexDigits.slice(3)[randomNumber] // Get the predominant color intensity
if (intensity <= 2){
hexadClarifyX = hexadClarifyY.replaceAll('00',`00`)
hexad = hexadClarifyX
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
}else{
randomNumber = Math.floor(Math.random() * ((equivHex[intensity] -2) < 0 ? 0 : equivHex[intensity] -2))
randomNumber2 = Math.floor(Math.random() * (hexDigits.length));
hexad = hexadClarifyY.replaceAll('00',`${hexDigits2.slice(hexDigits2.indexOf(intensity)+3)[randomNumber]+hexDigits2[randomNumber2]}`)
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
}
// If itsn't F's, it's color black/white
}else if(cantF == 0){
randomNumber = Math.floor(Math.random() * ((hexDigits.length)));
randomNumber2 = Math.floor(Math.random() * (hexDigits.length));
hexad = '#';
hexad += `${hexDigits[randomNumber]+hexDigits[randomNumber2]}`
hexad += `${hexDigits[randomNumber]+hexDigits[randomNumber2]}`
hexad += `${hexDigits[randomNumber]+hexDigits[randomNumber2]}`
backg.style.backgroundColor = hexad;
spanColor.textContent = hexad;
}
saveBackground(hexad)
}