Vuejs Add POPup MOdel for view File

<template>
  <b-row>
    <b-col cols="12" xl="12">
      <transition name="slide">
      <b-card header-tag="header" footer-tag="footer">
        <div slot="header">
          <strong>Materials</strong>
          <router-link to="/addmaterial" v-if="is_sfe_trainer || is_course_trainer">
            <button type="button" class="btn btn-primary" style="float:right" data-toggle="tooltip"
              data-placement="left" title="Add a Material">
                <i class="icon-plus"></i>
            </button>
          </router-link>
        </div>
        <loading :active.sync="isLoading" :can-cancel="true" :is-full-page="fullPage"></loading>
        <div class="alert alert-warning" role="alert" v-if="table_data==false">
          <div v-if="is_course_trainer|| is_sfe_trainer">
            <center><h6>Upload Material !!</h6></center>
          </div>
          <div v-if="is_superuser || is_trainee" >
            <center><h6>No material found</h6></center>
          </div>
        </div>
        <div v-else>
          <b-table :hover="hover" :striped="striped" :bordered="bordered" :small="small" :fixed="fixed" responsive="sm" :items="items" :fields="fields" :current-page="currentPage" :per-page="perPage" @row-clicked="rowClicked">
            <template slot="username" slot-scope="data">
              <strong>{{}}</strong>
            </template>
            <template slot="status" slot-scope="data">
              <c-switch class="mx-1" color="success" checked />
            </template>
            <template slot="Actions" slot-scope="data" >

            <div>
              <b-button v-on:click.prevent="getMaterial(data.item.id)" v-b-modal.modal-xl variant="primary" type="submit" size="sm">
                <i class="fa fa-eye fa-lg" title="view"></i>
              </b-button>
            </div>

              <!-- <b-button v-on:click.prevent="getMaterial(data.item.id)" type="submit" size="sm" variant="primary">
                <i class="fa fa-eye fa-lg" title="view"></i>
              </b-button> -->

              <router-link v-bind:to="'/editmaterial/' + data.item.id" v-if="is_superuser && (data.item.file_status == 'PENDING' || data.item.file_status == 'pending')">
                <b-button size="sm" variant="twitter icon" class="mr-1 btn-brand btn-xing">
                  <li class="fa fa-edit fa-lg" title="update"></li>
                </b-button>
              </router-link>
              <b-button size="sm" variant="youtube icon" v-on:click="deleteMaterial(data.item.id)" class="mr-1 btn-brand" v-if="is_course_trainer || is_sfe_trainer">
                <i class="fa fa-trash-o fa-lg" title="delete"></i>
              </b-button>
            </template>
          </b-table>

          <nav>
            <b-pagination size="sm" :total-rows="getRowCount(items)" :per-page="perPage"
            v-model="currentPage" prev-text="Prev" next-text="Next" hide-goto-end-buttons/>
          </nav>

        </div>

<!-- <div class="modal fade" id="modal-scrollable" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        <div style="text-align: center;">
<iframe src="http://docs.google.com/gview?url=http://www.pdf995.com/samples/pdf.pdf&embedded=true"
style="width:500px; height:500px;" frameborder="0"></iframe>

 <object type='application/pdf' :data="currentMaterial.file" width="100%" height="500" style="height: 85vh;"></object> 

</div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div> -->

<b-modal id="modal-xl" size="xl" title="Material">
      <div style="text-align: center;">

        <!-- {{iframeSrc.split('.').pop()}} -->
      <div v-if=" iframeSrc.split('.').pop() === 'jpg'">
        <!-- {{this.currentMaterial.file}} -->
          <img :src="currentMaterial.file" >
      </div>
      <div v-else>
        <!-- {{this.final_url}} -->
        <iframe :src="this.final_url" style="width:850px; height:500px;" frameborder="0">
      </iframe>
      </div>
      </div>
</b-modal>
</b-card>

</transition>
</b-col>

  </b-row>

</template>
<script>
import axios from 'axios'
import { MATERIAL } from  '../../endpoints';
import { Switch as cSwitch } from '@coreui/vue'
import Swal from 'sweetalert2'
import Loading from 'vue-loading-overlay';
import 'vue-loading-overlay/dist/vue-loading.css';


export default {
  name: 'Material',
  props: {
    hover: {
      type: Boolean,
      default: true
    },
    striped: {
      type: Boolean,
      default: true
    },
    bordered: {
      type: Boolean,
      default: false
    },
    small: {
      type: Boolean,
      default: false
    },
    fixed: {
      type: Boolean,
      default: false
    }
  },

  data: () => {
    return {
      profileUpdateModal: false,
      isLoading:false,
      fullPage:true,
      currentMaterial:[],
      iframeSrc:'',
      items: [],
      next_url:'',
      final_url:'',
      previous_url:'',
      is_sfe_trainer: false,
      is_course_trainer: false,
      fields: [
        {key: 'trainer'},
        {key: 'batch'},
        {key: 'modules'},
        {key: 'file'},
        {key: 'comment'},
        {key: 'file_status'},
        {key: 'Actions'}
      ],
      currentPage: 1,
      perPage: 10,
      totalRows: 0,
      table_data:true
    }
  },

  components: {
 
  },

  computed: {
  },

  methods: {

    getMaterial(id) {
      this.isLoading = true;
      axios.get(`${MATERIAL}${id}`).then((response) => {
        this.currentMaterial = response.data;
        this.isLoading = false;
        this.iframeSrc= this.currentMaterial.file;
        // console.log("iframeSrc",  this.iframeSrc.split('.').pop())

        this.final_url='http://docs.google.com/gview?url=' + this.iframeSrc + '&embedded=true'
        // console.log("iframeSrc",  this.final_url.split('.').pop())

        // window.open(this.currentMaterial.file);
      }).catch((err) => {
        this.isLoading = false;
      });
    },

   

    getBadge (status) {
      return status === 'Active' ? 'success'
        : status === 'Inactive' ? 'secondary'
          : status === 'Pending' ? 'warning'
            : status === 'Banned' ? 'danger' : 'primary'
    },

    getRowCount (items) {
      return items.length
    },

   

    rowClicked (item) {
      const userLink = this.userLink(item.id)
      this.$router.push({path: userLink})
    }
  },

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

  beforeMount() {
   
  
  }
}
</script>



Comments

Popular posts from this blog

ERR: error parsing query: found influx, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line

How To Convert Html File/URL/String Into Image Using Python

How to get Full URL or get absolute url In Django