Advertisement
Guest User

Untitled

a guest
Apr 10th, 2020
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <template>
  2.   <div id="app" class="calendarApp">
  3.     <calendar-view
  4.       v-if="doneLoading"
  5.       :events="eventItems"
  6.       :show-date="showDate"
  7.       :show-event-times="true"
  8.       :showEvents="false"
  9.       :disable-past="true"
  10.       :time-format-options="{ hour: 'numeric', minute: '2-digit' }"
  11.       :weekday-name-format="weekdayNameSize"
  12.       class="theme-default calendar"
  13.       @click-date="onClickDay"
  14.     >
  15.       <calendar-view-header
  16.         slot="header"
  17.         slot-scope="{ headerProps }"
  18.         :header-props="headerProps"
  19.         @input="setShowDate"
  20.       />
  21.     </calendar-view>
  22.     <div class="cv-legend">
  23.       <div class="cv-legend-square"></div>
  24.       <div class="cv-legend-label">{{ this.legendText }}</div>
  25.     </div>
  26.     <calendar-view-events :selected-days-events="selectedDaysEvents" />
  27.   </div>
  28. </template>
  29.  
  30. <script lang="ts">
  31.   import Vue from 'vue'
  32.   import CalendarView from './library/vue-simple-calendar/src/components/CalendarView.vue'
  33.   import CalendarViewHeader from './components/CalendarViewHeader.vue'
  34.   import CalendarViewEvents from './components/CalendarViewEvents.vue'
  35.   import axios from 'axios'
  36.   // The next two lines are processed by webpack. If you're using the component without webpack compilation,
  37.   // you should just create <link> elements for these. Both are optional, you can create your own theme if you prefer.
  38.   require('./library/vue-simple-calendar/static/css/default.css')
  39.  
  40.   export default Vue.extend({
  41.     name: 'App',
  42.     components: {
  43.       CalendarView,
  44.       CalendarViewHeader,
  45.       CalendarViewEvents
  46.     },
  47.     props: {
  48.       legendText: { type: String, required: true },
  49.       eventDataUrl: { type: String, required: true }
  50.     },
  51.     computed: {
  52.       weekdayNameSize: function () {
  53.         let size
  54.         switch (this.$mq) {
  55.           case 'small':
  56.             size = 'narrow'
  57.             break
  58.           case 'medium':
  59.             size = 'short'
  60.             break
  61.           default:
  62.             size = 'long'
  63.             break
  64.         }
  65.         return size
  66.       }
  67.     },
  68.     created: function () {
  69.       this.getData().then(response => {
  70.         this.eventItems = response
  71.         this.doneLoading = true
  72.       })
  73.     },
  74.     data: function () {
  75.       return {
  76.         doneLoading: false,
  77.         eventItems: [],
  78.         showDate: new Date(),
  79.         selectedDaysEvents: []
  80.       }
  81.     },
  82.     methods: {
  83.       setShowDate (d: Date) {
  84.         this.showDate = d
  85.       },
  86.       thisMonth (d: number, h: number, m: number) {
  87.         const t = new Date()
  88.         return new Date(t.getFullYear(), t.getMonth(), d, h || 0, m || 0)
  89.       },
  90.       onClickDay (e: object, events: []) {
  91.         this.selectedDaysEvents = events
  92.           ; (this.$refs['cv-event'] as HTMLElement).scrollIntoView({ behavior: 'smooth' })
  93.       },
  94.       getData () {
  95.         return axios
  96.           .get(this.eventDataUrl)
  97.           .then(response => response.data)
  98.           .catch(error => {
  99.             if (error.response) {
  100.               // The request was made and the server responded with a status code
  101.               // that falls out of the range of 2xx
  102.               console.log(error.response.data)
  103.               console.log(error.response.status)
  104.               console.log(error.response.headers)
  105.             } else if (error.request) {
  106.               // The request was made but no response was received
  107.               // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
  108.               // http.ClientRequest in node.js
  109.               console.log(error.request)
  110.             } else {
  111.               // Something happened in setting up the request that triggered an Error
  112.               console.log('Error', error.message)
  113.             }
  114.             console.log(error.config)
  115.           })
  116.       }
  117.     }
  118.   })
  119. </script>
  120. <style lang="scss">
  121. @import './styles/app';
  122. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement