diff --git a/desktop/js/Abeille.js b/desktop/js/Abeille.js index 8d3312666a..b00545502d 100755 --- a/desktop/js/Abeille.js +++ b/desktop/js/Abeille.js @@ -801,25 +801,23 @@ $("#idReinitBtn").on("click", function () { }); }); -// Forced model popup +// Forced model popup - Bootbox version $("#idModelChangeBtn").on("click", function () { console.log("idModelChangeBtn on " + curEqId); - // Ouverture dialog - var myPopup = jeeDialog.dialog({ - id: "abeille_modelChangePopup", + // Open empty dialog + var myPopup = bootbox.dialog({ + message: '

', // must not be empty title: "{{Choisir le modèle de votre équipement}}", - width: 500, - height: "auto", - contentUrl: "", + className: "abeille_modelChangePopup" }); - // Le template de contenu est dans Abeille-Eq-Advanced-Device.php - var $content = $(myPopup).find(".jeeDialogContent"); - $content.append($(".abeille-model-change-popup-content").clone().show()); - var $datalist = $("#abeille-all-models-list"); + // Content template is defined in Abeille-Eq-Advanced-Device.php + var $content = myPopup.find(".bootbox-body"); + $content.empty().append($(".abeille-model-change-popup-content").clone().show()); + var $datalist = $("#abeille-all-models-list").empty(); - // Requete ajax pour remplir la liste des options (= liste des modèles connus) + // Ajax query to populate datalist options (= list of knwow models) $.ajax({ type: "POST", url: "plugins/Abeille/core/ajax/AbeilleModelChange.ajax.php", @@ -830,13 +828,10 @@ $("#idModelChangeBtn").on("click", function () { dataType: "json", global: false, success: function (lstModels) { - console.log("réponse ajax getModelChoiceList", lstModels); - - // On remplit la liste de choix (datalist html5) - + // Populate html5 datalist Object.values(lstModels).forEach((model) => { var str = ""; - // Signature Zigbee + // Zigbee signature if ( typeof model.manufacturer == "string" && model.manufacturer != "" @@ -852,22 +847,22 @@ $("#idModelChangeBtn").on("click", function () { str += model.model + " "; } - // Libellé + // Label if (str != "") { str += "> "; } str += model.type; - // Identifiant JSON (incluant l'emplacement) + // JSON id (including location) str += " (" + model.jsonLocation + "/" + model.jsonId + ".json)"; - // Ajout à la liste + // Adding to datalist var $opt = $(""); $opt.attr("value", str); $datalist.append($opt); - // Remplissage info s'il s'agit du modèle actuellement en vigueur pour l'équipement + // Display if it is current model of equipment if (typeof model.isCurrent == "boolean" && model.isCurrent) { $content.find("span.current-model").html(str); } @@ -875,85 +870,80 @@ $("#idModelChangeBtn").on("click", function () { }, }); - // Bouton annuler + // Cancel button $content.find(".btn-secondary").on("click", function () { - jeeDialog.get("#abeille_modelChangePopup").destroy(); + myPopup.find(".bootbox-close-button").trigger("click"); }); - // Bouton enregistrer + // Save button $content.find(".btn-success").on("click", function () { - // On vérifie que l'utilisateur a bien choisi un modèle à appliquer + // Check user input var strSaisie = $content.find("input[type=search]").val(); if ($datalist.find('option[value="' + strSaisie + '"]').length == 0) { - jeeDialog.alert( + alert( "{{Erreur: vous devez choisir un modèle dans la liste.}}" ); return; } - // Demande de confirmation (+ injonction à réveiller l'équipement s'il est sur batterie) + // Ask confirmation (+ ask to wake up the equipment if it is on battery) var strSuppBatterie = ""; if (eqBatteryType != "") { strSuppBatterie = "

