@digital-blueprint/sublibrary-app
Version:
[GitHub Repository](https://github.com/digital-blueprint/sublibrary-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/sublibrary-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/sublibrary-app/) | [Sublibrary Bundle](ht
113 lines (110 loc) • 11.2 kB
JavaScript
let e=e=>e,t,n;function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?r(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function a(e,t,n){return(t=o(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t=s(e,`string`);return typeof t==`symbol`?t:t+``}function s(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@ must return a primitive value.`)}return(t===`string`?String:Number)(e)}
/*!
* License: LGPL-2.1-or-later
* Dependencies:
*
* @webcomponents/scoped-custom-element-registry: BSD-3-Clause
* @dbp-toolkit/app-shell: LGPL-2.1-or-later
* @dbp-toolkit/language-select: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* lit-html: BSD-3-Clause
* @dbp-toolkit/notification: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* universal-router: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
*/
import{a as c,d as l,i as u,s as d,t as f}from"./shared/library-select.DEl5HMBb.js";import{B as p,D as m,E as h,M as g,S as _,T as v,V as y,_ as b,b as x,d as S}from"./shared/styles.Cw9eAWXA.js";import{t as C}from"./shared/src.BHFEA-pi.js";import{i as w,t as T}from"./shared/utils.Bvuc5ewV.js";var E=l(u(),1);g(`dbp-sublibrary-loan-list`,class extends h(c){constructor(){super(),this.auth={},this._i18n=d(),this.lang=this._i18n.language,this.entryPointUrl=``,this.personId=``,this.person=null,this.loans=[],this.sublibraryIri=``,this.abortController=null,this.overdueOnly=!1,this.openOnly=!1;let e=new Date;e.setDate(e.getDate()-1),this.analyticsUpdateDate=e.toLocaleDateString(this.lang)}static get scopedElements(){return{"dbp-library-select":f,"dbp-mini-spinner":m,"dbp-button":b,"dbp-data-table-view":C}}static get properties(){return i(i({},super.properties),{},{lang:{type:String},entryPointUrl:{type:String,attribute:`entry-point-url`},sublibraryIri:{type:String,attribute:`sublibrary-iri`,reflect:!0},loans:{type:Object,attribute:!1},overdueOnly:{type:Boolean,attribute:!1},openOnly:{type:Boolean,attribute:!1},analyticsUpdateDate:{type:Object,attribute:!1},auth:{type:Object}})}$(e){return(0,E.default)(this._(e))}loginCallback(){super.loginCallback(),this.loadTable()}connectedCallback(){super.connectedCallback(),this.updateComplete.then(()=>{this._(`dbp-data-table-view`).setCSSStyle(`
table.dataTable tbody tr.odd {
background-color: var(--dbp-background);
}
`),this.loadTable()})}update(e){e.forEach((e,t)=>{switch(t){case`lang`:this._i18n.changeLanguage(this.lang),this.buildTable();break;case`sublibraryIri`:this.loadTable();break;case`overdueOnly`:case`openOnly`:this.buildTable();break}}),super.update(e)}disconnectedCallback(){this.abortController!==null&&this.abortController.abort(),super.disconnectedCallback()}loadTable(){let e=this,t=e.$(`#loan-list-block`),n=e.$(`#no-loans-block`);if(t.hide(),n.hide(),!this.isLoggedIn()||this.sublibraryIri===``)return;let r=this.sublibraryIri.split(`/`),i=r[r.length-1],a=this.entryPointUrl+`/sublibrary/book-loans?perPage=9999999&sublibrary=`+i,o=this.$(`#loans-loading`);o.show(),this.abortController!==null&&this.abortController.abort(),this.abortController=new AbortController;let s=this.abortController.signal;console.assert(this.auth.token),fetch(a,{headers:{"Content-Type":`application/ld+json`,Authorization:`Bearer `+this.auth.token},signal:s}).then(e=>{if(!e.ok)throw e;if(e.headers.has(`x-analytics-update-date`)){let t=new Date(e.headers.get(`x-analytics-update-date`));this.analyticsUpdateDate=t.toLocaleDateString(this.lang)+` `+t.toLocaleTimeString(this.lang)}return e.json()}).then(t=>{e.loans=t[`hydra:member`],e.buildTable(),o.hide()}).catch(t=>{e.handleFetchError(t,e._i18n.t(`loan-list.error-load-loans`)),o.hide()})}buildTable(){let e=this.$(`#loan-list-block`),t=this.$(`#no-loans-block`),n=this,r=this._i18n;if(this.loans.length>0){let t=this._(`#loan-loans-1`);if(t!==null){let e=[{title:r.t(`book-list.book-title`)},{title:r.t(`loan-list.book-author`)},{title:r.t(`book-list.book-barcode`)},{title:r.t(`loan-list.borrower-name`)},{title:r.t(`loan-list.start-date`)},null,{title:r.t(`loan-list.due-date`)},null,{title:r.t(`loan-list.return-date`)},null,{title:r.t(`book-list.book-location-identifier`)},{title:r.t(`book-list.book-description`)},``],i=[{targets:[4],orderData:[5]},{targets:[5],visible:!1},{targets:[6],orderData:[7]},{targets:[7],visible:!1},{targets:[8],orderData:[9]},{targets:[9],visible:!1},{targets:[11],responsivePriority:10001},{targets:[12],sortable:!1,createdCell:(e,t,r,i,a)=>{let o=n.createScopedElement(`div`);for(o.innerHTML=t;e.lastChild;)e.removeChild(e.lastChild);e.append(...o.children)}}],a=new Date,o=[];this.loans.forEach(function(e){let t=new Date(e.startTime),i=new Date(e.endTime),s=new Date(e.returnTime);if(n.openOnly&&e.returnTime!==null||n.overdueOnly&&(a<i||e.returnTime!==null))return;let c=`dbp-button`,l=[T(e.object.book.title),T(e.object.book.author),e.object.barcode,w(e.borrower),t.toLocaleDateString(`de-AT`),e.startTime,i.toLocaleDateString(`de-AT`),e.endTime,e.returnTime===null?``:s.toLocaleDateString(`de-AT`),e.returnTime,e.object.locationIdentifier,e.object.description,`<div class="button-col">
<${c} data-id="${e[`@id`]}" data-type="contact" data-book-name="${T(e.object.name)}"
value="${r.t(`renew-loan.contact-value`)}" name="send" type="is-small"
title="${r.t(`renew-loan.contact-title`,{personName:w(e.borrower)})}" no-spinner-on-click></${c}>
</div>`];o.push(l)}),t.set_columns(e).set_columnDefs(i).set_datatable(o)}e.show()}else t.show()}static get styles(){return y(t||=e`
${0}
${0}
${0}
.hidden {
display: none;
}
#loan-list-block,
#no-loans-block {
display: none;
}
form,
table {
width: 100%;
}
#no-loans-block {
font-weight: bold;
}
`,v(),x(),_())}toggleOverdueOnly(){this.overdueOnly=!this.overdueOnly}toggleOpenOnly(){this.openOnly=!this.openOnly}onSublibraryChanged(e){this.sublibraryIri=e.detail.value}async onDataTableClick(e){let t=e.composedPath(),n,r=-1,i=this._i18n;if(t.some((e,t)=>{if(e.nodeName?.toUpperCase()===`DBP-BUTTON`)return n=e,r=t,!0}),r===-1||(e.preventDefault(),n.hasAttribute(`disabled`)))return;let a=n.getAttribute(`data-type`),o=n.getAttribute(`data-id`);switch(a){case`contact`:n.start();try{let e=this.entryPointUrl+o,t=await fetch(e,{headers:{"Content-Type":`application/ld+json`,Authorization:`Bearer `+this.auth.token}});if(!t.ok)throw t;let r=await t.json(),a=n.getAttribute(`data-book-name`),s=i.t(`renew-loan.contact-subject`,{bookName:a}),c=r.borrower.email;location.href=`mailto:${c}?subject=${s}`}catch(e){this.handleFetchError(e,i.t(`loan-list.error-load-loan`))}finally{n.stop()}break}}_onLoginClicked(e){this.sendSetPropertyEvent(`requested-login-status`,`logged-in`),e.preventDefault()}render(){let t=this._i18n;return p(n||=e`
<form
class="${0}">
<div class="field">
${0}: ${0}
</div>
<div class="field">
<label class="label">${0}</label>
<div class="control">
<dbp-library-select
subscribe="lang:lang,entry-point-url:entry-point-url,auth:auth"
value="${0}"
="${0}"></dbp-library-select>
</div>
</div>
<dbp-mini-spinner
id="loans-loading"
text="${0}"
style="font-size: 2em; display: none;"></dbp-mini-spinner>
<div id="loan-list-block">
<div class="field">
<label class="label">
<input
type="checkbox"
.checked=${0}
=${0}
.disabled=${0} />
${0}
</label>
</div>
<div class="field">
<label class="label">
<input
type="checkbox"
.checked=${0}
=${0} />
${0}
</label>
</div>
<div class="field">
<label class="label">${0}</label>
<div class="control">
<dbp-data-table-view
searching
paging
exportable
export-name="${0}"
subscribe="lang:lang"
id="loan-loans-1"
="${0}"></dbp-data-table-view>
</div>
</div>
</div>
<div id="no-loans-block">${0}</div>
</form>
<div
class="notification is-warning ${0}">
${0}
<a href="#" ="${0}">${0}</a>
</div>
<div
class="notification is-danger ${0}">
${0}
</div>
<div class="${0}">
<dbp-mini-spinner></dbp-mini-spinner>
</div>
`,S({hidden:!this.isLoggedIn()||!this.hasLibraryPermissions()||this.isLoading()}),t.t(`loan-list.current-state`),this.analyticsUpdateDate,t.t(`organization-select.label`),this.sublibraryIri,this.onSublibraryChanged,t.t(`loan-list.mini-spinner-text`),this.openOnly,this.toggleOpenOnly,this.overdueOnly,t.t(`loan-list.open-only`),this.overdueOnly,this.toggleOverdueOnly,t.t(`loan-list.overdue-only`),t.t(`loan-list.loans`),t.t(`loan-list.export-name`,{organizationCode:this.getOrganizationCode()}),e=>this.onDataTableClick(e),t.t(`loan-list.no-loans`),S({hidden:this.isLoggedIn()||this.isLoading()}),t.t(`error-login-message`),this._onLoginClicked,t.t(`error-login-link`),S({hidden:this.hasLibraryPermissions()||!this.isLoggedIn()||this.isLoading()}),t.t(`error-permission-message`),S({hidden:!this.isLoading()}))}});
//# sourceMappingURL=dbp-sublibrary-loan-list.js.map