CollectionComponent.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <div>
  3. <div class="row">
  4. <div class="col-4 p-0 p-sm-2 p-md-3 p-xs-1" v-for="(s, index) in posts">
  5. <a class="card info-overlay card-md-border-0" :href="s.url">
  6. <div class="square">
  7. <span v-if="s.pf_type == 'photo:album'" class="float-right mr-3 post-icon"><i class="fas fa-images fa-2x"></i></span>
  8. <span v-if="s.pf_type == 'video'" class="float-right mr-3 post-icon"><i class="fas fa-video fa-2x"></i></span>
  9. <span v-if="s.pf_type == 'video:album'" class="float-right mr-3 post-icon"><i class="fas fa-film fa-2x"></i></span>
  10. <div class="square-content" v-bind:style="previewBackground(s)">
  11. </div>
  12. <div class="info-overlay-text">
  13. <h5 class="text-white m-auto font-weight-bold">
  14. <span>
  15. <span class="far fa-heart fa-lg p-2 d-flex-inline"></span>
  16. <span class="d-flex-inline">{{s.favourites_count}}</span>
  17. </span>
  18. <span>
  19. <span class="fas fa-retweet fa-lg p-2 d-flex-inline"></span>
  20. <span class="d-flex-inline">{{s.reblogs_count}}</span>
  21. </span>
  22. </h5>
  23. </div>
  24. </div>
  25. </a>
  26. </div>
  27. </div>
  28. </div>
  29. </template>
  30. <style type="text/css" scoped></style>
  31. <script type="text/javascript">
  32. export default {
  33. props: ['collection-id'],
  34. data() {
  35. return {
  36. loaded: false,
  37. posts: [],
  38. }
  39. },
  40. beforeMount() {
  41. this.fetchItems();
  42. },
  43. mounted() {
  44. },
  45. methods: {
  46. fetchItems() {
  47. axios.get('/api/local/collection/items/' + this.collectionId)
  48. .then(res => {
  49. this.posts = res.data;
  50. });
  51. },
  52. previewUrl(status) {
  53. return status.sensitive ? '/storage/no-preview.png?v=' + new Date().getTime() : status.media_attachments[0].preview_url;
  54. },
  55. previewBackground(status) {
  56. let preview = this.previewUrl(status);
  57. return 'background-image: url(' + preview + ');';
  58. },
  59. }
  60. }
  61. </script>