Première tranche verticale : domaine circuit via DataProvider/API

This commit is contained in:
2026-08-14 07:29:00 +02:00
commit 4d29347aab
15 changed files with 2286 additions and 0 deletions
+171
View File
@@ -0,0 +1,171 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
// Shipheart_page est un composant au sens QML. Il commence donc par une majuscule.
// Il peut être utilisé partout dans le projet.
Page {
id: page
background: Rectangle { // Attention : Background ne peut avoir qu'un seul élément [a priori, pas complètement sûr...] => on créé un Rectangle de plus haut niveau et on met ensuite dedans ce qu'on veut...
anchors.fill: parent
color: shipheart_theme_couleur_fond_ecran
Image {
anchors.fill: parent
fillMode: Image.Tile
// fillMode: Image.PreserveAspectCrop
source: shipheart_theme_fichier_fond_ecran
visible: (shipheart_theme_fichier_fond_ecran !== "")
}
}
//=================================================================================================
// Fonction : Shipheart_clic
// Cette fonction est normalement appelé à chaque appel d'un 'MouseArea.OnClick'
//=================================================================================================
function shipheart_clic()
{
emission_bip();
reload_economiseur();
}
//=====================================================================================
// Fonction : Vérifie si la configuration en cours nécessite l'émission d'un bip.
// Si oui, met à jour le champ correspondant dans la BDD et fait une demande
// de synchro pour que celle-ci soit prise en compte rapidmeent.
// Reçoit : Rien
// Retour : Rien
//=====================================================================================
function emission_bip()
{
if ((shipheart_bips !== "") && // Si shipheart_bips = "", il n'y a aucun bip à émettre...
(shipheart_type_installation === shipheart_type_installation_shipbase)) // SDIR 317 : ... et si on est sur ShipRS, on n'émet pas de bips
{
bdd.requete_unique("UPDATE TB_Systeme SET Valeur='" + shipheart_bips + "/0/0/0' WHERE Nom='New_bip'");
synchro_bdd(shipheart_type_synchro_data);
}
return;
}
//=================================================================================================
// Fonction : Réarmement économiseur
//=================================================================================================
function reload_economiseur()
{
var req, res;
/* // La valeur est relue à chaque fois dans la BDD pour être certain d'avoir la dernière valeur :
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Time_out_economiseur%" ';
res = bdd.requete_unique(req);
shipheart_compteur_economiseur = Number(res[0]);
*/
shipheart_compteur_economiseur = shipheart_time_out_economiseur;
}
//=================================================================================================
// Fonction : Demande de mise en veille (on ou off)
//=================================================================================================
function mise_en_veille(veille)
{
if (shipheart_type_installation !== shipheart_type_installation_shipbase) return; // SDIR #251
if (veille === 0) // On sort toujours du mode veille si c'est demandé
{
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=' + veille + ' WHERE Nom="Veille"');
synchro_bdd(shipheart_type_synchro_data);
//console.log("Sortie de veille");
flag_economiseur_actif = false;
}
else
{
if ((veille === 1) && (get_validation_economiseur() === 1)) // On ne rentre en veille que si c'est demandé (le time-out a expiré ET l'économiseur est valide)
{
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=' + veille + ' WHERE Nom="Veille"');
synchro_bdd(shipheart_type_synchro_data);
flag_economiseur_actif = true;
}
//else console.log("Demande d'activation de l'économiseur alors qu'il est dévalidé")
}
}
//=================================================================================================
// Fonction : Change l'état de la validation économiseur
//=================================================================================================
function changer_validation_economiseur()
{
var req, res;
var new_val;
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Validation_economiseur%" ';
res = bdd.requete_unique(req);
if (Number(res[0]) === 0) new_val = '1';
else new_val = '0';
bdd.requete_unique('UPDATE TB_Configuration SET Valeur=' + new_val + ' WHERE Nom LIKE "%Validation_economiseur%" ');
}
//=================================================================================================
// Fonction : Retourne l'état actuel de la validation de l'économiseur
//=================================================================================================
function get_validation_economiseur()
{
var req, res;
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Validation_economiseur%" ';
res = bdd.requete_unique(req);
return(Number(res[0]));
}
//=================================================================================================
// Fonction : Charge les paramètres du thème en cours
//=================================================================================================
function chargement_theme()
{
var req, res;
// Récupération du paramètre 'TB_Configuration.Theme'
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Theme" ';
res = bdd.requete_unique(req);
// Vérifie que la n° de thème sélectionné est bien compatible avec les thèmes présents sur cette version (on peut imaginer qu'on en ait supprimé...) :
if (Number(res[0]) >= shipheart_config_themes.length)
{
shipheart_theme = 0; // Valeur par défaut
req = 'UPDATE TB_Configuration '; // Mise à jour dans la BDD pour les prochains démarrages
req += ' SET Valeur="' + shipheart_theme + '" ';
req += ' WHERE Nom="Theme" ';
//console.log("Requête = " + req)
bdd.requete_unique(req);
}
else shipheart_theme = Number(res[0]); // Cas normal
// Mise à jour des paramètres d'affcihage liés au thème choisit :
shipheart_theme_fichier_fond_ecran = shipheart_config_themes[shipheart_theme][shipheart_index_theme_fichier_fond_ecran];
shipheart_theme_couleur_fond_ecran = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_ecran];
shipheart_couleur_fond_bouton_actif = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_bouton_actif];
shipheart_couleur_texte_titre_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_1];
shipheart_couleur_texte_titre_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_2];
shipheart_couleur_texte_titre_3 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_3];
shipheart_couleur_fond_boite_dialogue_niveau_0 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0];
shipheart_couleur_fond_boite_dialogue_niveau_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1];
shipheart_couleur_fond_boite_dialogue_niveau_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2];
shipheart_couleur_texte_boite_dialogue_niveau_0 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0];
shipheart_couleur_texte_boite_dialogue_niveau_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1];
shipheart_couleur_texte_boite_dialogue_niveau_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2];
shipheart_couleur_texte_slider = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_slider];
shipheart_couleur_bordure_courbes = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_bordure_courbes];
//console.log("Thème d'affichage à utiliser = " + shipheart_theme + " [fichier = '" + shipheart_theme_fichier_fond_ecran + "' et couleur = '" + shipheart_theme_couleur_fond_ecran + "']");
}
}
+183
View File
@@ -0,0 +1,183 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import qt.koriolan.shipheart 1.0
// ============================================================================
// home.qml (EMBRYON - POC WASM production, domaine circuit uniquement)
// ----------------------------------------------------------------------------
// Version très réduite du vrai home.qml (~3880 lignes, tous domaines) :
// couvre uniquement l'affichage des circuits, via l'API réelle (DataProvider)
// au lieu de bdd.*. Objectif : valider la chaîne complète (HTTP réel, JSON,
// affichage QML) sur un seul domaine avant de généraliser.
//
// Simplifications volontaires par rapport au vrai home.qml :
// - Lecture seule (pas de changement de consigne au clic - l'endpoint
// d'écriture n'est pas encore construit côté API, cf synthèse §20.7)
// - Un seul domaine affiché (pas de batteries/réservoirs/capteurs/pages
// personnalisées/messages/réveils/minuteur)
// - Délégué d'affichage simplifié (pas Shipheart_bouton_circuit, qui
// embarque des actions d'écriture non encore branchées)
// - mise_a_jour_onglets_circuits() n'existe plus : l'API renvoie déjà
// l'état agrégé par famille dans /elements/familles (cf §20.7/21.5)
// ============================================================================
Shipheart_page {
id: page_accueil
readonly property int deport_haut_masquage_onglets: 20
readonly property int rayon_onglets: 20
property int nombre_colonnes_affichage_circuits: 2
property int nombre_circuits_affiches_sur_une_colonne: 4
property int id_groupe_circuits: 0
ListModel { id: modele_onglets_circuits }
ListModel { id: modele_circuits }
property DataProvider dataProvider: DataProvider {}
Connections {
target: dataProvider
function onFamillesRecues(familles) {
modele_onglets_circuits.clear();
for (var i = 0; i < familles.length; i++) {
var f = familles[i];
modele_onglets_circuits.append({
"id": f.id,
"libelle": f.nom,
"etat": f.etat,
"actif": (f.id === id_groupe_circuits)
});
// Sélectionne la première famille par défaut si aucune n'est choisie :
if (id_groupe_circuits === 0 && i === 0) {
id_groupe_circuits = f.id;
dataProvider.get_elements("circuit", id_groupe_circuits);
}
}
}
function onElementsRecus(elements) {
modele_circuits.clear();
for (var j = 0; j < elements.length; j++) {
modele_circuits.append(elements[j]);
}
}
function onErreur(message) {
console.log("DataProvider erreur : " + message);
}
}
Component.onCompleted: {
dataProvider.get_familles("circuit");
}
// Rafraîchissement périodique (remplace mise_a_jour_circuits(), appelée chaque seconde côté natif) :
Timer {
interval: 1000
running: true
repeat: true
onTriggered: {
if (id_groupe_circuits > 0) dataProvider.get_elements("circuit", id_groupe_circuits);
}
}
ColumnLayout {
anchors.fill: parent
spacing: 10
//-----------------------------------------------------------
// Onglets (familles) :
Rectangle {
id: onglets_circuits
Layout.fillWidth: true
height: shipheart_hauteur_bandeau_haut
color: "transparent"
visible: modele_onglets_circuits.count > 1
GridView {
id: grille_onglets_circuits
anchors.fill: parent
cellWidth: width / Math.max(1, Math.min(modele_onglets_circuits.count, 5))
cellHeight: shipheart_hauteur_bandeau_haut
model: modele_onglets_circuits
clip: true
delegate: Rectangle {
width: grille_onglets_circuits.cellWidth - 2
height: grille_onglets_circuits.cellHeight
radius: rayon_onglets
color: model.actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
Text {
text: model.libelle
anchors.centerIn: parent
color: couleur_blanc_casse
font.pixelSize: 14
font.bold: model.actif
}
MouseArea {
anchors.fill: parent
onClicked: {
id_groupe_circuits = model.id;
for (var k = 0; k < modele_onglets_circuits.count; k++) {
modele_onglets_circuits.set(k, {"actif": (modele_onglets_circuits.get(k).id === model.id)});
}
dataProvider.get_elements("circuit", id_groupe_circuits);
}
}
}
}
}
//-----------------------------------------------------------
// Circuits de la famille sélectionnée :
GridView {
id: circuits_grid
Layout.fillWidth: true
Layout.fillHeight: true
cellWidth: width / nombre_colonnes_affichage_circuits
cellHeight: height / nombre_circuits_affiches_sur_une_colonne
model: modele_circuits
clip: true
delegate: Rectangle {
width: circuits_grid.cellWidth - 4
height: circuits_grid.cellHeight - 4
radius: 10
color: shipheart_couleur_fond_bouton
border.color: (model.etat === 2) ? "red" : (model.etat === 1) ? "orange" : "transparent"
border.width: 2
Column {
anchors.centerIn: parent
spacing: 4
Text {
text: model.nom
color: couleur_blanc_casse
font.pixelSize: 14
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
}
Text {
text: model.tension.toFixed(1) + " V " + model.intensite.toFixed(2) + " A"
color: couleur_blanc_casse
font.pixelSize: 12
anchors.horizontalCenter: parent.horizontalCenter
}
}
}
Label {
anchors.centerIn: parent
visible: circuits_grid.count === 0
text: qsTr("Aucun circuit dans ce groupe.")
color: couleur_rouge_transparent
}
}
}
}
+222
View File
@@ -0,0 +1,222 @@
//========================================================================================================================================================================
// HOME_ACCUEIL.QML
// Ce fichier est la page d'accueil par défaut. Il propose l'affichage du logo ShipHeart et le nom du bateau.
// La page est appelée depuis la page main.qml lorsque le paramètre 'shipheart_specifique_client[0]' est égal à 0
//========================================================================================================================================================================
import QtQuick 2.12
import QtQuick.Controls 2.12
import qt.koriolan.shipheart 1.0
Shipheart_page {
id: page_home_o_yachts
// Mis en forme :
readonly property double pourcentage_hauteur_ligne_haut: 0.7
readonly property double espace_lignes_principales: 0 // L'espace ne sert à rien et est même contre-productif pour avoir le logo centré entre haut de l'écran et le texte "Bienvenue à bord...."
readonly property double affichage_hauteur_utile: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas
readonly property int periode_raffraichissement_parametres: 1000 // En ms
readonly property int duree_affichage: 15 // En s
// Affichage :
// Données :
property string nom_du_bateau: ""
property int compteur_affichage: 0
// Modèles :
// Note : les modèles chargés dans 'main.qml' n'ont pas à être rechargés dans les pages suivantes
//-------------------------------------------------
// Ouverture :
//-------------------------------------------------
StackView.onActivating: { // Le 'onActivating' permet de ne pas voir la mise à jour puisqu'elle est lancée dès que la page va être chargée
init_page();
timer_raffraichissement_parametres.start();
}
//-------------------------------------------------
// Fermeture :
//-------------------------------------------------
StackView.onDeactivating: {
timer_raffraichissement_parametres.stop();
}
//===========================================================
// Timer periode raffraichissement parametres :
//===========================================================
Timer {
id: timer_raffraichissement_parametres
interval: periode_raffraichissement_parametres
triggeredOnStart: false
running: true
repeat: true
onTriggered: {
if (++ compteur_affichage > duree_affichage) sortie_page();
}
}
//-------------------------------------------------------
// Ecran Haut :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_haut_gauche
x: 0
y: 0
width: shipheart_largeur_page
height: (affichage_hauteur_utile * pourcentage_hauteur_ligne_haut) - (espace_lignes_principales);
color: "transparent"
Image {
source: (shipheart_fichier_image_accueil !== "")
? "file://" + shipheart_repertoire_config + shipheart_sous_repertoire_images_accueil + "/" + shipheart_fichier_image_accueil
: "/images/" + shipheart_nom_fichier_image_accueil_par_defaut
sourceSize.height: parent.height * 0.7
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
}
}
//-------------------------------------------------------
// Ecran Bas :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_bas_gauche
x: 0
y: zone_affichage_haut_gauche.height + espace_lignes_principales;
width: shipheart_largeur_page
height: (affichage_hauteur_utile * (1 - pourcentage_hauteur_ligne_haut)) - (espace_lignes_principales);
color: "transparent"
Text {
anchors {
top: parent.top // Permet que ce texte soit juste en-dessous de la zone haute (sur laquelle le logo est centré => donc le logo est centré entre haut de l'écran et ce texte)
horizontalCenter: parent.horizontalCenter
}
font.pixelSize: 24
text: qsTr("Bienvenue à bord de");
color: couleur_blanc_casse
}
Text {
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
verticalCenterOffset: -20 // Remonté légèrement le nom du bateau...
}
font.pixelSize: 50
text: '" ' + nom_du_bateau + ' "';
color: couleur_blanc_casse
font.weight: Font.Black
}
}
//-------------------------------------------------------
// Bandeau bas :
//-------------------------------------------------------
Row {
x: 0
y: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas;
width: shipheart_largeur_page;
height: shipheart_hauteur_bandeau_bas;
spacing: 5
padding: 5
Rectangle {
width: parent.width
height: parent.height
color: shipheart_couleur_fond_bouton //"transparent"
Rectangle { // Barre augmentant selon l'évolution du compteur_affichage
width: (compteur_affichage / duree_affichage) * parent.width
height: parent.height
color: shipheart_couleur_fond_bouton_actif
opacity: 0.5
radius: shipheart_rayon_bouton
Behavior on width { NumberAnimation { duration: periode_raffraichissement_parametres } }
}
Image {
source: "/images/right_sombre.png"
sourceSize.height: parent.height * 0.5
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
horizontalCenterOffset: -10
}
}
Image {
source: "/images/right_sombre.png"
sourceSize.height: parent.height * 0.5
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
horizontalCenterOffset: +10
}
}
MouseArea {
anchors.fill: parent
onClicked: {
shipheart_clic();
sortie_page();
//stackView.push("parametres_avances.qml");
}
}
}
}
//===========================================================
// Economiseur : Doit être placé en fin de page pour fonctionner
//===========================================================
MouseArea {
anchors.fill: parent
preventStealing: true // Permet que cela fonctionne même si un élément flickable (notamment) soit derrière et "vole" le click
enabled: flag_economiseur_actif
onClicked: {
mise_en_veille(0);
}
}
//=============================================================================================================
// Init de la page
//=============================================================================================================
function init_page()
{
var req, res
mise_en_veille(0);
console.log("Init de Home_accueil...");
// Mise à jour du nom du bateau :
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Nom_du_bateau" ';
res = bdd.requete_unique(req);
nom_du_bateau = res[0];
compteur_affichage = 0;
}
//=============================================================================================================
// Sortie de la page
//=============================================================================================================
function sortie_page()
{
compteur_affichage = 0; // Pour le cas où on réouvrirait la page (via le bouton paramètres / appui long) ; dans ce cas, la remise à 0 du compteur prend quelques secondes (ce sera donc fait avant si on le remet de suite à 0)
stackView.push("home.qml");
}
}
+285
View File
@@ -0,0 +1,285 @@
//========================================================================================================================================================================
// HOME_ATTENTE.QML
// Ce fichier affiche un fond d'écran standard mais avec rien dedans. Il est utilisé au démarrage, pour attendre que l'ApplicationWindow soit prête
// et que l'accès à la BDD permette de décider quelle page d'accueil lancer.
// Sans cette page, la StackView affiche une page toute blanche pendant 1-2s avant que la première Home page soit chargée...
//========================================================================================================================================================================
import QtQuick 2.12
import QtQuick.Controls 2.12
import qt.koriolan.shipheart 1.0
Shipheart_page {
id: page_home_attente
//==============================================================
// Recherche de la Home Page à utiliser :
//==============================================================
Timer {
id: timer_recherche_home_page
interval: 300
running: true
repeat: true
onTriggered: {
console.log("Adresse de ShipBase = " + AppInfo.adresse_shipbase)
console.log("Etat de la connexion à la BDD = " + AppInfo.etat_connexion_bdd)
console.log("Type d'installation = " + AppInfo.type_installation)
console.log("Taille de l'écran = " + AppInfo.taille_ecran)
//----------------------------------------------------
// Valeurs correspondant au type d'installation :
//----------------------------------------------------
switch (Number(AppInfo.type_installation))
{
default:
case shipheart_type_installation_shipbase:
shipheart_type_installation = shipheart_type_installation_shipbase;
break;
case shipheart_type_installation_ecran_deporte:
switch (Number(AppInfo.taille_ecran))
{
default:
case 7:
shipheart_type_installation = shipheart_type_installation_ecran_deporte_7_pouces;
break;
case 10:
shipheart_type_installation = shipheart_type_installation_ecran_deporte_10_pouces;
break;
case 22:
shipheart_type_installation = shipheart_type_installation_ecran_deporte_22_pouces;
break;
}
break;
}
console.log("Type d'installation = " + shipheart_type_installation)
//shipheart_type_installation = shipheart_type_installation_shipbase
//shipheart_type_installation = shipheart_type_installation_ecran_deporte_22_pouces
// Valeurs par défaut :
// shipheart_largeur_page = 1280
// shipheart_hauteur_page = 800
shipheart_largeur_page = Qt.application.screens[0].width
shipheart_hauteur_page = Qt.application.screens[0].height
shipheart_hauteur_bandeau_haut = 60
shipheart_hauteur_titre_2 = 50
shipheart_hauteur_bandeau_bas = 80
shipheart_hauteur_clavier = 305
//----------------------------------------------------
// Cas où la connexion à la BDD n'a pas été possible :
//----------------------------------------------------
if ((AppInfo.etat_connexion_bdd === 0) && (Number(AppInfo.type_installation) === shipheart_type_installation_ecran_deporte))
{
stackView.push("config_shiprs.qml", {"connexion_impossible": true})
timer_recherche_home_page.stop(); // Arret du timer car il n'est plus utile maintenant
}
else
{
//----------------------------------------------------
// Paramètres spécifiques dans le cas des ShipRS :
// NB il est important de ne PAS faire ce traitement avant l'appel
// à 'connexion_impossible.qml' car, sinon, on peut se trouver dans une
// config de 22" (par exemple) et ne plus avoir accès aux boutons de
// configuration !!
//----------------------------------------------------
switch (shipheart_type_installation)
{
//---------------------------------------------------------------------------
case shipheart_type_installation_ecran_deporte_7_pouces:
shipheart_largeur_page = 1280;
shipheart_hauteur_page = 800;
synchro_repertoires_shiprs();
break;
//---------------------------------------------------------------------------
case shipheart_type_installation_ecran_deporte_10_pouces:
shipheart_largeur_page = 1280; // Spec de l'écran DENSITRON de ShipBase
shipheart_hauteur_page = 800; // Spec de l'écran DENSITRON de ShipBase
synchro_repertoires_shiprs();
break;
//---------------------------------------------------------------------------
case shipheart_type_installation_ecran_deporte_22_pouces:
shipheart_largeur_page = 1920;
shipheart_hauteur_page = 1080;
synchro_repertoires_shiprs();
break;
//---------------------------------------------------------------------------
default: // Dans ce cas, ce sont les valeurs par défaut qui sont conservées.
case shipheart_type_installation_shipbase:
break;
}
//----------------------------------------------------
// Recherche de la version de ShipBase :
//----------------------------------------------------
init_shipheart_version_cm();
//----------------------------------------------------
// Recherche du thème d'affichage :
//----------------------------------------------------
init_shipheart_theme();
//----------------------------------------------------
// Première page à afficher selon le client :
//----------------------------------------------------
var shipheart_nom_initial_page = "";
switch (Number(init_shipheart_specifique_client()))
{
//---------------------------------
default:
case shipheart_specifique_client_tous:
shipheart_nom_initial_page = "qrc:/home_accueil.qml"
break;
//---------------------------------
case shipheart_specifique_client_suncy:
shipheart_nom_initial_page = "qrc:/home_suncy.qml";
break;
}
if ((shipheart_generation_shipbase != shipheart_generation_shipbase_inconnue) && // A priori, ne devrait pas arriver mais si on n'a pas trouvé, on va reommencer la recherche après une période de timer.
(shipheart_nom_initial_page !== ""))
{
timer_recherche_home_page.stop(); // Arret du timer car il n'est plus utile maintenant
stackView.push(shipheart_nom_initial_page)
//console.log("La Home Page sélectionnée est '" + shipheart_nom_initial_page + "'")
}
}
}
}
//==============================================================
// Réactivation de la recherche lors d'un retour sur cette page :
//==============================================================
StackView.onActivated: {
//console.log("!!! Page Home_attente activée")
timer_recherche_home_page.start(); // Relance le timer pour faire une nouvelle recherche
}
//==============================================================
// Zone d'affichage :
//==============================================================
Rectangle {
x: 0
y: 0
width: 5000 // Permet d'être qûr qu'on couvre tout l'écran, quel qu'il soit
height: 5000 // Permet d'être qûr qu'on couvre tout l'écran
color: "transparent" // C'est la ligne importante qui permet de ne pas avoir un "flash' blanc au démarrage
}
//============================================================================
// Fonction : Récpère dans la BDD la valeur de 'Specifique_client' dans
// TB_Configuration. sépare chaque champs (séparés par des ';').
// Met à jour la propriété globale 'shipheart_specifique_client'
// avec toutes les valeurs. Renvoi la première.
// Reçoit : Rien
// Retour : La valeur de 'shipheart_specifique_client[0]'
//============================================================================
function init_shipheart_specifique_client()
{
var req, res
// Récupération du paramètre 'TB_Configuration.Specifique_client'
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Specifique_client" ';
res = bdd.requete_unique(req);
shipheart_specifique_client = res[0].split(';') // Mémorisation de l'ensemble du tableau
return(shipheart_specifique_client[0]); // Renvoi de la première valeur
}
//============================================================================
// Fonction : Récupère dans la BDD la valeur de 'Theme' dans
// TB_Configuration et met à jour la propriété globale 'shipheart_theme'.
// Reçoit : Rien
// Retour : Rien
//============================================================================
function init_shipheart_theme()
{
var req, res;
var nb;
// Chargement du thème demandé en config :
chargement_theme();
// Récupération du paramètre 'TB_Configuration.Fichier_image_accueil'
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Fichier_image_accueil" ';
//console.log("Requête = [ " + req + "; ]");
nb = bdd.requete(req);
//console.log("NB = "+nb);
if (nb >0)
{
res = bdd.lecture_ligne();
if (!res.isEmpty)
{
shipheart_fichier_image_accueil = res[0];
console.log("Le fichier d'image d'accueil est : [" + shipheart_fichier_image_accueil + "]");
}
else
{
shipheart_fichier_image_accueil = "";
console.log("/!\ Erreur dans le traitementr de la requête de recherche de fichier d'image d'accueil a échouée. Le nom de fichier est mis à sa valeur par défaut...");
}
}
else
{
shipheart_fichier_image_accueil = "";
console.log("/!\ La requête de recherche de fichier d'image d'accueil a échouée. Le nom de fichier est mis à sa valeur par défaut...");
}
return;
}
//============================================================================
// Fonction : Récupère dans la BDD la valeur de 'Version_cm' dans
// TB_Systeme et met à jour la propriété globale 'shipheart_generation_shipbase'.
// Reçoit : Rien
// Retour : Rien
//============================================================================
function init_shipheart_version_cm()
{
var req, res
// Récupération du paramètre 'TB_Systeme.Version_cm'
req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Version_cm" ';
res = bdd.requete_unique(req);
if (res[0].indexOf("CM3+") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v1;
else if (res[0].indexOf("CM4") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v2;
else if (res[0].indexOf("CM5") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v3;
else shipheart_generation_shipbase = shipheart_generation_shipbase_inconnue;
console.log("Génération de ShipBase = " + shipheart_generation_shipbase);
return;
}
//=============================================================================================================
// Synchroniser répertoire docs ShipRS
//=============================================================================================================
function synchro_repertoires_shiprs()
{
var commande;
commande = "rsync -aPs --delete -e \"ssh -p 2022 -o StrictHostKeyChecking=no \" koriolan@" + AppInfo.adresse_shipbase + ":" + shipheart_repertoire_config + "/ " + shipheart_repertoire_config + "/";
systeme.commande_shell(commande, "");
}
}
+1069
View File
File diff suppressed because it is too large Load Diff