81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import Utils from "./utils.js";
 | |
| /**
 | |
|  * @class Finding
 | |
|  */
 | |
| export class Finding {
 | |
|     biblioElements = [];
 | |
|     images = null;
 | |
|     
 | |
|     set data(data) {
 | |
|         this._data = data;
 | |
|     }
 | |
| 
 | |
|     async render() {
 | |
|         return `
 | |
|         <div class="container px-4 pt-4">
 | |
|             <p class="p-2">
 | |
|                 <strong>Oggetto:</strong> ${this._data.object}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Materia:</strong> ${this._data.material}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Misure:</strong> ${this._data.measurements}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Luogo e anno rinvenimento:</strong> ${Utils.parseMarkers(this._data.place)}. ${this._data.year}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Datazione:</strong> ${this._data.dating}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Stato di conservazione:</strong> ${this._data.conservationState}
 | |
|             </p>
 | |
|             <p class="p-2">
 | |
|                 <strong>Luogo di conservazione:</strong> ${this._data.conservationPlace}
 | |
|             </p>
 | |
|             <p class="mt-4 pl-2 pr-5">
 | |
|                 <strong class="pb-3">Descrizione</strong></br>
 | |
|                 ${Utils.parseMarkers(this._data.description)}
 | |
|             </p>
 | |
|             <p class="mt-4 pl-2 pr-5">
 | |
|                 <span class="icon has-text-link">
 | |
|                     <i class="fa fa-book"></i>
 | |
|                 </span>
 | |
|                 <strong>Bibliografia:</strong> ${await this.biblio(this._data.id)}
 | |
|             </p>
 | |
|             <div class="notification is-light mx-3 mt-4 mb-0 p-2 is-hidden" data-biblio-target="biblio"></div>
 | |
|             <p class="p-2 mb-4">
 | |
|                 <strong>Autore scheda:</strong> ${this._data.author}
 | |
|             </p>
 | |
|         </div>`;
 | |
|     }
 | |
|     /**
 | |
|      * @param {HTMLElement} imageContainer
 | |
|      * @param {Function} gallery
 | |
|      */
 | |
|     async setImages(imageContainer, gallery) {
 | |
|         if (this._data.images?.length) {
 | |
|             imageContainer.innerHTML = Utils.renderImages('finding-gallery', this._data.images);
 | |
|             gallery('finding-gallery', this._data.images);
 | |
|         } else
 | |
|             imageContainer.innerHTML = '<p class="has-text-centered">Nessuna risorsa visuale disponibile</p>';
 | |
|     }
 | |
|     /**
 | |
|      * @param {number} recordId 
 | |
|      */
 | |
|     async biblio(recordId) {
 | |
|         let {citations, biblioElements} = await Utils.buildBibliography('finding', recordId);
 | |
|         this.biblioElements = biblioElements;
 | |
| 
 | |
|         return citations;
 | |
|     }
 | |
| 
 | |
|     getReference(id) {
 | |
|         return this.biblioElements.find(ref => {
 | |
|             let regex = new RegExp('ref-'+id+'"');
 | |
|             return ref.match(regex);
 | |
|         });
 | |
|     }
 | |
| }
 |