Attention: {{Comme cet équipement fonctionne sur batterie, vous devez le réveiller immédiatement après avoir cliqué sur OK.}}"; } - jeeDialog.confirm( - "{{L'équipement sera reconfiguré à partir du modèle choisi. Souhaitez-vous vraiment appliquer ce modèle ?}}" + - strSuppBatterie, - function (result) { - if (result) { - // On ferme la boite de dialog - jeeDialog.get("#abeille_modelChangePopup").destroy(); - - // Première requête: enregistrer la configuration de l'équipement (choix modèle) - $.ajax({ - type: "POST", - url: "plugins/Abeille/core/ajax/AbeilleModelChange.ajax.php", - data: { - action: "setModelToDevice", - eqId: curEqId, - modelChoice: strSaisie, - }, - dataType: "json", - global: false, - success: function () { - // Deuxième requête: réinitialisation de l'équipement à partir de son (nouveau) modèle - // (comme si on avait cliqué sur le bouton mise à jour) - console.log("Simulation clic sur Mise à jour..."); - $("#idUpdateBtn").trigger("click"); - }, - }); - } - } - ); - }); -}); + if(confirm("{{L'équipement sera reconfiguré à partir du modèle choisi. Souhaitez-vous vraiment appliquer ce modèle ?}}" + strSuppBatterie)){ + // Close dialog + myPopup.find(".bootbox-close-button").trigger("click"); -/** - * Lien pour restaurer le modèle "automatique" - */ -$("body").on("click", "a#linkRestoreAutoModel", function () { - jeeDialog.confirm( - "{{Actuellement, le modèle utilisé pour configuré l'équipement est celui que vous avez choisi manuellement. Cette action permet de rétablir le fonctionnement normal d'Abeille: le modèle prédéfini sera utilisé pour reconfigurer l'équipement la prochaine fois qu'il se réannoncera.

Cette action, en elle-même, ne modifie pas la configuration de l'équipement: après avoir cliqué sur OK, patientez quelques secondes, puis forcez l'équipement à se réannoncer (en le débranchant/rebranchant par exemple), ou utilisez la fonction 'Mise à jour'.

Etes-vous sûr de vouloir annuler le choix manuel du modèle ?}}", - function (result) { + // First query: save model configuration $.ajax({ type: "POST", url: "plugins/Abeille/core/ajax/AbeilleModelChange.ajax.php", data: { - action: "disableManualModelForDevice", + action: "setModelToDevice", eqId: curEqId, + modelChoice: strSaisie, }, dataType: "json", global: false, success: function () { - // On laisse le temps à l'utilisateur de lire le message avant d'actualiser la page - console.log("disableManualModelForDevice OK"); - setTimeout(function () { - document.location.reload(); - }, 3000); + // Second query: reset device using its (new) model + console.log("Simulation clic sur Mise à jour..."); + $("#idUpdateBtn").trigger("click"); }, }); } + }); +}); + +/** + * Link to restore automatic model behavior + */ +$("body").on("click", "a#linkRestoreAutoModel", function () { + bootbox.confirm( + "{{Actuellement, le modèle utilisé pour configuré l'équipement est celui que vous avez choisi manuellement. Cette action permet de rétablir le fonctionnement normal d'Abeille: le modèle prédéfini sera utilisé pour reconfigurer l'équipement la prochaine fois qu'il se réannoncera.

Cette action, en elle-même, ne modifie pas la configuration de l'équipement: après avoir cliqué sur OK, patientez quelques secondes, puis forcez l'équipement à se réannoncer (en le débranchant/rebranchant par exemple), ou utilisez la fonction 'Mise à jour'.

Etes-vous sûr de vouloir annuler le choix manuel du modèle ?}}", + function(result){ + if(result){ + $.ajax({ + type: "POST", + url: "plugins/Abeille/core/ajax/AbeilleModelChange.ajax.php", + data: { + action: "disableManualModelForDevice", + eqId: curEqId, + }, + dataType: "json", + global: false, + success: function () { + // Let the user read the message, then refresh the page + console.log("disableManualModelForDevice OK"); + setTimeout(function () { + document.location.reload(); + }, 3000); + }, + }); + } + } ); return false; // prevent default