{"version":3,"sources":["webpack:///./src/views/pages/EntrancePlantDetail/EntrancePlantBadges/EntrancePlantBadges.vue?3c4f","webpack:///./src/views/pages/EntrancePlantDetail/EntrancePlantBadges/EntrancePlantBadges.ts","webpack:///./src/views/pages/EntrancePlantDetail/EntrancePlantBadges/EntrancePlantBadges.vue"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","key","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_link","_component_Button","_component_InlineSvgScoped","_component_ElDropdownItem","_component_ElDropdownMenu","_component_ElDropdown","_component_BadgeItem","_component_DialogAddBadge","to","backLink","default","$t","currentPlant","name","_","trigger","placement","dropdown","style","onClick","$event","handleAddBadge","BadgeType","resident","src","disabled","hasEligibleGuests","guest","hasBadges","badges","badge","index","onDeleteBadge","handleDeleteBadge","toUpperCase","isVisibleAddBadge","plantBadges","guestBadge","isGuestBadgeDialog","onHideDialog","onUpdateList","fetchBadges","isGuestBadgeDisabled","this","params","$route","plants","badgeAll","desktopId","length","today","Date","parse","toDateString","hasValidGuestForBadge","gateGuests","some","guestNotExpired","undefined","durationUntil","valueOf","guestNotHasBadge","badgeCode","isRecurrent","type","$emit","$store","dispatch","badgeDELETE","setTimeout","$toast","add","severity","summary","closable","life","props","Object","required","components","BadgeItem","DialogAddBadge","emits","__exports__"],"mappings":"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","file":"js/page-entranceplant-badges.1200e9e6.js","sourcesContent":["import { createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"mb-4\" }\nconst _hoisted_2 = { class: \"d-flex align-items-start\" }\nconst _hoisted_3 = /*#__PURE__*/_createVNode(\"i\", { class: \"pi pi-chevron-left mr-1\" }, null, -1)\nconst _hoisted_4 = { class: \"mt-2\" }\nconst _hoisted_5 = { class: \"ml-auto d-flex align-items-center\" }\nconst _hoisted_6 = { class: \"btn-stripped d-flex align-items-center\" }\nconst _hoisted_7 = { class: \"bt-icon bt-icon--sm mr-3 text-gray\" }\nconst _hoisted_8 = { class: \"btn-stripped d-flex align-items-center\" }\nconst _hoisted_9 = { class: \"bt-icon bt-icon--sm mr-3 text-gray\" }\nconst _hoisted_10 = {\n key: 1,\n class: \"py-5 text-center\"\n}\nconst _hoisted_11 = { class: \"fs-18 text-gray\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")\n const _component_Button = _resolveComponent(\"Button\")\n const _component_InlineSvgScoped = _resolveComponent(\"InlineSvgScoped\")\n const _component_ElDropdownItem = _resolveComponent(\"ElDropdownItem\")\n const _component_ElDropdownMenu = _resolveComponent(\"ElDropdownMenu\")\n const _component_ElDropdown = _resolveComponent(\"ElDropdown\")\n const _component_BadgeItem = _resolveComponent(\"BadgeItem\")\n const _component_DialogAddBadge = _resolveComponent(\"DialogAddBadge\")\n\n return (_openBlock(), _createBlock(_Fragment, null, [\n _createVNode(\"header\", _hoisted_1, [\n _createVNode(\"div\", _hoisted_2, [\n _createVNode(\"div\", null, [\n _createVNode(_component_router_link, {\n to: _ctx.backLink,\n class: \"fs-18 text-decoration-none text-gray\"\n }, {\n default: _withCtx(() => [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t(\"general.backTo\")) + \": \" + _toDisplayString(_ctx.currentPlant.name), 1)\n ]),\n _: 1\n }, 8, [\"to\"]),\n _createVNode(\"h1\", _hoisted_4, _toDisplayString(_ctx.$t(\"AppResourceEP.Badges\")), 1)\n ]),\n _createVNode(\"div\", _hoisted_5, [\n _createVNode(_component_ElDropdown, {\n trigger: \"click\",\n placement: \"bottom-end\",\n \"popper-class\": \"el-dropdown__popper el-dropdown--context\"\n }, {\n dropdown: _withCtx(() => [\n _createVNode(_component_ElDropdownMenu, { style: {\"width\":\"240px\"} }, {\n default: _withCtx(() => [\n _createVNode(_component_ElDropdownItem, {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.handleAddBadge(_ctx.BadgeType.resident)))\n }, {\n default: _withCtx(() => [\n _createVNode(\"button\", _hoisted_6, [\n _createVNode(\"span\", _hoisted_7, [\n _createVNode(_component_InlineSvgScoped, {\n src: \n require('@/assets/images/entrancePlants/icon-resident.svg')\n ,\n \"aria-label\": \"icon-resident\"\n }, null, 8, [\"src\"])\n ]),\n _createVNode(\"span\", null, _toDisplayString(_ctx.$t(\n \"AppResourceEP.ToResidentActionMenu\"\n )), 1)\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_ElDropdownItem, {\n disabled: !_ctx.hasEligibleGuests,\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleAddBadge(_ctx.BadgeType.guest)))\n }, {\n default: _withCtx(() => [\n _createVNode(\"button\", _hoisted_8, [\n _createVNode(\"span\", _hoisted_9, [\n _createVNode(_component_InlineSvgScoped, {\n src: \n require('@/assets/images/entrancePlants/icon-guest.svg')\n ,\n \"aria-label\": \"icon-guest\"\n }, null, 8, [\"src\"])\n ]),\n _createVNode(\"span\", null, _toDisplayString(_ctx.$t(\n \"AppResourceEP.ToGuestActionMenu\"\n )), 1)\n ])\n ]),\n _: 1\n }, 8, [\"disabled\"])\n ]),\n _: 1\n })\n ]),\n default: _withCtx(() => [\n _createVNode(_component_Button, { class: \"p-button-rounded p-button-raised p-button--m\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(\"AppResourceEP.BadgeAdd\")), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ])\n ])\n ]),\n (_ctx.hasBadges)\n ? (_openBlock(true), _createBlock(_Fragment, { key: 0 }, _renderList(_ctx.badges, (badge, index) => {\n return (_openBlock(), _createBlock(_component_BadgeItem, {\n key: index,\n badge: badge,\n class: \"mt-3\",\n onDeleteBadge: _ctx.handleDeleteBadge\n }, null, 8, [\"badge\", \"onDeleteBadge\"]))\n }), 128))\n : (_openBlock(), _createBlock(\"div\", _hoisted_10, [\n _createVNode(\"h1\", null, _toDisplayString(_ctx.$t(\"entrancePlant.NoBadges\").toUpperCase()), 1),\n _createVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t(\"entrancePlant.hintNewBadge\")), 1)\n ])),\n _createVNode(_component_DialogAddBadge, {\n \"is-visible\": _ctx.isVisibleAddBadge,\n currentPlant: _ctx.currentPlant,\n plantBadges: _ctx.badges,\n guestBadge: _ctx.isGuestBadgeDialog,\n onHideDialog: _ctx.handleAddBadge,\n onUpdateList: _ctx.fetchBadges\n }, null, 8, [\"is-visible\", \"currentPlant\", \"plantBadges\", \"guestBadge\", \"onHideDialog\", \"onUpdateList\"])\n ], 64))\n}","import { PropType } from 'vue';\nimport plantsClient from '@/core/services/plants';\nimport BadgeItem from './BadgeItem/BadgeItem.vue';\nimport { Options, Vue } from 'vue-class-component';\nimport {\n BadgeDTO,\n EntrancePlantDetailDTO,\n} from '@/../client-generator/generated-clients/plants';\nimport { SET_APP_LOADING } from '@/core/store/action-types';\nimport DialogAddBadge from './DialogAddBadge/DialogAddBadge.vue';\n\nenum BadgeType {\n resident = 'resident',\n guest = 'guest',\n}\n\n@Options({\n name: 'EntrancePlantBadges',\n props: {\n currentPlant: {\n type: Object as PropType,\n required: true,\n },\n },\n components: {\n BadgeItem,\n DialogAddBadge,\n },\n emits: ['update-list'],\n})\nexport default class EntrancePlantBadges extends Vue {\n currentPlant!: EntrancePlantDetailDTO;\n badges: BadgeDTO[] = [];\n\n isVisibleAddBadge = false;\n isGuestBadgeDialog = false;\n isGuestBadgeDisabled = false;\n BadgeType = BadgeType;\n\n async mounted() {\n await this.fetchBadges();\n }\n\n get backLink() {\n return {\n name: 'page-entranceplant-dashboard',\n params: this.$route.params,\n };\n }\n\n async fetchBadges() {\n this.badges = await plantsClient.badgeAll(\n this.currentPlant.desktopId as number\n );\n }\n\n get hasBadges() {\n if (this.badges) {\n return this.badges.length > 0;\n }\n return false;\n }\n\n get hasEligibleGuests() {\n const today = Date.parse(new Date().toDateString());\n\n const hasValidGuestForBadge = this.currentPlant.gateGuests?.some(\n (guest) => {\n const guestNotExpired =\n guest.durationUntil === undefined ||\n (guest.durationUntil && guest.durationUntil.valueOf() >= today);\n const guestNotHasBadge = guest.badgeCode === '' || !guest.badgeCode;\n if (guest.isRecurrent && guestNotExpired && guestNotHasBadge) {\n return true;\n }\n }\n );\n return hasValidGuestForBadge;\n }\n\n handleAddBadge(type: BadgeType) {\n if (type !== undefined) {\n this.isGuestBadgeDialog = type === BadgeType.guest;\n }\n this.isVisibleAddBadge = !this.isVisibleAddBadge;\n if (!this.isVisibleAddBadge) {\n this.$emit('update-list');\n }\n }\n\n async handleDeleteBadge(badge: BadgeDTO) {\n this.$store.dispatch(SET_APP_LOADING, true);\n try {\n await plantsClient.badgeDELETE(\n this.currentPlant.desktopId as number,\n badge.badgeCode\n );\n\n this.$emit('update-list');\n this.fetchBadges();\n setTimeout(() => {\n this.$toast.add({\n severity: 'success',\n summary: this.$t('AppResourceEP.BadgeRemoved'),\n closable: false,\n life: 3000,\n });\n }, 1500);\n } catch {\n this.$toast.add({\n severity: 'error',\n summary: this.$t('general.operationError'),\n closable: true,\n life: 3000,\n });\n } finally {\n this.$store.dispatch(SET_APP_LOADING, false);\n }\n }\n}\n","import { render } from \"./EntrancePlantBadges.vue?vue&type=template&id=484ab91c&ts=true\"\nimport script from \"./EntrancePlantBadges.ts?vue&type=script&lang=ts\"\nexport * from \"./EntrancePlantBadges.ts?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/home/vsts/work/1/s/Frontend/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}