Question développement pour 4.5

Bonjour les amis,

petite question sur le passage en 4.5, vu qu’il n’y a plus potentiellement de jquery, je teste comment mapper tous les codes.

pour les appels asynchrones dans configuration.php pour les boutons je suis passé par fetch() qui envoie bien l’info au serveur jeedom et côté ajax j’ai du adapter le code, car la variable $_POST ne s’initialise pas =>

voilà le côté émission :

document.getElementById('bt_tcpdetect').addEventListener('click', function () {
  fetch('plugins/jee4lm/core/ajax/jee4lm.ajax.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ action: 'tcpdetect' })
  })
  .then(response => response.json())
  .then(data => {
    if (data.state !== 'ok') {
      jeedomUtils.showAlert({ message: data.result, level: 'danger' });
      return;
    }
    jeedomUtils.showAlert({ message: '{{Détection réussie, regardez les logs}}', level: 'success' });
  })
  .catch(error => handleAjaxError(null, null, error));
});

et réception :

    $data = json_decode(file_get_contents('php://input'), true);
    if (is_array($data)) {
        foreach ($data as $key => $value) {
            $_POST[$key] = $value;
        }
    }

    $action = init('action');
    log::add('jee4lm', 'debug', ' action request = (' . $action. ')');
    switch ($action) {
        case 'login':

tout fonctionne bien à un détail près. sur chrome (mac os) quand on utilise jquery on a le signe d’attente qui mouline le temps du traitement et ensuite le message de statut.

sur ce type d’appel, le signe d’attente (« le sablier ») ne s’affiche plus, du coup comment fait-on pour l’afficher en 4.5 pendant la durée du fetch ?

faut-il ajouter du code avant le fetch avec un await devant ?

merci par avance pour vos retours d’expérience sur ce sujet, j’avoue que je galère un peu à supprimer jquery sur mes codes spécifiques :slight_smile:

Salut,

Absolument pas, jquery est toujours là.

2 « J'aime »

ah ok, j’avais compris qu’il fallait essayer de supprimer le code jquery, c’est ce que je fais. j’ai tout enlevé sauf les pages du desktop. c’est juste que je cherche comment afficher le sablier jeedom avec ces nouvelles contraintes.

après un peu de recherche et d’observation du core, j’ai trouvé comment simuler jquery sur la page de configuration, voilà un exemple de code pour un bouton qui appelle une procédure et qui affiche le sablier le temps que le code s’exécute côté serveur.

document.getElementById('bt_tcpdetect').addEventListener('click', function () {
  domUtils.showLoading();
  fetch('plugins/jee4lm/core/ajax/jee4lm.ajax.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ action: 'tcpdetect' })
  })
  .then(response => response.json())
  .then(data => {
    if (data.state !== 'ok') {
      domUtils.hideLoading();
      jeedomUtils.showAlert({ message: data.result, level: 'danger' });
      return;
    }
    domUtils.hideLoading();
    jeedomUtils.showAlert({ message: '{{Détection réussie, regardez les logs}}', level: 'success' });
  })
  .catch(error => handleAjaxError(null, null, error));
});

Bonjour,

Pourquoi ne pas simplement utiliser les appels Ajax du core?

1 « J'aime »

j’ai compris que petit à petit jquery allait disparaitre de jeedom, donc j’ai éliminé le sujet en utilisant du HTML5 « à titre d’exercice » et j’avais loupé ce paragraphe, donc je te remercie pour le lien :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.