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

VueJS Discussion :

Récupérer l'id dans un tableau


Sujet :

VueJS

  1. #1
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut Récupérer l'id dans un tableau
    Bonjour à tous, je me permet de solliciter votre aide afin de résoudre mon problème.

    J'ai réalisais une fonction qui permet de supprimer un événement de mon calendrier. Dans cette fonction j'ai importais la mutation apollo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    deleteEvent: function () {
          this.$apollo
            .mutate({
              mutation: MUTATION_entreePlanningDelete,
              variable: {
                id: this.id,
              },
            })
     
            .then((data) => {
              console.log(data);
            });
        },
    je dois récupérer la valeur de l'id de mon événement pour la stocker dans la variable id de ma fonction.

    Nom : Capture d’écran du 2021-05-20 15-15-31.png
Affichages : 1093
Taille : 80,5 Ko

    voici le tableau ainsi que les objets qui le compose.

    Je vous remerci d'avance.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Apparemment ton tableau d'événements contient bien les ID.

    Qu'est-ce qui te bloque exactement ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Bonjour Séb désolé pour le retard je cherche à récupérer l'id qui est dans le tableau et de le stocker dans la variable id de ma fonction Delete.

    merci pour votre aide.

    cordialement.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    On n'a pas beaucoup d'infos, même pas un nom de variable

    Dans le principe tu peux faire ce genre de chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <x-calendar>
        <x-event v-for="calendarEvent in $data.calendarEvents">
            ...
            <button @click="deleteEvent(calendarEvent.id)">Supprimer</button>
        </x-event>
    </x-calendar>
    On envoie l'ID de l'événement à supprimer en paramètre de deleteEvent()
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    deleteEvent: function () {
          this.$apollo
            .mutate({
              mutation: MUTATION_entreePlanningDelete,
              variable: {
                id:  ici doit être mis la valeur de l'id de mon tableau
              },
            })
     
            .then((data) => {
              console.log(data);
            });
        },
    J'ai réalisais cette portion de code aussi pour afficher les différents événements dans mon calendier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        watch: {
        entreesPlanning: function () {
          if (this.entreesPlanning != {}) {
            const evenements = [];
            // On parcourt toutes les entrées planning
            this.entreesPlanning.map((entree) => {
              // On ajoute pour chaque entrée planning un objet dans le tableau évènement de la forme
              // { id: ID, name: String, start: Date, end: Date, color: String }
              evenements.push({
                id: entree.id,
                name: entree.label,
                start: entree.dateDebut,
                details: entree.description,
                end: entree.dateFin,
                color: this.colors[this.rnd(0, this.colors.length - 1)],
              });
            });
     
            // On update le tableau d'évènements
            this.events = evenements;
            console.log(evenements);
          }
        },
      },
        },
    Se que j'essai de faire c'est de dire si tu clique sur l'événement récupère l'id de cette événement pour ainsi supprimer l'entrée en base de donnée. Appart faire un foreach je ne vois pas d'autre solution.

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Ça m'a pas l'air optimum de mettre ça dans le watch.

    Et au niveau du template ça donne quoi ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Voilà se que ça donne côté template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            <v-calendar
              ref="calendar"
              v-model="focus"
              color="primary"
              :events="events"
              :event-color="getEventColor"
              :type="type"
              @click:event="showEvent"
              @click:more="viewDay"
              @click:date="viewDay"
              @change="updateRange"
            >
            </v-calendar>
    Voilà la partie data


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
      data: function () {
        return {
          valid: true,
          entreesPlanning: {},
          renderComponent: true,
          today: new Date().toISOString().substr(0, 10),
          focus: new Date().toISOString().substr(0, 10),
          type: "month",
          typeToLabel: {
            month: "Mois",
            week: "Semaine",
            day: "Jour",
            "4Jour": "4 Jours",
          },
     
          name: null, // = label
          details: null, // = description
          start: null, // = date de début
          end: null, // = date de fin
     
          colors: ["blue", "indigo", "deep-purple", "cyan", "green", "orange"], // couleur des événements
          selectedEvent: {},
          selectedElement: null,
          selectedOpen: false,
          events: [],
          dialog: false,
          input: {
            id: "",
            dateDebut: "",
            dateFin: "",
            label: "",
            description: "",
          },
        };
      },

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    On dirait que tu veux en montrer le moins possible

    Il nous faut au moins la boucle et l'élément qui réagit à la demande de suppression de l'utilisateur (bouton ? lien ?)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Bonjour voici une vue plus global du template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
       <v-sheet height="600" v-if="renderComponent">
            <v-calendar
              ref="calendar"
              v-model="focus"
              color="primary"
              :events="events"
              :event-color="getEventColor"
              :type="type"
              @click:event="showEvent"
              @click:more="viewDay"
              @click:date="viewDay"
              @change="updateRange"
            >
            </v-calendar>
     
            <v-menu
              v-model="selectedOpen"
              :close-on-content-click="false"
              :activator="selectedElement"
              offset-x
            >
              <v-card color="grey lighten-4" min-width="350px" flat>
                <v-toolbar :color="selectedEvent.color" dark>
                  <v-btn icon text @click.prevent="updateEvent(selectedEvent)">
                    <v-icon>mdi-pencil</v-icon>
                  </v-btn>
     
                  <v-toolbar-title v-html="selectedEvent.name"></v-toolbar-title>
                  <v-spacer></v-spacer>
                </v-toolbar>
                <v-card-text>
                  <span v-html="selectedEvent.details"></span>
                </v-card-text>
                <v-card-actions>
                  <v-btn text color="secondary" @click="selectedOpen = false">
                    Fermer
                  </v-btn>
                  <v-btn text>Edit</v-btn>
                  <v-btn text @click="deleteEvent(index)"> Effacer </v-btn>
                </v-card-actions>
              </v-card>
            </v-menu>
          </v-sheet>

    Pour ma part pour ma fonction delete j'ai testé avec un

    this.events.slice(index, 1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        deleteEvent: function (index) {
          this.$apollo
            .mutate({
              mutation: MUTATION_entreePlanningDelete,
              variables: {
                id: this.events.splice(index, 1),
              },
            })
     
            .then((data) => {
              console.log(data);
            });
        },
    Nom : Capture d’écran du 2021-05-25 11-17-56.png
Affichages : 1034
Taille : 26,0 Ko

  10. #10
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <v-btn text @click="deleteEvent(index)"> Effacer </v-btn>
    Je ne vois pas d'où vient la variable index

    Et puis t'es sûr qu'il faut envoyer un index et pas plutôt un ID ? Apollo va retrouver ses petits en bdd avec un index ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  11. #11
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Oui effectivement c'est un id et pas un index, Apollo va chercher en base de donnée un id.

  12. #12
    Nouveau membre du Club Avatar de Histo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2019
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2019
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Bonjour j'ai résolu mon soucis


    Je n'avais pas fait attention il fallait juste mettre en paramétre event = à l'événement selectionné dans le calendrier d'ajouter .id pour dire de récupérer l'id de l'événement.


    Voici côté template se qu'il fallait faire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     <v-card color="grey lighten-4" min-width="350px" flat>
                <v-toolbar :color="selectedEvent.color" dark>
                  <v-btn icon text @click.prevent="updateEvent(selectedEvent)">
                    <v-icon>mdi-pencil</v-icon>
                  </v-btn>
     
                  <v-toolbar-title v-html="selectedEvent.name"></v-toolbar-title>
                  <v-spacer></v-spacer>
                </v-toolbar>
                <v-card-text>
                  <span v-html="selectedEvent.details"></span>
                </v-card-text>
                <v-card-actions>
                  <v-btn text color="secondary" @click="selectedOpen = false">
                    Fermer
                  </v-btn>
                  <v-btn text @click="show = !show">Modifier</v-btn>
                  <v-btn text @click="deleteEvent(selectedEvent)"> Effacer </v-btn>
                </v-card-actions>
                <v-expand-transition max-width="500">
                  <div v-show="show">
                    <v-divider></v-divider>
     
                    <v-container>
                      <v-form
                        ref="form"
                        @submit.prevent="updateEvent(selectedEvent)"
                        v-model="valid"
                        lazy-validation
                      >
                        <v-text-field
                          v-model="name"
                          type="text"
                          label="label"
                          :counter="30"
                          :rules="[(v) => !!v || 'Veuillez sélectionner une label']"
                        ></v-text-field>
                        <v-text-field
                          v-model="details"
                          type="text"
                          label="description"
                          required
                        ></v-text-field>
                        <v-text-field
                          v-model="start"
                          type="date"
                          label="date de Debut"
                          :rules="[
                            (v) => !!v || 'Veuillez sélectionner une date de début',
                          ]"
                          prepend-icon="mdi-calendar"
                          required
                        ></v-text-field>
     
                        <v-text-field
                          v-model="end"
                          type="date"
                          label="date de Fin"
                          :rules="[
                            (v) => !!v || 'Veuillez sélectionner une date de fin',
                          ]"
                          prepend-icon="mdi-calendar"
                          required
                        ></v-text-field>
                        <v-btn
                          type="submit"
                          color="primary"
                          class="mr-4"
                          :disabled="!valid"
                          @click.stop="dialog = false"
                        >
                          valider la modification
                        </v-btn>
                      </v-form>
                    </v-container>
                  </div>
                </v-expand-transition>
              </v-card>


    Voici ma fonction Delete qui récupère l'id de mon événement et qui la stock dans la variable id


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
        deleteEvent: function (event) {
          // fonction récupère l'id de l'entrée et la supprime
          this.$apollo
            .mutate({
              mutation: MUTATION_entreePlanningDelete,
              variables: {
                id: event.id,
              },
              refetchQueries: [{ query: QUERY_entreesPlanning }], // refetchQueries me permet d'actualiser l'entrée planning après la mutation
            })
     
            .then((data) => {
              console.log(data);
            });
        },

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de récupération de données String dans un tableau
    Par simonteb dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2012, 17h21
  2. [SAX] Problème de récupération d'une valeur dans un attribut d'une balise
    Par Antheadousa dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 10/01/2012, 23h29
  3. [Graphics View] Problème de récupération de QList<QGraphicsItem *> dans une autre classe
    Par ChevalierN dans le forum Débuter
    Réponses: 13
    Dernier message: 07/01/2012, 18h04
  4. [XL-2007] Problème Macro. Récupération de l'année dans une cellule
    Par PC1967 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/02/2010, 11h08
  5. Réponses: 4
    Dernier message: 29/06/2007, 11h17

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