IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Modifier l'icone Materialize


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut Modifier l'icone Materialize
    Bonjour,

    Je travaille sur un champ autocomplété sous Materialize.

    Nom : Capture d’écran du 2023-06-27 09-31-12.png
Affichages : 97
Taille : 21,8 Ko

    Comme on peut le voir, l'icône de droite ne trouve pas l'image.

    J'ai généré la donnée demandée par une API (voir quelques posts dans les fils Javascript et PHP ces derniers jours) sous cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var json = {
    "Moissac (FRA - 82112)" : "FRA",
    "Montauban (FRA - 82121)" : "FRA",
    etc.
    }
    Je m'aperçois que la seconde partie du json (donnée à droite des ':') correspond à l'URL de l'image de la vignette. Je ne peux pas générer ce genre d'URL côté API, vu que cette dernière doit fournir la donnée pour une utilisation la plus universelle possible.

    La solution se situe donc côté Front. Si je modifie directement dans le JS fourni par Materialize, ça fonctionne mais cela n'est absolument pas optimal. Il s'agit de la modification d'un fichier général pour une utilisation réduite, limitée à l'autocomplétion des entités administratives d'un pays.

    Pour bien, il faudrait changer dynamiquement la source, mais je ne sais pas trop comment faire.

    Nom : Capture d’écran du 2023-06-27 09-47-09.png
Affichages : 88
Taille : 21,6 Ko

    Est ce qqun aurait une idée ?

    Merci pour vos retours,
    Bonne journée,

    Sylvain

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 354
    Points : 15 700
    Points
    15 700
    Par défaut
    je ne vois pas d'image dans la documentation, quel code javascript utilisez vous pour générer ce menu déroulant ?
    https://materializecss.com/autocomplete.html

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 656
    Points
    44 656
    Par défaut
    Bonjour,
    Citation Envoyé par mathieu
    je ne vois pas d'image dans la documentation, ...
    on peut lire dans la doc
    Citation Envoyé par Initialization
    The data is a json object where the key is the matching string and the value is an optional image url.
    et en explorant le fichier source : https://materializecss.com/bin/materialize.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Render
    for (var i = 0; i < matchingData.length; i++) {
      var _entry = matchingData[i];
      var $autocompleteOption = $('<li></li>');
      if (!!_entry.data) {
        $autocompleteOption.append("<img src=\"" + _entry.data + "\" class=\"right circle\"><span>" + _entry.key + "</span>");
      } else {
        $autocompleteOption.append('<span>' + _entry.key + '</span>');
      }
     
      $(this.container).append($autocompleteOption);
      this._highlight(val, $autocompleteOption);
    }
    Pour en revenir à la question, il suffit à réception du JSON de modifier la value de chaque key pour la faire pointer sur une l'adresse de l'image correspondante, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const objJSON = {
      "Moissac (FRA - 82112)": "FRA",
      "Montauban (FRA - 82121)": "FRA",
    }
    // modif. des données images
    Object.keys(objJSON).forEach((key) => {
      objJSON[key] = `images/${objJSON[key]}.png`;
    })
    avant de transmettre le tout à l'autocomplete.

Discussions similaires

  1. Modifier l'icone d'un exe !
    Par darkwall_37 dans le forum Windows XP
    Réponses: 3
    Dernier message: 15/10/2007, 10h35
  2. Modifier l'icone par le code
    Par haffouff dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/05/2007, 12h35
  3. [Icone] Modifier l'icone de ma base de données
    Par snoopy69 dans le forum Access
    Réponses: 2
    Dernier message: 19/07/2006, 10h04
  4. Comment modifier l'icone selon la version du programme ?
    Par Ben_Le_Cool dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2005, 16h25
  5. Modifier l'icone d'un TTreeNode sur click
    Par ramseb dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/08/2003, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo