.pragma library .import "fonctions.js" as Fonctions // Permet d'utiliser les fonctions classiques ci-dessous... (cf https://doc.qt.io/qt-5/qtqml-javascript-imports.html ) const LANGUE_FR = 0; const LANGUE_EN = 1; const LANGUE_DE = 2; const LANGUE_ES = 3; const LANGUE_PT = 4; const LANGUE_NL = 5; const LANGUE_IT = 6; const LANGUE_LV = 7; // Lettonie const LANGUE_CA = 8; // Catalan //===================================================================================== // Fonctions : Renvoit le durée, en secondes, de l'une des périodes d'analyse prédéfinies. // Reçoit : La période d'analyse (0: 1 heure, 1: 24 heures, 2: 7 jours et 3: 30 jours) // Retour : La durée, en secondes //===================================================================================== function duree_periode_analyse(periode_analyse) { var duree; switch(periode_analyse) { default: case 0 : // 1 heure duree = (1 * 1 * 60 * 60); break; case 1 : // 24 heures duree = (1 * 24 * 60 * 60); break; case 2 : // 7 jours duree = (7 * 24 * 60 * 60); break; case 3 : // 30 jours duree = (30 * 24 * 60 * 60); break; } return(duree) } //===================================================================================== // Fonctions : Renvoit le nom de l'une des périodes d'analyse prédéfinies. // Reçoit : La période d'analyse (0: 1 heure, 1: 24 heures, 2: 7 jours et 3: 30 jours) // Retour : Le texte du nom //===================================================================================== function nom_periode_analyse(periode_analyse) { var nom; switch(periode_analyse) { default: case 0 : // 1 heure nom = qsTr("1 heure"); break; case 1 : // 24 heures nom = qsTr("24 heures"); break; case 2 : // 7 jours nom = qsTr("7 jours"); break; case 3 : // 30 jours nom = qsTr("30 jours"); break; } return(nom); } //===================================================================================== // Fonctions : Renvoit da date de début et de fin de l'intervalle en cours d'analyse. // Reçoit : La période d'analyse (0: 1 heure, 1: 24 heures, 2: 7 jours et 3: 30 jours) // La date de début et la date de fin en UTC au format JS // Le fuseau horaire et l'heure d'été en cours // Retour : La date de début et la date de fin en UTC au format JS mais ajustées à // la période en cours d'analyse. //===================================================================================== function ajustement_periode_analyse(periode_analyse, debut, fin, fuseau, heure_ete) { var date_debut, date_fin; // Passage en heure LOCALE pour effectuer les traitements : date_debut = date_courante(debut, fuseau, heure_ete); // En LOCALE date_fin = date_courante(fin, fuseau, heure_ete); // EN LOCALE // Ajustements à l'intervalle fini d'analyse : switch(periode_analyse) { default: case 0: // 1 heure date_debut.setMinutes(Math.trunc(date_debut.getMinutes() / 5) * 5); date_debut.setSeconds(0); date_fin.setMinutes(Math.trunc(date_fin.getMinutes() / 5) * 5); date_fin.setSeconds(0); break; case 1: // 24 heures date_debut.setMinutes(0); date_debut.setSeconds(0); date_fin.setMinutes(0); date_fin.setSeconds(0); break; case 2: // 7 jours date_debut.setHours(Math.trunc(date_debut.getHours() / 6) * 6); date_debut.setMinutes(0); date_debut.setSeconds(0); date_fin.setHours(Math.trunc(date_fin.getHours() / 6) * 6); date_fin.setMinutes(0); date_fin.setSeconds(0); break; case 3: // 30 jours date_debut.setHours(0); date_debut.setMinutes(0); date_debut.setSeconds(0); date_fin.setHours(0); date_fin.setMinutes(0); date_fin.setSeconds(0); break; } return { debut: date_utc(date_debut, fuseau, heure_ete), // Retour en UTC fin: date_utc(date_fin, fuseau, heure_ete) // Retour en UTC } } //===================================================================================== // Fonctions : Génère une chaine de la forme "hh:mm" en heure locale à partir des // heures et minutes UTC reçues en paramètre // Reçoit : Valeur de heures et minutes, fuseau horaire // Retour : La chaine sur 5 caractères "hh:mm' //===================================================================================== function conversion_heure_minutes_locales(hr, mn, fuseau, heure_ete) { var retour; var today = new Date; var date = new Date(today.getFullYear(), today.getMonth(), today.getDate(), hr, mn, 0); date = date_add_secondes(date, ((fuseau + heure_ete) * 60 * 60)); // Correction du fuseau horaire pour l'affichage retour = Fonctions.format_deux_digits(date.getHours(), '0') + ":" + Fonctions.format_deux_digits(date.getMinutes(), '0'); //console.log("Valeur reçue Hr=" + hr + " et min=" + mn + " et chaine de retour =" + retour); return(retour) } //===================================================================================== // Fonctions : Génère la date du moment ou convertit une date existante en tenant // compte du fuseau horaire reçu // Reçoit : La date à convertir au format JS (ou NULL si on veut la date courante), le fuseau, et le décalage heure Eté/Hiver // Retour : La date dans le fuseau et avec décalage Eté/Hiver, au format JS //===================================================================================== function date_courante(dt, fuseau, heure_ete) { var date; if (dt === null) { date = new Date; date = date_add_secondes(date, ((fuseau + heure_ete) * 60 * 60)); // Correction du fuseau horaire pour l'affichage return(date); } else { date = date_add_secondes(dt, ((fuseau + heure_ete) * 60 * 60)); // Correction du fuseau horaire pour l'affichage return(date); } } //===================================================================================== // Fonctions : Convertit une date existante en UTC // Reçoit : La date à convertir au format JS, le fuseau, et le décalage heure Eté/Hiver // Retour : La date UTC, au format JS //===================================================================================== function date_utc(dt, fuseau, heure_ete) { var date; if (dt === null) return (null); date = date_add_secondes(dt, -((fuseau + heure_ete) * 60 * 60)); // Correction du fuseau horaire et de l'heure Ete/Hiver return(date); } //===================================================================================== // Fonctions : Convertit une valeur d'heure en une chaine dépendant de la langue // Reçoit : La valeur d'heure, entre 00 et 23, ou 24 (fin de nuit), 25 (aube nautique), // 26 (aube), 27 (lever du soleil), 28 (zénith), 29 (coucher du soleil), // 30 (crépuscule), 31 (crépuscule nautique) ou 32 (début de nuit). // Et la valeur de minutes, entre 00 et 59, ou 60 (aucune minute à retourner) // Retour : La chaine //===================================================================================== function nom_heure(heure, minute) { var chaine_h; var chaine_m; var texte_heures_speciales = [qsTr("Fin de nuit"), qsTr("Aube nautique"), qsTr("Aube"), qsTr("Lever du soleil"), qsTr("Zénith"), qsTr("Coucher du soleil"), qsTr("Crépuscule"), qsTr("Crépuscule nautique"), qsTr("Début de nuit")]; if ((heure < 0) || (heure > 32)) return("---"); if (heure < 24) { chaine_h = qsTr("%1h").arg(((heure<10) ? "0" + heure : "" + heure)); chaine_m = "" + ((minute<10) ? "0" + minute : "" + minute); // On ne renvoit les minutes que si l'on n'est pas sur une heure spéciale. } else { chaine_h = texte_heures_speciales[heure - 24]; chaine_m = ""; } return (chaine_h + chaine_m); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'hh:mm:ss' // Reçoit : La date à convertir // Retour : La chaine //===================================================================================== function chaine_heure(date) { var retour; var heures = date.getHours(); var minutes = date.getMinutes(); var secondes = date.getSeconds(); retour = (heures <= 9) ? "0" + heures : heures; retour += ":"; retour += (minutes <= 9) ? "0" + minutes : minutes; retour += ":"; retour += (secondes <= 9) ? "0" + secondes : secondes; return (retour); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'hh:mm' // Reçoit : La date à convertir // Retour : La chaine //===================================================================================== function chaine_heure_courte(date) { var retour; var heures = date.getHours(); var minutes = date.getMinutes(); retour = (heures <= 9) ? "0" + heures : heures; retour += ":"; retour += (minutes <= 9) ? "0" + minutes : minutes; return (retour); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'dd/MM hh:mm' // Reçoit : La date à convertir // Retour : La chaine //===================================================================================== function chaine_date_heure_courte(date) { var retour; var mois = date.getMonth() + 1; // Les mois commencent à 0 var jour = date.getDate(); var heures = date.getHours(); var minutes = date.getMinutes(); retour = (jour <= 9) ? "0" + jour : jour; retour += "/"; retour += (mois <= 9) ? "0" + mois : mois ; retour += " "; retour += (heures <= 9) ? "0" + heures : heures; retour += ":"; retour += (minutes <= 9) ? "0" + minutes : minutes; return (retour); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'JJ/MM/AAAA' // Reçoit : La date à convertir // Retour : La chaine //===================================================================================== function chaine_date(date) { var retour; var annee = date.getFullYear(); var mois = date.getMonth() + 1; // Les mois commencent à 0 var jour = date.getDate(); retour = (jour <= 9) ? "0" + jour : jour; retour += "/"; retour += (mois <= 9) ? "0" + mois : mois ; retour += "/"; retour += annee; return (retour); } //===================================================================================== // Fonctions : Convertit un n° de jour (1=lundi, 7=dimanche, 8=tous les jours) en une // chaine de jour de la semaine dépendant de la langue // Reçoit : Le n° du jour // Retour : La chaine //===================================================================================== function nom_jour_semaine(no) { var textes_jour_semaine = [qsTr("Lundi"), qsTr("Mardi"), qsTr("Mercredi"), qsTr("Jeudi"), qsTr("Vendredi"), qsTr("Samedi"), qsTr("Dimanche"), qsTr("Tous les jours")]; if ((no < 1) || (no > 8)) return("---"); return (textes_jour_semaine[(no - 1)]); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine de jour de la seamine dépendant de la langue // Reçoit : La date // Retour : La chaine //===================================================================================== function chaine_jour_semaine(date) { var jour_semaine = date.getDay(); if (jour_semaine === 0) jour_semaine = 7; return (nom_jour_semaine(jour_semaine)); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'JJ/MM/AAAA' // ou sa version correspondante au pays // Reçoit : La date à convertir, le code langue (de 1 à N - Cf 'fonctions_localisation.js') // Retour : La chaine //===================================================================================== function chaine_date_longue(date, langue) { var retour = ""; var texte_jour = ""; var annee = date.getFullYear(); var mois = date.getMonth() + 1; // Les mois commencent à 0 var jour = date.getDate(); var jour_semaine = date.getDay(); var textes_mois = [qsTr("janvier"), qsTr("février"), qsTr("mars"), qsTr("avril"), qsTr("mai"), qsTr("juin"), qsTr("juillet"), qsTr("août"), qsTr("septembre"), qsTr("octobre"), qsTr("novembre"), qsTr("décembre")]; switch(langue) { //-------------------------------------------------------- default: // Mise en forme n° du jour : if (jour === 1) texte_jour = "1er"; else if ((jour > 1) && (jour <= 9)) texte_jour = "0" + jour; else texte_jour = jour; retour += texte_jour; retour += ' '; retour += textes_mois[mois - 1]; retour += ' '; retour += annee; break; //--------------------------------------------------------- case LANGUE_EN: // Mise en forme n° du jour : if ((jour === 1) || (jour === 21) || (jour === 31)) texte_jour = jour + "st"; else if ((jour === 1) || (jour === 22)) texte_jour = jour + "nd"; else if ((jour === 3) || (jour === 23)) texte_jour = jour + "rd"; else texte_jour = jour + "th"; retour += texte_jour; retour += ' '; retour += textes_mois[mois - 1]; retour += ' '; retour += annee; break; //--------------------------------------------------------- case LANGUE_DE: // Mise en forme n° du jour : texte_jour = jour + "."; retour += texte_jour; retour += ' '; retour += textes_mois[mois - 1]; retour += ' '; retour += annee; break; } return (retour); } //===================================================================================== // Fonctions : Convertit une date au format JS en une chaine au format 'YYY-MM-dd hh:mm:ss' // Reçoit : La date à convertir // Retour : La chaine //===================================================================================== function chaine_date_heure_bdd(date) { var retour; var annee = date.getFullYear(); var mois = date.getMonth() + 1; // Les mois commencent à 0 var jour = date.getDate(); var heures = date.getHours(); var minutes = date.getMinutes(); var secondes = date.getSeconds(); retour = annee; retour += "-"; retour += (mois <= 9) ? "0" + mois : mois; retour += "-"; retour += (jour <= 9) ? "0" + jour : jour; retour += " "; retour += (heures <= 9) ? "0" + heures : heures; retour += ":"; retour += (minutes <= 9) ? "0" + minutes : minutes; retour += ":"; retour += (secondes <= 9) ? "0" + secondes : secondes; return (retour); } //===================================================================================== // Fonctions : Convertit la date au format JS reçue en une chaine au format 'YYMMdd_hhmmss' // Reçoit : La date au format JS à convertir // Retour : La chaine //===================================================================================== function chaine_date_heure_fichier(date) { var retour; var annee = date.getYear(); // Sur 2 digits var mois = date.getMonth() + 1; // Les mois commencent à 0 var jour = date.getDate(); var heures = date.getHours(); var minutes = date.getMinutes(); var secondes = date.getSeconds(); retour = annee; retour += (mois <= 9) ? "0" + mois : mois; retour += (jour <= 9) ? "0" + jour : jour; retour += "_"; retour += (heures <= 9) ? "0" + heures : heures; retour += (minutes <= 9) ? "0" + minutes : minutes; retour += (secondes <= 9) ? "0" + secondes : secondes; return (retour); } //===================================================================================== // Fonctions : Convertit une chaine provenant de la BDD ('YYY-MM-ddThh:mm:ss.000') en // une date au format JS // Reçoit : La chaine à convertir // Retour : La date //===================================================================================== function chaine_bdd_date_heure(chaine_date) { var t, result = null; if (typeof chaine_date === 'string') { t = chaine_date.split(/[-:.T ]/); // On coupe la chaine initiale en recherchant les '-', ':', '.', ' ' et 'T' // console.log(t[0] + "/" + t[1] + "/" + t[2] + "//" + t[3] + "/" + t[4] + "/" + t[5]); result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0); //when t[3], t[4] and t[5] are missing they defaults to zero } else console.log("Le type reçu dans la fonction 'chaine_bdd_date_heure' n'est pas correct"); return result; } //===================================================================================== // Fonctions : Ajoute une quantité de secondes à une date. Si le nombre de secondes est // négatif, il s'agit d'une soustraction... // Reçoit : La date à convertir et le nombre de secondes à ajouter // Retour : La nouvelle date //===================================================================================== function date_add_secondes(date, secondes) { var date_retour = new Date(); date_retour.setTime(date.getTime() + (secondes *1000)); return(date_retour); } //===================================================================================== // Fonctions : Convertir une valeur en ms en une chaine de durée (jour-heures-minutes-secondes) // Reçoit : Le nombre à convertir // Retour : La chaine de durée //===================================================================================== function chaine_duree(duree) { var x; duree = Math.abs(duree); // Si la valeur est négative, on prend la valeur absolue (évite les erreurs...) var secondes = Math.trunc(duree / 1000); // Passage de ms en s var minutes = Math.trunc(secondes/60); var heures = Math.trunc(minutes/60); var jours = Math.trunc(heures/24); secondes = secondes % 60; minutes = minutes % 60; heures = heures % 24; if (jours !== 0) return(qsTr(jours + " jours," + heures + " heures")); else if (heures !== 0) return(qsTr(heures + " heures, " + minutes + " mins")); else if (minutes !== 0) return(qsTr(minutes + " mins, " + secondes + " secs")); else if (secondes !== 0) return(qsTr(secondes + " secondes")); else return("---") }