Commande refresh se créé et se delete

Salut,

Suite à une demande utilisateur, j’ai commencé à ajouter une commande rafraîchir sur les équipements de mon plugin plugin-import2calendar.

J’ai regardé dans un des plugins officiels que je possède et donc j’ai juste ajouté dans PostSave ceci :

  public function postSave()
  {
    $cmd = $this->getCmd(null, 'refresh');
    if (!is_object($cmd)) {
      $cmd = new import2calendarCmd();
      $cmd->setLogicalId('refresh');
      $cmd->setName(__('Rafraichir', __FILE__));
      }
      $cmd->setType('action');
      $cmd->setSubType('other');
      $cmd->setEqLogic_id($this->getId());
      $cmd->save();
  
  }

La commande est bien créée une fois que j’appuie sur sauvegarder, mais elle est supprimée si j’appuie à nouveau sur sauvegarder.

J’ai loupé quoi ?

Salut,

Ça supprime la commande si tu sauves tout de suite après la première sauvegarde mais c’est le cas aussi si tu vas ailleurs et que tu reviens sur l’équipement pour faire un save ?

Oui, et le plus bizarre :

Cadre rouge : la sauvegarde va créer la commande et le coup d’après la supprimer.
Cadre bleu : la sauvegarde crée la commande et ne la supprime jamais.

Jeedom :

Ce genre de comportement me parle mais j’arrive plus à remettre la main sur l’histoire…

Bon en ajoutant :

  public function dontRemoveCmd() {
    return true;
  }

Je n’ai plus le problème mais cela n’explique pas la différence entre les 2 boutons sauvegarde.

Bonsoir,

En bleu, le core sauvegarde les éléments qui sont présent dans la modale, le PostSave fait bien le Job (création de la cmd) mais n’est pas synch vers le commandtab.

Le fait de revenir sur le commandtab et de sauvegardé (rouge) supprime la commande car elle n’est pas présente dedans.

C’est un problème sur le core, il devrait fait une synchro des commandes lors du save sur la modale, (comme est fait pour isEnable, name et isVisible)

1 « J'aime »

Salut,

Lors d’un save, le core save les commandes présentent dans la liste et uniquement celles-là et l’équipement

si ta commande « disparait » lors du deuxième save c’est qu’elle n’est pas dans la liste => est-ce que tu ne la filtre pas à l’affichage?

donc oui on est d’accord

oui et non:

  • oui: le refresh / synhcro du commandTab pourrait se faire mais ca me parait tricky car ce n’est pas juste retrouver une propriété et mettre à jour mais ajouter une commande (une ligne) potentiellement
  • non: car je ne pense pas que ca soit le problème de @sagitaz ici, il prenait ces deux boutons juste pour exemple si j’ai bien compri son cas c’est lors de deux appuis (de suite?) sur le bouton (encadré en) rouge (on avait pourtant dit de pas appuyer sur ce « bouton rouge » :laughing:) que la commande est supprimée aux deuxième => d’où ma question: cette commande est elle filtré à l’affichage

si filtrée (mais pourquoi faire ça?) alors la bonne méthode serait plutôt ceci pour ne cibler que cette commande:

public function dontRemoveCmd() {
    return $this->getLogicalId()=="refresh";
  }

sauf si tu veux vraiment empêcher la suppression de toutes les commandes

4 « J'aime »

Merci pour ton retour complet.

En effet, je n’ai pas sur les équipements de mon plugin de commandTab, pour la bonne raison que jusqu’à présent je n’avais aucune commande pour les équipements.

Cette commande sera la seule et restera « cachée », je vais modifier la fonction dontremoveCmd quand même.

Voilà et bien moi qui ne retrouvais pas l’histoire, au moins maintenant on a un bon p’tit sujet sur lequel on pourra pointer plus facilement quand on cherchera :grin:

2 « J'aime »

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