| CSS personnalisé |
.headerInfos {
display: flex;
justify-content: space-between; /* Pour espacer les éléments */
margin: 5px;
}
.divDate {
order: 1;
display: flex; /* Utilisation de flexbox pour aligner les éléments verticalement */
align-items: center; /* Alignement vertical au centre */
}
.divDate, .meteo {
background-color: rgba(15, 72, 171, 0.381);
border-radius: 5px; /* Coins arrondis */
box-shadow: inset 0 1px 2px 0 rgba(152, 152, 152, 0.461);
padding: 5px 10px; /* Padding de 10px à gauche et à droite */
align-items: left;
}
.horloge,
.ladate {
display: inline-block; /* Affichage en ligne pour positionner les éléments côte à côte */
margin-right: 5px; /* Marge entre les éléments */
}
.ladate span {
display: block; /* Affichage en bloc pour le span contenant le nom du jour */
/* Supprimer la marge entre le span et le reste du texte */
margin-bottom: 0; /* Ajustement pour supprimer l'espacement */
}
.horloge {
font-size: 2.5em;
}
.temperature {
font-size: 2.5em;
}
.horloge, .ladate,.temperature {
font-weight: normal;
}
.meteo {
order: 2;
display: flex;
flex-direction: column;
}
.ville-temp-container {
display: flex;
justify-content: space-between;
}
.temperature {
padding-right: 50px;
}
.icon {
margin-top: 0px;
}
.horloge,
.ladate, .temperature, .ville, .description {
color: rgb(216, 216, 216);
}
span.ville {
padding-right: 10px;
}
|
|
| JavaScript personnalisé |
// ********* AJOUT WIDGET DATE/HEURE ET METEO
const sortableElement = document.querySelector('.appheader');
function insertAfter(referenceNode, newNode) {
referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}
function createAndInsertDiv(className, referenceNode) {
var newDiv = document.createElement("div");
newDiv.classList.add(className);
referenceNode.appendChild(newDiv);
return newDiv;
}
if (sortableElement) {
// Création de la div parente 'headerInfos'
var headerInfos = document.createElement('div');
headerInfos.classList.add('headerInfos');
insertAfter(sortableElement, headerInfos);
// Création de la div 'divDate' à l'intérieur de 'headerInfos'
var divDate = createAndInsertDiv('divDate', headerInfos);
// Création des éléments <div> pour la date et l'heure à l'intérieur de 'divDate'
var timeDiv = createAndInsertDiv('horloge', divDate);
var dateDiv = createAndInsertDiv('ladate', divDate);
// Création de la div 'meteo' à l'intérieur de 'headerInfos'
var meteoDiv = createAndInsertDiv('meteo', headerInfos);
function afficherDateHeure() {
const maintenant = new Date();
const optionsJour = {
weekday: 'long'
};
const optionsHeure = {
hour: 'numeric',
minute: 'numeric'
};
const optionsDate = {
year: 'numeric',
month: 'long',
day: 'numeric'
};
const jourFormatted = maintenant.toLocaleDateString(undefined, optionsJour);
const dateFormatted = maintenant.toLocaleDateString(undefined, optionsDate);
const heureFormatted = maintenant.toLocaleTimeString(undefined, optionsHeure);
// Effacer le contenu des éléments pour éviter l'accumulation des éléments
dateDiv.innerHTML = '';
// Insérer le jour de la semaine dans la balise <span> de la classe '.ladate'
var spanJourSemaine = document.createElement('span');
spanJourSemaine.textContent = jourFormatted;
dateDiv.appendChild(spanJourSemaine);
// Insérer l'heure sans les secondes dans '.horloge'
timeDiv.textContent = heureFormatted;
// Insérer le reste de la date en dehors de la balise <span>
dateDiv.appendChild(document.createTextNode(dateFormatted));
}
function afficherMeteo(latitude, longitude) {
const apiKey = 'b5407bb02b4cdbe89463d85a331da20d'; // Remplacez ceci par votre clé API OpenWeatherMap
fetch(`https://api.openweathermap.org/data/2.5/weather?lat=${latitude}&lon=${longitude}&appid=${apiKey}&units=metric&lang=fr`)
.then(response => response.json())
.then(data => {
const temperature = Math.round(data.main.temp); // Arrondir la température à l'entier le plus proche
const ville = data.name;
const icon = data.weather[0].icon;
const description = data.weather[0].description;
// Affichage de la météo dans la div 'meteo'
meteoDiv.innerHTML = `<div class="ville-temp-container"><div class="temperature">${temperature}°C</div><div class="icon"><img src="http://openweathermap.org/img/wn/${icon}.png"></div></div><div class="ville-temp-container"><span class="ville">${ville}</span><span class="description">${description}</span</div>`;
})
.catch(error => {
console.error('Erreur lors de la récupération des données météo', error);
meteoDiv.textContent = 'Impossible de récupérer les données météo';
});
}
// Obtenir la géolocalisation de l'utilisateur (exemple ici avec une valeur statique)
const latitude = 48.6944; // Latitude de la ville (exemple pour Paris)
const longitude = 1.8564; // Longitude de la ville (exemple pour Paris)
// Appel initial pour afficher la date, l'heure et la météo
afficherDateHeure();
afficherMeteo(latitude, longitude);
// Mettre à jour l'heure toutes les secondes
setInterval(afficherDateHeure, 1000);
}
// ********* AJOUT TRIE AUTO DES TAGS
// you would change the variable startMenu to the tag that you would like to start on. I start my menu on the 'Home Servers' tag, so I would change "const startMenu = 'change-me'" to "const startMenu = 'Home Servers'". If you don't change anything and run the script as is, you would start on the 'Home dashboard' tag, and the ALL tag will be gone.
$(document).ready(function () {
const startMenu = 'change-me';
let setTag = '';
if (startMenu === 'change-me') {
setTag = '0-dash';
} else {
setTag = startMenu.replace(/[^a-zA-Z0-9\s]/g, '').split(' ').join('-').toLowerCase();
}
const currentTag = document.querySelector("[data-tag=all]");
const startTag = document.querySelector("[data-tag=tag-" + setTag + "]");
currentTag.classList.remove('current');
startTag.classList.add('current');
startTag.click();
const menuItems = document.querySelectorAll("section");
for (items of menuItems) {
if (!items.classList.contains('tag-' + setTag)) {
items.setAttribute("style", "display: none;");
}
}
currentTag.remove();
});
|
|