PageSourceSearch

https://app.pro-sky.com/build/assets/reassign-passengers-modal-BBJHACdF.js

js pro-sky.com collected 2026-10-02 20:00:41 UTC 7,192 bytes, 1 lines download raw bytes

1import{C as e,D as t,E as n,Et as r,G as i,Ot as a,Pt as o,Q as s,S as c,Y as ee,b as l,ct as u,h as d,jt as f,q as p,st as m,t as h,x as g,y as _,yt as v}from"./vue.esm-bundler-DbaDmJgJ.js";import{t as y}from"./bootstrap-DxTYdsZD.js";import{D as b,Dt as x,X as S,Z as C}from"./talk-to-us-DZ9TbE96.js";import{t as w}from"./alert-component-3RREh10R.js";import{t as T}from"./button-component-yvaGCfKF.js";import{t as E}from"./modal-sVDy-CYs.js";import{t as D}from"./table-component-tanstack-BbdZMTY6.js";var O=o({default:()=>N});h();var k={class:`tw-flex tw-basis-full tw-flex-col tw-gap-3`},te={class:`tw-flex tw-flex-col tw-gap-1`},ne={class:`tw-flex tw-flex-col tw-gap-1`},re={key:0},ie={key:1},ae={key:2,class:`tw-text-gray-500`},A=[`title`],oe=[`title`],se=[`title`],ce=[`title`],le={key:1,class:`tw-flex tw-flex-col tw-gap-1 tw-text-sm`},j={key:0,class:`tw-font-medium tw-text-green-700`},M={key:1,class:`tw-font-medium tw-text-red-600`},N={__name:`reassign-passengers-modal`,props:{projectplan:{type:Object,required:!0},passengers:{type:Array,required:!0},mode:{type:String,default:`mass`,validator:e=>[`single`,`mass`].includes(e)},bookingId:{type:Number,default:null}},emits:[`close`,`success`],setup(o,{emit:h}){let O=o,N=h,P=_(()=>O.mode===`single`&&O.passengers.length===1),F=_(()=>P.value?O.passengers[0]:null),I=_(()=>O.passengers.map(e=>e.id)),L=v({data:[],meta:{}}),R=v(!1),z=async()=>{R.value=!0;try{let e=await y.get(route(`frontend.app.pm-area.projectplans.bookings.index`,{projectplan:O.projectplan.id,_query:{statuses:[`contracted`],per_page:500}}));L.value=e.data}finally{R.value=!1}},B=v(50),V=v(1),H=v([]),U=_(()=>{let e=new Map;for(let t of O.passengers)for(let n of t.booking_references||[])e.set(n,(e.get(n)||0)+1);return e}),W=_(()=>Array.from(U.value.keys())),G=_(()=>{let e=new Map;for(let t of O.passengers){let n=`${t.given_name||``} ${t.family_name||``}`.trim()||`Passenger #${t.id}`;for(let r of t.booking_references||[])e.has(r)||e.set(r,[]),e.get(r).push(n)}return e}),K=_(()=>W.value.length>0),ue=_(()=>H.value.filter(e=>!W.value.includes(e))),q=_(()=>W.value.filter(e=>!H.value.includes(e))),de=_(()=>{let e=new Map;for(let t of L.value.data||[])e.set(t.id,t.details?.booking_reference);return e}),J=e=>e.map(e=>de.value.get(e)||`#${e}`),Y=_(()=>J(ue.value)),X=_(()=>J(q.value)),fe=_(()=>{let e=new Set;for(let t of O.passengers)for(let n of t.booking_references||[])q.value.includes(n)&&e.add(t.id);return e.size}),Z=(e,t,n)=>`${e} ${e===1?t:n}`,pe=_(()=>P.value?`${F.value.given_name} ${F.value.family_name}`:Z(O.passengers.length,`passenger`,`passengers`)),me=_(()=>P.value?`${F.value.given_name} ${F.value.family_name}`:Z(fe.value,`passenger`,`passengers`));i(async()=>{H.value=[...W.value],await z()});let Q=v(!1),$=v([]),he=async()=>{if(H.value.length===0){$.value=[`Please select at least one booking.`];return}Q.value=!0,$.value=[];try{let e=await y.post(route(`frontend.app.pm-area.projectplans.passengers.reassign`,{projectplan:O.projectplan.id}),{passenger_ids:I.value,target_booking_ids:H.value,...O.bookingId&&{booking_id:O.bookingId}});x().success(`Passengers assigned successfully`),N(`success`,e.data),N(`close`)}catch(e){let t=e.response?.data,n=t?.errors,r=n?Object.values(n).flat().filter(Boolean):[];r.length>0?$.value=r:t?.message?$.value=[t.message]:$.value=[`Failed to assign passengers. Please try again.`]}finally{Q.value=!1}},ge=_(()=>[{title:`Reference`,key:`booking_reference`,align:`start`,sortable:!1},...K.value?[{title:P.value?`Currently`:`Currently here`,key:`currently_here`,align:`start`,sortable:!1,width:`120px`}]:[],{title:`From`,key:`departure_airport`,align:`start`,sortable:!1},{title:`To`,key:`arrival_airport`,align:`start`,sortable:!1},{title:`Pax/Seats`,key:`seats`,align:`end`,sortable:!1},{title:`Departure`,key:`first_outbound`,align:`start`,sortable:!1},{title:`Last Inbound`,key:`last_inbound`,align:`start`,sortable:!1}]);return(i,h)=>{let _=s(`tooltip`);return p(),g(E,{onClose:h[3]||=e=>N(`close`)},{title:m(()=>[...h[4]||=[n(`Assign passengers to bookings`,-1)]]),body:m(()=>[l(`div`,k,[$.value.length>
10?(p(),g(w,{key:0,type:`error`},{message:m(()=>[l(`ul`,te,[(p(!0),e(d,null,ee($.value,(t,n)=>(p(),e(`li`,{key:n},f(t),1))),128))])]),_:1})):c(``,!0),l(`div`,ne,[P.value?(p(),e(`span`,re,[h[5]||=n(` Pick the bookings `,-1),l(`b`,null,f(F.value.given_name)+` `+f(F.value.family_name),1),h[6]||=n(` should be on. `,-1)])):(p(),e(`span`,ie,[h[7]||=n(` Pick the bookings the `,-1),l(`b`,null,f(o.passengers.length),1),h[8]||=n(` selected passengers should be on. `,-1)])),K.value?(p(),e(`span`,ae,` Current ones are pre-checked — uncheck to remove. `)):c(``,!0)]),t(D,{"data-test":`reassign-passengers-table`,"selected-rows":H.value,"onUpdate:selectedRows":h[0]||=e=>H.value=e,"items-per-page":B.value,"onUpdate:itemsPerPage":h[1]||=e=>B.value=e,"current-page":V.value,"onUpdate:currentPage":h[2]||=e=>V.value=e,headers:ge.value,items:L.value.data,meta:L.value.meta,loading:R.value,"hide-default-footer":``,"show-select":``},{booking_reference:m(({item:e})=>[n(f(e.details?.booking_reference||`-`),1)]),currently_here:m(({item:t})=>[U.value.get(t.id)?u((p(),g(b,{key:0,class:a([`tw-justify-center`,{"tw-border-green-200 tw-bg-green-50 tw-text-green-700":P.value,"tw-cursor-help":!P.value}])},{default:m(()=>[P.value?(p(),e(d,{key:0},[n(`Current`)],64)):(p(),e(d,{key:1},[n(f(U.value.get(t.id))+` of `+f(o.passengers.length),1)],64))]),_:2},1032,[`class`])),[[_,!P.value&&G.value.get(t.id)?.length?{content:G.value.get(t.id).join(`, `),theme:`tooltip-custom`}:null]]):c(``,!0)]),departure_airport:m(({item:e})=>[l(`span`,{title:e.departure_airport?.name},f(e.details?.departure_airport?.iata_code),9,A)]),arrival_airport:m(({item:e})=>[l(`span`,{title:e.arrival_airport?.name},f(e.details?.arrival_airport?.iata_code),9,oe)]),seats:m(({item:e})=>[t(b,{class:a([`tw-ml-auto tw-h-fit`,{"tw-border tw-border-red-200 tw-bg-white tw-text-red-600":e.details?.passenger_count_active>e.details?.seats}])},{default:m(()=>[n(f(e.details?.passenger_count_active)+`/`+f(e.details?.seats),1)]),_:2},1032,[`class`])]),first_outbound:m(({item:e})=>[l(`span`,{title:e.details?.first_outbound?.departing_at?r(C)(e.details.first_outbound.departing_at):``},f(e.details?.first_outbound?.departing_at?r(S)(e.details.first_outbound.departing_at,{day:`2-digit`,month:`short`}):``),9,se)]),last_inbound:m(({item:e})=>[l(`span`,{title:e.details?.last_inbound?.departing_at?r(C)(e.details.last_inbound.departing_at):``},f(e.details?.last_inbound?.departing_at?r(S)(e.details.last_inbound.departing_at,{day:`2-digit`,month:`short`}):``),9,ce)]),_:1},8,[`selected-rows`,`items-per-page`,`current-page`,`headers`,`items`,`meta`,`loading`]),K.value&&(Y.value.length>0||X.value.length>0)?(p(),e(`div`,le,[Y.value.length>0?(p(),e(`span`,j,f(pe.value)+` will be added to: `+f(Y.value.join(`, `)),1)):c(``,!0),X.value.length>0?(p(),e(`span`,M,f(me.value)+` will be removed from: `+f(X.value.join(`, `)),1)):c(``,!0)])):c(``,!0)])]),"footer-action":m(()=>[t(T,{loading:Q.value,disabled:H.value.length===0,onClick:he},{default:m(()=>[...h[9]||=[n(` Assign passengers `,-1)]]),_:1},8,[`loading`,`disabled`])]),_:1})}}};export{O as n,N as t};

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.