-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsupercoolScript.js
148 lines (124 loc) · 4.73 KB
/
supercoolScript.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
console.log("Ton script super cool est bien relié");
// Fonction pour récupérer les données météo via API
async function miniWeather() {
const apiKey = 'b5264219f5fdca65f3424d3ce2b4d002'; // Ta clé API
const city = 'Lausanne'; // Ville à changer selon ton besoin
const apiUrl = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric&lang=fr`;
try {
const response = await fetch(apiUrl);
const data = await response.json();
if (data.cod === 200) {
const weatherInfo = document.getElementById('miniWeatherInfo');
weatherInfo.innerHTML = `
<div id="miniWeatherInfo">
<p class="city">${data.name}</p> <!-- Nom de la ville -->
<div class="weather-details">
<div class="weather-item">
<img src="temp.png" alt="" class="icon">
<p>${data.main.temp} <sup>°C</sup> </p>
</div>
<div class="weather-item">
<img src="weather.png" alt="" class="icon">
<p>${data.weather[0].description}</p>
</div>
<div class="weather-item">
<img src="wind.png" alt="" class="icon">
<p>${data.wind.speed} m/s</p>
</div>
</div>
</div>
`;
} else {
alert('Erreur lors de la récupération des données météo');
}
} catch (error) {
console.error('Erreur:', error);
}
}
function loadPosition(elementId) {
const position = JSON.parse(localStorage.getItem(elementId));
if (position) {
const element = document.getElementById(elementId);
element.style.left = position.x + 'px';
element.style.top = position.y + 'px';
}
}
// Sauvegarde de la position dans localStorage
function savePosition(elementId, x, y) {
const position = { x, y };
localStorage.setItem(elementId, JSON.stringify(position));
}
function updateClock() {
const clock = document.getElementById("clock");
const now = new Date();
// Récupération des heures, minutes, secondes et millisecondes
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
// Mise à jour de l'affichage de l'heure, y compris les millisecondes
clock.textContent = `${hours}:${minutes}:${seconds}`;
}
window.onload = function () {
// Chargement des positions pour les IDs
loadPosition('miniWeather');
loadPosition('clock');
loadPosition('speMiniHome');
loadPosition('speCard');
loadPosition('miMi');
// Appel des autres fonctions nécessaires
miniWeather();
setInterval(updateClock, 1000);
updateClock(); // Appel initial pour afficher l'heure immédiatement
};
// Fonction de déplacement des éléments
document.querySelectorAll('.miniHome, .card, #clock, #miniWeather, #miMi').forEach(element => {
let isDragging = false; // Indique si l'élément est en train d'être déplacé
let offsetX, offsetY; // Position du curseur par rapport au coin supérieur gauche de l'élément
// Lorsque l'utilisateur commence à cliquer
element.addEventListener('mousedown', (event) => {
isDragging = true; // Active le mode déplacement
// Calculer l'écart entre le curseur et le coin supérieur gauche de l'élément
offsetX = event.clientX - element.offsetLeft;
offsetY = event.clientY - element.offsetTop;
// Ajouter une classe pour styliser l'élément en déplacement (optionnel)
element.classList.add('dragging');
});
element.addEventListener('mousedown', (e) => {
isDragging = true;
const rect = element.getBoundingClientRect();
offsetX = e.clientX - rect.left;
offsetY = e.clientY - rect.top;
element.style.zIndex = 1000;
});
document.addEventListener('mousemove', (e) => {
if (isDragging) {
let newX = e.clientX - offsetX;
let newY = e.clientY - offsetY;
element.style.left = `${newX}px`;
element.style.top = `${newY}px`;
}
});
document.addEventListener('mouseup', () => {
if (isDragging) {
isDragging = false;
element.style.zIndex = '';
const rect = element.getBoundingClientRect();
savePosition(element.id, rect.left, rect.top);
}
});
});
// Fonction pour démarrer le flux de la caméra
async function startCamera() {
try {
// Demander l'accès à la caméra de l'utilisateur
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
// Récupérer l'élément vidéo
const video = document.getElementById('video');
// Attacher le flux vidéo à l'élément <video>
video.srcObject = stream;
} catch (error) {
console.error("Erreur lors de l'accès à la caméra", error);
}
}
// Appeler la fonction pour démarrer la caméra
startCamera();