{"version":3,"sources":["webpack:///src/components/Dashboards/ReservationInvoiceSplit.vue","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue?0457","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue?0a88","webpack:///./src/components/Dashboards/ReservationInvoiceSplit.vue?bef0"],"names":["Doughnut","Message","components","props","endDate","default","Date","type","locationId","Number","meetingtypeId","startDate","data","dataLoaded","isLoading","noData","reservations","chartData","labels","datasets","options","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","$t","push","borderWidth","borderColor","backgroundColor","render","_vm","_c","_self","staticClass","_v","_s","attrs","chartdata","_e","message","staticRenderFns","_withStripped"],"mappings":"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","file":"js/351.js?id=93468d030241dbec1b63","sourcesContent":["<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","var render = function render() {\n  var _vm = this,\n    _c = _vm._self._c\n  return _c(\n    \"div\",\n    [\n      _c(\"p\", { staticClass: \"subtitle\" }, [\n        _vm._v(\n          \" \" +\n            _vm._s(\n              _vm.$t(\n                \"Components.Dashboards.ReservationInvoiceSplit.Title_InvoiceSplit\"\n              )\n            ) +\n            \" \"\n        ),\n      ]),\n      _vm.dataLoaded && !_vm.noData\n        ? _c(\"Doughnut\", {\n            staticClass: \"doughnut\",\n            attrs: { chartdata: _vm.chartData, options: _vm.options },\n          })\n        : _vm._e(),\n      _vm.dataLoaded && _vm.noData\n        ? _c(\"Message\", {\n            staticClass: \"has-margin-top\",\n            attrs: {\n              message: _vm.$t(\n                \"Components.Dashboards.ReservationInvoiceSplit.Message_NoReservations\"\n              ),\n            },\n          })\n        : _vm._e(),\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./ReservationInvoiceSplit.vue?vue&type=template&id=1b68d5b9\"\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\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/github/workspace/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('1b68d5b9')) {\n      api.createRecord('1b68d5b9', component.options)\n    } else {\n      api.reload('1b68d5b9', component.options)\n    }\n    module.hot.accept(\"./ReservationInvoiceSplit.vue?vue&type=template&id=1b68d5b9\", function () {\n      api.rerender('1b68d5b9', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/components/Dashboards/ReservationInvoiceSplit.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../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/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 * from \"-!../../../node_modules/cache-loader/dist/cjs.js?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"d2a26fb4-vue-loader-template\\\"}!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReservationInvoiceSplit.vue?vue&type=template&id=1b68d5b9\""],"sourceRoot":""}