Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Suppression d'un équipement depuis un design

Pour échanger sur les plugins classés en catégorie "Programmation"
boabroth
Timide
Messages : 3
Inscription : 04 avr. 2018, 16:59

Suppression d'un équipement depuis un design

Message par boabroth » 26 sept. 2019, 08:30

Bonjour à tous,

J'aimerai depuis un design plus précisément depuis un lien HTML d'un design, pouvoir supprimer un équipement Jeedom.

Au départ, j'ai essayé de le faire depuis une requête HTTP en appelant les API mais apparemment il n'y a pas ce qu'il faut ou du moins, je n'ai pas trouvé.

Ensuite, je suis parti sur un appel de fonction javascript/Jquery qui elle même appelle via de l'Ajax un fichier PHP qui est sensé supprimer un équipement.
Dans mon fichier PHP, j'essaye de supprimer l'équipement grâce à la commande eqLogic::byId($id); pour récupérer l'équipement puis ->remove() pour le supprimer mais ça ne fonctionne pas.
Voici le détail :

HTML

Code : Tout sélectionner

<a id="485" class="btn eqLogicAction pull-right" data-action="remove" style="padding: 0px 12px;" onclick="removeEq('485')"><i class="fa fa-times" style="color: red;"></i></a>
Script javascript

Code : Tout sélectionner

<script type='text/javascript'>
	function removeEq(idEq) {
          $.ajax({
            url: '/removeEquipment.php', 
            data: { id: idEq }, 
            type: 'POST',
		success: function(resultat) { alert('SUCCESS=' + resultat); },
		error: function(resultat, statut, erreur) { alert('ERROR=' + resultat + ' | ' + statut + ' | ' + erreur); }
	  });
	}
</script>
Fichier PHP "removeEquipment.php"

Code : Tout sélectionner

<?php

  require "core/api/jeeApi.php";

  if (isset($_POST['idEq'])) {
    $id=$_POST['idEq'];
    $eq=eqLogic::byId($id);
    $eq->remove();
  }
  
?>
Le problème se situe au niveau du fichier PHP. Le "require" me renvoie une erreur :
{"jsonrpc":"2.0","id":99999,"error":{"code":1,"message":"Requ\u00eate invalide. Version JSON-RPC invalide : "}}.
Le chemin vers le fichier "jeeApi.php" est bien correct (testé avec la fonction "file_exists").
Peut être que je ne m'y prends pas de la bonne façon...

Quelqu'un pourrait il m'aider ?

boabroth
Timide
Messages : 3
Inscription : 04 avr. 2018, 16:59

Re: Suppression d'un équipement depuis un design

Message par boabroth » 26 sept. 2019, 16:13

Ça pourra peut être être utile à quelqu'un un jour.
J'ai finalement résolu mon problème.

Je suis passé par un scénario (bloc code) qui supprime un équipement (id de l'équipement passé en paramètre du scénario). Le scénario est appelé grâce à un lien hypertexte (contenu dans mon design) qui appelle un javascript qui lance une requête HTTP pour appeler le scénario.

Lien

Code : Tout sélectionner

<a id="485" class="btn eqLogicAction pull-right" data-action="remove" style="padding: 0px 12px;" onclick="removeEq(485, &quot;Camera&quot;)">
Javascript

Code : Tout sélectionner

<script type='text/javascript'>
  function removeEq(idEq, nameEq) {
    var r = confirm("Etes vous sûr de vouloir supprimer l'équipement'" + nameEq + "' ?");
    if (r == true) {
      var xhr = new XMLHttpRequest();
      xhr.open('POST', 'https://URL_JEEDOM/core/api/jeeApi.php');
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send('apikey=CLE_API_JEEDOM&type=scenario&id=ID_SCENARIO&action=start&tags=source%3Dcolis%20idEq%3D' + idEq);
    }
  }
</script>
Scénario de suppression de l'équipement

Code : Tout sélectionner

$tags = $scenario->getTags();
$id = $tags['#idEq#'];
$source = $tags['#source#'];

$scenario->setLog('Récupération et suppression de l\'équipement avec l\'id=' + $id);

$equipments = eqLogic::byId($id);
$equipments -> remove();

Répondre

Revenir vers « [Catégorie] Programmation »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités