PIMS/public/build/assets/List--GExccxm.js

2 lines
8.1 KiB
JavaScript
Raw Normal View History

import{d as $,r,c as D,e as Y,p as B,a as l,f as T,u as E,h as O,w as X,b as s,i as S,q as n,v as u,s as Z,o,t as P,F as C,g as z,l as q}from"./app-BXYcVHqk.js";import{_ as G}from"./AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js";import{_ as H}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import"./useForwardExpose-Djbxsgaa.js";import"./VisuallyHidden-BvthYHr5.js";import"./RovingFocusGroup-dmigQ6Dy.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./index-C4J_hXM0.js";import"./createLucideIcon-BlA39rtn.js";const W={class:"flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4"},J={class:"grid grid-cols-1 items-end gap-2 md:grid-cols-12"},K={class:"md:col-span-4"},Q={class:"md:col-span-3"},ee={class:"md:col-span-2"},ae={class:"md:col-span-3"},te={class:"flex gap-2"},se={class:"md:col-span-2"},re={class:"md:col-span-3"},le={class:"md:col-span-3"},oe={class:"md:col-span-3"},ne={key:0,class:"rounded-md border border-red-300 bg-red-50 p-3 text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-200"},ie=["aria-busy"],ue=["href"],de={class:"h-20 w-14 shrink-0 overflow-hidden rounded bg-muted"},ce=["src","alt"],ve={class:"flex min-w-0 flex-1 flex-col"},me={class:"flex items-center justify-between gap-2"},pe={class:"truncate font-medium"},fe={class:"text-xs text-muted-foreground"},ge={class:"mt-1 text-xs text-muted-foreground"},he={key:0,class:"mr-2 rounded border px-1 py-0.5"},ye={key:1},xe={class:"mt-2 text-sm text-foreground/90"},_e=$({__name:"List",setup(be){const d=r(""),c=r("title_asc"),v=r(""),m=r(""),p=r(""),f=r(""),g=r(""),h=r(""),y=r(""),k=r(1),_=r([]),N=r(0),F=r(1),x=r(!1),M=r(null);let L=null;const j=D(()=>k.value<F.value&&!x.value);function R(a,e=50){if(!a)return"";const t=a.split(/\s+/);return t.length<=e?a:t.slice(0,e).join(" ")+"…"}async function U(a=!1){if(!x.value){x.value=!0,M.value=null;try{const e=new URLSearchParams;d.value&&e.set("q",d.value),c.value&&e.set("sort",c.value),v.value&&e.set("genre",v.value),m.value&&e.set("rating",m.value),p.value!==""&&e.set("year_min",String(p.value)),f.value!==""&&e.set("year_max",String(f.value)),g.value&&e.set("actor",g.value),h.value&&e.set("director",h.value),y.value&&e.set("studio",y.value),e.set("page",String(k.value));const t=await fetch(`/api/movies?${e.toString()}`,{headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"},credentials:"same-origin"});if(!t.ok)throw new Error(`Fetch failed: ${t.status}`);const w=await t.json();N.value=w.total,F.value=w.last_page,a?_.value=w.data:_.value=_.value.concat(w.data)}catch(e){M.value=e?.message??"Unexpected error"}finally{x.value=!1}}}function A(){clearTimeout(L),L=setTimeout(()=>{k.value=1,U(!0)},300)}function i(){const a=new URL(window.location.href);d.value?a.searchParams.set("q",d.value):a.searchParams.delete("q"),c.value?a.searchParams.set("sort",c.value):a.searchParams.delete("sort"),v.value?a.searchParams.set("genre",v.value):a.searchParams.delete("genre"),m.value?a.searchParams.set("rating",m.value):a.searchParams.delete("rating"),p.value!==""?a.searchParams.set("year_min",String(p.value)):a.searchParams.delete("year_min"),f.value!==""?a.searchParams.set("year_max",String(f.value)):a.searchParams.delete("year_max"),g.value?a.searchParams.set("actor",g.value):a.searchParams.delete("actor"),h.value?a.searchParams.set("director",h.value):a.searchParams.delete("director"),y.value?a.searchParams.set("studio",y.value):a.searchParams.delete("studio"),window.history.replaceState({},"",a.toString()),k.value=1,U(!0)}async function I(){j.value&&(k.value+=1,await U(!1))}const V=r(null);let b=null;return Y(()=>{const a=new URL(window.location.href);d.value=a.searchParams.get("q")??"",c.value=a.searchParams.get("sort")??"title_asc",v.value=a.searchParams.get("genre")??"",m.value=a.searchParams.get("rating")??"",p.value=a.searchParams.get("year_min")??"",f.value=a.searchParams.get("year_max")??"",g.value=a.searchParams.get("actor")??"",h.value=a.searchParams.get("director")??"",y.value=a.searchParams.get("studio")??"