123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <template>
- <div class="heroes-page">
- <div class="container">
- <h1 class="title">Course Heroes</h1>
- <portal-target
- v-for="hero in heroes"
- :key="hero._id"
- :name="`modal-view-${hero._id}`" />
- <table class="heroes-table table is-responsive">
- <thead>
- <tr class="main-table-row">
- <th>Image</th>
- <th>Title</th>
- <th>Subtitle</th>
- <th>Status</th>
- </tr>
- </thead>
- <tbody>
- <tr
- v-for="hero in heroes"
- :key="hero._id"
- @click="openModal(hero._id)"
- :class="{'isActive': activeHero._id === hero._id}"
- class="table-row"
- >
- <td>{{hero.image || 'Not Set'}}</td>
- <td>{{hero.title || 'Not Set'}}</td>
- <td>{{hero.subtitle || 'Not Set'}}</td>
- <td>{{activeHero._id === hero._id ? 'Active' : 'Inactive'}}</td>
- <td class="modal-td" v-show="false">
- <portal :to="`modal-view-${hero._id}`">
- <Modal
- @submitted="activateHero($event, hero._id)"
- :ref="`modal-${hero._id}`"
- :showButton="false"
- actionTitle="Make Active"
- openTitle="Favorite"
- title="Make Course Hero">
- <div>
- <div class="subtitle">
- Title: {{hero.title || 'Not Set'}}
- </div>
- <div class="subtitle">
- Subtitle: {{hero.subtitle || 'Not Set'}}
- </div>
- <figure class="image is-3by1">
- <img :src="hero.image">
- </figure>
- </div>
- </Modal>
- </portal>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- </template>
- <script>
- import Modal from '~/components/shared/Modal'
- export default {
- middleware: 'admin',
- components: {
- Modal
- },
- computed: {
- heroes() {
- return this.$store.state.instructor.heroes
- },
- activeHero() {
- return this.$store.state.hero.item
- }
- },
- async fetch({store}) {
- await store.dispatch('instructor/fetchHeroes')
- },
- methods: {
- openModal(modalId) {
- const modal = this.$refs[`modal-${modalId}`][0]
- modal.openModal()
- },
- async activateHero({ closeModal },heroId) {
- try{
- const result = await this.$store.dispatch('instructor/activateHero', heroId)
- this.$toasted.success('Hero was succesfuly activated!', {duration: 2000})
- closeModal()
- }catch(error){
- this.$toasted.success('Hero was activated fail!', {duration: 2000})
- }
- }
- }
- }
- </script>
- <style scoped lang="scss">
- .heroes-page {
- max-width: 1000px;
- margin: 0 auto 5rem auto;
- margin-top: 40px;
- }
- .title {
- font-size: 45px;
- font-weight: bold;
- }
- .table-row {
- margin: 20px;
- &.isActive {
- background-color: #dfffe1
- }
- &:hover {
- cursor: pointer;
- background-color: #e4e4e4;
- }
- }
- </style>
|