Afficher/Cacher un menu

Bonjour,

Ayant suivi le tuto de @ngrataloup concernant la création d’une page météo, je me poe une petite question… J’ai chercher sur le forum mais n’ayant trouvé, je me lance !

Y-a-t-il possibilité de cacher un menu (haut ou bas) par rapport à une condition ?
Ce que je voudrais faire avoir deux menus météo ; un local (maison) et un quand je vais en vacances pour avoir la météo d’où je suis… Je peux aussi avoir les deux menus et jongler entre les deux mais trop simple :joy:

Jeedom Core : 4.2.21
Version JC : 1.4.2 beta
DNS Jeedom : non
Statut Démon : Démarré - (2022-09-10 18:00:06)

Equipements :
  Huawei P20 (JC) : sur android (ws)
  Huawei P30 (JC) : v1.4.2 (1107) beta sur android [os : 29] (ws)
  IPad Quequito (JC) : non enregistré
  Redmi Note 10S (JC) : v1.4.2 (1107) beta sur android [os : 30] (ws)

Conditions sur l app : non
Utiliser un scenario sur jeedom pour faire qlq chose : oui avec un petit bloc code

J’avais essayer bêtement un truc comme ça dans un bloc code mais choux blanc…

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnectWidget.class.php'; $DisablePageIdJC = 15;

Je ne dois pas appeler la bonne classe (j’ai regardé les autres mais rien trouvé)

On se moque pas…

Je ne me permettrai pas ! :face_with_hand_over_mouth:
mais c est vrai que simplement mettre un id et espérer que ca fasse le necessaire c est un peu juste :sweat_smile: :rofl:

Je suis pas devant mon pc.
Je te ferai une proposition dans le week end

Merci, mais bon on sait jamais…

Bonne idée … Pour n’afficher le menu haut du détail de la pluie dans l’heure que si une pluie est prévue !

Je vais suivre la réponse :wink:

3 « J'aime »

Alors là tu vas encore plus loin que moi dans l’idée… :grinning: mais j’approuve !

Hello,

je t’avais un peu oublié …

un tout petit peu plus de lignes que ce que tu avais imaginé … :slight_smile:

require_once dirname(__FILE__) . '/../../plugins/JeedomConnect/core/class/JeedomConnect.class.php';


//************ A CHANGER **********************
$disablePageIdJC = 24;
$equipmentApiKey = 'abcdefgh1234567890';
//*********************************************

$hasChange = false;

$eqLogicJC = eqLogic::byLogicalId($equipmentApiKey, 'JeedomConnect');
if (!is_object($eqLogicJC)) {
  $scenario->setLog("Cet équipement JC n'existe pas !");
  return;
}

$conf = $eqLogicJC->getConfig();
//$scenario->setLog("conf => " . json_encode($conf));

// check "menu haut"
if (key_exists('payload', $conf) && key_exists('tabs', $conf['payload'])) {
  foreach ($conf['payload']['tabs'] as $key => $menu) {
    if (key_exists('id', $menu) && $menu['id'] == $disablePageIdJC) {
      $menu['enable'] = false;
      $conf['payload']['tabs'][$key] = $menu;
      $hasChange = true;
    }
  }
}

// check "menu bas"
if (key_exists('payload', $conf) && key_exists('sections', $conf['payload'])) {
  foreach ($conf['payload']['sections'] as $key => $menu) {
    if (key_exists('id', $menu) && $menu['id'] == $disablePageIdJC) {
      $menu['enable'] = false;
      $conf['payload']['sections'][$key] = $menu;
      $hasChange = true;
    }
  }
}

if ($hasChange) {
  $configVersion = $conf['payload']['configVersion'] + 1;
  $conf['payload']['configVersion'] =  $configVersion;
  $scenario->setLog("saving new conf => " . json_encode($conf));
  $eqLogicJC->saveConfig($conf);
  $eqLogicJC->setConfiguration('configVersion', $configVersion);
  $eqLogicJC->getConfig(true, true);
  $eqLogicJC->save();
}
else{
  $scenario->setLog("nothing to change...");
}

Hello,

non t’inquiète, on avait le temps… (on pensait que vous alliez l’intégrer dans une nouvelle maj… :rofl: :rofl:)
je teste ça (et décortique le code…)

Il y aura qlq chose dans la prochaine version pour que ca soit plus simple :slight_smile:

je vais quand même testé :smile: :smile: :smile:

:rofl: :rofl:
j’ai une syntax error, unexpected ‹ } ›
je cherche mais… trouve pas

Manquait un ; sur la drrniere ligne

je venais de le voir en refaisant ligne par ligne

:thinking: :thinking:
dans les logs, j’obtiens direct : Cet équipement JC n’existe pas !

ne devrais-je pas avoir quelque par l’id de mon equipement ou quelque chose comme ça ??

Pas suffisamment clair dans le code…?? :confused:

T as 2 elements a modifier : l id du menu a afficher/masquer, apikey de l equipement sur lequel faire la modif

si si désolé
mauvaise API rentrée… honte sur moi !!

le code se lance bien.
dans le log, j’ai bien (j’ai mis des retours pour que ça soit plus lisible…)

{"type":"JEEDOM_CONFIG","formatVersion":"1.0","idCounter":131,"payload":{"configVersion":4578,"tabs":
[
{"name":"Accueil","icon":{"source":"md","name":"home"},"enable":true,"index":0,"id":0},
{"name":"Lumi\u00e9re","icon":{"source":"md","name":"lightbulb-outline"},"enable":true,"index":1,"id":1},
{"name":"Temp. ","icon":{"source":"md","name":"coolant-temperature"},"enable":false,"index":2,"id":2},
{"name*******************

j’ai mis l’id 2 dans le code par contre sur l’appli, il apparait toujours même en rechargeant la configuration et l’équipement.

j’ai ajouté 2lignes sur la fin
pas le tps de tester
jte laisse me dire

le rajout de ligne fonctionne par contre obligé de recharger la config via le menu de l’appli pour que le menu disparaisse

1 « J'aime »

ne te prends pas la tête surtout si c’est une option que vous rajouterez par la suite