{"version":3,"sources":["webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue","webpack:///src/components/Dashboards/ReservationInvoiceSplit.vue","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue?bbd6","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue?0457"],"names":["render","_vm","this","_c","_self","staticClass","_v","_s","$t","dataLoaded","noData","attrs","chartData","options","_e","staticRenderFns","Doughnut","Message","components","props","endDate","default","Date","type","locationId","Number","meetingtypeId","startDate","data","isLoading","reservations","labels","datasets","plugins","legend","display","position","cutout","responsive","maintainAspectRatio","aspectRatio","watch","immediate","handler","getReservationInvoiceSplitData","created","mounted","window","addEventListener","windowResizeListener","beforeDestroy","removeEventListener","methods","el","$el","getBoundingClientRect","Object","assign","width","self","statsProvider","getLocationReservationInvoiceSplit","$options","filters","dateObjectIsoDateString","then","response","status","length","prepData","finally","data1","find","r","HasInvoice","nrReservationsHasInvoice","NrOfReservations","data2","nrReservationsHasNoInvoice","push","borderWidth","borderColor","backgroundColor","component"],"mappings":"yHAAA,IAAIA,EAAS,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,IAAI,CAACE,YAAY,YAAY,CAACJ,EAAIK,GAAG,IAAIL,EAAIM,GAAGN,EAAIO,GAAG,qEAAqE,OAAQP,EAAIQ,aAAeR,EAAIS,OAAQP,EAAG,WAAW,CAACE,YAAY,WAAWM,MAAM,CAAC,UAAYV,EAAIW,UAAU,QAAUX,EAAIY,WAAWZ,EAAIa,KAAMb,EAAIQ,YAAcR,EAAIS,OAAQP,EAAG,UAAU,CAACE,YAAY,iBAAiBM,MAAM,CAAC,QAAUV,EAAIO,GACnb,2EACGP,EAAIa,MAAM,IAEjBC,EAAkB,G,8FCyBtBC,EAAA,wGACAC,EAAA,qFAEe,GACfC,WAAA,CACAF,WACAC,WAGAE,MAAA,CACAC,QAAA,CACAC,QAAA,IAAAC,KACAC,KAAAD,MAGAE,WAAA,CACAH,QAAA,EACAE,KAAAE,QAGAC,cAAA,CACAL,QAAA,EACAE,KAAAE,QAGAE,UAAA,CACAN,QAAA,IAAAC,KACAC,KAAAD,OAIAM,KAAA,WACA,OACAnB,YAAA,EACAoB,WAAA,EACAnB,QAAA,EACAoB,aAAA,GAEAlB,UAAA,CACAmB,OAAA,GACAC,SAAA,IAEAnB,QAAA,CACAoB,QAAA,CACAC,OAAA,CACAC,SAAA,EACAC,SAAA,WAGAC,OAAA,MACAC,YAAA,EACAC,qBAAA,EACAC,YAAA,QAKAC,MAAA,CACArB,QAAA,CACAsB,WAAA,EACAC,QAAA,WACA,KAAAC,mCAIAjB,UAAA,CACAe,WAAA,EACAC,QAAA,WACA,KAAAC,oCAKAC,QAAA,WACA,KAAAD,kCAGAE,QAAA,WACAC,OAAAC,iBAAA,cAAAC,sBACA,KAAAA,wBAGAC,cAAA,WACAH,OAAAI,oBAAA,cAAAF,uBAGAG,QAAA,CACAH,qBAAA,WACA,IAAAI,EAAA,KAAAC,IAAAC,wBACA,KAAA1C,QAAA2C,OAAAC,OAAA,KAAA5C,QAAA,CACAoB,QAAA,CACAC,OAAA,CACAE,SAAAiB,EAAAK,MAAA,uBAGAlB,YAAAa,EAAAK,MAAA,gBAIAd,+BAAA,WACA,IAAAe,EAAA,KACAA,EAAA7B,aAAA,GACA6B,EAAAlD,YAAA,EAEAkD,EAAA9B,YACA8B,EAAA9B,WAAA,EACA,KAAAnB,QAAA,EACAkD,OAAAR,QACAS,mCACAF,EAAAnC,WACAmC,EAAAjC,cACAiC,EAAAG,SAAAC,QAAAC,wBAAAL,EAAAhC,WACAgC,EAAAG,SAAAC,QAAAC,wBAAAL,EAAAvC,UAEA6C,MAAA,SAAAC,GACA,SAAAA,EAAAC,QAAAD,EAAAtC,KAAAwC,OAIA,OAHAT,EAAA7B,aAAAoC,EAAAtC,UAEA+B,EAAAU,WAGAV,EAAAjD,QAAA,EACAiD,EAAAlD,YAAA,KAEA6D,SAAA,WACAX,EAAA9B,WAAA,OAKAwC,SAAA,WAIA,GAHA,KAAAzD,UAAAoB,SAAA,GACA,KAAAtB,QAAA,EAEA,KAAAoB,aAAA,CACA,IAAAyC,EAAA,KAAAzC,aAAA0C,MAAA,SAAAC,GAAA,WAAAA,EAAAC,cACAC,EACA,qBAAAJ,EAAA,EAAAA,EAAAK,iBACAC,EAAA,KAAA/C,aAAA0C,MAAA,SAAAC,GAAA,WAAAA,EAAAC,cACAI,EACA,qBAAAD,EAAA,EAAAA,EAAAD,iBAEA,KAAAlE,OACA,IAAAiE,GAAA,IAAAG,EACA,KAAAjE,QAAAoB,QAAAC,OAAAC,SAAA,KAAAzB,OAEA,KAAAE,UAAAmB,OAAA,KAAArB,OACA,CACA,KAAAF,GACA,uEAGA,CACA,KAAAA,GACA,oEAEA,KAAAA,GACA,wEAIA,KAAAI,UAAAoB,SAAA+C,KAAA,CACAC,YAAA,EACAC,YAAA,KAAAvE,OACA,yBACA,iDACAwE,gBAAA,KAAAxE,OACA,0BACA,qDACAkB,KAAA,KAAAlB,OACA,MACA,CAAAiE,EAAAG,KAIA,KAAArE,YAAA,KC5M+W,I,YCO3W0E,EAAY,eACd,EACAnF,EACAe,GACA,EACA,KACA,KACA,MAIa,aAAAoE,E","file":"js/chunk-2d0dde2c.js?id=c65550ff0fdc01c870a4","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('p',{staticClass:\"subtitle\"},[_vm._v(\" \"+_vm._s(_vm.$t('Components.Dashboards.ReservationInvoiceSplit.Title_InvoiceSplit'))+\" \")]),(_vm.dataLoaded && !_vm.noData)?_c('Doughnut',{staticClass:\"doughnut\",attrs:{\"chartdata\":_vm.chartData,\"options\":_vm.options}}):_vm._e(),(_vm.dataLoaded && _vm.noData)?_c('Message',{staticClass:\"has-margin-top\",attrs:{\"message\":_vm.$t(\n        'Components.Dashboards.ReservationInvoiceSplit.Message_NoReservations'\n      )}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <p class=\"subtitle\">\n      {{\n        $t('Components.Dashboards.ReservationInvoiceSplit.Title_InvoiceSplit')\n      }}\n    </p>\n\n    <Doughnut\n      v-if=\"dataLoaded && !noData\"\n      :chartdata=\"chartData\"\n      :options=\"options\"\n      class=\"doughnut\"\n    />\n\n    <Message\n      v-if=\"dataLoaded && noData\"\n      class=\"has-margin-top\"\n      :message=\"\n        $t(\n          'Components.Dashboards.ReservationInvoiceSplit.Message_NoReservations'\n        )\n      \"\n    />\n  </div>\n</template>\n<script>\nimport statsProvider from '@/providers/stats'\n\nconst Doughnut = () => import('@/components/UI/Charts/Doughnut')\nconst Message = () => import('@/components/UI/Message')\n\nexport default {\n  components: {\n    Doughnut,\n    Message,\n  },\n\n  props: {\n    endDate: {\n      default: new Date(),\n      type: Date,\n    },\n\n    locationId: {\n      default: 0,\n      type: Number,\n    },\n\n    meetingtypeId: {\n      default: 0,\n      type: Number,\n    },\n\n    startDate: {\n      default: new Date(),\n      type: Date,\n    },\n  },\n\n  data() {\n    return {\n      dataLoaded: false,\n      isLoading: false,\n      noData: false,\n      reservations: [],\n\n      chartData: {\n        labels: [],\n        datasets: [],\n      },\n      options: {\n        plugins: {\n          legend: {\n            display: true,\n            position: 'bottom',\n          },\n        },\n        cutout: '75%',\n        responsive: true,\n        maintainAspectRatio: true,\n        aspectRatio: 16 / 9,\n      },\n    }\n  },\n\n  watch: {\n    endDate: {\n      immediate: true,\n      handler: function() {\n        this.getReservationInvoiceSplitData()\n      },\n    },\n\n    startDate: {\n      immediate: true,\n      handler: function() {\n        this.getReservationInvoiceSplitData()\n      },\n    },\n  },\n\n  created() {\n    this.getReservationInvoiceSplitData()\n  },\n\n  mounted() {\n    window.addEventListener('resize', this.windowResizeListener)\n    this.windowResizeListener()\n  },\n\n  beforeDestroy() {\n    window.removeEventListener('resize', this.windowResizeListener)\n  },\n\n  methods: {\n    windowResizeListener() {\n      const el = this.$el.getBoundingClientRect()\n      this.options = Object.assign(this.options, {\n        plugins: {\n          legend: {\n            position: el.width < 340 ? 'bottom' : 'right',\n          },\n        },\n        aspectRatio: el.width < 340 ? 4 / 3 : 16 / 9,\n      })\n    },\n\n    getReservationInvoiceSplitData() {\n      let self = this\n      self.reservations = []\n      self.dataLoaded = false\n\n      if (!self.isLoading) {\n        self.isLoading = true\n        this.noData = false\n        statsProvider.methods\n          .getLocationReservationInvoiceSplit(\n            self.locationId,\n            self.meetingtypeId,\n            self.$options.filters.dateObjectIsoDateString(self.startDate),\n            self.$options.filters.dateObjectIsoDateString(self.endDate)\n          )\n          .then((response) => {\n            if (response.status === 200 && response.data.length) {\n              self.reservations = response.data\n\n              self.prepData()\n              return\n            }\n            self.noData = true\n            self.dataLoaded = true\n          })\n          .finally(() => {\n            self.isLoading = false\n          })\n      }\n    },\n\n    prepData() {\n      this.chartData.datasets = []\n      this.noData = false\n\n      if (this.reservations) {\n        let data1 = this.reservations.find((r) => r.HasInvoice === 1)\n        let nrReservationsHasInvoice =\n          typeof data1 === 'undefined' ? 0 : data1.NrOfReservations\n        let data2 = this.reservations.find((r) => r.HasInvoice === 0)\n        let nrReservationsHasNoInvoice =\n          typeof data2 === 'undefined' ? 0 : data2.NrOfReservations\n\n        this.noData =\n          nrReservationsHasInvoice === 0 && nrReservationsHasNoInvoice === 0\n        this.options.plugins.legend.display = !this.noData\n\n        this.chartData.labels = this.noData\n          ? [\n            this.$t(\n              'Components.Dashboards.ReservationInvoiceSplit.Label_NoReservations'\n            ),\n          ]\n          : [\n            this.$t(\n              'Components.Dashboards.ReservationInvoiceSplit.Legend_WithInvoice'\n            ),\n            this.$t(\n              'Components.Dashboards.ReservationInvoiceSplit.Legend_WithoutInvoice'\n            ),\n          ]\n\n        this.chartData.datasets.push({\n          borderWidth: 1,\n          borderColor: this.noData\n            ? ['rgba(16, 16, 16, .5)']\n            : ['rgba(149, 193, 30, 1)', 'rgba(252, 60, 99, 1)'],\n          backgroundColor: this.noData\n            ? ['rgba(16, 16, 16, 0.3)']\n            : ['rgba(149, 193, 30, 0.3)', 'rgba(252, 60, 99, 0.3)'],\n          data: this.noData\n            ? [100]\n            : [nrReservationsHasInvoice, nrReservationsHasNoInvoice],\n        })\n      }\n\n      this.dataLoaded = true\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReservationInvoiceSplit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReservationInvoiceSplit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ReservationInvoiceSplit.vue?vue&type=template&id=3a53f4de\"\nimport script from \"./ReservationInvoiceSplit.vue?vue&type=script&lang=js\"\nexport * from \"./ReservationInvoiceSplit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}