-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfunctions.js
143 lines (130 loc) · 3.86 KB
/
functions.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
const discoverTimeToBoard = (code) => {
//trim pois vem com espaços
// TIME_BOARD vem do select.js
const time = TIME_BOARD[code.trim()] ? TIME_BOARD[code.trim()] : code.trim() ;
return time;
}
function discoverTimeToSubjects(code) {
/*
Para cobrir o caso onde por exemplo a disciplina começa às 17 e termina às
18, o código vindo do parâmetro será +/- assim (24T5 24N1), por isso o split
dando match em qualquer valor que não seja por exemplo "white space". O filter
é utilizado para remover as strings vazias que aparecem quando o split ocorre.
*/
let splitedCode = code.split(/\W/g).filter((value) => value);
/*
Para melhorar o visual do caso anterior inserindo um <br> é necessário
guardar em um array os valores de cada código de tempo
*/
let finalDays = [];
let finalTimes = [];
//Se tiver + de 1 código (vide o caso do split acima), formata ele bonitinho
for(let i = 0; i<splitedCode.length; i++) {
let splitedString = splitedCode[i].split(/(\D)/g);//Separo os dias dos horarios
if(i == 0) {
finalDays.push(mapDays(splitedString[0])); //Descubro o dia
} else {
finalDays.push("<br>"+mapDays(splitedString[0])); //Descubro o dia
}
finalTimes.push(mapTimes(splitedString[1], splitedString[2])); //Descubro o horario
}
//String final que será trocada pelos códigos de disciplinas
let finalString = "";
for(let i = 0; i < finalDays.length; i++) {
finalString += finalDays[i] +"<br>| " + finalTimes[i];
finalString += "<br>";
}
return finalString;
}
function mapTimes(turn, time) {
let finalStringTime = "";
//Se nao tiver horario definido.
if(turn == undefined || time == undefined) {
return "";
}
//Double switch para checar o turno e o horario (ex: M1, T3...)
for(let i = 0; i<time.length; i++) {
switch(turn) {
case "M": {
switch(time[i]) {
case "1":
finalStringTime += "07:00 - 08:00 | "
break;
case "2":
finalStringTime += "08:00 - 09:00 | "
break;
case "3":
finalStringTime += "09:00 - 10:00 | "
break;
case "4":
finalStringTime += "10:00 - 11:00 | "
break;
case "5":
finalStringTime += "11:00 - 12:00 | "
break;
}
}
break;
case "T": {
switch(time[i]) {
case "1":
finalStringTime += "12:00 - 13:00 | "
break;
case "2":
finalStringTime += "13:00 - 14:00 | "
break;
case "3":
finalStringTime += "14:00 - 15:00 | "
break;
case "4":
finalStringTime += "15:00 - 16:00 | "
break;
case "5":
finalStringTime += "16:00 - 17:00 | "
break;
}
}
break;
case "N": {
switch(time[i]) {
case "1":
finalStringTime += "17:00 - 18:00 | "
break;
case "2":
finalStringTime += "18:00 - 19:00 | "
break;
case "3":
finalStringTime += "19:00 - 20:00 | "
break;
case "4":
finalStringTime += "20:00 - 21:00 | "
break;
case "5":
finalStringTime += "21:00 - 22:00 | "
break;
}
}
break;
}
}
return finalStringTime;
}
function mapDays(days) {
let daysArray = [];
// Tradando o caso de poder ser array
if (Array.isArray(days)) {
daysArray = [...days];
} else {
daysArray = [...days.split('')];
}
let finalStringDays = parseDay(daysArray);
return finalStringDays;
}
function parseDay(array) {
let daysArray = array;
let result = daysArray.reduce(function (acc, cur) {
acc += DAYS[cur] ? DAYS[cur]+" " : "" ; // DAYS vem do select.js
return acc;
}, " ");
return result;
}