J’ai tenté de déplacer l’assignement des widgets de la fonction postSave vers la fonction postInsert et ça a l’air de fonctionner !
Du coup j’ai créé la fonction postInsert, le tout mériterait surement d’être réécrit, mais là je n’ai pas les capacités de savoir exactement quoi mettre à quel endroit pour que ce soit vraiment propre
Et je n’ai pas testé ce que ça donne sur la création d’un nouvel objet non plus !
Voici la section modifiée :
public function postInsert() {
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'status');
// On defini le template a appliquer par rapport à la version Jeedom utilisée
if (version_compare(jeedom::version(), '4.0.0') >= 0) {
$cmdlogic->setTemplate('dashboard','kroomba::state');
$cmdlogic->setTemplate('mobile','kroomba::state');
}
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'binFull');
// On defini le template a appliquer par rapport à la version Jeedom utilisée
if (version_compare(jeedom::version(), '4.0.0') >= 0) {
$cmdlogic->setTemplate('dashboard','kroomba::binfull');
$cmdlogic->setTemplate('mobile','kroomba::binfull');
}
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'battery');
// On defini le template a appliquer par rapport à la version Jeedom utilisée
if (version_compare(jeedom::version(), '4.0.0') >= 0) {
$cmdlogic->setTemplate('dashboard','kroomba::battery');
$cmdlogic->setTemplate('mobile','kroomba::battery');
}
$cmdlogic->save();
}
public function postSave() {
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'status');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Etat', __FILE__));
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setLogicalId('status');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'MODE_STATE');
}
$cmdlogic->setType('info');
$cmdlogic->setSubType('string');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'binFull');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Bac plein', __FILE__));
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setLogicalId('binFull');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_INFO');
}
$cmdlogic->setType('info');
$cmdlogic->setSubType('binary');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'battery');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Batterie', __FILE__));
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setLogicalId('battery');
$cmdlogic->setDisplay('generic_type', 'BATTERY');
$cmdlogic->setIsVisible(0);
}
$cmdlogic->setType('info');
$cmdlogic->setSubType('numeric');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'mission');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Rafraichir', __FILE__));
$cmdlogic->setLogicalId('mission');
$cmdlogic->setIsVisible(0);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'start');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Démarrer', __FILE__));
$cmdlogic->setLogicalId('start');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
$cmdlogic->setDisplay('icon', '<i class="fas fa-play"></i>');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'pause');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Pause', __FILE__));
$cmdlogic->setLogicalId('pause');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
$cmdlogic->setDisplay('icon', '<i class="fas fa-pause"></i>');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'resume');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Continuer', __FILE__));
$cmdlogic->setLogicalId('resume');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
$cmdlogic->setDisplay('icon', '<i class="fas fa-step-forward"></i>');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'stop');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Stop', __FILE__));
$cmdlogic->setLogicalId('stop');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
$cmdlogic->setDisplay('icon', '<i class="fas fa-stop"></i>');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
$cmdlogic = kroombaCmd::byEqLogicIdAndLogicalId($this->getId(),'dock');
if (!is_object($cmdlogic)) {
$cmdlogic = new kroombaCmd();
$cmdlogic->setName(__('Base', __FILE__));
$cmdlogic->setLogicalId('dock');
$cmdlogic->setIsVisible(1);
$cmdlogic->setDisplay('generic_type', 'GENERIC_ACTION');
$cmdlogic->setDisplay('icon', '<i class="fas fa-home"></i>');
}
$cmdlogic->setType('action');
$cmdlogic->setEqLogic_id($this->getId());
$cmdlogic->setSubType('other');
$cmdlogic->save();
}