1"use strict";(globalThis.webpackChunkwips_components_scripts||=[]).push([[4246],{"460e3d95afe6b80d"(e,t,a){a.r(t),a.d(t,{default:()=>w});var l=a("b641633d6c906d19"),i=a("a54fa6d0a722ba3f"),o=a("99c472be6da17922"),n=a("82d8eefb58430341"),d=(a("6bcf20aa1369abd3"),a("e540166bc5a1ac36"));const s={class:"week-view"},h={class:"navigate-left-outer navigate-button-outer"},u={class:"calendar"},m={class:"week"},b={class:"month"},r={class:"day-in-week"},c={class:"navigate-right-outer navigate-button-outer"},k={name:"WeekView",props:["availability","bookingNumbers","activeWeeksStartDates"],data:()=>({month:[],weeksBack:0}),mounted(){this.setMonth()},methods:{isChecked(e){return this.activeWeeksStartDates.includes(e)},setMonth(){let e=new Date;const t=this.activeWeeksStartDates.length>0;let a=new Date(e-7*this.weeksBack*24*60*60*1e3);if(t){const e=new Date(this.activeWeeksStartDates[0]);a=new Date(e-7*this.weeksBack*24*60*60*1e3)}let l=[];for(let t=1;t<29;t++){let i=new Date(a-24*(a.getDay()-t)*60*60*1e3),o={today:e.getDate()===i.getDate()&&e.getMonth()===i.getMonth()&&e.getFullYear()===i.getFullYear(),day:this.$d(i,"weekday_short"),month:this.$d(i,"month_short"),dayNumber:i.getDate(),date:i,dateString:d.t.formatHotelAvailabilityDateString(i),dayPassed:i<e,availability:this.availability[d.t.formatHotelAvailabilityDateString(i)]?this.availability[d.t.formatHotelAvailabilityDateString(i)]:0};l.push(o),t%7==0&&(this.month.push(l),l=[])}},oneWeekBack(){this.weeksBack+=1,this.month=[],this.setMonth()},oneWeekForward(){this.weeksBack-=1,this.month=[],this.setMonth()},toggleActiveWeek(e){this.$emit("toggleActiveWeek",e)}}},g=Object.assign(k,{setup(e){const t=(0,l.$V)(()=>Promise.all([a.e(99959),a.e(94607),a.e(33582)]).then(a.bind(a,"a9bcaf22dee96965")));return(a,n)=>((0,l.uX)(),(0,l.CE)("div",s,[(0,l.Lk)("div",h,[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"ONE WEEK BACK",onClick:a.oneWeekBack},null,8,["onClick"])]),(0,l.Lk)("div",u,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(a.month,(n,d)=>((0,l.uX)(),(0,l.CE)("div",m,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(n,t=>((0,l.uX)(),(0,l.CE)("div",{class:(0,o.C4)(t.dayPassed?"day day-passed":"day")},[(0,l.Lk)("span",b,(0,o.v_)(t.month),1),(0,l.Lk)("span",r,(0,o.v_)(t.day)+" "+(0,o.v_)(t.dayNumber),1),(0,l.Lk)("span",null,"Free: "+(0,o.v_)(t.availability),1),(0,l.Lk)("span",null,"Taken: "+(0,o.v_)(e.bookingNumbers[t.dateString]?e.bookingNumbers[t.dateString]:"0"),1)],2))),256)),(0,l.Lk)("div",null,[(0,l.Lk)("span",null,(0,o.v_)(d<1?"Show week":""),1),(0,l.bF)((0,i.R1)(t),{type:"checkbox",onClick:e=>a.toggleActiveWeek(n),"model-value":a.isChecked(n[0].dateString)},null,8,["onClick","model-value"])])]))),256))]),(0,l.Lk)("div",c,[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"ONE WEEK FORWARD",onClick:a.oneWeekForward},null,8,["onClick"])])]))}});var v=a("461bee8a7784aa7f");
1const y=(0,v.A)(g,[["__scopeId","data-v-79591f99"]]),p={key:1},f={name:"Hotel",props:["hotelId","bookingNumbers"],data:()=>({hotelReady:!1,hotel:"Hotel name",availability:{},start_date:null,end_date:null,amount:0,newHotel:!0,activeWeeksStartDates:[],originalName:null}),mounted(){this.originalName=this.hotel??"Hotel name",this.hotelId&&(this.newHotel=!1,this.getHotel())},computed:{availabilityButtonText(){return this.amount<0?"Remove":"Add"},nameChanged(){return this.originalName!=this.hotel}},methods:{back(){this.$emit("back")},addHotel(){if(""===this.hotel)return alert("Hotel must have a name");let e=!1;if(this.start_date&&this.end_date&&(e={start_date:this.start_date,end_date:this.end_date,amount:this.amount}),e&&this.amount<1||e&&this.end_date<this.start_date)return alert("Oops, something went wrong, amount must be at least 1 and start date must be before end date");fetch("/Api/hotelbooking/addHotel",{method:"POST",body:JSON.stringify({hotel:this.hotel,availability:e})}).then(e=>{e.json().then(e=>{e.succeeded&&(alert(e.data.hotel+" added!"),this.back())})})},getHotel(){this.hotelReady=!1,fetch("/Api/hotelbooking/getHotel?hotelId="+this.hotelId,{method:"GET"}).then(e=>{e.json().then(e=>{if(e.succeeded){this.hotel=e.data.hotel,this.originalName=this.hotel;let t=Object.keys(e.data.availability);for(let a of t)this.availability[a]=e.data.availability[a],this.activeWeeksStartDates=e.data.activeWeeks;this.hotelReady=!0}})})},toggleActiveWeek(e){if(this.activeWeeksStartDates.includes(e[0].dateString)){const t=this.activeWeeksStartDates.indexOf(e[0].dateString);this.activeWeeksStartDates.splice(t,1)}else this.activeWeeksStartDates.push(e[0].dateString);this.setActiveWeeks()},setActiveWeeks(){this.activeWeeksStartDates.sort((e,t)=>new Date(e)-new Date(t)),fetch("/Api/hotelbooking/setActiveWeeks",{method:"POST",body:JSON.stringify({id:this.hotelId,active_weeks:this.activeWeeksStartDates})})},changeName(){fetch("/Api/hotelbooking/changeName",{method:"POST",body:JSON.stringify({id:this.hotelId,hotel:this.hotel})}).then(e=>{e.json().then(e=>{e.succeeded&&(alert("Name changed to: "+e.data.newName),this.originalName=e.data.newName)})})},editAvailability(){return this.start_date&&this.end_date?0===this.amount?alert("Need amount of days"):this.end_date<this.start_date?alert("End date needs to be after start date"):(this.hotelReady=!1,void fetch("/Api/hotelbooking/editAvailability",{method:"POST",body:JSON.stringify({id:this.hotelId,start_date:this.start_date,end_date:this.end_date,amount:this.amount,fromAdminView:!0})}).then(e=>{e.json().then(e=>{if(e.succeeded){if(e.data.failed)return this.hotelReady=!0,alert(e.data.failed);let t=Object.keys(e.data.availability);for(let a of t)this.availability[a]=e.data.availability[a];this.hotelReady=!0}})})):alert("Need both a start date and an end date")}}},E=Object.assign(f,{setup(e){const t=(0,l.$V)(()=>Promise.all([a.e(99959),a.e(94607),a.e(33582)]).then(a.bind(a,"a9bcaf22dee96965"))),o=(0,l.$V)(()=>Promise.all([a.e(99959),a.e(41960)]).then(a.bind(a,"db7fc61db8da52af")));return(a,n)=>((0,l.uX)(),(0,l.CE)("div",null,[(0,l.bF)((0,i.R1)(o),{label:a.hotel,segment:!0},{default:(0,l.k6)(()=>[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"Close",onClick:a.back},null,8,["onClick"]),(0,l.Lk)("div",null,[(0,l.bF)((0,i.R1)(t),{type:"text",modelValue:a.hotel,"onUpdate:modelValue":n[0]||(n[0]=e=>a.hotel=e),label:"Hotel name"},null,8,["modelValue"]),a.nameChanged&&!a.newHotel?((0,l.uX)(),(0,l.Wv)((0,i.R1)(t),{key:0,type:"button","model-value":"Change",onClick:a.changeName},null,8,["onClick"])):(0,l.Q3)("",!0)]),a.hotelReady&&!a.newHotel?((0,l.uX)(),(0,l.Wv)(y,{key:0,availability:a.availability,"booking-numbers":e.bookingNumbers,"active-weeks-start-dates":a.activeWeeksStartDates,onToggleActiveWeek:a.toggleActiveWeek},null,8,["availability","booking-numbers","active-weeks-start-dates","onToggleActiveWeek"])):(0,l.Q3)("",!0),a.newHotel?(0,l.Q3)("",!0):((0,l.uX)(),(0,l.CE)("div",p,[n[4]||(n[4]=(0,l.Lk)("h2",null,"Add/Remove availability",-1)),(0,l.bF)((0,i.R1)(t),{type:"date",label:"Start",modelValue:a.start_date,"onUpdate:modelValue":n[1]||(n[1]=e=>a.start_date=e)},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(t),{type:"date",label:"End",modelValue:a.end_date,"onUpdate:modelValue":n[2]||(n[2]=e=>a.end_date=e)},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(t),{type:"number",label:"Capacity",modelValue:a.amount,"onUpdate:modelValue":n[3]||(n[3]=e=>a.amount=e)},null,8,["modelValue"]),a.newHotel?(0,l.Q3)("",!0):((0,l.uX)(),(0,l.Wv)((0,i.R1)(t),{key:0,t
1ype:"button","model-value":a.availabilityButtonText,onClick:a.editAvailability},null,8,["model-value","onClick"]))])),a.newHotel?((0,l.uX)(),(0,l.Wv)((0,i.R1)(t),{key:2,type:"button","model-value":"Add hotel",onClick:a.addHotel},null,8,["onClick"])):(0,l.Q3)("",!0)]),_:1},8,["label"])]))}}),C={name:"Admin",props:["title","name","emailTexts","conditionUrl"],data(){return{dataTitle:this.title,dataName:this.name,dataConditions:this.conditionUrl,bookingEmailText:this.emailTexts.bookingEmailText,editingEmailText:this.emailTexts.editingEmailText,cancelingEmailText:this.emailTexts.cancelingEmailText,inputEmail:this.emailTexts.inputEmail,display:"admin",hotelId:0,hotels:[],hotel:null,bookingNumbers:[],relevantBookingNumbers:[]}},mounted(){this.getAllHotels(),this.getBookingNumbers()},methods:{getAllHotels(){fetch("/Api/hotelbooking/getHotels",{method:"GET"}).then(e=>{e.json().then(e=>{e.succeeded&&(this.hotels=e.data.hotels)})})},getBookingNumbers(){fetch("/Api/hotelbooking/getBookingNumbers",{method:"GET"}).then(e=>{e.json().then(e=>{e.succeeded&&(this.bookingNumbers=e.data.booking_numbers)})})},generateCsv(e){fetch("/Api/hotelbooking/generateBookingCsv",{method:"POST",body:JSON.stringify({hotelId:e})}).then(e=>{e.json().then(e=>{e.succeeded&&window.open(e.data.url)})})},editHotel(e){this.hotelId=e,this.display="hotel",this.relevantBookingNumbers=this.bookingNumbers[e]??[]},deleteHotel(e,t){if(!confirm('Are you sure you want to delete "'+e.hotel+'" ?'))return!1;fetch("/Api/hotelbooking/deleteHotel",{method:"POST",body:JSON.stringify({hotelId:t})}).then(e=>{e.json().then(e=>{e.succeeded&&this.getAllHotels()})})},back(){this.hotel=null,this.display="admin",this.getAllHotels()}}},V=Object.assign(C,{setup(e){const t=(0,l.$V)(()=>Promise.all([a.e(99959),a.e(94607),a.e(33582)]).then(a.bind(a,"a9bcaf22dee96965"))),d=(0,l.$V)(()=>Promise.all([a.e(99959),a.e(41960)]).then(a.bind(a,"db7fc61db8da52af"))),s=(0,l.$V)(()=>Promise.all([a.e(73349),a.e(53620)]).then(a.bind(a,"a27b9f1ed4165b76")));return(e,a)=>((0,l.uX)(),(0,l.CE)("div",null,[(0,l.bF)((0,i.R1)(t),{type:"text",name:"name",modelValue:e.dataName,"onUpdate:modelValue":a[0]||(a[0]=t=>e.dataName=t),label:"Name"},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(t),{type:"text",name:"title",modelValue:e.dataTitle,"onUpdate:modelValue":a[1]||(a[1]=t=>e.dataTitle=t),label:"Title"},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(t),{type:"url",name:"conditionUrl",modelValue:e.dataConditions,"onUpdate:modelValue":a[2]||(a[2]=t=>e.dataConditions=t),label:"Url to terms and conditions"},null,8,["modelValue"]),"hotel"===e.display?((0,l.uX)(),(0,l.Wv)(E,{key:0,"hotel-id":e.hotelId,"booking-numbers":e.relevantBookingNumbers,onBack:e.back},null,8,["hotel-id","booking-numbers","onBack"])):(0,l.Q3)("",!0),"admin"===e.display?((0,l.uX)(),(0,l.Wv)((0,i.R1)(d),{key:1,label:"Hotels",segment:!0},{default:(0,l.k6)(()=>[(0,l.Lk)("table",null,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(e.hotels,(a,n)=>((0,l.uX)(),(0,l.CE)("tr",null,[(0,l.Lk)("td",null,(0,o.v_)(a.hotel),1),(0,l.Lk)("td",null,[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"Edit",onClick:t=>e.editHotel(n)},null,8,["onClick"])]),(0,l.Lk)("td",null,[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"CSV",onClick:t=>e.generateCsv(n)},null,8,["onClick"])]),(0,l.Lk)("td",null,[(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"Delete",onClick:t=>e.deleteHotel(a,n)},null,8,["onClick"])])]))),256))]),(0,l.bF)((0,i.R1)(t),{type:"button","model-value":"add +",onClick:a[3]||(a[3]=t=>e.editHotel(0))})]),_:1})):(0,l.Q3)("",!0),(0,l.bF)((0,i.R1)(d),{label:"E-mail",segment:!0},{default:(0,l.k6)(()=>[(0,l.bF)((0,i.R1)(t),{type:"text",name:"inputEmail",label:e.$t("Input Email"),modelValue:e.inputEmail,"onUpdate:modelValue":a[4]||(a[4]=t=>e.inputEmail=t)},null,8,["label","modelValue"]),(0,l.bF)((0,i.R1)(s),{label:"Booking",modelValue:e.bookingEmailText,"onUpdate:modelValue":a[5]||(a[5]=t=>e.bookingEmailText=t),features:"list link"},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(s),{label:"Editing",modelValue:e.editingEmailText,"onUpdate:modelValue":a[6]||(a[6]=t=>e.editingEmailText=t),features:"list link"},null,8,["modelValue"]),(0,l.bF)((0,i.R1)(s),{label:"Canceling",modelValue:e.cancelingEmailText,"onUpdate:modelValue":a[7]||(a[7]=t=>e.cancelingEmailText=t),features:"list link"},null,8,["modelValue"]),(0,l.bo)((0,l.Lk)("input",{style:{visibility:"hidden"},name:"bookingEmail","onUpdate:modelValue":a[8]||(a[8]=t=>e.bookingEmailText=t)},null,512),[[n.Jo,e.bookingEmailText]]),(0,l.bo)((0,l.Lk)("input",{style:{visibility:"hidden"},name:"editingEmail","onUpdate:modelValue":a[9]||(a[9]=t=>e.editingEmailText=t)},null,512),[[n.Jo,e.editingEmailText]]),(0,l.bo)((0,l.Lk)("input",{style:{visibility:"hidden"},name:"cancelingEmail","onUpdate:modelValue":a[10]||(a[10]=t=>e.cancelingEmailText=t)},null,512),[[n.Jo,e.cancelingEmailText]])]),_:1})]))}}),w=(0,v.A)(V,[["__scopeId","data-v-be9a1b38"]])}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.