Skip to content
Snippets Groups Projects
Index.vue 2.15 KiB
Newer Older
fibasile's avatar
fibasile committed
<template>
  <q-page>
fibasile's avatar
fibasile committed
    <Hero />
fibasile's avatar
fibasile committed
    <div
      v-if="loaded"
      class="row q-pa-sm"
    >
fibasile's avatar
fibasile committed
      <div class="col-lg-8 offset-lg-2 col-md-12 col-sm-12">
        <section id="featured">
fibasile's avatar
fibasile committed
          <FeaturedGallery :items="popularProjects" />
fibasile's avatar
fibasile committed
        </section>
        <section id="banner">
fibasile's avatar
fibasile committed
          <UploadBanner />
fibasile's avatar
fibasile committed
        </section>
        <section id="recent">
fibasile's avatar
fibasile committed
          <RecentGallery :items="latestProjects" />
fibasile's avatar
fibasile committed
        </section>

        <section id="collections">
fibasile's avatar
fibasile committed
          <CollectionsGallery />
fibasile's avatar
fibasile committed
        </section>
        <section id="banner2">
fibasile's avatar
fibasile committed
          <BannerFabricademy />
fibasile's avatar
fibasile committed
        </section>
      </div>
    </div>
  </q-page>
</template>

<style>
section {
  margin-top: 64px;
  margin-bottom: 128px;
fibasile's avatar
fibasile committed
  /* margin-left: 32px;
  margin-right: 32px; */
fibasile's avatar
fibasile committed
}
</style>

<script>
fibasile's avatar
fibasile committed
import Hero from '../components/homepage/Hero'
import CollectionsGallery from '../components/collection/CollectionsGallery'
import FeaturedGallery from '../components/homepage/FeaturedGallery'
import RecentGallery from '../components/homepage/RecentGallery'
import UploadBanner from '../components/homepage/UploadBanner'
import BannerFabricademy from '../components/homepage/BannerFabricademy'
fibasile's avatar
fibasile committed

fibasile's avatar
fibasile committed
// eslint-disable-next-line standard/object-curly-even-spacing
import { mapGetters/*, mapActions */ } from 'vuex'
fibasile's avatar
fibasile committed

fibasile's avatar
fibasile committed
export default {
fibasile's avatar
fibasile committed
  name: 'PageIndex',
fibasile's avatar
fibasile committed
  components: {
    Hero,
    FeaturedGallery,
    RecentGallery,
    UploadBanner,
    CollectionsGallery,
    BannerFabricademy
fibasile's avatar
fibasile committed
  },
fibasile's avatar
fibasile committed
  data () {
    return {
      loaded: false
fibasile's avatar
fibasile committed
    }
fibasile's avatar
fibasile committed
  },
  computed: {
    ...mapGetters({
fibasile's avatar
fibasile committed
      latestCollections: 'collections/latestCollections',
      latestProjects: 'projects/latestProjects',
      popularProjects: 'projects/popularProjects'
fibasile's avatar
fibasile committed
    })
fibasile's avatar
fibasile committed
  },
fibasile's avatar
fibasile committed
  mounted () {
    this.loadProjects()
  },
  methods: {
    loadProjects () {
      this.loaded = false
      this.$q.loadingBar.start()
      Promise.all([
        this.$store.dispatch('projects/loadPopularProjects'),
        this.$store.dispatch('projects/loadLatestProjects'),
        this.$store.dispatch('collections/loadLatestCollections')
      ]).finally(() => {
        this.loaded = true
        this.$q.loadingBar.stop()
      })
    }
fibasile's avatar
fibasile committed
  }
fibasile's avatar
fibasile committed
}
fibasile's avatar
fibasile committed
</script>