import { showError } from "@nextcloud/dialogs"; import { LoadDT, baseUrl, checkSelectPurJs, showDone } from "../modules/mainFunction.mjs"; import { generateUrl } from "@nextcloud/router"; import { updateDB } from "../modules/ajaxRequest.mjs"; export class Defunt { /** * * @param myresp instantiate Defunt object */ constructor(myresp) { this.id = myresp.id; this.nom = ((myresp.nom.length === 0) ? '-' : myresp.nom); this.date_naissance = myresp.date_naissance; this.age = 0; this.sexe = ((myresp.sexe.length === 0) ? null : myresp.sexe); this.ref_pacemaker = ((myresp.ref_pacemaker.lenth == 0) ? '-' : myresp.ref_pacemaker); this.pompe = ((myresp.nom_client == null) ? '-' : myresp.nom_client); this.lieu = ((myresp.lieu == null) ? '-' : myresp.lieu); this.numero_devis = ((myresp.user_id == null) ? '-' : myresp.user_id); this.baseUrl = generateUrl(`/apps/gestion/defunt/${this.id}/show`); this.age = Defunt.caclulateAge(myresp.date_naissance); } /** * Get datatable row for an item */ getDTRow() { let myrow = [ '
' + this.id + '
', // identifiant '
' + this.nom + '
', // nom '', '
'+this.age+'
', // age '
'+ ''+ '
', // sexe '
' + this.ref_pacemaker + '
', // reference pacemaker '
'+this.numero_devis+'
', // numeroDevis '
'+this.pompe+'
', // pompe '
'+this.lieu+'
', // lieu '
' ]; return myrow; } /** * * @param {*} dateNaissance */ static caclulateAge(dateNaissance) { var diff = Date.now() - (new Date(dateNaissance)).getTime(); var ageDate = new Date(diff); var age = Math.abs(ageDate.getUTCFullYear() - 1970); return age; } /** * * @param {*} defuntDt */ static loadDefuntDT(defuntDt) { var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDefunts', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { LoadDT(defuntDt, JSON.parse(this.response), Defunt); }else{ showError(this.response); } }; oReq.send(); } /** * * @param {*} dt */ static newDefunt(dt) { var oReq = new XMLHttpRequest(); oReq.open('POST', baseUrl + '/defunt/insert', true); oReq.onload = function(e){ if (this.status == 200) { showDone() Defunt.loadDefuntDT(dt); }else{ showError(this.response); } }; oReq.send(); } static getDefunts(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDefunts', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { callback(JSON.parse(this.response)); }else{ showError(this.response); } }; oReq.send(); } static getUnusedDefunts(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getUnusedDefunts', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { callback(JSON.parse(this.response)); }else{ showError(this.response); } }; oReq.send(); } /** * @desc populate defunt select list in devis */ static loadDefuntList_tid(e){ Defunt.getUnusedDefunts(response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); var parentElement = el.target.parentElement parentElement.innerHTML = el.target.value + " " + el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; }else{ var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var txt = document.createElement("textarea"); txt.innerHTML = myresp.nom; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } }