UNPKG

@rero/rero-ils-ui

Version:

User interface for RERO integrated library system (RERO ILS).

3 lines (2 loc) 8.09 kB
import{a as se,b as ae}from"./chunk-3Q7BCCHE.js";import{b as oe}from"./chunk-ZYJ4HANF.js";import{R as ne}from"./chunk-4GRLSOJZ.js";import{B as ie,Ja as re,Wa as q,m as W,n as X,x as te}from"./chunk-MTJX6JRK.js";import{a as U,c as T}from"./chunk-GQ5FIRIY.js";import{f as Y,i as Z,m as J,t as K,x as Q,y as ee}from"./chunk-L5BLWZD6.js";import{i as O}from"./chunk-4MYHQLZQ.js";import{ta as z}from"./chunk-FRI676LD.js";import{Aa as u,Bb as V,D as B,Fb as $,Hc as p,Ic as M,J as L,Jc as v,Kc as H,Ob as A,Pb as G,U as w,Vb as m,X as D,Xb as f,Xc as j,Z as N,a as F,ac as h,bc as a,cc as d,dc as g,dd as S,ed as b,gb as n,ia as o,kc as k,oa as P,pa as I,pd as x,r as y,rc as R,sc as _,v as c,yb as E}from"./chunk-3WD6XLXL.js";var De=(()=>{class e{constructor(){this.recordService=o(q)}transform(i){return i===void 0?y([]):this.recordService.getRecords("collections",{query:`items.pid:${i} AND published:true`,page:1,itemsPerPage:q.MAX_REST_RESULTS_SIZE,sort:"title"}).pipe(c(r=>+this.recordService.totalHits(r.hits.total)==0?[]:r.hits.hits))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275pipe=V({name:"itemInCollection",type:e,pure:!0})}}return e})();var de=()=>[import("./chunk-UQLF6G2C.js").then(e=>e.Button),import("./chunk-U3KBFH3U.js").then(e=>e.RouterLink),import("./chunk-PF27WHAY.js").then(e=>e.Card),J,Y,K,te,import("./chunk-DAJKOGKS.js").then(e=>e.Message),T],le=e=>["/records","items","detail",e];function ue(e,s){if(e&1){let i=k();a(0,"div",6)(1,"p-message",7),p(2),d(),a(3,"p-button",8),S(4,"translate"),R("click",function(){P(i);let t=_(3);return I(t.closeModal())}),d()()}if(e&2){let i=_(3);n(2),M(i.queueMessage()),n(),h("routerLink",j(5,le,i.recordPid))("label",b(4,3,"Edit queue"))}}function me(e,s){e&1&&m(0,ue,5,7,"div",6),e&2&&f(s.length>0?0:-1)}function fe(e,s){e&1&&(a(0,"p-message",10),p(1),d()),e&2&&(n(),M(s))}function he(e,s){if(e&1&&(a(0,"p-card",1)(1,"p",9),p(2),g(3,"br"),p(4),g(5,"br"),p(6),d(),m(7,fe,2,1,"p-message",10),d()),e&2){let i,r=s,t=_(2);h("header",t.patronHeader()),n(2),v(" ",r.street),n(2),H(" ",r.postal_code," ",r.city),n(2),v(" ",r.email," "),n(),f((i=t.patronBlockedMsg())?7:-1,i)}}function ge(e,s){e&1&&(p(0),S(1,"translate")),e&2&&v(" ",b(1,1,"New request")," ")}function _e(e,s){e&1&&(g(0,"i",11),p(1),S(2,"translate")),e&2&&(n(),v("\xA0 ",b(2,1,"Request in progress")," "))}function ve(e,s){if(e&1){let i=k();a(0,"div",0),m(1,me,1,1),m(2,he,8,6,"p-card",1),a(3,"form",2),R("ngSubmit",function(){P(i);let t=_();return I(t.submit(t.model()))}),a(4,"div",0),g(5,"formly-form",3),a(6,"div",4)(7,"p-button",5),m(8,ge,2,3)(9,_e,3,3),d()()()()()}if(e&2){let i,r,t=_();n(),f((i=t.requestedBy())?1:-1,i),n(),f((r=t.patron())?2:-1,r),n(),h("formGroup",t.form),n(2),h("form",t.form)("fields",t.formFields())("model",t.model()),n(2),h("disabled",!t.form.valid||t.requestInProgress()),n(),f(t.requestInProgress()?9:8)}}function ye(e,s){e&1&&(g(0,"i",12),p(1),S(2,"translate")),e&2&&(n(),v("\xA0",b(2,1,"Loading in progress\u2026"),` `))}var Ue=(()=>{class e{constructor(){this.appStore=o(ne),this.recordService=o(q),this.httpClient=o(O),this.loanService=o(ae),this.translateService=o(U),this.itemService=o(se),this.holdingService=o(oe),this.messageService=o(z),this.dynamicDialogConfig=o(W),this.dynamicDialogRef=o(X),this.form=new Z({}),this.formFields=u(void 0),this.model=u(void 0),this.patron=u(null),this.patronHeader=x(()=>[this.patron()?.last_name,this.patron()?.first_name].filter(Boolean).join(", ")),this.queueMessage=x(()=>{let i=this.requestedBy()?.length??0,r=i<2?"request in the queue":"requests in the queue";return`${i} ${this.translateService.instant(r)}`}),this.patronBlockedMsg=x(()=>{let i=this.patron();return i?.patron?.blocked?`${this.translateService.instant("This patron is currently blocked")} ${this.translateService.instant("Reason")}: ${i.patron.blocked_note}`:null}),this.requestedBy=u(null),this.requestInProgress=u(!1)}ngOnInit(){let{data:i}=this.dynamicDialogConfig;this.recordPid=i.recordPid,this.recordType=i.recordType,this.service=this.recordType==="item"?this.itemService:this.holdingService,this.recordType==="item"&&this.loanService.requestedBy$(this.recordPid).subscribe(r=>this.requestedBy.set(r)),this.initForm()}submit(i){let r=this.appStore.user(),t=this.appStore.currentLibraryPid();if(t&&r?.patronLibrarian?.pid){this.requestInProgress.set(!0);let l=F({pickup_location_pid:i.pickup,patron_pid:this.patron().pid,transaction_library_pid:t,transaction_user_pid:r.patronLibrarian.pid},this.recordType==="item"?{item_pid:this.recordPid}:{holding_pid:this.recordPid,description:i.description});this.httpClient.post(`/api/${this.recordType}/request`,l).pipe(N(()=>this.requestInProgress.set(!1))).subscribe({next:()=>{this.closeModal(!0),this.messageService.add({severity:"success",summary:this.translateService.instant("Item request"),detail:this.translateService.instant("Request registered."),life:re.MESSAGE_LIFE})},error:()=>this.messageService.add({severity:"error",summary:this.translateService.instant("Item request"),detail:this.translateService.instant("An error has occurred. Please try again."),sticky:!0,closable:!0})})}}closeModal(i){this.dynamicDialogRef.close(i)}initForm(){this.appStore.user()&&this.getPickupLocations().subscribe(i=>{this.formFields.set([{key:"patronBarcode",type:"input",focus:!0,props:{label:this.translateService.instant("Patron barcode"),required:!0,keydown:(r,t)=>{t.key==="Enter"&&t.preventDefault()}},asyncValidators:{patronCheck:{expression:r=>this.getPatron(r.value).pipe(D(t=>{let l=t.length===1;return this.patron.set(l?t[0].metadata:null),r.markAsTouched(),l?this.service.canRequest(this.recordPid,this.appStore.currentLibraryPid(),r.value).pipe(L(C=>y({can:!1,reasons:{error:C.message}})),c(C=>{if(!C.can){this.patron.set(null);let pe=C.reasons||{error:"Not defined error"};return this.canRequestMessage=Object.values(pe)[0],{valid:!1}}return this.canRequestMessage=void 0,{valid:!0}})):(this.canRequestMessage=void 0,y({valid:!1}))}),c(t=>t.valid)),message:()=>this.canRequestMessage?this.translateService.instant(this.canRequestMessage):this.translateService.instant("Patron not found.")}}},{key:"pickup",type:"select",props:{appendTo:"body",label:this.translateService.instant("Pickup location"),required:!0,placeholder:this.translateService.instant("Select\u2026"),options:i,filter:!0}}]),this.recordType==="holding"&&this.formFields.update(r=>[...r??[],{key:"description",type:"input",props:{label:this.translateService.instant("Collection or item year, volume, number, pages"),placeholder:this.translateService.instant("Year / Volume / Number / Pages"),maxLength:100,required:!0}}]),this.model.set({patronBarcode:null,pickup:this.pickupDefaultValue,description:void 0})})}getPickupLocations(){let i=this.appStore.currentLibraryPid();return this.service.getPickupLocations(this.recordPid).pipe(c(r=>r.map(t=>{let l=t.library.$ref.split("/").pop();return this.pickupDefaultValue===void 0&&l===i&&(this.pickupDefaultValue=t.pid),{label:t.pickup_name||t.name,value:t.pid}})))}getPatron(i){let r=`barcode:${i}`;return B(500).pipe(D(()=>this.recordService.getRecords("patrons",{query:r,page:1,itemsPerPage:1})),c(t=>this.recordService.totalHits(t.hits.total)===0?[]:t.hits.hits),w(1))}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275cmp=E({type:e,selectors:[["admin-item-request"]],decls:4,vars:1,consts:[[1,"ui:flex","ui:gap-2","ui:flex-col"],[1,"ui:bg-surface-100","ui:p-3",3,"header"],[3,"ngSubmit","formGroup"],[3,"form","fields","model"],[1,"ui:flex","ui:justify-end"],["id","new-request-button","type","submit","size","small",3,"disabled"],[1,"ui:flex","ui:gap-2","ui:my-1","ui:items-start"],["showTransitionOptions","0ms",1,"ui:grow"],["outlined","",3,"click","routerLink","label"],[1,"ui:m-0"],["severity","error","showTransitionOptions","0ms"],[1,"fa","fa-spinner","fa-spin"],[1,"fa","fa-spin","fa-spinner"]],template:function(r,t){r&1&&($(0,ve,10,8)(1,ye,3,3),A(2,0,de,null,1)),r&2&&(n(2),G(t.formFields()))},dependencies:[Q,ee,ie,T],encapsulation:2,changeDetection:0})}}return e})();export{Ue as a,De as b};