177 lines
5.9 KiB
JavaScript
177 lines
5.9 KiB
JavaScript
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.ref_pacemaker = ((myresp.ref_pacemaker.length == 0) ? '-' : myresp.ref_pacemaker);
|
|
this.devisDate = "-";
|
|
if(myresp.id_devis != null && myresp.devis_date != null){
|
|
const date = new Date(myresp.devis_date);
|
|
this.devisDate = date.toLocaleDateString('fr-FR');
|
|
}
|
|
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.productCoverDescription = Defunt.getDefuntProductCoverDescriptionFromApiResponse(myresp);
|
|
}
|
|
|
|
static getDefuntProductCoverDescriptionFromApiResponse(myresp){
|
|
let defuntProductCoverDescription = "-";
|
|
if(myresp.product_cover_description != null && myresp.product_cover_description.length > 0 ){
|
|
defuntProductCoverDescription = myresp.product_cover_description;
|
|
}
|
|
return defuntProductCoverDescription;
|
|
}
|
|
|
|
/**
|
|
* Get datatable row for an item
|
|
*/
|
|
getDTRow() {
|
|
let myrow = [
|
|
'<div>' + this.id + '</div>', // identifiant
|
|
'<div class="editable" data-table="defunt" data-column="nom" data-id="' + this.id + '">' + this.nom + '</div>', // nom
|
|
'<div class="editable" data-table="defunt" data-column="ref_pacemaker" data-id="' + this.id + '">' + this.ref_pacemaker + '</div>', // reference pacemaker
|
|
'<div>'+this.numero_devis+'</div>', // numeroDevis
|
|
'<div>'+this.pompe+'</div>', // pompe
|
|
'<div>'+this.lieu+'</div>', // lieu
|
|
'<div>'+this.devisDate+'</div>',
|
|
'<div class="selectCoverProductsList" data-id="' + this.id + '" data-current="' + this.productId + '">' +this.productCoverDescription+'</div>', // lieu
|
|
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl + '"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="defunt" data-id=' + this.id + ' data-table="defunt" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>'
|
|
];
|
|
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);
|
|
});
|
|
}
|
|
} |