Skip to content
Snippets Groups Projects
ProjectLastFeatures.vue 2.38 KiB
Newer Older
Florent Lavelle's avatar
dev
Florent Lavelle committed
<template>
  <div class="red card">
    <div class="content">
      <div class="center aligned header">
        Derniers signalements
      </div>
      <div class="center aligned description">
        <div
          :class="{ active: loading }"
          class="ui inverted dimmer"
        >
          <div class="ui text loader">
            Récupération des signalements en cours...
          </div>
        </div>
        <div class="ui relaxed list">
            v-for="(item, index) in features.slice(0,5)"
Florent Lavelle's avatar
dev
Florent Lavelle committed
            :key="item.properties.title + index"
            class="item"
          >
            <div class="content">
              <div>
                <FeatureFetchOffsetRoute
                  :feature-id="item.id"
                  :properties="item.properties"
                />
              </div>
              <div class="description">
                <em>
                  [{{ item.properties.created_on }}
                  <span v-if="user && item.properties.creator">
                    , par
                    {{
                      item.properties.creator.full_name
                        ? item.properties.creator.full_name
                        : item.properties.creator.username
                    }}
                  </span>
                  ]
                </em>
              </div>
            </div>
          </div>
Florent Lavelle's avatar
Florent Lavelle committed
          <em
Florent Lavelle's avatar
Florent Lavelle committed
            v-if="features.length === 0 && !loading"
Florent Lavelle's avatar
Florent Lavelle committed
          >Aucun signalement pour le moment.</em>
Florent Lavelle's avatar
dev
Florent Lavelle committed
        </div>
      </div>
    </div>
  </div>
</template>

<script>

import { mapState } from 'vuex';
import FeatureFetchOffsetRoute from '@/components/Feature/FeatureFetchOffsetRoute';
Florent Lavelle's avatar
dev
Florent Lavelle committed

export default {
Florent Lavelle's avatar
Florent Lavelle committed

Florent Lavelle's avatar
dev
Florent Lavelle committed
  name: 'ProjectLastFeatures',

  data() {
    return {
      loading: true,
    };
Florent Lavelle's avatar
dev
Florent Lavelle committed
  },

  computed: {
    ...mapState('feature', [
      'features'
    ]),

  mounted() {
    this.fetchLastFeatures();
  },

  methods: {
    fetchLastFeatures() {
      this.loading = true;
      this.$store.dispatch('feature/GET_PROJECT_FEATURES', {
        project_slug: this.$route.params.slug,
        ordering: '-created_on',
        limit: 5,
      })
        .then(() => {
          this.loading = false;
        })
        .catch((err) => {
          console.error(err);
          this.loading = false;
        });
    }
  }
Florent Lavelle's avatar
dev
Florent Lavelle committed
};
</script>