Validation_Suite/validation-suite/frontend/atlas/.next/static/chunks/0t7m1oc6w_u-y.js

1 line
No EOL
27 KiB
JavaScript

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,54858,e=>{"use strict";let t="/api/v1";async function r(e,t){let r=await e.text();if(!r)return t;try{let e=JSON.parse(r);return e.detail??e.message??r}catch{return r}}async function s(e,t){let r=await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:e,password:t}),credentials:"include"});if(!r.ok){let e=Error(await r.text()||`HTTP ${r.status}`);throw e.status=r.status,e}return r.json()}async function i(e,r){let s=await fetch(`${t}${e}`,{cache:"no-store",credentials:"include"});if(!s.ok)throw Error(`API request failed: ${s.status}`);return s.json()}async function n(e,s,i,n){let a=await fetch(`${t}${e}`,{method:i,headers:{"Content-Type":"application/json"},body:JSON.stringify(n),credentials:"include"});if(!a.ok)throw Error(await r(a,`API request failed: ${a.status}`));return a.json()}async function a(e,s){let i=await fetch(`${t}${e}`,{method:"DELETE",credentials:"include"});if(!i.ok)throw Error(await r(i,`API request failed: ${i.status}`))}async function l(e,s,i){let n=await fetch(`${t}${e}`,{...i,headers:{"Content-Type":"application/json",...i?.headers??{}},credentials:"include"});if(!n.ok)throw Error(await r(n,`API request failed: ${n.status}`));return n.json()}e.s(["API_BASE",0,t,"apiDelete",0,a,"apiFetch",0,l,"apiGet",0,i,"apiSend",0,n,"login",0,s,"normalizeValidationPayload",0,function(e){return{...e,...Object.fromEntries(["contact_id","examiner_id"].map(t=>[t,e[t]||null]))}}])},66027,e=>{"use strict";let t;var r=e.i(75555),s=e.i(73911),i=e.i(40143),n=e.i(86491),a=e.i(15823),l=e.i(93803),o=e.i(19273),d=e.i(80166),u=class extends a.Subscribable{constructor(e,t){super(),this.options=t,this.#e=e,this.#t=null,this.#r=(0,l.pendingThenable)(),this.bindMethods(),this.setOptions(t)}#e;#s=void 0;#i=void 0;#n=void 0;#a;#l;#r;#t;#o;#d;#u;#c;#h;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#s.addObserver(this),c(this.#s,this.options)?this.#b():this.updateResult(),this.#f())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return h(this.#s,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return h(this.#s,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#g(),this.#x(),this.#s.removeObserver(this)}setOptions(e){let t=this.options,r=this.#s;if(this.options=this.#e.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof(0,o.resolveQueryBoolean)(this.options.enabled,this.#s))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#y(),this.#s.setOptions(this.options),t._defaulted&&!(0,o.shallowEqualObjects)(this.options,t)&&this.#e.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#s,observer:this});let s=this.hasListeners();s&&p(this.#s,r,this.options,t)&&this.#b(),this.updateResult(),s&&(this.#s!==r||(0,o.resolveQueryBoolean)(this.options.enabled,this.#s)!==(0,o.resolveQueryBoolean)(t.enabled,this.#s)||(0,o.resolveStaleTime)(this.options.staleTime,this.#s)!==(0,o.resolveStaleTime)(t.staleTime,this.#s))&&this.#v();let i=this.#j();s&&(this.#s!==r||(0,o.resolveQueryBoolean)(this.options.enabled,this.#s)!==(0,o.resolveQueryBoolean)(t.enabled,this.#s)||i!==this.#p)&&this.#R(i)}getOptimisticResult(e){var t,r;let s=this.#e.getQueryCache().build(this.#e,e),i=this.createResult(s,e);return t=this,r=i,(0,o.shallowEqualObjects)(t.getCurrentResult(),r)||(this.#n=i,this.#l=this.options,this.#a=this.#s.state),i}getCurrentResult(){return this.#n}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),t?.(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==this.#r.status||this.#r.reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#s}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),r=this.#e.getQueryCache().build(this.#e,t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){return this.#b({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#n))}#b(e){this.#y();let t=this.#s.fetch(this.options,e);return e?.throwOnError||(t=t.catch(o.noop)),t}#v(){this.#g();let e=(0,o.resolveStaleTime)(this.options.staleTime,this.#s);if(s.environmentManager.isServer()||this.#n.isStale||!(0,o.isValidTimeout)(e))return;let t=(0,o.timeUntilStale)(this.#n.dataUpdatedAt,e);this.#c=d.timeoutManager.setTimeout(()=>{this.#n.isStale||this.updateResult()},t+1)}#j(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#s):this.options.refetchInterval)??!1}#R(e){this.#x(),this.#p=e,!s.environmentManager.isServer()&&!1!==(0,o.resolveQueryBoolean)(this.options.enabled,this.#s)&&(0,o.isValidTimeout)(this.#p)&&0!==this.#p&&(this.#h=d.timeoutManager.setInterval(()=>{(this.options.refetchIntervalInBackground||r.focusManager.isFocused())&&this.#b()},this.#p))}#f(){this.#v(),this.#R(this.#j())}#g(){void 0!==this.#c&&(d.timeoutManager.clearTimeout(this.#c),this.#c=void 0)}#x(){void 0!==this.#h&&(d.timeoutManager.clearInterval(this.#h),this.#h=void 0)}createResult(e,t){let r,s=this.#s,i=this.options,a=this.#n,d=this.#a,u=this.#l,h=e!==s?e.state:this.#i,{state:b}=e,f={...b},g=!1;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&c(e,t),l=r&&p(e,s,t,i);(a||l)&&(f={...f,...(0,n.fetchState)(b.data,e.options)}),"isRestoring"===t._optimisticResults&&(f.fetchStatus="idle")}let{error:x,errorUpdatedAt:y,status:v}=f;r=f.data;let j=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===v){let e;a?.isPlaceholderData&&t.placeholderData===u?.placeholderData?(e=a.data,j=!0):e="function"==typeof t.placeholderData?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,void 0!==e&&(v="success",r=(0,o.replaceData)(a?.data,e,t),g=!0)}if(t.select&&void 0!==r&&!j)if(a&&r===d?.data&&t.select===this.#o)r=this.#d;else try{this.#o=t.select,r=t.select(r),r=(0,o.replaceData)(a?.data,r,t),this.#d=r,this.#t=null}catch(e){this.#t=e}this.#t&&(x=this.#t,r=this.#d,y=Date.now(),v="error");let R="fetching"===f.fetchStatus,w="pending"===v,N="error"===v,S=w&&R,Q=void 0!==r,O={status:v,fetchStatus:f.fetchStatus,isPending:w,isSuccess:"success"===v,isError:N,isInitialLoading:S,isLoading:S,data:r,dataUpdatedAt:f.dataUpdatedAt,error:x,errorUpdatedAt:y,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:f.dataUpdateCount>h.dataUpdateCount||f.errorUpdateCount>h.errorUpdateCount,isFetching:R,isRefetching:R&&!w,isLoadingError:N&&!Q,isPaused:"paused"===f.fetchStatus,isPlaceholderData:g,isRefetchError:N&&Q,isStale:m(e,t),refetch:this.refetch,promise:this.#r,isEnabled:!1!==(0,o.resolveQueryBoolean)(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=void 0!==O.data,r="error"===O.status&&!t,i=e=>{r?e.reject(O.error):t&&e.resolve(O.data)},n=()=>{i(this.#r=O.promise=(0,l.pendingThenable)())},a=this.#r;switch(a.status){case"pending":e.queryHash===s.queryHash&&i(a);break;case"fulfilled":(r||O.data!==a.value)&&n();break;case"rejected":r&&O.error===a.reason||n()}}return O}updateResult(){let e=this.#n,t=this.createResult(this.#s,this.options);if(this.#a=this.#s.state,this.#l=this.options,void 0!==this.#a.data&&(this.#u=this.#s),(0,o.shallowEqualObjects)(t,e))return;this.#n=t;let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!this.#m.size)return!0;let s=new Set(r??this.#m);return this.options.throwOnError&&s.add("error"),Object.keys(this.#n).some(t=>this.#n[t]!==e[t]&&s.has(t))};this.#w({listeners:r()})}#y(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#s)return;let t=this.#s;this.#s=e,this.#i=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#f()}#w(e){i.notifyManager.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#n)}),this.#e.getQueryCache().notify({query:this.#s,type:"observerResultsUpdated"})})}};function c(e,t){return!1!==(0,o.resolveQueryBoolean)(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==(0,o.resolveQueryBoolean)(t.retryOnMount,e))||void 0!==e.state.data&&h(e,t,t.refetchOnMount)}function h(e,t,r){if(!1!==(0,o.resolveQueryBoolean)(t.enabled,e)&&"static"!==(0,o.resolveStaleTime)(t.staleTime,e)){let s="function"==typeof r?r(e):r;return"always"===s||!1!==s&&m(e,t)}return!1}function p(e,t,r,s){return(e!==t||!1===(0,o.resolveQueryBoolean)(s.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&m(e,r)}function m(e,t){return!1!==(0,o.resolveQueryBoolean)(t.enabled,e)&&e.isStaleByTime((0,o.resolveStaleTime)(t.staleTime,e))}e.i(47167);var b=e.i(71645),f=e.i(12598);e.i(43476);var g=b.createContext((t=!1,{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t})),x=b.createContext(!1);x.Provider;var y=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});e.s(["useQuery",0,function(e,t){return function(e,t,r){let n,a=b.useContext(x),l=b.useContext(g),d=(0,f.useQueryClient)(r),u=d.defaultQueryOptions(e);d.getDefaultOptions().queries?._experimental_beforeQuery?.(u);let c=d.getQueryCache().get(u.queryHash),h=!1!==e.subscribed;if(u._optimisticResults=a?"isRestoring":h?"optimistic":void 0,u.suspense){let e=e=>"static"===e?e:Math.max(e??1e3,1e3),t=u.staleTime;u.staleTime="function"==typeof t?(...r)=>e(t(...r)):e(t),"number"==typeof u.gcTime&&(u.gcTime=Math.max(u.gcTime,1e3))}n=c?.state.error&&"function"==typeof u.throwOnError?(0,o.shouldThrowError)(u.throwOnError,[c.state.error,c]):u.throwOnError,(u.suspense||u.experimental_prefetchInRender||n)&&!l.isReset()&&(u.retryOnMount=!1),b.useEffect(()=>{l.clearReset()},[l]);let p=!d.getQueryCache().get(u.queryHash),[m]=b.useState(()=>new t(d,u)),v=m.getOptimisticResult(u),j=!a&&h;if(b.useSyncExternalStore(b.useCallback(e=>{let t=j?m.subscribe(i.notifyManager.batchCalls(e)):o.noop;return m.updateResult(),t},[m,j]),()=>m.getCurrentResult(),()=>m.getCurrentResult()),b.useEffect(()=>{m.setOptions(u)},[u,m]),u?.suspense&&v.isPending)throw y(u,m,l);if((({result:e,errorResetBoundary:t,throwOnError:r,query:s,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&s&&(i&&void 0===e.data||(0,o.shouldThrowError)(r,[e.error,s])))({result:v,errorResetBoundary:l,throwOnError:u.throwOnError,query:c,suspense:u.suspense}))throw v.error;if(d.getDefaultOptions().queries?._experimental_afterQuery?.(u,v),u.experimental_prefetchInRender&&!s.environmentManager.isServer()&&v.isLoading&&v.isFetching&&!a){let e=p?y(u,m,l):c?.promise;e?.catch(o.noop).finally(()=>{m.updateResult()})}return u.notifyOnChangeProps?v:m.trackResult(v)}(e,u,t)}],66027)},54616,e=>{"use strict";var t=e.i(71645),r=e.i(14272),s=e.i(40143),i=e.i(15823),n=e.i(19273),a=class extends i.Subscribable{#e;#n=void 0;#N;#S;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#Q()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),(0,n.shallowEqualObjects)(this.options,t)||this.#e.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#N,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,n.hashKey)(t.mutationKey)!==(0,n.hashKey)(this.options.mutationKey)?this.reset():this.#N?.state.status==="pending"&&this.#N.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#N?.removeObserver(this)}onMutationUpdate(e){this.#Q(),this.#w(e)}getCurrentResult(){return this.#n}reset(){this.#N?.removeObserver(this),this.#N=void 0,this.#Q(),this.#w()}mutate(e,t){return this.#S=t,this.#N?.removeObserver(this),this.#N=this.#e.getMutationCache().build(this.#e,this.options),this.#N.addObserver(this),this.#N.execute(e)}#Q(){let e=this.#N?.state??(0,r.getDefaultState)();this.#n={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#w(e){s.notifyManager.batch(()=>{if(this.#S&&this.hasListeners()){let t=this.#n.variables,r=this.#n.context,s={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type==="success"){try{this.#S.onSuccess?.(e.data,t,r,s)}catch(e){Promise.reject(e)}try{this.#S.onSettled?.(e.data,null,t,r,s)}catch(e){Promise.reject(e)}}else if(e?.type==="error"){try{this.#S.onError?.(e.error,t,r,s)}catch(e){Promise.reject(e)}try{this.#S.onSettled?.(void 0,e.error,t,r,s)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#n)})})}},l=e.i(12598);e.s(["useMutation",0,function(e,r){let i=(0,l.useQueryClient)(r),[o]=t.useState(()=>new a(i,e));t.useEffect(()=>{o.setOptions(e)},[o,e]);let d=t.useSyncExternalStore(t.useCallback(e=>o.subscribe(s.notifyManager.batchCalls(e)),[o]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),u=t.useCallback((e,t)=>{o.mutate(e,t).catch(n.noop)},[o]);if(d.error&&(0,n.shouldThrowError)(o.options.throwOnError,[d.error]))throw d.error;return{...d,mutate:u,mutateAsync:d.mutate}}],54616)},55436,e=>{"use strict";let t=(0,e.i(75254).default)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);e.s(["Search",0,t],55436)},55557,e=>{"use strict";var t=e.i(43476),r=e.i(54616),s=e.i(66027),i=e.i(75254);let n=(0,i.default)("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]),a=(0,i.default)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);var l=e.i(55436);let o=(0,i.default)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]),d=(0,i.default)("UserRoundCheck",[["path",{d:"M2 21a8 8 0 0 1 13.292-6",key:"bjp14o"}],["circle",{cx:"10",cy:"8",r:"5",key:"o932ke"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);var u=e.i(71645),c=e.i(28779),h=e.i(54858);let p={Erstvalidierung:"Erstvalidierung",Revalidierung:"Revalidierung",Leistungsbeurteilung:"Leistungsbeurteilung"};function m({label:e,value:r}){return(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-white p-4",children:[(0,t.jsx)("p",{className:"text-xs uppercase tracking-wide text-text-light",children:e}),(0,t.jsx)("p",{className:"mt-2 font-medium text-text",children:r})]})}function b({label:e,value:r,options:s,placeholder:i,emptyText:n,onChange:a,required:l=!1}){let o=0===s.length;return(0,t.jsxs)("label",{className:"block rounded-lg border border-border bg-white p-4 transition hover:border-primary/40 focus-within:border-primary focus-within:ring-2 focus-within:ring-primary/15",children:[(0,t.jsxs)("span",{className:"text-xs uppercase tracking-wide text-text-light",children:[e,l&&" *"]}),(0,t.jsxs)("select",{value:r,onChange:e=>a(e.target.value),disabled:o,className:"mt-2 h-11 w-full rounded-lg border border-border bg-background px-3 text-sm font-medium text-text outline-none transition hover:bg-white focus:border-primary disabled:cursor-not-allowed disabled:bg-border/30 disabled:text-text-light",children:[(0,t.jsx)("option",{value:"",children:o?n:i}),s.map(e=>(0,t.jsx)("option",{value:e.value,children:e.label},e.value))]}),o&&(0,t.jsx)("p",{className:"mt-2 text-sm text-text-light",children:n})]})}e.s(["default",0,function(){let{token:e,user:i}=(0,c.useAuth)(),[f,g]=(0,u.useState)(""),[x,y]=(0,u.useState)(""),[v,j]=(0,u.useState)(""),[R,w]=(0,u.useState)(""),[N,S]=(0,u.useState)(""),[Q,O]=(0,u.useState)("Erstvalidierung"),[k,E]=(0,u.useState)(""),T=(0,s.useQuery)({queryKey:["quickstart-customers",f,e],queryFn:()=>(0,h.apiGet)(`/customers?page=1&page_size=12${f.trim()?`&search=${encodeURIComponent(f.trim())}`:""}`,e??""),enabled:!!e}),C=(0,s.useQuery)({queryKey:["quickstart-customer-data",x,e],queryFn:()=>(0,h.apiGet)(`/customers/${x}/quickstart-data`,e??""),enabled:!!(e&&x)});(0,u.useEffect)(()=>{j(""),w(""),S(""),E("")},[x]),(0,u.useEffect)(()=>{let e=C.data;e&&(j(t=>1===e.locations.length?e.locations[0].id:t&&e.locations.some(e=>e.id===t)?t:""),w(t=>1===e.contacts.length?e.contacts[0].id:t&&e.contacts.some(e=>e.id===t)?t:""),S(t=>1===e.devices.length?e.devices[0].id:t&&e.devices.some(e=>e.id===t)?t:"Revalidierung"===Q||"Leistungsbeurteilung"===Q?e.validations.find(t=>e.devices.some(e=>e.id===t.device_id))?.device_id??"":""))},[C.data,Q]),(0,u.useEffect)(()=>{let e=C.data;if(!e||!N||v)return;let t=e.devices.find(e=>e.id===N);t?.location_id&&e.locations.some(e=>e.id===t.location_id)&&j(t.location_id)},[C.data,N,v]);let I=T.data?.items.find(e=>e.id===x)??C.data?.customer??null,M=C.data?.devices.find(e=>e.id===N)??null,_=i?`${i.first_name} ${i.last_name}`:"nicht angemeldet",P=C.data?.locations??[],K=C.data?.contacts??[],q=C.data?.devices??[],B=!!(v&&P.some(e=>e.id===v)),L=!R||K.some(e=>e.id===R),D=!!(N&&q.some(e=>e.id===N)),F=(0,u.useMemo)(()=>N?C.data?.validations.find(e=>e.device_id===N)??null:null,[C.data?.validations,N]),$=(0,r.useMutation)({mutationFn:async()=>(0,h.apiFetch)("/validations/quick-start",e??"",{method:"POST",body:JSON.stringify({customer_id:x,location_id:v||null,contact_id:R||null,device_id:N||null,validation_type:Q})}),onSuccess:e=>{window.location.replace(`/validations/${e.id}/edit`)},onError:e=>E(e.message)}),A=T.data?.items??[],U=!!x&&!!Q&&!!i&&D&&B&&L&&!$.isPending,V=x?D?0===P.length?"Für den Kunden ist kein Standort vorhanden":B?L?i?void 0:"Bitte anmelden":"Bitte gültigen Ansprechpartner auswählen":"Bitte Standort auswählen":"Bitte Gerät auswählen":"Bitte Kunde auswählen";return(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsxs)("header",{className:"rounded-lg border border-border bg-surface p-6 shadow-soft",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 text-primary",children:[(0,t.jsx)(o,{className:"h-5 w-5"}),(0,t.jsx)("p",{className:"text-sm font-medium uppercase tracking-wide",children:"Quickstart"})]}),(0,t.jsx)("h1",{className:"mt-3 text-3xl font-semibold text-text",children:"Neue Validierung starten"}),(0,t.jsx)("p",{className:"mt-2 max-w-3xl text-text-light",children:"Wir fassen die wichtigsten Entscheidungen zusammen und öffnen danach direkt die bestehende Validierungsbearbeitung."}),(0,t.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2 text-sm text-text-light",children:[(0,t.jsx)("span",{className:"rounded-full border border-border bg-background px-3 py-1",children:"1 Kunde"}),(0,t.jsx)("span",{className:"rounded-full border border-border bg-background px-3 py-1",children:"2 Gerät"}),(0,t.jsx)("span",{className:"rounded-full border border-border bg-background px-3 py-1",children:"3 Validierungsart"}),(0,t.jsx)("span",{className:"rounded-full border border-border bg-background px-3 py-1",children:"4 Erstellen"})]})]}),(0,t.jsxs)("section",{className:"grid gap-4 xl:grid-cols-[1.1fr_1fr]",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-surface p-5 shadow-soft",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsx)("h2",{className:"text-xl font-semibold",children:"1. Kunde"}),I&&(0,t.jsx)("span",{className:"rounded-full border border-primary/20 bg-primary/10 px-3 py-1 text-xs font-medium text-primary",children:"Ausgewählt"})]}),T.isError&&(0,t.jsx)("p",{className:"mt-3 rounded-lg border border-danger/30 bg-danger/5 px-4 py-3 text-sm text-danger",children:"Kunden konnten nicht geladen werden."}),(0,t.jsxs)("label",{className:"mt-4 flex h-12 items-center gap-2 rounded-lg border border-border px-3",children:[(0,t.jsx)(l.Search,{className:"h-4 w-4 text-primary"}),(0,t.jsx)("input",{value:f,onChange:e=>g(e.target.value),className:"flex-1 outline-none",placeholder:"Kundenname, Ort, PLZ, Ansprechpartner"})]}),(0,t.jsxs)("div",{className:"mt-4 grid gap-3",children:[A.map(e=>{let r=e.id===x;return(0,t.jsxs)("button",{type:"button",onClick:()=>y(e.id),className:`rounded-lg border p-4 text-left transition ${r?"border-primary bg-primary/5 shadow":"border-border bg-background hover:border-primary/40 hover:bg-white"}`,children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-base font-semibold",children:e.name}),(0,t.jsx)("p",{className:"mt-1 text-sm text-text-light",children:e.city||"Ort nicht erfasst"})]}),r&&(0,t.jsx)(d,{className:"h-5 w-5 text-primary"})]}),(0,t.jsx)("p",{className:"mt-2 text-sm text-text-light",children:"practice"===e.customer_type?"Praxis":"Klinik"})]},e.id)}),T.isLoading&&(0,t.jsx)("p",{className:"rounded-lg border border-dashed border-border p-4 text-sm text-text-light",children:"Kunden werden geladen..."}),!T.isLoading&&!T.isError&&0===A.length&&(0,t.jsx)("p",{className:"rounded-lg border border-dashed border-border p-4 text-sm text-text-light",children:"Keine Kunden gefunden."})]})]}),(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-surface p-5 shadow-soft",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,t.jsx)("h2",{className:"text-xl font-semibold",children:"2. Gerät"}),M&&(0,t.jsx)("span",{className:"rounded-full border border-primary/20 bg-primary/10 px-3 py-1 text-xs font-medium text-primary",children:"Ausgewählt"})]}),C.isError&&(0,t.jsx)("p",{className:"mt-3 rounded-lg border border-danger/30 bg-danger/5 px-4 py-3 text-sm text-danger",children:"Kundendaten konnten nicht geladen werden."}),(0,t.jsxs)("div",{className:"mt-4 grid gap-3",children:[(C.data?.devices??[]).map(e=>{let r=e.id===N,s=C.data?.validations.find(t=>t.device_id===e.id)??null;return(0,t.jsxs)("button",{type:"button",onClick:()=>S(e.id),className:`rounded-lg border p-4 text-left transition ${r?"border-primary bg-primary/5 shadow":"border-border bg-background hover:border-primary/40 hover:bg-white"}`,children:[(0,t.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("p",{className:"text-base font-semibold",children:[e.manufacturer," ",e.model]}),(0,t.jsxs)("p",{className:"mt-1 text-sm text-text-light",children:["Seriennummer ",e.serial_number]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-text-light",children:e.location_id?"Standort hinterlegt":"Standort nicht erfasst"})]}),r&&(0,t.jsx)(d,{className:"h-5 w-5 text-primary"})]}),(0,t.jsxs)("div",{className:"mt-3 grid gap-2 text-sm text-text-light sm:grid-cols-2",children:[(0,t.jsx)("span",{children:s?`Letzte Validierung: ${s.report_number}`:"Keine letzte Validierung erfasst"}),(0,t.jsx)("span",{children:s?.next_validation_on?`Naechste Revalidierung: ${s.next_validation_on}`:"Naechste Revalidierung nicht erfasst"})]})]},e.id)}),C.isLoading&&x&&(0,t.jsx)("p",{className:"rounded-lg border border-dashed border-border p-4 text-sm text-text-light",children:"Geräte werden geladen..."}),x&&!C.isLoading&&!C.isError&&(C.data?.devices.length??0)===0&&(0,t.jsx)("p",{className:"rounded-lg border border-dashed border-border p-4 text-sm text-text-light",children:"Keine Geräte gefunden."})]})]})]}),(0,t.jsxs)("section",{className:"grid gap-4 lg:grid-cols-3",children:[(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-surface p-5 shadow-soft",children:[(0,t.jsx)("h2",{className:"text-xl font-semibold",children:"3. Validierungsart"}),(0,t.jsx)("div",{className:"mt-4 grid gap-3",children:Object.entries(p).map(([e,r])=>{let s=Q===e;return(0,t.jsxs)("button",{type:"button",onClick:()=>O(e),className:`rounded-lg border px-4 py-3 text-left transition ${s?"border-primary bg-primary/5":"border-border bg-background hover:border-primary/40 hover:bg-white"}`,children:[(0,t.jsx)("p",{className:"font-medium",children:r}),(0,t.jsx)("p",{className:"mt-1 text-sm text-text-light",children:"Erstvalidierung"===e?"Neue Vorlage mit Standardchecklisten.":"Revalidierung"===e?"Letzte abgeschlossene oder freigegebene Validierung als Basis.":"Letzte Validierung als leistungsbezogene Grundlage."})]},e)})})]}),(0,t.jsxs)("div",{className:"rounded-lg border border-border bg-surface p-5 shadow-soft lg:col-span-2",children:[(0,t.jsx)("h2",{className:"text-xl font-semibold",children:"4. Übernahme vorhandener Daten"}),(0,t.jsxs)("div",{className:"mt-4 grid gap-4 md:grid-cols-2",children:[(0,t.jsx)(b,{label:"Standort",value:v,placeholder:"Bitte auswählen",emptyText:x?"Kein Standort für diesen Kunden vorhanden.":"Bitte zuerst einen Kunden auswählen.",options:P.map(e=>({value:e.id,label:[e.name,e.room,e.city].filter(Boolean).join(" · ")})),onChange:e=>{j(e),w(1===K.length?K[0].id:"")},required:!0}),(0,t.jsx)(b,{label:"Ansprechpartner",value:R,placeholder:"Optional auswählen",emptyText:x?"Kein Ansprechpartner für diesen Kunden vorhanden.":"Bitte zuerst einen Kunden auswählen.",options:K.map(e=>({value:e.id,label:[e.full_name,e.function].filter(Boolean).join(" · ")})),onChange:w}),(0,t.jsx)(m,{label:"Prüfer",value:_}),(0,t.jsx)(m,{label:"Vorherige Validierung",value:F?F.report_number:"Keine vorhanden"})]}),(C.data?.validations.length??0)>0&&(0,t.jsxs)("div",{className:"mt-5 rounded-lg border border-border bg-background p-4",children:[(0,t.jsx)("h3",{className:"text-sm font-semibold uppercase tracking-wide text-text-light",children:"Letzte Validierungen"}),(0,t.jsx)("div",{className:"mt-3 grid gap-3",children:C.data?.validations.slice(0,3).map(e=>(0,t.jsxs)("div",{className:"flex flex-col gap-1 rounded-lg border border-border bg-white px-4 py-3 text-sm sm:flex-row sm:items-center sm:justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"font-medium text-text",children:e.report_number}),(0,t.jsxs)("p",{className:"text-text-light",children:[e.validation_type??"Validierung"," · ",e.performed_on??"nicht erfasst"]})]}),(0,t.jsx)("p",{className:"text-text-light",children:e.next_validation_on?`Naechste Revalidierung: ${e.next_validation_on}`:"Naechste Revalidierung nicht erfasst"})]},e.id))})]}),I&&(0,t.jsx)("div",{className:"mt-4 rounded-lg border border-border bg-background p-4 text-sm text-text-light",children:C.isLoading?"Vorhandene Daten werden geladen...":"Vorhandene Daten stehen bereit."})]})]}),(0,t.jsx)("footer",{className:"sticky bottom-4 z-20 rounded-lg border border-border bg-surface/95 p-4 shadow-soft backdrop-blur",children:(0,t.jsxs)("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[(0,t.jsx)("div",{className:"text-sm text-text-light",children:k?(0,t.jsx)("p",{className:"text-danger",children:k}):(0,t.jsx)("p",{children:"Nach dem Erstellen öffnet sich direkt die Bearbeitungsseite."})}),(0,t.jsxs)("button",{type:"button",disabled:!U,title:U?void 0:V,onClick:()=>$.mutate(),className:"btn btn-primary h-12 min-w-64",children:[$.isPending?(0,t.jsx)(a,{className:"h-4 w-4 animate-spin"}):(0,t.jsx)(n,{className:"h-4 w-4"}),"Validierung erstellen und bearbeiten"]})]})})]})}],55557)}]);