
itemFields['PRESTATION'] = ['libelle','parent','rank','client','intervenant','debut','fin','contrat','projet','jours_commandes','jours_planifies','jours_realises'];

datagrid_hooks['prestations'] = function() {
  let element = document.querySelector("#datagrid");
  let contenu = "";
  let nbLignes = 1;
  let parentLevel=getContexteValeur('parent_level');
  let showPrestationsOnly=(getContexteValeur('prestation')=='oui');

  if (parentLevel == 0) parentLevel=1;

  sortItemsByClientParentDates();
  
  contenu += "<table>";
  contenu += " <thead>";
  contenu += "   <tr>";
  contenu += '    <th colspan="6" onchange="updateValue(event)"><input id="newitem_input" type="text" placeholder="Nouvel item" style="width: 98%;outline: none"></th>';
  contenu += "   </tr>";
  contenu += "   <tr>";
  // contenu += "    <th><center>Id</center></th>";
  contenu += '    <th style="width:50px;text-align:center"><span onclick="openFiltrePopup(\'client\')">Client</span></th>';
  contenu += '    <th style="max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"><span onclick="openFiltrePopup(\'libelle\')">Libellé</span></th>';
  contenu += '    <th style="max-width:150px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"><span onclick="openFiltrePopup(\'contrat\')">Contrat</span></th>';
  contenu += '    <th style="max-width:150px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"><span onclick="openFiltrePopup(\'libelle\')">Commandés</span></th>';
  contenu += '    <th style="max-width:150px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"><span onclick="openFiltrePopup(\'libelle\')">Prévus</span></th>';
  contenu += '    <th style="max-width:150px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"><span onclick="openFiltrePopup(\'libelle\')">Réalisés</span></th>';
  // contenu += "    <th><center>État</center></th>";
  contenu += "   </tr>";
  contenu += "  </thead>";

  contenu += " <tbody>";

  items.forEach((element) => {
    let item = getItemFromElement(element);
    let texte = getNonNullTextValeur(item.libelle);
    let commandes = "-";
    let planifies = "-";
    let realises = "-";

    // On n'affiche pas la racine
    if (item["idlignes"] == 1) return true;
    // On n'affiche que ce qui est marqué comme visible
    if (!item["visible"]) return true;

    if ((showPrestationsOnly)&&((item.jours_commandes + item.jours_realises+item.jours_planifies) == 0)) return true;

    if (item.status == 3) texte = "<strike>" + texte + "</strike>";
    if (item.status == 2) texte = "<strike>" + texte + "</strike>";

    if (item.jours_commandes > 0)
      commandes = convertJourHeure(getNonNullTextValeur(item.jours_commandes));

    if (item.jours_realises > 0)
      realises = convertJourHeure(getNonNullTextValeur(item.jours_realises));

    if (item.jours_planifies > 0) 
      planifies = convertJourHeure(getNonNullTextValeur(item.jours_planifies));

    contenu += '   <tr class="js-open-modal-trigger" data-modal-info="type='+item.type+':id=' + getNonNullTextValeur(item.idlignes) + '">';
    //contenu += "    <td><center>" + getNonNullTextValeur(item.idlignes) + "</center></td>";
    contenu += '    <td style="width:50px;text-align:center">' + getNonNullTextValeur(item.client) + '</td>';
    contenu += '    <td style="max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">' + setLevelPadding(item["level"]-parentLevel) + texte + '</td>';
    contenu += '    <td style="max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis">' + getNonNullTextValeur(item.contrat) + '</td>';
    contenu += '    <td style="width:50px;text-align:center">' + commandes + '</td>';
    contenu += '    <td style="width:100px;text-align:center">' + planifies + '</td>';
    contenu += '    <td style="width:100px;text-align:center">' + realises + '</td>';
    //contenu += "    <td>" + getStatusLibelleFromId(item.status) + '</td>';
    contenu += "   </tr>";

    nbLignes += 1;
  });
  contenu += "  </tbody>";

  contenu += " <tfoot>";
  contenu += "   <tr>";
  contenu += '    <th colspan="6">'+setLevelPadding(2)+''+(nbLignes-1)+' tâches</th>';
  contenu += "   </tr>";
  contenu += "  </foot>";
  contenu += "</table>";

  element.innerHTML = contenu;

  // Ne marche pas , ça enlève le stick du header du tableau ...
  // document.getElementById('newitem_input').focus({preventScroll: true});
}

function prestationSave(idlignes) {
  let bodyJSON = JSON.stringify(getCurrentPRESTATION(idlignes));
  return itemAPI(idlignes, bodyJSON, itemInfo);
}

item_save_hooks['PRESTATION'] = prestationSave;

function getCurrentPRESTATION(idlignes)
{
  let result = new Object();

  if (idlignes > 1) {
    result['idlignes'] = idlignes;
  } else {
    result['type']=getContexteValeur('type_courant');
  }

  itemFields['PRESTATION'].forEach(attribut => {
    result[attribut] = documentGetElementById('item_'+attribut);
  });
  
  if (result['parent']=='') result['parent']=1;
  if (result['client']=='') result['client']==getTrigrammeCollaborateur(result['intervenant']);
  if (result['libelle']=='') result['libelle']='xxxxxxxxxxxx';
  if (result['intervevant']=='') result['intervenant']=getContexteValeur('intervenant');;
  if (result['debut']=='') result['debut']=0;
  if (result['fin']=='') result['fin']=0;
  if (result['status']=='') result['status']=0;

  return result;
}