Files
shipheart-qt/config_batterie.qml
T

1999 lines
101 KiB
QML

//========================================================================================================================================================================
// CONFIG_BATTERIE.QML
// Ce fichier traite la configuration d'une batterie. La page permet notamment de :
// - Modifier la config de la batterie (ou de la créer la première fois),
// - Supprimer la batterie
// La page est appelée depuis la page config_batteries_1, en cliquant sur la batterie à modifier (ou sur le '+' en vue de sa création)
//========================================================================================================================================================================
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQml.Models
import qt.koriolan.shipheart 1.0
import"fonctions.js" as Fonctions
import"fonctions_batteries.js" as Fonctions_batteries
Shipheart_page {
id: page_config_batterie
// Mis en forme :
readonly property double pourcentage_largeur_colonne_gauche: 0.75
readonly property double espace_colonnes_principales: 20
readonly property double pourcentage_hauteur_ligne_haut: 1
readonly property double espace_lignes_principales: 20
readonly property double affichage_hauteur_utile: shipheart_hauteur_page - shipheart_hauteur_bandeau_haut - shipheart_hauteur_bandeau_bas
readonly property int hauteur_ligne_formulaire: 60
readonly property double pourcentage_largeur_labels_formulaire: 0.5
readonly property double pourcentage_largeur_unites_formulaire: 0.1
readonly property int hauteur_bouton_droit: 80
readonly property double pourcentage_bandeau_bas_largeur_zone_retour: 1
readonly property int periode_init_raffraichissement_parametres: 1 // En ms
readonly property int periode_raffraichissement_parametres: 1000 // En ms
readonly property int step_timer_appui_long: 30 // en ms
readonly property int type_boite_information_alerte_changement_type: 0
readonly property int type_boite_information_alerte_changement_tension: 1
readonly property int type_boite_information_supprimer: 2
// Affichage :
property int valeur_timer_appui_long: 0
property bool mouvement_entrees_batterie_grid_en_cours: false
property bool affichage_avance: false
// Données :
property int id_batterie: 0
property int adresse_module: 0 // Contient l'adresse du module supportant la ou les entrées affectées à cette batterie
property int type_entrees: 0
property int type_entrees_init: 0
property int no_entree: 0
property int no_entree_init: 0
property int tension_nominale: 0
property int tension_nominale_init: 0
property int type_batterie: 0 // Devrait s'appeler 'type' par homogénéité vs les champs de BDD mais pb de compatibilité avec la propriété 'type' de Shipheart_boite_dialogue'...
property int type_batterie_init: 0 // Idem...
property int id_famille: 0
// Modèles :
// Note : les modèles chargés dans 'main.qml' n'ont pas à être rechargés dans les pages suivantes
//===========================================================
// Timer periode raffraichissement parametres :
//===========================================================
Timer {
id: timer_raffraichissement_parametres
interval: periode_init_raffraichissement_parametres
triggeredOnStart: false
running: true
repeat: true
onTriggered: {
if (interval == periode_init_raffraichissement_parametres) { // Premier passage, 1ms après le premier chargement
interval = periode_raffraichissement_parametres;
init_page();
}
else
{
}
}
}
//===========================================================
// Timer pour gérer les appuis longs :
//===========================================================
Timer {
id: timer_appui_long
interval: step_timer_appui_long
triggeredOnStart: false
repeat: true
onTriggered: {
if (valeur_timer_appui_long < shipheart_mouse_press_and_hold_interval_tres_long) valeur_timer_appui_long+= step_timer_appui_long;
else // Le fait de ne pas utilise le OnPressandHold permet d'être sût que la sortie se fait au même moment que la fin du comptage (sinon, on peut avoir de petits décalages)
{
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
if (mousearea_forcer_pleine_charge.pressed) forcer_pleine_charge();
if (mousearea_reset_soh.pressed) reset_soh();
if (mousearea_reset_compteur.pressed) reset_compteurs();
if (mousearea_bouton_supprimer.pressed)
{
if (check_avant_suppression() !== -1)
{
suppression_batterie();
timer_tempo_reconfiguration.restart(); // Lancement du timer pour attendre la fin de la reconfiguration
}
}
}
}
}
//===========================================================
// Lorsque la page est sur le point d'être affichée dans la pile :
//===========================================================
StackView.onActivating: {
// Relecture de la résistance interne pour le cas où l'on reviendrait d'une phase d'étalonnage :
var res;
res = bdd.requete_unique('SELECT Resistance_interne FROM TB_Batteries WHERE Cle_primaire=' + id_batterie + ' ');
champ_formulaire_Resistance_interne.text = Number(res[0]);
}
// Titre de la page :
Shipheart_titre_1 {titre: (id_batterie === 0) ? qsTr("Création d'un parc de batteries") : qsTr("Configuration du parc de batteries"); hauteur: shipheart_hauteur_bandeau_haut}
//-------------------------------------------------------
// Ecran Haut - Gauche :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_haut_gauche
x: 0
y: shipheart_hauteur_bandeau_haut;
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: (affichage_hauteur_utile * pourcentage_hauteur_ligne_haut) - (espace_lignes_principales / 2);
color: "transparent"
ListView {
id: grille_principale
width: parent.width
height: parent.height
snapMode: GridView.SnapToRow // L'arret de l'affichage se fera sur une rangée entière
clip: true // Nécessaire pour que les Delegates s'arretent à l'intérieur de la GridView
model: modele_grille_principale
footer: Rectangle { // Permet de dégager la place suffisante en fin de GridView pour accéder même au dernier élément lorsque que clavier est déplié
height: shipheart_hauteur_clavier
color: "transparent"
}
ObjectModel {
id: modele_grille_principale
//-------------------------------------------------------------------------------
// Ligne de formulaire : Nom
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
Shipheart_formulaire_label {
text: qsTr("Nom de la batterie")
width: parent.width * pourcentage_largeur_labels_formulaire
couleur: (champ_formulaire_Nom.text !== "")
? shipheart_formulaire_couleur_texte_par_defaut
: shipheart_formulaire_couleur_texte_en_erreur
}
Shipheart_formulaire_textfield {
id: champ_formulaire_Nom
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Famille
Rectangle {
id: ligne_famille
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
Shipheart_formulaire_label {
text: qsTr("Groupe de batteries")
width: parent.width * pourcentage_largeur_labels_formulaire
couleur: (champ_formulaire_Famille.currentIndex !== 0)
? shipheart_formulaire_couleur_texte_par_defaut
: shipheart_formulaire_couleur_texte_en_erreur
}
Shipheart_formulaire_combobox {
id: champ_formulaire_Famille
model: ListModel { }
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
onActivated: {
shipheart_clic();
id_famille = champ_formulaire_Famille.model.get(champ_formulaire_Famille.currentIndex).valeur;
}
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Type d'entrées
Rectangle {
width: parent.width
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (champ_formulaire_Famille.currentIndex !== 0)
Shipheart_formulaire_label {
text: qsTr("Point de mesure")
width: parent.width * pourcentage_largeur_labels_formulaire
couleur: (champ_formulaire_Type_entrees.currentIndex !== 0)
? shipheart_formulaire_couleur_texte_par_defaut
: shipheart_formulaire_couleur_texte_en_erreur
}
Shipheart_formulaire_combobox {
id: champ_formulaire_Type_entrees
model: ListModel { }
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
onActivated: {
shipheart_clic();
adresse_module = champ_formulaire_Type_entrees.model.get(champ_formulaire_Type_entrees.currentIndex).module;
type_entrees = champ_formulaire_Type_entrees.model.get(champ_formulaire_Type_entrees.currentIndex).type;
no_entree = champ_formulaire_Type_entrees.model.get(champ_formulaire_Type_entrees.currentIndex).no;
if (model.get(currentIndex).type === 0) affichage_avance = false; // Dévalide le mode avancé si on revient à un état inconnu...
}
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Type (de batterie)
Rectangle {
width: parent.width
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (champ_formulaire_Type_entrees.currentIndex !== 0)
Shipheart_formulaire_label {
text: qsTr("Type de batterie(s)")
width: parent.width * pourcentage_largeur_labels_formulaire
couleur: (champ_formulaire_Type.currentIndex !== 0)
? shipheart_formulaire_couleur_texte_par_defaut
: shipheart_formulaire_couleur_texte_en_erreur
}
Shipheart_formulaire_combobox {
id: champ_formulaire_Type
model: ListModel { }
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
onActivated: {
shipheart_clic();
if (model.get(currentIndex).valeur === 0) affichage_avance = false; // Dévalide le mode avancé si on revient à un état inconnu...
if ((id_batterie !== 0) && // Si on n'est pas en phase de création...
(model.get(currentIndex).valeur !== type_batterie) && // ... et qu'on change le type...
(model.get(currentIndex).valeur !== 0)) // ... et que la nouvelle valeur n'est pas "non définie"
{
shipheart_clic();
boite_information.niveau = 1
boite_information.imageTitreSource = "/images/attention.png"
boite_information.message = qsTr("La modification du <b>type</b> de batterie(s) va nécessiter la remise en <i>configuration usine</i> de certains paramètres.<br /><br />Si vous ne souhaitez pas que cette reconfiguration soit effectuée, notamment si vous avez effectué des réglages spécifiques, cliquez sur ANNULER. <br /><br />Sinon, cliquez sur CONFIRMER pour valider le changement.");
boite_information.boutonOkTexte = qsTr("Confirmer")
boite_information.boutonAnnuler = true
boite_information.type = type_boite_information_alerte_changement_type;
boite_information.open();
}
else // Sinon, on prend immédiatement en compte le changement :
{
if (model.get(currentIndex).valeur !== 0) // Dans le cas où on passe à "Non défini", on ne traite rien et on garde la valeur précédente (aisni, si on revient ensuite sur la version initiale, on n'affichera pas le message d'alerte...)
{
type_batterie = model.get(currentIndex).valeur;
maj_valeurs_par_defaut_type_batterie();
}
}
}
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Tension_nominale
Rectangle {
width: parent.width
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (champ_formulaire_Type_entrees.currentIndex !== 0) && (champ_formulaire_Type.currentIndex !== 0)
Shipheart_formulaire_label {
text: qsTr("Tension nominale")
width: parent.width * pourcentage_largeur_labels_formulaire
couleur: (champ_formulaire_Tension_nominale.currentIndex !== 0)
? shipheart_formulaire_couleur_texte_par_defaut
: shipheart_formulaire_couleur_texte_en_erreur
}
Shipheart_formulaire_combobox {
id: champ_formulaire_Tension_nominale
model: ListModel { }
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
onActivated: {
shipheart_clic();
if (model.get(currentIndex).valeur === 0) affichage_avance = false; // Dévalide le mode avancé si on revient à un état inconnu...
if ((id_batterie !== 0) && // Si on n'est pas en phase de création...
(model.get(currentIndex).valeur !== tension_nominale) && // ... et qu'on change la tension nominale...
(model.get(currentIndex).valeur !== 0)) // ... et que la nouvelle valeur n'est pas "non définie"
{
shipheart_clic();
boite_information.niveau = 1
boite_information.imageTitreSource = "/images/attention.png"
boite_information.message = qsTr("La modification de la <b>tension nominale</b> du parc de batteries va nécessiter la remise en <i>configuration usine</i> de certains paramètres.<br /><br />Si vous ne souhaitez pas que cette reconfiguration soit effectuée, notamment si vous avez effectué des réglages spécifiques, cliquez sur ANNULER. <br /><br />Sinon, cliquez sur CONFIRMER pour valider le changement.");
boite_information.boutonOkTexte = qsTr("Confirmer")
boite_information.boutonAnnuler = true
boite_information.type = type_boite_information_alerte_changement_tension;
boite_information.open();
}
else // Sinon, on prend immédiatement en compte le changement :
{
if (model.get(currentIndex).valeur !== 0) // Dans le cas où on passe à "Non défini", on ne traite rien et on garde la valeur précédente (aisni, si on revient ensuite sur la version initiale, on n'affichera pas le message d'alerte...)
{
tension_nominale = champ_formulaire_Tension_nominale.model.get(champ_formulaire_Tension_nominale.currentIndex).valeur;
}
}
}
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Capacite_1
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (champ_formulaire_Type_entrees.currentIndex !== 0) &&
(champ_formulaire_Type.currentIndex !== 0) &&
(champ_formulaire_Tension_nominale.currentIndex !== 0)
// && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Capacité")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Capacite_1
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("Ah")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//==============================================================================
// Bouton "Affichage avancé" :
//==============================================================================-
Rectangle {
id: bouton_affichage_avance
width: parent.width
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (champ_formulaire_Type_entrees.currentIndex !== 0) &&
(champ_formulaire_Type.currentIndex !== 0) &&
(champ_formulaire_Tension_nominale.currentIndex !== 0)
Shipheart_formulaire_bouton {
titre: (affichage_avance) ? qsTr("Masquer les paramètres avancés") : qsTr("Afficher les paramètres avancés")
actif: false
affichage_fleche : true
fleche_haut: affichage_avance
couleur_titre: couleur_gris_moyen
gras_titre: true
width: parent.width
MouseArea{
anchors.fill : parent
onClicked: {
if (affichage_avance) affichage_avance = false;
else affichage_avance = true;
}
}
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//==============================================================================
//-------------------------------------------------------------------------------
// Ligne de formulaire : Tension_gain
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees !== shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Coefficient correcteur d'entrée de tension")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Tension_gain
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
Shipheart_titre_2 {titre: qsTr("Caractéristiques du parc de batteries"); visible: affichage_avance && (type_entrees === shipheart_batteries_type_entrees_ibs)}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Heures_capacite_1
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Durée correspondant à la capacité")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Heures_capacite_1
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("h")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Capacite_2
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
// visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
visible: false
Shipheart_formulaire_label { // Label :
text: qsTr("Capacité 2")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Capacite_2
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("Ah")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Heures_capacite_2
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
// visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
visible: false
Shipheart_formulaire_label { // Label :
text: qsTr("Durée de capacité 2")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Heures_capacite_2
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("h")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Coeff_peukert
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Coefficient de Peukert")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Coeff_peukert
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Résistance_interne
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Résistance interne")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Resistance_interne
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("mΩ")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Soh
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label {
text: qsTr("Soh actuel")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_valeur_fixe {
id: champ_formulaire_Soh
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("%")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
Shipheart_titre_2 {titre: qsTr("Paramètres de pleine charge"); visible: affichage_avance && (type_entrees === shipheart_batteries_type_entrees_ibs)}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Tension_pleine_charge
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Tension mini pleine charge")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Tension_pleine_charge
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("V")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Courant_pleine_charge
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Courant maxi pleine charge")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Courant_pleine_charge
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("A")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Temporisation_pleine_charge
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Temporisation pleine charge")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Temporisation_pleine_charge
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("s")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Efficacite_charge
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Efficacité de charge")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Efficacite_charge
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
Shipheart_titre_2 {titre: qsTr("Caractéristiques de charge nulle"); visible: affichage_avance && (type_entrees === shipheart_batteries_type_entrees_ibs)}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Tension_charge_nulle
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Tension de détection charge nulle")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Tension_charge_nulle
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("V")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Temporisation_charge_nulle
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label { // Label :
text: qsTr("Temporisation charge nulle")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_textfield { // Champ de saisie :
id: champ_formulaire_Temporisation_charge_nulle
width: parent.width * (1 - pourcentage_largeur_labels_formulaire - pourcentage_largeur_unites_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
flag_num_only: true
}
Shipheart_formulaire_unite { // Unités :
text: qsTr("s")
width: parent.width * pourcentage_largeur_unites_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
Shipheart_titre_2 {titre: qsTr("Historique"); visible: affichage_avance && (type_entrees === shipheart_batteries_type_entrees_ibs)}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Nombre_cycles
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label {
text: qsTr("Nombre de cycles de charge")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_valeur_fixe {
id: champ_formulaire_Nombre_cycles
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
//-------------------------------------------------------------------------------
// Ligne de formulaire : Nombre_decharges_completes
Rectangle {
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: visible ? hauteur_ligne_formulaire : 0
color: "transparent"
visible: (affichage_avance) && (type_entrees === shipheart_batteries_type_entrees_ibs)
Shipheart_formulaire_label {
text: qsTr("Nombre de décharges complètes")
width: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_valeur_fixe {
id: champ_formulaire_Nombre_decharges_completes
width: parent.width * (1 - pourcentage_largeur_labels_formulaire)
x: parent.width * pourcentage_largeur_labels_formulaire
}
Shipheart_formulaire_ligne_separation {
haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse
}
}
}
}
}
//-------------------------------------------------------
// Ecran Droite :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_droite
x: zone_affichage_haut_gauche.width + espace_colonnes_principales
y: shipheart_hauteur_bandeau_haut;
width: (shipheart_largeur_page * (1 - pourcentage_largeur_colonne_gauche)) - (espace_colonnes_principales / 2)
height: (affichage_hauteur_utile * pourcentage_hauteur_ligne_haut) - (espace_lignes_principales / 2);
color: "transparent"
Column {
anchors.fill: parent
spacing: 10
//.......................................................
// Bouton Enregistrer/créer
//.......................................................
Rectangle {
id: bouton_enregistrer_creer
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible:
// (! clavier.active) && // Si le clavier est n'est PAS déplié... // SDIR #255
(champ_formulaire_Nom.text !== "") && // Si le nom n'est PAS vide...
(id_famille !== 0) && // Si la famille est définie...
(type_entrees !== 0) && // Si le type d'entrées EST défini...
(type_batterie != 0) && // Si le type de batterie (plomb, Li,...) est défini...
(tension_nominale !== 0) // et si la tension (12/24V) est définie.
Text {
anchors.centerIn: parent
font.pixelSize: 20
text: (id_batterie === 0) ? qsTr("Créer la batterie") : qsTr("Enregistrer")
color: couleur_blanc_casse
}
MouseArea {
anchors.fill: parent
onClicked: {
shipheart_clic();
if (id_batterie !== 0) mise_a_jour_batterie(); // Mise à jour des données saisies dans la BDD et reconfiguration par l'application pour prise en compte.
else creation_batterie();
timer_tempo_reconfiguration.restart();
}
}
}
//.......................................................
// Bouton de suppression
//.......................................................
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: (! clavier.active) && (id_batterie !== 0)
Rectangle { // Barre grandissante pour montrer durée d'appui vs tempo nécessaire :
width: (valeur_timer_appui_long / shipheart_mouse_press_and_hold_interval_tres_long) * parent.width
height: parent.height
color: couleur_rouge_transparent
radius: shipheart_rayon_bouton
visible: mousearea_bouton_supprimer.pressed
}
Text {
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
font.pixelSize: 20
text: qsTr("Supprimer")
color: couleur_blanc_casse
}
MouseArea {
id: mousearea_bouton_supprimer
anchors.fill: parent
onPressed: { // Déclenché lors de l'appui inital
timer_appui_long.running = true;
valeur_timer_appui_long = 0;
shipheart_clic();
}
onClicked: { // Déclenché si l'appui n'a pas été suffisement long pour avoir un Press&Hold :
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
onExited: { // Déclenché si le doigt sort de la zone du bouton (sinon, on continue à compter alors qu'on est sorti de la zone et même relaché le doigt !!)
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
}
}
//.......................................................
// Bouton Forcer Pleine Charge
//.......................................................
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: (! clavier.active) && (id_batterie !== 0) && (affichage_avance)
Rectangle { // Barre grandissante pour montrer durée d'appui vs tempo nécessaire :
width: (valeur_timer_appui_long / shipheart_mouse_press_and_hold_interval_tres_long) * parent.width
height: parent.height
color: couleur_rouge_transparent
radius: shipheart_rayon_bouton
visible: mousearea_forcer_pleine_charge.pressed
}
Text {
anchors.centerIn: parent
font.pixelSize: 20
text: qsTr("Forcer Pleine Charge")
color: couleur_blanc_casse
}
MouseArea {
id: mousearea_forcer_pleine_charge
anchors.fill: parent
onPressed: { // Déclenché lors de l'appui inital
timer_appui_long.running = true;
valeur_timer_appui_long = 0;
shipheart_clic();
}
onClicked: { // Déclenché si l'appui n'a pas été suffisement long pour avoir un Press&Hold :
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
onExited: { // Déclenché si le doigt sort de la zone du bouton (sinon, on continue à compter alors qu'on est sorti de la zone et même relaché le doigt !!)
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
}
}
//.......................................................
// Bouton Reset SOH
//.......................................................
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: (! clavier.active) && (id_batterie !== 0) && (affichage_avance)
Rectangle { // Barre grandissante pour montrer durée d'appui vs tempo nécessaire :
width: (valeur_timer_appui_long / shipheart_mouse_press_and_hold_interval_tres_long) * parent.width
height: parent.height
color: couleur_rouge_transparent
radius: shipheart_rayon_bouton
visible: mousearea_reset_soh.pressed
}
Text {
anchors.centerIn: parent
font.pixelSize: 20
text: qsTr("Réinitialiser SOH")
color: couleur_blanc_casse
}
MouseArea {
id: mousearea_reset_soh
anchors.fill: parent
onPressed: { // Déclenché lors de l'appui inital
timer_appui_long.running = true;
valeur_timer_appui_long = 0;
shipheart_clic();
}
onClicked: { // Déclenché si l'appui n'a pas été suffisement long pour avoir un Press&Hold :
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
onExited: { // Déclenché si le doigt sort de la zone du bouton (sinon, on continue à compter alors qu'on est sorti de la zone et même relaché le doigt !!)
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
}
}
//.......................................................
// Bouton Reset compteurs
//.......................................................
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: (! clavier.active) && (id_batterie !== 0) && (affichage_avance)
Rectangle { // Barre grandissante pour montrer durée d'appui vs tempo nécessaire :
width: (valeur_timer_appui_long / shipheart_mouse_press_and_hold_interval_tres_long) * parent.width
height: parent.height
color: couleur_rouge_transparent
radius: shipheart_rayon_bouton
visible: mousearea_reset_compteur.pressed
}
Text {
anchors.centerIn: parent
font.pixelSize: 20
text: qsTr("Réinitialiser Compteurs")
color: couleur_blanc_casse
}
MouseArea {
id: mousearea_reset_compteur
anchors.fill: parent
onPressed: { // Déclenché lors de l'appui inital
timer_appui_long.running = true;
valeur_timer_appui_long = 0;
shipheart_clic();
}
onClicked: { // Déclenché si l'appui n'a pas été suffisement long pour avoir un Press&Hold :
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
onExited: { // Déclenché si le doigt sort de la zone du bouton (sinon, on continue à compter alors qu'on est sorti de la zone et même relaché le doigt !!)
timer_appui_long.running = false;
valeur_timer_appui_long = 0;
}
}
}
//.......................................................
// Bouton d'accès à l'étalonnage
//.......................................................
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: (! clavier.active) &&
(id_batterie !== 0) && // Si l'on est en création, inutile de proposer le bouton
(affichage_avance) && // Lors de la création, on ne propose pas d'étalonner (éviter de devoir s'adapter en permanence au remplissage en cours...
(tension_nominale === tension_nominale_init) // Si on a chnagé de tension nominale, on ne propose pas d'étalonner (avant d'enregitrer les changements)
Text {
anchors.centerIn: parent
font.pixelSize: 20
text: qsTr("Etalonner")
color: couleur_blanc_casse
}
MouseArea {
anchors.fill: parent
onClicked: {
shipheart_clic();
if (type_entrees !== shipheart_batteries_type_entrees_ibs)
{
stackView.push("config_valeurs_niveaux.qml", {"table": "TB_Batteries", "id": id_batterie})
}
else
{
stackView.push("etalonnage_carte.qml", {"adresse_module": champ_formulaire_Type_entrees.model.get(champ_formulaire_Type_entrees.currentIndex).module})
}
}
}
}
Timer {
id: timer_tempo_reconfiguration
interval: 250 // Cette tempo n'est utilisée que pour le premier cycle
triggeredOnStart: false
running: false
repeat: true
onTriggered: {
if (bdd.check_fin_configuration())
{
timer_tempo_reconfiguration.stop();
stackView.pop(); // Retour à la page de config des circuits
}
else timer_tempo_reconfiguration.interval = 100 // Tempo plus courte pour les lectures suivantes
}
}
}
}
//-------------------------------------------------------
// Bandeau bas :
//-------------------------------------------------------
Row {
x: 0
y: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas;
width: shipheart_largeur_page;
height: shipheart_hauteur_bandeau_bas;
padding: 5
spacing: 10
//.................................................
// Bouton retour
//.................................................
Rectangle {
id: bandeau_bas_zone_retour
width: (parent.width * pourcentage_bandeau_bas_largeur_zone_retour) - parent.leftPadding - (parent.spacing / 2)
height: shipheart_hauteur_bandeau_bas - parent.topPadding - parent.bottomPadding;
radius: shipheart_rayon_bouton
color: shipheart_couleur_fond_bouton
Image {
source: "/images/icone_retour.png"
sourceSize.height: 30
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
}
MouseArea { // Zone d'interaction. On est obligé de la mettre dans la grille pour que Rectangle et MouseArea soient frères ou parent/enfant ET qu'on n'occupe qu'un espace dans la grille.
id: mouse_area_bandeau_bas_zone_retour
anchors.fill: parent
onClicked: {
shipheart_clic();
stackView.pop()
}
}
}
}
//-------------------------------------------------------
// Boite de validation :
//-------------------------------------------------------
Shipheart_boite_dialogue {
id: boite_information
onClicked: {
//console.log("Le Bouton [" + bouton + "] est appuyé");
switch (type)
{
//-----------------------------------------------------
case type_boite_information_alerte_changement_type:
if (bouton === shipheart_boite_dialogue_bouton_1)
{
type_batterie = champ_formulaire_Type.model.get(champ_formulaire_Type.currentIndex).valeur;
maj_valeurs_par_defaut_type_batterie();
}
if (bouton === shipheart_boite_dialogue_bouton_2)
{
// Repositionnement à la valeur d'origine :
champ_formulaire_Type.currentIndex = recherche_index_valeur_modele(type, champ_formulaire_Type.model, "Type");
}
break;
//-----------------------------------------------------
case type_boite_information_alerte_changement_tension:
if (bouton === shipheart_boite_dialogue_bouton_1)
{
tension_nominale = champ_formulaire_Tension_nominale.model.get(champ_formulaire_Tension_nominale.currentIndex).valeur;
}
if (bouton === shipheart_boite_dialogue_bouton_2)
{
// Repositionnement à la valeur d'origine :
champ_formulaire_Tension_nominale.currentIndex = recherche_index_valeur_modele(tension_nominale, champ_formulaire_Tension_nominale.model, "Tension_nominale");
}
break;
//-----------------------------------------------------
case type_boite_information_supprimer :
default: ;
}
}
}
//===========================================================
// Busy Indicator :
//===========================================================
Shipheart_busy_indicator {
id: busy_indicator
running: timer_tempo_reconfiguration.running
}
// Note : il est inutile de prévoir un Mousearea pour sortir de l'économiseur sur cette page puisqu'il
// est systématiquement bloqué pour toutes les pages lancées depuis 'Paramètres Avancés'.
//=============================================================================================================
// Init de la page
//=============================================================================================================
function init_page()
{
var req, res;
var nb;
var i;
var chaine_capacite_1, chaine_capacite_2;
//console.log("Id de la batterie = " + id_batterie);
if (id_batterie > 0) // Cas d'une modification de batterie existante :
{
req = 'SELECT Nom, ';
req += ' Adresse_module, ';
req += ' Type_entrees, ';
req += ' Entrees, ';
req += ' Type, ';
req += ' Tension_nominale, ';
req += ' Capacite_1, ';
req += ' Capacite_2, ';
req += ' Tension_gain, ';
req += ' Coeff_peukert, ';
req += ' Resistance_interne, ';
req += ' Tension_pleine_charge, ';
req += ' Courant_pleine_charge, ';
req += ' Temporisation_pleine_charge, ';
req += ' Efficacite_charge, ';
req += ' Tension_charge_nulle, ';
req += ' Temporisation_charge_nulle, ';
req += ' Soh, ';
req += ' Nombre_cycles, ';
req += ' Nombre_decharges_completes, ';
req += ' ID_Famille ';
req += ' FROM TB_Batteries ';
req += ' WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("req = [ " + req + "; ]");
res = bdd.requete_unique(req);
//---------------------------------------------------------------
// Mise à jour du champs de saisie de chaque zone de formulaire :
i = 0;
champ_formulaire_Nom.text = res[i ++];
adresse_module = Number(res[i ++]);
type_entrees = Number(res[i ++]);
no_entree = Number(res[i ++]);
type_batterie = Number(res[i ++]);
tension_nominale = Number(res[i ++]);
chaine_capacite_1 = res[i ++];
chaine_capacite_2 = res[i ++];
champ_formulaire_Tension_gain.text = Number(res[i ++]).toFixed(3);
champ_formulaire_Coeff_peukert.text = Number(res[i ++]).toFixed(2);
champ_formulaire_Resistance_interne.text = Number(res[i ++]).toFixed(1);
champ_formulaire_Tension_pleine_charge.text = Number(res[i ++]).toFixed(2);
champ_formulaire_Courant_pleine_charge.text = Number(res[i ++]).toFixed(2);
champ_formulaire_Temporisation_pleine_charge.text = Number(res[i ++]).toFixed(0);
champ_formulaire_Efficacite_charge.text = Number(res[i ++]).toFixed(3);
champ_formulaire_Tension_charge_nulle.text = Number(res[i ++]).toFixed(2);
champ_formulaire_Temporisation_charge_nulle.text = Number(res[i ++]).toFixed(0);
champ_formulaire_Soh.text = Number(res[i ++]).toFixed(0); // En lecture seule
champ_formulaire_Nombre_cycles.text = Number(res[i ++]); // En lecture seule
champ_formulaire_Nombre_decharges_completes.text = Number(res[i ++]); // En lecture seule
id_famille = Number(res[i ++]);
}
else // Cas d'une création d'une batterie :
{
champ_formulaire_Nom.text = "";
adresse_module = 0;
type_entrees = 0;
no_entree = 0;
type_batterie = 0;
tension_nominale = 0;
chaine_capacite_1 = "100/20";
chaine_capacite_2 = "";
id_famille = 0;
}
//---------------------------------------------------------------------------------------
// Famille :
champ_formulaire_Famille.model.clear();
champ_formulaire_Famille.model.append({"valeur": 0, "texte": "Non défini" });
req = 'SELECT Cle_primaire, Nom FROM TB_Familles WHERE Type_source=' + shipheart_type_source_batteries + ' ORDER BY Priorite_affichage ';
//console.log("Requête = " + req)
nb = bdd.requete(req);
for (i = 0; i < nb; i ++)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
champ_formulaire_Famille.model.append({"valeur": Number(res[0]), "texte": res[1] });
}
}
// Positionnement de l'index sur la valeur en cours :
i = recherche_index_valeur_modele(id_famille, champ_formulaire_Famille.model, "Famille");
if (i === -1) champ_formulaire_Famille.currentIndex = 0;
else champ_formulaire_Famille.currentIndex = i;
//---------------------------------------------------------------------------------------
// Type d'entrées :
// Mise à zéro et rensignement de la première entrée du modèle de liste des types d'entrées :
champ_formulaire_Type_entrees.model.clear();
champ_formulaire_Type_entrees.model.append({"module": 0, "type": 0, "no": 0, "type_carte": 0, "texte": qsTr("Non défini") });
champ_formulaire_Type_entrees.currentIndex = 0; // Par défaut
//==========================================
// Entrées prédéfinies des ShipBS présentes (les ShipBS sont prioritaires dans ce cas et sont traitées avant les autres) :
req = 'SELECT Adresse_k_bus, Type ';
req += 'FROM TB_Modules_config WHERE ';
// req += 'Presence=1 AND ';
req += 'Type=' + shipheart_type_module_shipBS + ' ';
req += 'ORDER BY Adresse_k_bus';
//console.log("req = [ " + req + "; ]");
nb = bdd.requete(req);
for (i = 0; i < nb; i ++)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
// Ajout de l'entrée dans le modèle :
champ_formulaire_Type_entrees.model.append({ "module": Number(res[0]),
"type": shipheart_batteries_type_entrees_ibs,
"no": 0,
"type_carte": shipheart_type_module_shipBS,
"texte": qsTr("ShipBS [@ %1]").arg(Number(res[0]))
});
// Mise à jour de l'index actuel de la combo box :
if ((type_entrees === shipheart_batteries_type_entrees_ibs) &&
(adresse_module === Number(res[0])))
{
champ_formulaire_Type_entrees.currentIndex = (champ_formulaire_Type_entrees.model.count - 1);
}
}
}
//==============================================================
// Entrées prédéfinies des modules présents (autres que ShipBS) :
req = 'SELECT Adresse_k_bus, Type ';
req += 'FROM TB_Modules_config WHERE ';
req += 'Presence=1 ';
req += 'AND (';
req += 'Type=' + shipheart_type_module_shipbase + ' ';
req += 'OR Type=' + shipheart_type_module_shippower812 + ' ';
req += 'OR Type=' + shipheart_type_module_shippower8DC + ' ';
req += ')';
req += 'ORDER BY Adresse_k_bus';
//console.log("req = [ " + req + "; ]");
nb = bdd.requete(req);
for (i = 0; i < nb; i ++)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
champ_formulaire_Type_entrees.model.append({ "module": Number(res[0]),
"type": shipheart_batteries_type_entrees_predefinie,
"no": shipheart_capteur_predefini_in_v,
"type_carte": Number(res[1]),
"texte": qsTr("Alimentation %1").arg(Fonctions.nom_type_module(Number(res[1]))) + ((Number(res[1]) === shipheart_type_module_shipbase) ? "" : " [@ " + Number(res[0]) + "]")
});
// Mise à jour de l'index actuel de la combo box :
if ((type_entrees === shipheart_batteries_type_entrees_predefinie) &&
(adresse_module === Number(res[0])) &&
(no_entree === shipheart_capteur_predefini_in_v))
{
champ_formulaire_Type_entrees.currentIndex = (champ_formulaire_Type_entrees.model.count - 1);
}
}
}
//==============================================================
// Entrées VOLT :
for (i = 0; i < shipheart_entrees_volt_max_nombre; i ++)
{
champ_formulaire_Type_entrees.model.append({ "module": 0,
"type": shipheart_batteries_type_entrees_volt,
"no": (i+1),
"type_carte": shipheart_type_module_shipbase,
"texte": qsTr("Entrée VOLT n° %1").arg(i+1)
});
if ((type_entrees === shipheart_batteries_type_entrees_volt) &&
(no_entree === (i + 1)))
{
champ_formulaire_Type_entrees.currentIndex = (champ_formulaire_Type_entrees.model.count - 1);
}
}
type_entrees_init = type_entrees;
no_entree_init = no_entree;
//---------------------------------------------------------------------------------------
// Type (de batterie) :
champ_formulaire_Type.model.clear();
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_indefini, "texte": qsTr("Non défini") });
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_plomb_acide_liquide, "texte": qsTr("Plomb - Acide liquide") });
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_plomb_agm_vrla, "texte": qsTr("Plomb - AGM / VRLA") });
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_plomb_gel, "texte": qsTr("Plomb - Gel") });
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_plomb_carbone, "texte": qsTr("Plomb - Carbone") });
champ_formulaire_Type.model.append({"valeur": shipheart_batteries_type_lihium, "texte": qsTr("Lithium") });
// Positionnement de l'index sur la valeur en cours :
i = recherche_index_valeur_modele(type_batterie, champ_formulaire_Type.model, "Type");
if (i === -1) champ_formulaire_Type.currentIndex = recherche_index_valeur_modele(0, champ_formulaire_Type.model, "Type");
else champ_formulaire_Type.currentIndex = i;
type_batterie_init = type_batterie;
//---------------------------------------------------------------------------------------
// Tension nominale :
champ_formulaire_Tension_nominale.model.clear();
champ_formulaire_Tension_nominale.model.append({"valeur": 0, "texte": qsTr("Non définie") });
champ_formulaire_Tension_nominale.model.append({"valeur": 12, "texte": qsTr("12V") });
champ_formulaire_Tension_nominale.model.append({"valeur": 24, "texte": qsTr("24V") });
champ_formulaire_Tension_nominale.model.append({"valeur": 48, "texte": qsTr("48V") });
// Positionnement de l'index sur la valeur en cours :
i = recherche_index_valeur_modele(tension_nominale, champ_formulaire_Tension_nominale.model, "Tension_nominale");
if (i === -1) champ_formulaire_Tension_nominale.currentIndex = recherche_index_valeur_modele(0, champ_formulaire_Tension_nominale.model, "Tension_nominale");
else champ_formulaire_Tension_nominale.currentIndex = i;
tension_nominale_init = tension_nominale;
//---------------------------------------------------------------------------------------
// Entrées :
if (id_batterie > 0) // Cas d'une modification de batterie existante :
{
req = 'SELECT Type_entrees, Entrees FROM TB_Batteries WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("req = [ " + req + "; ]");
res = bdd.requete_unique(req);
if (Number(res[0]) === type_entrees) // On ne récupère la chaine 'Entrées' que si la batterie était déjà de ce type. Sinon, on part sur une liste vierge (idem création)
{
no_entree = Number(res[1]);
}
}
//---------------------------------------------------------------------------------------
// Capacités :
var chaines_capacite;
if (chaine_capacite_1 !== "")
{
chaines_capacite = chaine_capacite_1.split('/');
champ_formulaire_Capacite_1.text = chaines_capacite[0];
champ_formulaire_Heures_capacite_1.text = chaines_capacite[1];
}
else
{
champ_formulaire_Capacite_1.text = "";
champ_formulaire_Heures_capacite_1.text = "";
}
if (chaine_capacite_2 !== "")
{
chaines_capacite = chaine_capacite_2.split('/');
champ_formulaire_Capacite_2.text = chaines_capacite[0];
champ_formulaire_Heures_capacite_2.text = chaines_capacite[1];
}
else
{
champ_formulaire_Capacite_2.text = "";
champ_formulaire_Heures_capacite_2.text = "";
}
}
//=============================================================================================================
// Mise à jour des valeurs par défaut en fonction du choix du Type (de batterie)
//=============================================================================================================
function maj_valeurs_par_defaut_type_batterie()
{
var i;
switch(type_batterie)
{
//-------------------------------------
default :
case shipheart_batteries_type_plomb_acide_liquide :
champ_formulaire_Tension_gain.text = "1.000";
champ_formulaire_Coeff_peukert.text = "1.20";
champ_formulaire_Resistance_interne.text = "20"; // En mOhms
champ_formulaire_Tension_pleine_charge.text = "13.80"; // En V
champ_formulaire_Courant_pleine_charge.text = "3.00"; // En A (Nb calculé sur 3% de la capacité)
champ_formulaire_Temporisation_pleine_charge.text = "180"; // En s
champ_formulaire_Efficacite_charge.text = "0.9"; // Sans unité
champ_formulaire_Tension_charge_nulle.text = "11.0"; // En V
champ_formulaire_Temporisation_charge_nulle.text = "30"; // En s
champ_formulaire_Temperature_seuil_haut.text = "50.0"; // En °C
champ_formulaire_Temperature_seuil_bas.text = "5.0"; // En °C
break;
//-------------------------------------
case shipheart_batteries_type_plomb_agm_vrla :
champ_formulaire_Tension_gain.text = "1.000";
champ_formulaire_Coeff_peukert.text = "1.05";
champ_formulaire_Resistance_interne.text = "3"; // En mOhms
champ_formulaire_Tension_pleine_charge.text = "13.50"; // En V
champ_formulaire_Courant_pleine_charge.text = "3.00"; // En A (Nb calculé sur 3% de la capacité)
champ_formulaire_Temporisation_pleine_charge.text = "180"; // En s
champ_formulaire_Efficacite_charge.text = "0.9"; // Sans unité
champ_formulaire_Tension_charge_nulle.text = "11.0"; // En V
champ_formulaire_Temporisation_charge_nulle.text = "30"; // En s
champ_formulaire_Temperature_seuil_haut.text = "50.0"; // En °C
champ_formulaire_Temperature_seuil_bas.text = "5.0"; // En °C
break;
//-------------------------------------
case shipheart_batteries_type_plomb_gel :
champ_formulaire_Tension_gain.text = "1.000";
champ_formulaire_Coeff_peukert.text = "1.1";
champ_formulaire_Resistance_interne.text = "2"; // En mOhms
champ_formulaire_Tension_pleine_charge.text = "13.30"; // En V
champ_formulaire_Courant_pleine_charge.text = "3.00"; // En A (Nb calculé sur 3% de la capacité)
champ_formulaire_Temporisation_pleine_charge.text = "180"; // En s
champ_formulaire_Efficacite_charge.text = "0.92"; // Sans unité
champ_formulaire_Tension_charge_nulle.text = "11.0"; // En V
champ_formulaire_Temporisation_charge_nulle.text = "30"; // En s
champ_formulaire_Temperature_seuil_haut.text = "50.0"; // En °C
champ_formulaire_Temperature_seuil_bas.text = "5.0"; // En °C
break;
//-------------------------------------
case shipheart_batteries_type_plomb_carbone :
champ_formulaire_Tension_gain.text = "1.000";
champ_formulaire_Coeff_peukert.text = "1.1";
champ_formulaire_Resistance_interne.text = "2"; // En mOhms
champ_formulaire_Tension_pleine_charge.text = "13.50"; // En V
champ_formulaire_Courant_pleine_charge.text = "3.00"; // En A (Nb calculé sur 3% de la capacité)
champ_formulaire_Temporisation_pleine_charge.text = "180"; // En s
champ_formulaire_Efficacite_charge.text = "0.92"; // Sans unité
champ_formulaire_Tension_charge_nulle.text = "11.0"; // En V
champ_formulaire_Temporisation_charge_nulle.text = "30"; // En s
champ_formulaire_Temperature_seuil_haut.text = "50.0"; // En °C
champ_formulaire_Temperature_seuil_bas.text = "5.0"; // En °C
break;
//-------------------------------------
case shipheart_batteries_type_lihium :
champ_formulaire_Tension_gain.text = "1.000";
champ_formulaire_Coeff_peukert.text = "1.00";
champ_formulaire_Resistance_interne.text = "0.5"; // En mOhms
champ_formulaire_Tension_pleine_charge.text = "13.50"; // En V
champ_formulaire_Courant_pleine_charge.text = "3.00"; // En A (Nb calculé sur 3% de la capacité)
champ_formulaire_Temporisation_pleine_charge.text = "180"; // En s
champ_formulaire_Efficacite_charge.text = "0.95"; // Sans unité
champ_formulaire_Tension_charge_nulle.text = "11.5"; // En V
champ_formulaire_Temporisation_charge_nulle.text = "30"; // En s
champ_formulaire_Temperature_seuil_haut.text = "50.0"; // En °C
champ_formulaire_Temperature_seuil_bas.text = "5.0"; // En °C
break;
}
}
//=============================================================================================================
// Mise à jour des valeurs saisies de la batterie
//=============================================================================================================
function mise_a_jour_batterie()
{
var req;
var i;
var capacite_1, capacite_2;
var heures_capacite_1, heures_capacite_2;
var chaine_capacite_1, chaine_capacite_2;
var coeff_peukert;
var sous_req_liste_tension_soc = "";
//-------------------------------------------------------------------------------------------------------
// Capacités :
if (champ_formulaire_Capacite_1.text != "") capacite_1 = Number(champ_formulaire_Capacite_1.text);
else capacite_1 = 100; // Valeur par défaut (en Ah)
if (champ_formulaire_Heures_capacite_1.text != "") heures_capacite_1 = Number(champ_formulaire_Heures_capacite_1.text);
else heures_capacite_1 = 20; // Valeur par défaut (en h)
if (champ_formulaire_Capacite_2.text != "") capacite_2 = Number(champ_formulaire_Capacite_2.text);
else capacite_2 = 0;
if (champ_formulaire_Heures_capacite_2.text != "") heures_capacite_2 = Number(champ_formulaire_Heures_capacite_2.text);
else heures_capacite_2 = 0;
// Mise à jour des chaines pour la BDD :
chaine_capacite_1 = capacite_1 + "/" + heures_capacite_1; // Pour la capacité 1, on enregistre toujours la chaine
if ((capacite_2 !== 0) && (heures_capacite_2 !== 0)) chaine_capacite_2 = capacite_2 + "/" + heures_capacite_2;
else chaine_capacite_2 = "";
//-------------------------------------------------------------------------------------------------------
// Calcul du coefficient de Peukert :
coeff_peukert = Fonctions_batteries.coefficient_de_peukert(type_batterie, capacite_1, heures_capacite_1, capacite_2, heures_capacite_2);
//console.log("Coeff de Peukert calculé = " + coeff_peukert);
//-------------------------------------------------------------------------------------------------------
// Si la tension nominale de la batterie a été changée, on met obligatoirement à jour la liste valeurs/niveaux en version "usine" :
if (tension_nominale !== tension_nominale_init)
{
sous_req_liste_tension_soc = ', Liste_tension_soc="' + Fonctions_batteries.chaine_tension_niveau_batterie_usine(tension_nominale) + '" ';
} // Sinon, on ne fait rien sur cette liste.
//-------------------------------------------------------------------------------------------------------
// Mise à jour de l'entrée dans TB_Batteries :
req = 'UPDATE TB_Batteries SET Nom="' + champ_formulaire_Nom.text + '" ';
req += ', Type=' + type_batterie;
req += ', Tension_nominale=' + tension_nominale;
req += ', Adresse_module=' + adresse_module;
req += ', Type_entrees=' + type_entrees;
req += ', Entrees="' + no_entree + '" ';
req += ', Capacite_1="' + chaine_capacite_1 + '" ';
req += ', Capacite_2="' + chaine_capacite_2 + '" ';
req += ', Coeff_peukert=' + champ_formulaire_Coeff_peukert.text;
req += ', Resistance_interne=' + champ_formulaire_Resistance_interne.text;
req += ', Tension_pleine_charge=' + champ_formulaire_Tension_pleine_charge.text;
req += ', Courant_pleine_charge=' + champ_formulaire_Courant_pleine_charge.text;
req += ', Temporisation_pleine_charge=' + champ_formulaire_Temporisation_pleine_charge.text;
req += ', Efficacite_charge=' + champ_formulaire_Efficacite_charge.text;
req += ', Tension_charge_nulle=' + champ_formulaire_Tension_charge_nulle.text;
req += ', Temporisation_charge_nulle=' + champ_formulaire_Temporisation_charge_nulle.text;
req += ', Liste_temperature_resistance_interne="' + Fonctions_batteries.chaine_temperature_resistance_interne_usine(type_batterie) + '" ';
req += ', Tension_gain=' + champ_formulaire_Tension_gain.text;
req += ', ID_Famille=' + id_famille;
req += sous_req_liste_tension_soc;
req += ' WHERE Cle_primaire=' + id_batterie + ' '
//console.log("req = [ " + req + "; ]");
bdd.requete_unique(req);
synchro_bdd(shipheart_type_synchro_config);
}
//=============================================================================================================
// Création de la batterie
//=============================================================================================================
function creation_batterie()
{
var req, res;
var i;
var capacite_1, capacite_2;
var heures_capacite_1, heures_capacite_2;
var chaine_capacite_1, chaine_capacite_2;
var coeff_peukert;
//-------------------------------------------------------------------------------------------------------
// Capacités :
if (champ_formulaire_Capacite_1.text != "") capacite_1 = Number(champ_formulaire_Capacite_1.text);
else capacite_1 = 100; // Valeur par défaut (en Ah)
if (champ_formulaire_Heures_capacite_1.text != "") heures_capacite_1 = Number(champ_formulaire_Heures_capacite_1.text);
else heures_capacite_1 = 20; // Valeur par défaut (en h)
if (champ_formulaire_Capacite_2.text != "") capacite_2 = Number(champ_formulaire_Capacite_2.text);
else capacite_2 = 0;
if (champ_formulaire_Heures_capacite_2.text != "") heures_capacite_2 = Number(champ_formulaire_Heures_capacite_2.text);
else heures_capacite_2 = 0;
// Mise à jour des chaines pour la BDD :
chaine_capacite_1 = capacite_1 + "/" + heures_capacite_1; // Pour la capacité 1, on enregistre toujours la chaine
if ((capacite_2 !== 0) && (heures_capacite_2 !== 0)) chaine_capacite_2 = capacite_2 + "/" + heures_capacite_2;
else chaine_capacite_2 = "";
//-------------------------------------------------------------------------------------------------------
// Calcul du coefficient de Peukert :
coeff_peukert = Fonctions_batteries.coefficient_de_peukert(type_batterie, capacite_1, heures_capacite_1, capacite_2, heures_capacite_2);
//console.log("Coeff de Peukert calculé = " + coeff_peukert);
//-------------------------------------------------------------------------------------------------------
// Création de l'entrée dans TB_Batteries :
req = 'INSERT INTO TB_Batteries (Nom, ';
req += ' Type, ';
req += ' Tension_nominale, ';
req += ' Adresse_module, ';
req += ' Type_entrees, ';
req += ' Entrees, ';
req += ' Capacite_1, ';
req += ' Capacite_2, ';
req += ' Coeff_peukert, ';
req += ' Resistance_interne, ';
req += ' Tension_pleine_charge, ';
req += ' Courant_pleine_charge, ';
req += ' Temporisation_pleine_charge, ';
req += ' Efficacite_charge, ';
req += ' Tension_charge_nulle, '
req += ' Temporisation_charge_nulle, ';
req += ' Tension_gain, ';
req += ' Liste_tension_soc, ';
req += ' Liste_temperature_resistance_interne, ';
req += ' ID_Famille ';
req += ' ) VALUES ("' + champ_formulaire_Nom.text + '"';
req += ', ' + type_batterie;
req += ', ' + tension_nominale;
req += ', ' + adresse_module;
req += ', ' + type_entrees;
req += ', "' + no_entree + '" ';
req += ', "' + chaine_capacite_1 + '" ';
req += ', "' + chaine_capacite_2 + '" ';
req += ', ' + champ_formulaire_Coeff_peukert.text;
req += ', ' + champ_formulaire_Resistance_interne.text;
req += ', ' + champ_formulaire_Tension_pleine_charge.text;
req += ', ' + champ_formulaire_Courant_pleine_charge.text;
req += ', ' + champ_formulaire_Temporisation_pleine_charge.text;
req += ', ' + champ_formulaire_Efficacite_charge.text;
req += ', ' + champ_formulaire_Tension_charge_nulle.text;
req += ', ' + champ_formulaire_Temporisation_charge_nulle.text;
req += ', ' + champ_formulaire_Tension_gain.text;
req += ', "' + Fonctions_batteries.chaine_tension_niveau_batterie_usine(tension_nominale) + '" ';
req += ', "' + Fonctions_batteries.chaine_temperature_resistance_interne_usine(type_batterie) + '" ';
req += ', ' + id_famille;
req += ') ';
//console.log("Requête = " + req)
bdd.requete_unique(req);
// Demande de reconfiguration système via la BDD car on a modifié des valeurs de configuration :
synchro_bdd(shipheart_type_synchro_config);
}
//=============================================================================================================
// Check suppression de la batterie
//=============================================================================================================
function check_avant_suppression()
{
var req, res;
var nb;
var i;
var message = "";
//=========================================================================
// Recherche de l'impact de cette suppression sur les spécifiques clients :
switch(Number(shipheart_specifique_client[0]))
{
//------------------------------------------------------
default:
case shipheart_specifique_client_tous:
//console.log("Tous les clients")
break;
//------------------------------------------------------
case shipheart_specifique_client_suncy:
//console.log("Client Suncy")
break;
}
//=========================================================================
// Recherche de l'impact de cette suppression sur les évènements :
req = 'SELECT Cle_primaire, Nom FROM TB_Events WHERE Type_source=' + shipheart_source_mesure_batterie + ' AND ID_Source=' + id_batterie + ' ';
req += ' ORDER BY Nom';
//console.log("Requête = [ " + req + "; ]")
nb = bdd.requete(req);
if (nb > 0)
{
if (nb === 1) message += "<br /><br />" + qsTr("Cette batterie est utilisée par l'évènement ci-dessous.<br />Vous devez modifier ou supprimer cet évènement pour qu'il ne dépende plus de cette batterie avant de pouvoir la supprimer.") + "<br /><br />";
else message += "<br /><br />" + qsTr("Cette batterie est utilisée par les %1 évènements ci-dessous.<br />Vous devez modifier ou supprimer ces évènements pour qu'ils ne dépendent plus de cette batterie avant de pouvoir la supprimer.").arg(nb) + "<br /><br />";
for (i = 0; i < nb; i ++)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
message += "&#8227; " + (i+1) + " : " + res[1] + "<br />";
}
}
}
//=========================================================================
// Recherche de l'impact de cette suppression sur les capteurs calculés :
/* Retour de la forme :
+-------------+
| Nom_capteur |
+-------------+
| Calculation |
| Calcul 2 |
+-------------+ */
req = 'SELECT Nom FROM TB_Capteurs ';
req += ' WHERE Type_entrees=' + shipheart_capteur_type_entrees_calculee_booleen + ' ';
req += ' AND Entrees LIKE "%/' + shipheart_source_mesure_batterie + ':' + id_batterie + '/%" ';
//console.log("Requête = [ " + req + "; ]")
nb = bdd.requete(req);
if (nb > 0)
{
if (nb === 1) message += "<br /><br />" + qsTr("Cette batterie est utilisée par le capteur calculé ci-dessous.<br />Vous devez modifier ou supprimer ce capteur calculé pour qu'il ne dépende plus de cette id_batterie avant de pouvoir la supprimer.") + "<br /><br />";
else message += "<br /><br />" + qsTr("Cette id_batterie est utilisée par les %1 capteurs calculés ci-dessous.<br />Vous devez modifier ou supprimer ces capteurs calculés pour qu'ils ne dépendent plus de cette id_batterie avant de pouvoir la supprimer.").arg(nb) + "<br /><br />";
for (i = 0; i < nb; i ++)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
message += "&#8227; " + (i+1) + " : " + res[0] + "<br />";
}
}
}
//=========================================================================
// Conclusion :
if (message === "") return(0); // Aucune réserve à supprimer le message....
else // Affichage de la boite de dialogue. La suppression n'est pas autorisée...
{
boite_information.niveau = 2;
boite_information.imageTitreSource = "/images/attention.png"
boite_information.message = message;
boite_information.boutonOkTexte = qsTr("Ok")
boite_information.boutonAnnuler = false;
boite_information.alignementMessage = Text.AlignLeft
boite_information.type = type_boite_information_supprimer;
boite_information.open();
return(-1);
}
}
//=============================================================================================================
// Suppression de la batterie
//=============================================================================================================
function suppression_batterie()
{
var req;
// Suppression de la batterie dans TB_Batteries :
req = 'DELETE FROM TB_Batteries WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("Requête = " + req)
bdd.requete_unique(req);
// Demande de reconfiguration système via la BDD car on a modifié des valeurs de configuration :
synchro_bdd(shipheart_type_synchro_config);
}
//=============================================================================================================
// Forçage pleine charge
//=============================================================================================================
function forcer_pleine_charge()
{
var req;
// Suppression de la batterie dans TB_Batteries :
req = 'UPDATE TB_Batteries SET New_cde=' + shipheart_batteries_commande_forcage_pleine_charge + ' WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("req = [ " + req + "; ]");
bdd.requete_unique(req);
}
//=============================================================================================================
// Reset du SOH
//=============================================================================================================
function reset_soh()
{
var req;
// Suppression de la batterie dans TB_Batteries :
req = 'UPDATE TB_Batteries SET New_cde=' + shipheart_batteries_commande_reset_soh + ' WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("req = [ " + req + "; ]");
bdd.requete_unique(req);
// Mise à jour des variables globales pour prise en compte immédiatement :
champ_formulaire_Soh.text = 100;
}
//=============================================================================================================
// Reset des compteurs
//=============================================================================================================
function reset_compteurs()
{
var req;
// Suppression de la batterie dans TB_Batteries :
req = 'UPDATE TB_Batteries SET New_cde=' + shipheart_batteries_commande_reset_compteurs + ' WHERE Cle_primaire=' + id_batterie + ' ';
//console.log("req = [ " + req + "; ]");
bdd.requete_unique(req);
// Mise à jour des variables globales pour prise en compte immédiatement :
champ_formulaire_Nombre_cycles.text = 0;
champ_formulaire_Nombre_decharges_completes.text = 0;
}
//=============================================================================================================
// Recherche de l'index d'une certaine valeur dans un modele
//=============================================================================================================
function recherche_index_valeur_modele(cible, modele, nom_modele)
{
var i;
for (i=0; i<modele.count; i ++)
{
if (modele.get(i).valeur === cible) break; // Cas où la valeur cible a été trouvée parmi les valeurs du modèle
}
if (i === modele.count)
{
console.log("Aucune valeur trouvée pour cible = [" + cible + "] du modèle = " + nom_modele);
i = -1; // Cas où la valeur n'a pas été trouvée parmi les valeurs du modèle
}
//else console.log("Valeur trouvée : [" + i + "] pour cible = [" + cible + "] soit texte = [" + modele.get(i).texte + "]");
return(i);
}
}