-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdreamcycle.js
106 lines (93 loc) · 2.82 KB
/
dreamcycle.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
const inquirer = require('inquirer');
const choicesUser = ['Dormir à', 'Reveille à', 'Dormir maintenant'];
const allCycle = [];
async function askQuestions() {
const answers = await inquirer.prompt([
{
type: 'list',
name: 'choice',
message: 'Tu veut :',
choices: choicesUser
}
]);
if (answers.choice === choicesUser[0]) {
await askSleepTime();
} else if (answers.choice === choicesUser[1]) {
await askWakeUpTime();
} else {
await sleepNow();
}
}
function validHours(value) {
const valid = /^([01]\d|2[0-3]):([0-5]\d)$/.test(value);
return valid || 'Veuillez entrer une heure valide (HH:MM)';
}
async function askWakeUpTime() {
const answers = await inquirer.prompt([
{
type: 'input',
name:'wakeUpAt',
message: 'Heure de reveille : ',
validate: validHours
},
]);
calculCycleUP(stringToTime(answers.wakeUpAt));
}
function sleepNow() {
const day = new Date();
const hours = day.getHours();
const minutes = day.getMinutes();
const timeString = `${hours}:${minutes}`;
const actualTime = stringToTime(timeString);
console.log(actualTime.toLocaleTimeString());
calculCycle(actualTime);
}
function calculCycleUP(wakeUpAt) {
for (let nbCycle = 1; nbCycle < 7; nbCycle++) {
wakeUpAt.setHours(wakeUpAt.getHours() - 1);
wakeUpAt.setMinutes(wakeUpAt.getMinutes() - 30);
allCycle.push(wakeUpAt.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }));
}
}
async function askSleepTime() {
const answers = await inquirer.prompt([
{
type: 'input',
name: 'sleepTime',
message: 'Heure de dormir :',
validate: validHours
},
]);
calculCycle(stringToTime(answers.sleepTime));
}
function stringToTime(timeString) {
const [hours, minutes] = timeString.split(':');
const date = new Date();
date.setHours(Number(hours));
date.setMinutes(Number(minutes));
return date;
}
function calculCycle(sleepTime) {
for (let nbCycle = 1; nbCycle <= 7; nbCycle++) {
sleepTime.setHours(sleepTime.getHours() + 1);
sleepTime.setMinutes(sleepTime.getMinutes() + 30);
allCycle.push(sleepTime.toLocaleTimeString('fr-FR', { hour: '2-digit', minute: '2-digit' }));
}
}
function askWhichToUse() {
inquirer.prompt([
{
type: 'list',
name: 'timeToWake',
message:'le quel te convient ?:',
choices: allCycle
},
]).then(answers => {
console.log(`tu as choisi ${answers.timeToWake} donc de dormir ${allCycle.indexOf(answers.timeToWake) + 1} cycles`);
});
}
async function runProgram() {
await askQuestions();
askWhichToUse();
}
runProgram();