PageSourceSearch

https://foodfinder.mx/chunk-JQHSGLB5.js

js foodfinder.mx collected 2026-10-02 16:14:01 UTC 34,783 bytes, 51 lines download raw bytes

1import{a as oe,b as ae,c as se,d as H,e as le,f as de}from"./chunk-G7HDLV3Y.js";import{b as ee,d as ne,e as K,f as ie,p as re}from"./chunk-Q5B3BLJC.js";import"./chunk-RJSAQQJR.js";import"./chunk-DJY7TLQR.js";import{e as te}from"./chunk-DCQ6K7MS.js";import"./chunk-6XIRPTFG.js";import"./chunk-CDN6YX5H.js";import"./chunk-HJ4QCVAO.js";import"./chunk-D3F2YJ7V.js";import"./chunk-TBB5A4RC.js";import"./chunk-2AGFAF2T.js";import"./chunk-7RHLFJDC.js";import{s as Z}from"./chunk-QLVBULEA.js";import"./chunk-2VMYDSIC.js";import"./chunk-DNIVSGA6.js";import{a as ue}from"./chunk-DMKEOHTA.js";import{k as Y}from"./chunk-YCP52F36.js";import"./chunk-FHDYJKXC.js";import{$b as W,Ia as j,Ja as l,Ka as o,Kb as R,La as a,Ma as h,Qa as k,Ra as M,Ta as E,Va as b,Xa as m,Zb as U,_b as J,ac as X,ba as P,bc as G,db as q,fa as A,fb as c,ha as r,hb as f,ib as D,mc as Q,pa as N,r as C,s as S,t as V,ua as L,ub as B,za as _}from"./chunk-DBXDUEE4.js";import{ja as z}from"./chunk-TAAAIZHL.js";import{a as O,b as F,e as me}from"./chunk-EQDQRRRY.js";var y=me(ue());var _e=(i,p,e)=>({"bg-green-50 text-[#0a8c44]":i,"bg-amber-50 text-amber-600":p,"bg-rose-50 text-rose-600":e}),ge=(i,p,e)=>({"bg-[#39b661] animate-pulse":i,"bg-amber-400":p,"bg-rose-500":e});function xe(i,p){if(i&1){let e=E();k(0),h(1,"span",17),o(2,"button",18),b("click",function(){C(e);let t=m();return S(t.selectedPrintStatus())}),h(3,"i",19),o(4,"span",7),c(5,"Ticket"),a(),o(6,"span",20),h(7,"span",21),a()(),o(8,"button",18),b("click",function(){C(e);let t=m();return S(t.toggleAlertSound())}),h(9,"i",6),o(10,"span",7),c(11,"Alerta"),a(),o(12,"span",20),h(13,"span",21),a()(),h(14,"span",17),M()}if(i&2){let e=m();r(2),l("ngClass",e.selectedPrint?"bg-green-50 border-blue-200 text-[#0566e4]":"bg-gray-50 border-gray-200 text-gray-400")("title",e.selectedPrint?"Impresi\xF3n de ticket habilitada":"Impresi\xF3n de ticket deshabilitada"),r(4),l("ngClass",e.selectedPrint?"bg-[#0567e7]":"bg-gray-300"),r(),l("ngClass",e.selectedPrint?"translate-x-[1.375rem]":"translate-x-0.5"),r(),l("ngClass",e.alertSoundEnabled?"bg-pink-50 border-pink-200 text-[#c106e6]":"bg-gray-50 border-pink-200 text-gray-400")("title",e.alertSoundEnabled?"Alerta sonora activada":"Alerta sonora silenciada"),r(),l("ngClass",e.alertSoundEnabled?"fa-volume-high":"fa-volume-xmark"),r(3),l("ngClass",e.alertSoundEnabled?"bg-[#ec0772]":"bg-gray-300"),r(),l("ngClass",e.alertSoundEnabled?"translate-x-[1.375rem]":"translate-x-0.5")}}function fe(i,p){if(i&1&&(o(0,"li"),c(1),a()),i&2){let e=p.$implicit;r(),f(" ",e.name," ")}}function he(i,p){if(i&1&&(o(0,"ul",49),_(1,fe,2,1,"li",28),a()),i&2){let e=m().$implicit;r(),l("ngForOf",e.extraFields)}}function be(i,p){if(i&1&&(o(0,"li"),c(1),a()),i&2){let e=p.$implicit;r(),f(" - ",e.name," ")}}function ve(i,p){if(i&1&&(o(0,"div",52)(1,"span",53),c(2),a(),o(3,"ul",54),_(4,be,2,1,"li",28),a()()),i&2){let e=p.$implicit;r(2),f("",e.stepName,":"),r(2),l("ngForOf",e.selections)}}function ye(i,p){if(i&1&&(o(0,"div",50),_(1,ve,5,2,"div",51),a()),i&2){let e=m().$implicit;r(),l("ngForOf",e.parsedBuildSelections)}}function Ce(i,p){if(i&1&&(o(0,"span",55),c(1),a()),i&2){let e=m().$implicit;r(),f(" \u26A0 ",e.nota.aviso," ")}}function Se(i,p){i&1&&(o(0,"span"),c(1,"\u{1F44D}"),a())}function we(i,p){i&1&&(o(0,"span"),c(1,"\u{1F468}\u200D\u{1F373}"),a())}function Ee(i,p){i&1&&(o(0,"span"),c(1,"\u{1F514}"),a())}function Te(i,p){i&1&&(o(0,"span"),c(1,"\u{1F3C1}"),a())}function Ie(i,p){i&1&&(o(0,"span"),c(1,"\u2714\uFE0F"),a())}function ke(i,p){if(i&1){let e=E();o(0,"button",56),b("click",function(){C(e);let t=m().$implicit,s=m(2).$implicit,d=m(2);return S(d.nextStatus(s,t))}),o(1,"span",57),k(2,58),_(3,Se,2,0,"span",59)(4,we,2,0,"span",59)(5,Ee,2,0,"span",59)(6,Te,2,0,"span",59)(7,Ie,2,0,"span",59),M(),a()()}if(i&2){let e=m().$implicit,n=m(4);l("ngClass",n.getStatusButtonColor(e.status)+" rounded-full p-2 text-white focus:outline-none transition")("title",n.getStatusLabel(e.status+1)),r(2),l("ngSwitch",e.status),r(),l("ngSwitchCase",0),r(),l("ngSwitchCase",1),r(),l("ngSwitchCase",2),r(),l("ngSwitchCase",3),r(),l("ngSwitchCase",4)}}function Me(i,p){if(i&1){let e=E();o(0,"button",61),b("click",function(){C(e);let t=m(2).$implicit,s=m(2).$implicit,d=m(2);return S(d.cancelItem(s,t))}),o(1,"span",57),c(2,"\u274C"),a()()}}function $e(i,p){if(i&1&&(o(0,"div"),_(1,Me,3,0,"button",60),a()),i&2){let e=m().$implicit;r(),l("ngIf",e.status>=0&&e.status<5)}}function Oe(i,p){if(i&1){let e=E();o(0,"tr",31)(1,"td",32)(2,"input",33),b("click",function(t){return C(e),S(t.stopPropagation())})("change",function(t){let s=C(e).$implicit,d=m(2).$implicit,x=m(2);return S(x.onCheckboxChange(t,d.id,s.id))}),a()(),o(3,"td",34),c(4),a(),o(5,"td",35),b("click",function(t){let s=C(e).$implicit,d=m(4);return S(d.verImagenPlatillo(s,t))}),o(6,"span",36),h(7,"i",37),c(8),a(),_(9,he,2,1,"ul",38)(10,ye,2,1,"div",39),a(),o(11,"td",40),_(12,Ce,2,1,"span",41),c(13),a(),o(14,"td",42)(15,"span",43),c(16),a()(),o(17,"td",44)(18,"span",45),h(19,"span",46),c(20),a()(),o(21,"td",47)(22,"div"),_(23,ke,8,8,"button",48),a(),_(24,$e,2,1,"div",14),a()()}if(i&2){let e=p.$implicit,n=m(2).$implicit,t=m(2);r(2),l("checked",t.selectedItems.has(n.id+"-"+e.id)),r(2),f(" ",n.mesa," "),r(4),D(" ",e.quantity,"x ",e.name," "),r(),l("ngIf",(e.extraFields==null?null:e.extraFields.length)>0),r(),l("ngIf",(e.parsedBuildSelections==null?null:e.parsedBuildSelections.length)>0),r(2),l("ngIf",e.nota==null?null:e.nota.aviso),r(),f(" ",e.nota!=null&&e.nota.aviso?e.nota.texto:e.comment||"Sin comentario"," "),r(2),l("ngClass",t.isFrozen(e)?"text-green-700":"")("title",t.isFrozen(e)?"Tiempo fijado al marcar Listo":""),r(),D(" ",t.isFrozen(e)?"\u{1F512}":"\u23F3"," ",e.timeElapsed||"0m 0s"," "),r(2),l("ngClass",t.getStatusCellClass(e.status)),r(),l("innerHTML",t.getStatusIcon(e.status),P),r(),f(" ",t.getStatusLabel(e.status)," "),r(3),l("ngIf",e.status>=0&&e.status<5),r(),l("ngIf",n.orderType!=1||e.status!=4)}}
1function Fe(i,p){if(i&1&&(k(0),o(1,"tr")(2,"td",29),c(3),a()(),_(4,Oe,25,17,"tr",30),M()),i&2){let e=m().$implicit,n=m(2);r(3),f(" ",n.getOrderHeader(e)," "),r(),l("ngForOf",e.items)}}function De(i,p){if(i&1&&(k(0),_(1,Fe,5,2,"ng-container",14),M()),i&2){let e=p.$implicit,n=m(2);r(),l("ngIf",!n.shouldHideOrder(e))}}function Ke(i,p){if(i&1&&(o(0,"div",22)(1,"div",23)(2,"table",24)(3,"thead",25)(4,"tr")(5,"th",26),c(6,"\u2713"),a(),o(7,"th",27),c(8," Mesa "),a(),o(9,"th",27),c(10," Pedido "),a(),o(11,"th",27),c(12," Comentarios "),a(),o(13,"th",27),c(14," Tiempo "),a(),o(15,"th",27),c(16," Estado "),a(),o(17,"th",27),c(18," Acciones "),a()()(),o(19,"tbody"),_(20,De,2,1,"ng-container",28),a()()()()),i&2){let e=m();r(20),l("ngForOf",e.pendingOrders)}}function Ne(i,p){if(i&1&&(o(0,"span",71),c(1),a()),i&2){let e=m(2);r(),D(" ",e.totalCompletados," platillo",e.totalCompletados===1?"":"s"," ")}}function Pe(i,p){i&1&&(o(0,"div",72),h(1,"i",73),c(2," Cargando terminados\u2026 "),a())}function Be(i,p){i&1&&(o(0,"div",74)(1,"div",75),c(2,"\u{1F37D}\uFE0F"),a(),o(3,"p",76),c(4,"Todav\xEDa no hay platillos terminados hoy"),a(),o(5,"p",77),c(6,"Aparecer\xE1n aqu\xED conforme cocina los vaya finalizando."),a()())}function He(i,p){if(i&1&&(o(0,"li"),c(1),a()),i&2){let e=p.$implicit;r(),f(" ",e.name," ")}}function ze(i,p){if(i&1&&(o(0,"ul",49),_(1,He,2,1,"li",28),a()),i&2){let e=m().$implicit;r(),l("ngForOf",e.extraFields)}}function Ve(i,p){if(i&1&&(o(0,"li"),c(1),a()),i&2){let e=p.$implicit;r(),f(" - ",e.name," ")}}function Ae(i,p){if(i&1&&(o(0,"div",52)(1,"span",53),c(2),a(),o(3,"ul",54),_(4,Ve,2,1,"li",28),a()()),i&2){let e=p.$implicit;r(2),f("",e.stepName,":"),r(2),l("ngForOf",e.selections)}}function Le(i,p){if(i&1&&(o(0,"div",50),_(1,Ae,5,2,"div",51),a()),i&2){let e=m().$implicit;r(),l("ngForOf",e.parsedBuildSelections)}}function je(i,p){if(i&1&&(o(0,"span",55),c(1),a()),i&2){let e=m().$implicit;r(),f(" \u26A0 ",e.nota.aviso," ")}}function qe(i,p){if(i&1){let e=E();o(0,"tr",80)(1,"td",81),c(2),a(),o(3,"td",35),b("click",function(t){let s=C(e).$implicit,d=m(4);return S(d.verImagenPlatillo(s,t))}),o(4,"span",36),h(5,"i",37),c(6),a(),_(7,ze,2,1,"ul",38)(8,Le,2,1,"div",39),a(),o(9,"td",40),_(10,je,2,1,"span",41),c(11),a(),o(12,"td",82),c(13),a(),o(14,"td",44)(15,"span",45),h(16,"span",46),c(17),a()()()}if(i&2){let e=p.$implicit,n=m().$implicit,t=m(3);r(2),f(" ",n.mesa," "),r(4),D(" ",e.quantity,"x ",e.name," "),r(),l("ngIf",(e.extraFields==null?null:e.extraFields.length)>0),r(),l("ngIf",(e.parsedBuildSelections==null?null:e.parsedBuildSelections.length)>0),r(2),l("ngIf",e.nota==null?null:e.nota.aviso),r(),f(" ",e.nota!=null&&e.nota.aviso?e.nota.texto:e.comment||"Sin comentario"," "),r(2),f(" \u23F3 ",t.calculateFinishedTime(e.startTime,e.finishTime)," "),r(2),l("ngClass",t.getStatusCellClass(e.status)),r(),l("innerHTML",t.getStatusIcon(e.status),P),r(),f(" ",t.getStatusLabel(e.status)," ")}}function Re(i,p){if(i&1&&(k(0),o(1,"tr")(2,"td",29),c(3),a()(),_(4,qe,18,11,"tr",79),M()),i&2){let e=p.$implicit;r(3),f(" ",e.mesa&&(e.items[0]!=null&&e.items[0].waiter)?e.mesa+" - Atendido por "+(e.items[0]==null?null:e.items[0].waiter):"Pedido de plataforma"," "),r(),l("ngForOf",e.items)}}function Ue(i,p){if(i&1&&(o(0,"div",23)(1,"table",24)(2,"thead",78)(3,"tr")(4,"th",27),c(5," Mesa "),a(),o(6,"th",27),c(7," Pedido "),a(),o(8,"th",27),c(9," Comentarios "),a(),o(10,"th",27),c(11," Tiempo "),a(),o(12,"th",27),c(13," Estado "),a()()(),o(14,"tbody"),_(15,Re,5,2,"ng-container",28),a()()()),i&2){let e=m(2);r(15),l("ngForOf",e.completedOrders)}}function Je(i,p){if(i&1){let e=E();o(0,"div",22)(1,"div",62)(2,"p",63),h(3,"i",64),c(4," Terminados de hoy "),_(5,Ne,2,2,"span",65),a(),o(6,"button",66),b("click",function(){C(e);let t=m();return S(t.loadCompletedOrders())}),h(7,"i",67),c(8," Actualizar "),a()(),_(9,Pe,3,0,"div",68)(10,Be,7,0,"div",69)(11,Ue,16,1,"div",70),a()}if(i&2){let e=m();r(5),l("ngIf",e.totalCompletados),r(),l("disabled",e.cargandoCompletados),r(),q("fa-spin",e.cargandoCompletados),r(2),l("ngIf",e.cargandoCompletados&&!e.completedOrders.length),r(),l("ngIf",!e.cargandoCompletados&&!e.completedOrders.length),r(),l("ngIf",e.completedOrders.length)}}function We(i,p){i&1&&(o(0,"div",83)(1,"div",84),V(),o(2,"svg",85),h(3,"circle",86)(4,"path",87),a(),c(5," No tienes permisos de Cocina o no hay pedidos pendientes. "),a()())}var ct=(()=>{class i{monitorService;realtime;cdr;orders=[];allOrders=[];selectedItems=new Map;realtimeSubscription=null;estadoSubscription=null;timerSubscription=null;estadoCanal="conectando";previousOrdersHash="";currentTab="pending";selectedPrint=!0;showControls=!1;
1completedOrdersData=[];cargandoCompletados=!1;diaCompletados="";alertSoundEnabled=oe();seenOrderIds=new Set;ordersSeeded=!1;constructor(e,n,t){this.monitorService=e,this.realtime=n,this.cdr=t}ngOnInit(){this.realtimeSubscription=this.realtime.ordenes$.subscribe(e=>{e&&this.aplicarOrdenes(e)}),this.estadoSubscription=this.realtime.estado$.subscribe(e=>{this.estadoCanal=e,this.cdr.detectChanges()}),this.realtime.conectar(),this.timerSubscription=z(1e3).subscribe(()=>{this.updateOrderTimers()})}ngOnDestroy(){this.realtimeSubscription?.unsubscribe(),this.estadoSubscription?.unsubscribe(),this.timerSubscription?.unsubscribe(),this.realtime.desconectar()}onWindowFocus(){this.realtime.refrescar()}getStatusLabel(e){switch(e){case 0:return"Pendiente";case 1:return"Aceptado";case 2:return"Preparando";case 3:return"Casi Listo";case 4:return"Listo";case 5:return"Finalizado";case-1:return"Cancelado";default:return""}}getStatusIcon(e){switch(e){case 0:return"\u23F3";case 1:return"\u{1F44D}";case 2:return"\u{1F468}\u200D\u{1F373}";case 3:return"\u{1F514}";case 4:return"\u{1F3C1}";case 5:return"\u2714\uFE0F";case-1:return"\u274C";default:return""}}getStatusButtonColor(e){switch(e){case 0:return"bg-yellow-400 hover:bg-yellow-500";case 1:return"bg-blue-400 hover:bg-blue-500";case 2:return"bg-orange-400 hover:bg-orange-500";case 3:return"bg-cyan-400 hover:bg-cyan-500";case 4:return"bg-green-500 hover:bg-green-600";case 5:return"bg-gray-500";default:return"bg-gray-300"}}getStatusCellClass(e){switch(e){case 0:return"bg-yellow-400 text-yellow-950";case 1:return"bg-blue-500 text-white";case 2:return"bg-orange-500 text-white";case 3:return"bg-cyan-600 text-white";case 4:return"bg-green-600 text-white";case 5:return"bg-gray-500 text-white";case-1:return"bg-red-500 text-white line-through";default:return"bg-gray-300 text-gray-800"}}loadOrders(){this.realtime.refrescar()}aplicarOrdenes(e){let n=e.map(d=>{let x=this.orders.find(u=>u.id===d.id),g=d.products.map(u=>{let v=x?.items?.find(I=>I.id===u.cartItemId)?.startTime||u.startTime||new Date(d.creationDate).getTime(),T=null;if(u.buildSelections)try{T=typeof u.buildSelections=="string"?JSON.parse(u.buildSelections):u.buildSelections}catch(I){console.error("Error parsing buildSelections",I)}return F(O({},u),{id:u.cartItemId,name:u.productName,comment:u.comments,nota:K(u.comments),status:typeof u.status=="number"?u.status:Number(u.status),startTime:v,waiter:u.waiter,timeElapsed:this.displayElapsed({startTime:v,status:Number(u.status),readyTime:u.readyTime,finishTime:u.finishTime}),parsedBuildSelections:T})});return F(O({},d),{items:g})}),t=n.map(d=>Number(d.id)).filter(d=>!isNaN(d));if(!this.ordersSeeded)t.forEach(d=>this.seenOrderIds.add(d)),this.ordersSeeded=!0;else{let d=t.filter(x=>!this.seenOrderIds.has(x));d.length&&(d.forEach(x=>this.seenOrderIds.add(x)),this.alertSoundEnabled&&H()),this.seenOrderIds.size>500&&(this.seenOrderIds=new Set(t))}let s=JSON.stringify(n);s!==this.previousOrdersHash&&(this.previousOrdersHash=s,this.orders=n,this.allOrders=n),this.cdr.detectChanges()}selectedPrintStatus(){this.selectedPrint=!this.selectedPrint}toggleAlertSound(){this.alertSoundEnabled=!this.alertSoundEnabled,ae(this.alertSoundEnabled),se(),this.alertSoundEnabled&&H()}get pendingOrders(){return this.allOrders.filter(e=>e.items.some(n=>n.status>=0&&n.status<5))}get completedOrders(){return this.completedOrdersData}updateOrderTimers(){this.orders.forEach(e=>{e.items.forEach(n=>{n.status>=0&&n.status<5&&n.startTime&&(n.timeElapsed=this.displayElapsed(n))})}),this.cdr.detectChanges()}toggleItemSelection(e,n){let t=`${e}-${n}`;this.selectedItems.has(t)?this.selectedItems.delete(t):this.selectedItems.set(t,{orderId:e,itemId:n})}findItemById(e,n){return this.orders.find(s=>s.id===e)?.items.find(s=>s.id===n)}sendUpdates(){if(this.selectedItems.size===0){y.default.fire({icon:"warning",title:"Selecci\xF3n Requerida",text:"Debe seleccionar qu\xE9 Pedidos hay que finalizar",confirmButtonColor:"#3085d6",confirmButtonText:"Entendido"});return}y.default.fire({title:"\xBFFinalizar pedidos?",text:"\xBFEst\xE1 seguro de que desea finalizar los pedidos seleccionados?",icon:"question",showCancelButton:!0,confirmButtonColor:"#22c55e",cancelButtonColor:"#ef4444",confirmButtonText:"S\xED, finalizar",cancelButtonText:"Cancelar"}).then(e=>{if(e.isConfirmed){try{let n=Array.from(this.selectedItems.values()).map(({orderId:t,itemId:s})=>{let d=this.orders.find(x=>x.id.toString()===t.toString());if(d&&(d.orderType===1||d.orderType===2)&&this.tieneComensal(d))throw new Error(`Los pedidos de Delivery o Pickup (Ticket: #${t}) solo pueden procesarse hasta estar Listos (Estado 4) por cocina.`);return{orderId:parseInt(t),itemId:parseInt(s),newStatus:5,finishTime:Date.now()}});this.monitorService.updateItemsStatusBatch(n).subscribe({next:t=>{let s=t?.results||[],d=s.filter(g=>g.ok),x=s.filter(g=>!g.ok);if(this.selectedPrint)for(let g of d){let u=this.orders.find(v=>v.id===g.orderId),w=u?.items.find(v=>v.id===g.itemId);u&&w&&this.printTicket(u,w)}for(let g of d)this.removeItemFromList(g.orderId.toString(),g.itemId.toString());if(x.length===0)y.default.fire({icon:"success",title:"Listo",text:d.length===1?"El platillo se finaliz\xF3 correctamente.":`Se finalizaron ${d.length} platillos.`,timer:2e3,showConfirmButton:!1});else{let g=x.map(u=>`#${u.orderId} \xB7 ${u.message||"no se pudo finalizar"}`).join("<br>");y.default.fire({icon:d.length?"warning":"error",title:d.length?"Se finaliz\xF3 solo una parte":"No se pudo finalizar",html:`${d.length?`Finalizados: <b>${d.length}</b><br><br>`:""}Sin finalizar: <b>${x.length}</b><br><br>${g}`,confirmButtonColor:"#3085d6"})}this.loadOrders(),this.cdr.detectChanges()},error:t=>{console.error("Error al actualizar el lote",t);let s=t.error?.message||"Error al actualizar status";y.default.fire("Error",s,"error"),this.cdr.detectChanges()}})}catch(n){y.default.fire("Restricci\xF3n",n.message,"warning")}this.selectedItems.clear()}})}tieneComensal(e){return e?.userId!=null&&Number(e.userId)>0}
1nextStatus(e,n){if(n.status>=5||n.status===-1)return;if((e.orderType===1||e.orderType===2)&&n.status===4&&this.tieneComensal(e)){y.default.fire({icon:"info",title:"Pedido de Delivery / Pickup",text:"Los pedidos de Delivery o Pickup solo pueden procesarse hasta estar Listos (Estado 4) en cocina.",confirmButtonColor:"#3085d6"});return}let t=n.status<4?n.status+1:5,s=t===5?Date.now():void 0;this.monitorService.updateItemStatus(e.id,n.id,t,s).subscribe({next:()=>{n.status=t,t===4&&!n.readyTime&&(n.readyTime=Date.now()),t===5&&(n.finishTime=s),this.selectedPrint&&t===5&&this.printTicket(e,n),this.loadOrders(),this.cdr.detectChanges()},error:d=>{console.error("Error al cambiar status",d),this.cdr.detectChanges()}})}cancelItem(e,n){n.status===-1||n.status===5||y.default.fire({title:`\xBFCancelar ${n.name}?`,text:"\xBFPor qu\xE9 no sale este platillo?",icon:"warning",input:"radio",inputOptions:{cocina:"La cocina no lo puede preparar",cliente:"El cliente ya no lo quiere"},inputValue:"cocina",showCancelButton:!0,confirmButtonColor:"#d33",cancelButtonColor:"#3085d6",confirmButtonText:"S\xED, cancelar",cancelButtonText:"No"}).then(t=>{if(t.isConfirmed){let s=t.value==="cliente"?"cliente":"cocina";this.monitorService.updateItemStatus(e.id,n.id,-1,void 0,{reasonCode:s}).subscribe({next:()=>{n.status=-1,this.loadOrders(),this.cdr.detectChanges(),y.default.fire("Cancelado","El producto ha sido cancelado","success")},error:d=>{console.error("Error al cancelar",d),y.default.fire("No se cancel\xF3",d?.error?.message||"No se pudo cancelar el platillo. Int\xE9ntalo de nuevo.","error"),this.cdr.detectChanges()}})}})}removeItemFromList(e,n){let t=this.orders.findIndex(s=>s.id===e);t!==-1&&(this.orders[t].items=this.orders[t].items.filter(s=>s.id!==n),this.orders[t].items.length===0&&this.orders.splice(t,1))}onCheckboxChange(e,n,t){e.stopPropagation(),this.toggleItemSelection(n,t)}calculateTimeElapsed(e){if(!e)return"00:00";let n=Date.now()-e,t=Math.floor(n/6e4),s=Math.floor(n%6e4/1e3);return`${t}m ${s}s`}calculateFinishedTime(e,n){if(!e||!n)return"0m 0s";let t=n-e,s=Math.floor(t/6e4),d=Math.floor(t%6e4/1e3);return`${s}m ${d}s`}displayElapsed(e){return!e||!e.startTime?"0m 0s":e.readyTime?this.calculateFinishedTime(e.startTime,e.readyTime):e.status===5&&e.finishTime?this.calculateFinishedTime(e.startTime,e.finishTime):this.calculateTimeElapsed(e.startTime)}isFrozen(e){return!!e?.readyTime&&Number(e?.status)>=4}escaparHtml(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}verImagenPlatillo(e,n){n?.stopPropagation();let t=this.escaparHtml(e?.name),s=Number(e?.quantity)||1,d=e?.productImage,x=d?`<img src="${this.escaparHtml(d)}" alt="${t}"
2              style="width:100%;max-height:340px;object-fit:cover;border-radius:18px;
3                     border:1px solid #e5e7eb;background:#f9fafb;"
4              onerror="this.parentNode.innerHTML='<div style=&quot;padding:34px;border-radius:18px;background:#f9fafb;border:1px dashed #d1d5db;color:#6b7280;font-weight:700;&quot;>No se pudo cargar la imagen</div>'" />`:`<div style="padding:34px;border-radius:18px;background:#f9fafb;border:1px dashed #d1d5db;
5                     color:#6b7280;font-weight:700;">
6           <div style="font-size:2.4em;margin-bottom:6px;">\u{1F37D}\uFE0F</div>
7           Este platillo todav\xEDa no tiene foto cargada
8         </div>`,g=[];try{g=typeof e?.extraFields=="string"?JSON.parse(e.extraFields):e?.extraFields||[]}catch($){g=[]}let u=g.length?`<div style="margin-top:14px;text-align:left;">
9           <p style="font-size:0.7em;font-weight:900;text-transform:uppercase;letter-spacing:0.1em;
10                     color:#6b7280;margin-bottom:6px;">Extras</p>
11           ${g.map($=>`
12             <div style="font-weight:700;color:#0a8c44;font-size:0.95em;">\u2022 ${this.escaparHtml($?.name)}</div>
13           `).join("")}
14         </div>`:"",w=e?.parsedBuildSelections||[],v=w.length?`<div style="margin-top:14px;text-align:left;">
15           <p style="font-size:0.7em;font-weight:900;text-transform:uppercase;letter-spacing:0.1em;
16                     color:#6b7280;margin-bottom:6px;">C\xF3mo va armado</p>
17           ${w.map($=>`
18             <div style="border-left:3px solid #39b661;padding-left:10px;margin-bottom:8px;">
19               <div style="font-size:0.7em;font-weight:900;text-transform:uppercase;color:#9ca3af;">
20                 ${this.escaparHtml($?.stepName)}
21               </div>
22               <div style="font-weight:700;color:#374151;">
23                 ${($?.selections||[]).map(pe=>this.escaparHtml(pe?.name)).join(", ")}
24               </div>
25             </div>
26           `).join("")}
27         </div>`:"",T=e?.comment?`<div style="margin-top:14px;text-align:left;background:#fffbeb;border:1px solid #fde68a;
28                     border-radius:14px;padding:10px 12px;">
29           <p style="font-size:0.7em;font-weight:900;text-transform:uppercase;letter-spacing:0.1em;
30                     color:#92400e;margin-bottom:4px;">Comentario</p>
31           <p style="font-weight:700;color:#78350f;">\u{1F4AC} ${this.escaparHtml(e.comment)}</p>
32         </div>`:"",I=K(e?.comment).aviso,ce=I?`<div style="margin-top:14px;text-align:left;background:#fef2f2;border:1px solid #fca5a5;
33                     border-radius:14px;padding:10px 12px;">
34           <p style="font-weight:900;color:#991b1b;">\u26A0 ${this.escaparHtml(I)}</p>
35         </div>`:"";y.default.fire({title:`${s}x ${t}`,html:`<div style="max-height:70vh;overflow-y:auto;">
36               ${x}${ce}${T}${u}${v}
37             </div>`,width:560,confirmButtonText:"Cerrar",confirmButtonColor:"#39b661",customClass:{popup:"rounded-3xl"}})}expandedItems=new Set;toggleExtras(e,n){let t=`${e} - ${n}`;this.expandedItems.has(t)?this.expandedItems.delete(t):this.expandedItems.add(t)}printTicket(e,n){let t=new Date,s=t.toLocaleDateString("es-MX"),d=t.toLocaleTimeString("es-MX"),x=ie(ne(n.comment)),g=K(n.comment).texto,u=
37x?`<div><strong>${this.escaparHtml(x)}</strong></div>`+(g?`<div><em>Nota:</em> ${this.escaparHtml(g)}</div>`:""):n.comment?`<div><em>Nota:</em> ${n.comment}</div>`:"",w=`
38      ${e.imageUrl?`<img src="${e.imageUrl}" alt="Logo" class="logo" onerror="this.style.display='none'" />`:""}
39      <div class="t-name t-center">COMEDOR</div>
40      <div class="t-row"><span>${s} ${d}</span><span>ORDEN: <b>${e.id}</b></span></div>
41      <div class="t-row"><span>MESA: <b>${e.mesa||"N/A"}</b></span><span>MESERO: ${n.waiter||"N/A"}</span></div>
42      <hr class="t-hr">
43      <div class="t-total"><strong>${n.quantity} x ${n.name.toUpperCase()}</strong></div>
44      ${n.extraFields&&n.extraFields.length>0?n.extraFields.map(v=>`<div>- ${v.name}</div>`).join(""):""}
45      ${n.parsedBuildSelections&&n.parsedBuildSelections.length>0?n.parsedBuildSelections.map(v=>`
46        <div style="margin-top: 1mm;"><strong>${v.stepName.toUpperCase()}:</strong></div>
47        ${v.selections.map(T=>`<div style="margin-left: 3mm;">- ${T.name}</div>`).join("")}
48      `).join(""):""}
49      <hr class="t-hr">
50      ${u}
51    `;te({title:"Comanda",bodyHtml:w})}setTab(e){this.currentTab=e,e==="completed"&&this.loadCompletedOrders()}loadCompletedOrders(){this.cargandoCompletados=!0,this.monitorService.getCompletedOrders().subscribe({next:e=>{let n=e?.orders||[];this.completedOrdersData=n.map(t=>F(O({},t),{items:(t.products||[]).map(s=>{let d=null;if(s.buildSelections)try{d=typeof s.buildSelections=="string"?JSON.parse(s.buildSelections):s.buildSelections}catch(x){d=null}return F(O({},s),{id:s.cartItemId,name:s.productName,comment:s.comments,nota:K(s.comments),status:Number(s.status),parsedBuildSelections:d})})})),this.diaCompletados=e?.day||"",this.cargandoCompletados=!1,this.cdr.detectChanges()},error:e=>{console.error("Error al cargar terminados del d\xEDa:",e),this.completedOrdersData=[],this.cargandoCompletados=!1,this.cdr.detectChanges()}})}get totalCompletados(){return this.completedOrdersData.reduce((e,n)=>e+(n.items?.length||0),0)}getOrderHeader(e){let n=Number(e?.orderType)===3||Number(e?.orderType)===4,t=e?.items?.[0]?.waiter;if(n){let s=e?.mesa||"Mesa";return t?`${s} - Atendido por ${t}`:s}if(Number(e?.orderType)===7){let s=String(e?.customerName||"").trim()||"Sin nombre",d=e?.serviceMode==="EAT_IN"?"para aqu\xED":"para llevar";return`\u2615 ${s} - ${d}`}return t?`Pedido para llevar - Capturado por ${t}`:"Pedido para llevar - Desde la app"}shouldHideOrder(e){let n=Number(e?.status)===4,t=Number(e?.orderType);return n&&(t===1||t===2)&&this.tieneComensal(e)}static \u0275fac=function(n){return new(n||i)(N(le),N(de),N(R))};static \u0275cmp=L({type:i,selectors:[["app-kitchen-monitor"]],hostBindings:function(n,t){n&1&&b("focus",function(){return t.onWindowFocus()},A)},decls:24,vars:22,consts:[[1,"px-4","sm:px-0","lg:px-8","-mt-16","pt-3","lg:mt-1","lg:pt-0"],[1,"flex","flex-wrap","items-center","justify-between","gap-x-6","gap-y-3","mb-1"],[1,"flex","items-center","gap-2"],["type","button",1,"inline-flex","items-center","gap-2","bg-[#39b661]","hover:bg-[#0a8c44]","text-white","px-5","py-2.5","rounded-2xl","text-xs","font-black","uppercase","tracking-widest","shadow-lg","shadow-green-100","transition-all","active:scale-95",3,"click"],[1,"fa-solid","fa-check-double"],["type","button",1,"md:hidden","inline-flex","items-center","gap-2","px-3","py-2.5","rounded-2xl","border-2","border-gray-200","bg-white","text-gray-500","transition-all","active:scale-95",3,"click","title"],[1,"fa-solid",3,"ngClass"],[1,"text-xs","font-black","uppercase","tracking-widest"],[1,"inline-flex","items-center","gap-1.5","px-2.5","py-2","rounded-2xl",3,"ngClass","title"],[1,"w-2","h-2","rounded-full",3,"ngClass"],[1,"hidden","lg:inline","text-[0.65rem]","font-black","uppercase","tracking-widest"],[1,"flex-wrap","items-center","gap-3","w-full","md:w-auto",3,"ngClass"],[1,"inline-flex","items-center","bg-gray-100","rounded-2xl","p-1"],["type","button",1,"px-4","py-2","rounded-xl","text-xs","font-black","uppercase","tracking-widest","transition-all",3,"click","ngClass"],[4,"ngIf"],["class","mt-2 md:mt-6",4,"ngIf"],["class","flex flex-col items-center justify-center min-h-[200px] mb-8",4,"ngIf"],[1,"hidden","sm:block","w-px","h-8","bg-gray-200"],["type","button",1,"inline-flex","items-center","gap-2.5","pl-3","pr-2","py-2","rounded-2xl","border-2","transition-all","active:scale-95",3,"click","ngClass","title"],[1,"fa-solid","fa-print"],[1,"relative","inline-flex","h-6","w-11","shrink-0","rounded-full","transition-colors","duration-200",3,"ngClass"],[1,"inline-block","h-5","w-5","mt-0.5","transform","rounded-full","bg-white","shadow","transition","duration-200",3,"ngClass"],[1,"mt-2","md:mt-6"],[1,"overflow-x-auto","rounded-lg","shadow-md"],[1,"min-w-full","border","border-gray-300","rounded-lg","shadow-lg"],[1,"bg-gray-900","text-white"],[1,"px-4","py-3","text-center","w-12","border","border-gray-500"],[1,"px-3","py-3","text-left","text-sm","font-semibold","border","border-gray-500"],[4,"ngFor","ngForOf"],["colspan","7",1,"bg-gray-200","text-gray-900","font-bold","px-3","py-2","border","border-gray-400"],["class","border-b border-gray-300 hover:bg-gray-100 transition-all",4,"ngFor","ngForOf"],[1,"border-b","border-gray-300","hover:bg-gray-100","transition-all"],[1,"px-4","py-3","text-center","border","border-gray-300"],["type","checkbox",1,"w-5","h-5","text-green-500","border-gray-300","rounded","focus:ring-green-500",3,"click","change","checked"],[1,"px-3","py-3","text-sm","font-medium","text-gray-900","border","border-gray-300"],["title","Ver foto y preparaci\xF3n del platillo",1,"px-3","py-3","text-sm","font-semibold","text-gray-700","border","border-gray-300","cursor-pointer","hover:bg-green-50","transition-colors",3,"click"],[1,"inline-flex","items-center","gap-1.5"],[1,"fa-regular","fa-image","text-[#39b661]"],["class","mt-2 ml-5 list-disc text-gray-600 text-sm",4,"ngIf"],["class","mt-2",4,"ngIf"],[1,"px-3","py-3","text-sm","text-gray-600","border","border-gray-300"],["class","block mb-1 px-2 py-1 rounded-lg bg-red-100 border border-red-300 text-red-800 font-black text-xs",4,"ngIf"],[1,"px-3","py-3","text-sm","font-semibold","flex","items-center","border","border-gray-300"],[3,"ngClass","title"],[1,"px-3","py-3","text-sm","border","border-gray-300"],[1,"inline-flex","items-center","gap-1.5","px-3","py-1","rounded-full","text-xs","font-bold","whitespace-nowrap",3,"ngClass"],[3,"innerHTML"],[1,"px-3","py-3","text-sm","border","border-gray-300","flex","justify-center","max-w-full"],[3,"ngClass","title","click",4,"ngIf"],[1,"mt-2","ml-5","list-disc","text-gray-600","text-sm"],[1,"mt-2"],["class","mb-1 border-l-2 border-green-400 pl-2",4,"ngFor","ngForOf"],[1,"mb-1","border-l-2","border-green-400","pl-2"],[1,"font-bold","text-[10px]","uppercase","text-gray-500"],[1,"ml-2","text-gray-600","text-sm"],[1,"block","mb-1","px-2","py-1","rounded-lg","bg-red-100","border","border-red-300","text-red-800","font-black","text-xs"],[3,"click","ngClass","title"],[1,"text-xl"],[3,"ngSwitch"],[4,"ngSwitchCase"],["class","bg-red-500 hover:bg-red-700 rounded-full p-2 text-white focus:outline-none transition ml-14","title","Cancelar",3,"click",4,"ngIf"],["title","Cancelar",1,"bg-red-500","hover:bg-red-700","rounded-full","p-2","text-white","focus:outline-none","transition","ml-14",3,"click"],[1,"flex","flex-wrap","items-center","justify-between","gap-3","mb-4"],[1,"text-sm","font-bold","text-gray-600","flex","items-center","gap-2"],[1,"fa-solid","fa-calendar-day","text-[#39b661]"],["class","bg-green-50 text-[#0a8c44] border border-green-100 rounded-full px-2.5 py-0.5 text-xs font-black",4,"ngIf"],["type","button",1,"inline-flex","items-center","gap-2","bg-white","border-2","border-gray-100","text-gray-500","hover:text-gray-700","hover:bg-gray-50","px-4","py-2","rounded-2xl","text-xs","font-black","uppercase","tracking-widest","transition-all","active:scale-95","disabled:opacity-40",3,"click","disabled"],[1,"fa-solid","fa-rotate"],["class","py-14 text-center text-gray-400 font-bold",4,"ngIf"],["class","py-14 text-center bg-gray-50 rounded-2xl border-2 border-dashed border-gray-200",4,"ngIf"],["class","overflow-x-auto rounded-lg shadow-md",4,"ngIf"],[1,"bg-green-50","text-[#0a8c44]","border","border-green-100","rounded-full","px-2.5","py-0.5","text-xs","font-black"],[1,"py-14","text-center","text-gray-400","font-bold"],[1,"fa-solid","fa-rotate","fa-spin","mr-2"],[1,"py-14","text-center","bg-gray-50","rounded-2xl","border-2","border-dashed","border-gray-200"],[1,"text-5xl","mb-3","opacity-30"],[1,"font-black","text-gray-700"],[1,"text-sm","text-gray-400","mt-1"],[1,"bg-green-800","text-white"],["class","border-b border-gray-300",4,"ngFor","ngForOf"],[1,"border-b","border-gray-300"],[1,"px-3","py-3","text-sm","text-gray-900","border","border-gray-300"],[1,"px-3","py-3","text-sm","font-semibold","border","border-gray-300"],[1,"flex","flex-col","items-center","justify-center","min-h-[200px]","mb-8"],[1,"bg-yellow-50","text-yellow-800","px-5","py-4","rounded-xl","shadow","font-semibold","flex","items-center","gap-2","border","border-yellow-200"],["fill","none","stroke","currentColor","stroke-width","2","viewBox","0 0 24 24",1,"w-6","h-6","text-yellow-400"],["cx","12","cy","12","r","10","stroke","currentColor","stroke-width","2"],["stroke-linecap","round","stroke-linejoin","round","d","M12 8v4m0 4h.01"]],template:function(n,t){n&1&&(o(0,"div",0)(1,"div",1)(2,"div",2)(3,"button",3),b("click",function(){return t.sendUpdates()}),h(4,"i",4),c(5," Finalizar Pedidos "),a(),o(6,"button",5),b("click",function(){return t.showControls=!t.showControls}),h(7,"i",6),o(8,"span",7),c(9,"Opciones"),a()(),o(10,"span",8),h(11,"span",9),o(12,"span",10),c(13),a()()(),o(14,"div",11)(15,"div",12)(16,"button",13),b("click",function(){return t.setTab("pending")}),c(17," \u{1F552} Pendientes "),a(),o(18,"button",13),b("click",function(){return t.setTab("completed")}),c(19," \u2705 Terminados "),a()(),_(20,xe,15,9,"ng-container",14),a()(),_(21,Ke,21,1,"div",15)(22,Je,12,7,"div",15)(23,We,6,0,"div",16),a()),n&2&&(r(6),l("title",t.showControls?"Ocultar opciones":"Mostrar opciones"),j("aria-expanded",t.showControls),r(),l("ngClass",t.showControls?"fa-xmark":"fa-sliders"),r(3),l("ngClass",B(14,_e,t.estadoCanal==="vivo",t.estadoCanal==="respaldo"||t.estadoCanal==="conectando",t.estadoCanal==="caido"))("title",t.estadoCanal==="vivo"?"Recibiendo pedidos en tiempo real":t.estadoCanal==="respaldo"?"Sin canal directo: la comanda se actualiza m\xE1s de
51spacio":t.estadoCanal==="conectando"?"Conectando\u2026":"Sin conexi\xF3n con el servidor"),r(),l("ngClass",B(18,ge,t.estadoCanal==="vivo",t.estadoCanal==="respaldo"||t.estadoCanal==="conectando",t.estadoCanal==="caido")),r(2),f(" ",t.estadoCanal==="vivo"?"En vivo":t.estadoCanal==="respaldo"?"Lento":t.estadoCanal==="conectando"?"Conectando":"Sin conexi\xF3n"," "),r(),l("ngClass",t.showControls?"flex":"hidden md:flex"),r(2),l("ngClass",t.currentTab==="pending"?"bg-white text-gray-900 shadow-sm":"text-gray-500 hover:text-gray-700"),r(2),l("ngClass",t.currentTab==="completed"?"bg-white text-gray-900 shadow-sm":"text-gray-500 hover:text-gray-700"),r(2),l("ngIf",t.currentTab==="pending"),r(),l("ngIf",t.currentTab==="pending"),r(),l("ngIf",t.currentTab==="completed"),r(),l("ngIf",t.pendingOrders.length===0))},dependencies:[Q,U,J,W,X,G,Z,ee,re,Y],styles:[".filter-btn[_ngcontent-%COMP%]{border-radius:.25rem;padding:.5rem 1rem;font-weight:600;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);
51--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.order-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.fullscreen[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:50;overflow:auto;--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}body.fullscreen[_ngcontent-%COMP%]{overflow:hidden}.fa-spinner[_ngcontent-%COMP%]{font-size:1.25rem;color:#fff}"]})}return i})();export{ct as KitchenMonitorComponent};

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.