Skip to content
Snippets Groups Projects
Forked from clients / wotwizard-ui
268 commits behind the upstream repository.
index.vue 2.30 KiB
<template>
<main class="container">
  <h2 class="display-2 text-center mb-5">Page d'accueil</h2>
  <NavigationLoader :isLoading="$apollo.queries.newMembers.loading" class="d-block mx-auto" />
  <div class="row text-center" v-if="!$apollo.queries.newMembers.loading">
    <div class="col-lg-6">
      <div>
        <h2 class="h4">Bienvenue à</h2>
        <MemberList :members="newMembers['entrees']" :displayPubkey="false" :displayHead="false" />
      </div>
    </div>
    <div class="col-lg-6">
      <h2 class="h4">Au revoir à</h2>
      <MemberList :members="newMembers['sorties']" :displayPubkey="false" :displayHead="false" />
    </div>
  </div>
</main>
</template>

<script>
import gql from 'graphql-tag'

export default {
  data() {
    // Variables locales
    return {
      // Fil d'ariane
      breadcrumb: [
        {
          text: 'Accueil',
          active: true
        }
      ],
      today : Math.round(Date.now() /1000)
    }
  },
  // Fonctions locales
  methods: {

  },
  apollo: {
    newMembers : {
      query: gql`query LastEvents($start: Int64, $end: Int64) {
        membersCount(start: $start, end: $end) {
          idList {
            id {
              pubkey
              uid
              status
              hash
              limitDate
              received_certifications {
                limit
              }
            }
            inOut
          }
        }
      } `,
      variables(){return {start:this.today-86400*2,end:this.today}},
      update (data) {
        let result = {'entrees':[],'sorties':[]}

        for (let i = 0; i < data.membersCount.length; i++) {
          let member = data.membersCount[i].idList[0]
          member.id.inOut = member.inOut

          if (member.inOut || member.id.status=='MEMBER') {
            if (result['entrees'].filter(function(e) { return e.hash === member.id.hash; }).length == 0) {
              result['entrees'].push(member.id)
            }
          } else {
            result['sorties'].push(member.id)
          }
        }

        for (let list in result) {
          result[list].sort((a, b) => (a.uid.toLowerCase() > b.uid.toLowerCase()) ? 1 : -1)
        }
        
        return result
      }
    }
  },
  mounted () {
    // Mise à jour du fil d'ariane au chargement
    $nuxt.$emit('changeRoute',this.breadcrumb)
  }
}
</script>