ChapterInfo.vue 7.17 KB
<template>
  <div>
    <!-- LOADER -->
    <div class="loader" v-if="showLoader">
      <v-progress-circular indeterminate color="white"></v-progress-circular>
    </div>

    <!-- SNACKBAR -->
    <v-snackbar
      :timeout="timeout"
      :top="y === 'top'"
      :right="x === 'right'"
      :vertical="mode === 'vertical'"
      v-model="snackbar"
      :color="snackbarColor"
    >
      {{ text }}
      <v-spacer></v-spacer>
      <v-btn flat text @click="snackbar = false">X</v-btn>
    </v-snackbar>

    <v-container class="pt-0">
      <v-layout row class="mt-1">
        <v-flex xs8>
          <!-- CHAPTER INFO -->
          <div class="title side-bar-color font-weight-bold">{{chapter.chapters[0].chapterName}}</div>
          <div class="subheading grey--text lighten-1">{{chapter.chapters[0].description}}</div>
          <div
            v-for="(point,index) in chapter.chapters[0].chapterPoints"
            :key="index"
            class="ml-2 mt-2"
          >
            <span class="subheading grey--text lighten-1">{{index +1}}. {{point}}</span>
          </div>
          <!-- ACTIVITIES -->
          <div class="mt-5">
            <v-icon>library_books</v-icon>
            <span class="subheading font-weight-bold">Activities</span>
          </div>
          <!-- OTHER OPTIONS -->
          <div class="mt-5">
            <ul class="subheading" style="cursor: pointer">
              <li @click="$router.push({name: 'Live Online Class'})">
                <v-btn flat>Live online classes solution</v-btn>
              </li>
              <!-- <li>
                <v-btn flat>Tutorial-pharmacetutical</v-btn>
              </li>
              <li>
                <v-btn flat>HSP Interactive content</v-btn>
              </li>
              <li>
                <v-btn flat>Assessment</v-btn>
              </li>-->
            </ul>
          </div>

          <!-- SELECT CHAPTERS -->
          <v-layout row class="mt-5">
            <!-- PREVIOUS CHAPTER -->
            <v-flex
              style="cursor: pointer;"
              class="subheading font-weight-bold text-xs-left"
              v-if="indexSelectedChapter > 0"
              @click="showSelectedChapter('back')"
            >
              <v-icon class="black--text" style="position:relative; top: 4px;">chevron_left</v-icon>
              {{chapterNames[indexSelectedChapter - 1]}}
            </v-flex>
            <v-spacer></v-spacer>
            <!-- NEXT CHAPTER -->
            <v-flex
              style="cursor: pointer;"
              class="subheading font-weight-bold text-xs-right"
              v-if="indexSelectedChapter < chapterNames.length -1"
              @click="showSelectedChapter('forward')"
            >
              {{chapterNames[indexSelectedChapter + 1]}}
              <v-icon class="black--text" style="position:relative; top: 4px;">chevron_right</v-icon>
            </v-flex>
          </v-layout>
          <!-- <v-flex class="text-xs-right mt-5" v-else>
            <span class="subheading font-weight-bold">Return to chapter one</span>
          </v-flex>-->
        </v-flex>

        <v-spacer></v-spacer>

        <!-- COURSES - positioned to the right of the page -->
        <v-flex xs3>
          <v-card class="elevation-0 card-border" height="100%">
            <v-container class="pt-0">
              <div class="side-bar-color font-weight-bold title">Courses</div>

              <div v-for="(course,index) in courseData" :key="index">
                <v-btn
                  flat
                  class="subheading text-xs-start justify-left"
                  style="cursor: pointer;"
                  block
                  @click="routeToCourseDetails(course._id)"
                >
                  <div style="width: 100%;text-align: left;">
                    <v-icon style="color: red;padding-bottom: 3px;" size="15">play_arrow</v-icon>
                    {{course.courseName}}
                  </div>
                </v-btn>
              </div>
            </v-container>
          </v-card>
        </v-flex>
      </v-layout>
    </v-container>
  </div>
</template>
<script>
import http from "@/Services/http.js";
import AllApiCalls from "@/Services/AllApiCalls.js";
export default {
  mixins: [AllApiCalls],
  data() {
    return {
      // courseData: [],
      showLoader: false,
      chapter: { chapters: [{}] },
      chapterNames: [],
      chapterIds: [],
      selectedChapterId: "",
      indexSelectedChapter: ""
    };
  },
  methods: {
    showSelectedChapter(newChapter) {
      if (newChapter == "forward") {
        this.indexSelectedChapter += 1;
        this.selectedChapterId = this.chapterIds[this.indexSelectedChapter];
        this.getParticularChapterDetail();
      }
      if (newChapter == "back") {
        this.indexSelectedChapter -= 1;
        this.selectedChapterId = this.chapterIds[this.indexSelectedChapter];
        this.getParticularChapterDetail();
      }
    },
    getParticularChapterDetail() {
      http()
        .get("/getParticularChapterDetail", {
          params: {
            courseDetailId: this.$route.query.courseDetailId,
            chapterId: this.selectedChapterId
          }
        })
        .then(response => {
          this.chapter = response.data.data;
          console.log(" chapter data - ", this.chapter);
          this.showLoader = false;
        })
        .catch(err => {
          console.log("err====>", err);
          this.showLoader = false;
        });
    },
    async routeToCourseDetails(courseId) {
      /* getParticularCourseDetail- To get courseDetail - defined in GetApis.js*/
      let response = await this.getParticularCourseDetail(courseId);

      /* If the response is null then dont route */
      if (response.data.data.length > 0) {
        this.$router.push({
          name: "Course Details",
          query: { courseId: courseId }
        });
      } else {
        this.seeSnackbar("No Data Available", "warning");
      }
    }
  },
  // computed:{
  //   nextChapterIndex(){

  //   }
  // }
  async created() {
    console.log("route query - ", this.$route.query);

    this.selectedChapterId = this.$route.query.chapterId;

    /* set chapterNames array */
    this.chapterNames = Object.keys(this.$route.query);
    this.chapterNames.pop();
    this.chapterNames.pop();
    console.log("chapter names - ", this.chapterNames);

    /* set chapter Ids */
    this.chapterIds = Object.values(this.$route.query);
    this.chapterIds.pop();
    this.chapterIds.pop();
    console.log("chapter Ids - ", this.chapterIds);

    this.indexSelectedChapter = this.chapterIds.findIndex(id => {
      return id == this.selectedChapterId;
    });
    console.log(" index of selected chapter - ", this.indexSelectedChapter);

    /* get chapter clicked on using the id */
    await this.getParticularChapterDetail(this.selectedChapterId);

    /* getStudentCourses - to get courseData - defined in GetApis.js*/
    await this.getStudentCourses({
      classId: localStorage.getItem("parentClassId"),
      studentId: localStorage.getItem("parentStudentId")
    });
  }
};
</script>
<style scoped>
.side-bar-color {
  color: #827bfa !important;
  /* border-top-right-radius: 74px !important; */
}
.card-border {
  border: 1px #bdbdbd solid;
  border-radius: 3px;
}
</style>