/** * @class Finding */ export class Finding { biblioElements = []; images = null; set data(data) { this._data = data; } async render() { return `

Oggetto: ${this._data.object}

Materia: ${this._data.material}

Misure: ${this._data.measurements}

Luogo e anno rinvenimento: ${this._data.place}. ${this._data.year}

Datazione: ${this._data.dating}

Stato di conservazione: ${this._data.conservationState}

Luogo di conservazione: ${this._data.conservationPlace}

Bibliografia: ${await this.biblio(this._data.id)}

Descrizione
${this._data.description}

Autore scheda: ${this._data.author}

`; } renderImages() { let content = `

Immagini

`; content += `

Cliccare sull'immagine per aprire la gallery

`; return content; } async setImages() { let record = await this.fetchData(`${window.API_URL}/finding/${this._data.id}`) if (record.images.length) { this.images = record.images; } } /** * @param {number} recordId */ async biblio(recordId) { let record = await this.fetchData(`${window.API_URL}/finding/${recordId}`); let citations = ''; if (record.bibliography.length) { record.bibliography.forEach(biblio => { citations += ` ${biblio.citation.toLowerCase()}, ${biblio.pages}; `; this.biblioElements.push(`

${biblio.reference}

`); }); } return citations.trim().slice(0, -1); } getReference(id) { return this.biblioElements.find(ref => { let regex = new RegExp('ref-'+id+'"'); return ref.match(regex); }); } async fetchData(url) { return await fetch(url).then(res => res.json()); } }