Skip to content
Snippets Groups Projects
ProjectDescriptionCard.vue 3.61 KiB
Newer Older
fibasile's avatar
fibasile committed
<template>
  <div class="col q-gutter-md">
    <q-list dense>
      <q-item>
        <q-item-section side>
fibasile's avatar
fibasile committed
          <q-item-label caption>Uploaded by</q-item-label>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
      <q-item>
fibasile's avatar
fibasile committed
        <q-item-section avatar>
          <div class="text-center">
            <router-link :to="`/users/${project.userId}`">
              <q-avatar size="128px">
                <q-img basic :src="project.userAvatar" />
              </q-avatar>
            </router-link>
            <br />
            <div class="text-caption">{{project.username}}</div>
          </div>
        </q-item-section>
      </q-item>
    </q-list>

    <q-list>
      <q-item clickable @click="showDocumentation">
fibasile's avatar
fibasile committed
        <q-item-section side>
fibasile's avatar
fibasile committed
          <q-icon name="book" color="teal-3" />
fibasile's avatar
fibasile committed
        </q-item-section>
        <q-item-section>
fibasile's avatar
fibasile committed
          <q-item-label class="text-teal-6 text-weight-bold">Documentation</q-item-label>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
fibasile's avatar
fibasile committed
      <q-item clickable @click="showDownloads">
fibasile's avatar
fibasile committed
        <q-item-section side>
fibasile's avatar
fibasile committed
          <q-icon name="save" color="teal-3" />
fibasile's avatar
fibasile committed
        </q-item-section>
fibasile's avatar
fibasile committed
        <q-item-section class="text-teal-6 text-weight-bold">Download files</q-item-section>
fibasile's avatar
fibasile committed
      </q-item>
fibasile's avatar
fibasile committed
    </q-list>

    <q-list>
      <q-item>
        <q-item-section side>
          <q-item-label caption>Category</q-item-label>
        </q-item-section>
fibasile's avatar
fibasile committed
        <q-item-section>
fibasile's avatar
fibasile committed
          <q-item-label>{{ category_label }}</q-item-label>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
      <q-item>
        <q-item-section side>
fibasile's avatar
fibasile committed
          <q-item-label caption>Created</q-item-label>
        </q-item-section>
        <q-item-section>
          <q-item-label>{{formatted_date}}</q-item-label>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
fibasile's avatar
fibasile committed
      <q-item v-if="project.tags && project.tags.length > 0">
        <q-item-section side>
          <q-item-label caption>Tags</q-item-label>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
fibasile's avatar
fibasile committed
      <q-item v-if="project.tags && project.tags.length > 0">
fibasile's avatar
fibasile committed
        <q-item-section>
fibasile's avatar
fibasile committed
          <div class="row">
            <q-chip dense v-for="tag,idx in project.tags" v-bind:key="tag" :label="tag" />
          </div>
fibasile's avatar
fibasile committed
        </q-item-section>
      </q-item>
    </q-list>
fibasile's avatar
fibasile committed

    <div class="flex row q-gutter-md">
      <q-card flat class="text-center">
        <q-icon size="64px" name="star" color="grey-3" />
        <div class="text-center text-caption">Stars</div>
        <div class="text-center text-h6 text-grey text-weight-bold">0</div>
      </q-card>
      <q-card flat class="text-center">
        <q-icon size="64px" name="save" color="grey-3" />
        <div class="text-center text-caption">Downloads</div>
        <div class="text-center text-h6 text-grey text-weight-bold">{{project.downloadsCount || 0}}</div>
      </q-card>
    </div>
fibasile's avatar
fibasile committed
  </div>
</template>

<script>
fibasile's avatar
fibasile committed
import { mapGetters } from "vuex";
fibasile's avatar
fibasile committed
export default {
  // name: 'ComponentName',
  props: ["project"],
  data() {
    return {};
  },
fibasile's avatar
fibasile committed
  methods: {
    showDocumentation() {},
    showDownloads() {}
  },
fibasile's avatar
fibasile committed
  computed: {
fibasile's avatar
fibasile committed
    category_label() {
      if (!this.project) return "";
      console.log(this.project.category);
      const cat = this.getCategory(this.project.category);
      return cat ? cat.label : "No category";
    },
    formatted_date() {
      if (!this.project) return "";
      if (this.project.created) {
        try {
          const created_date = this.project.created.toDate();
          console.log(created_date);
          return this.$niceTime(created_date);
        } catch {
          return "";
        }
      }
      return "";
    },

    ...mapGetters({ getCategory: "categories/categoryByName" })
fibasile's avatar
fibasile committed
  }
};
</script>