// debut de code par defaut
$('.form').submit(function (e) {
e.preventDefault();
// affichage de la barre de progression
document.getElementById("responseXML").innerHTML = '';
// on desactive le bouton pour eviter le spam de requettes
$(".submit").attr("disabled", true);
// on recupere la methode et la ressource loterre
var langtype = $('input[name="langtype"]:checked').val();
var text = $('#file').val();
var resource = $('input[name="resource"]:checked').val();
annoter(text, langtype, resource);
$(".submit").attr("disabled", false);
});
// ajout de la methode
function annoter(text, lang, resource) {
var url = 'https://loterre-webservices-3.loterre.fr/AnnotWithLoterreTerminology?vocab=' + resource; // url de la resssource (exemple : http://192.168.42.42:49156/parse?resource=electronique)
var docFile = document.implementation.createDocument("", "", null);
elem = docFile.createElement("text");
elem.setAttribute("xml:lang", lang);
elem.innerHTML = text;
docFile.appendChild(elem);
var serializer = new XMLSerializer();
var xmlString = '' + serializer.serializeToString(docFile);
var content = new Headers();
content.append("Content-type","text/plain; charset=UTF-8");
var req = fetch(url, { // requete simple
method: 'post',
body: xmlString,
headers: content
});
req.then(function(response) {
if (response.ok) { // si le code est 2xx
$.getJSON('https://loterre-webservices-3.loterre.fr/', function(data){
//typeResponse = data.paths['/' + fileXSLToUse].post.responses.default.description.split('Return ')[1];
response.text().then(function(res){
/*
document.getElementById("responseXML").innerHTML = "
Transformation terminée.
";
var filename = 'transformation_' + new Date().toLocaleDateString();
// on cree maintenant une balise 'a' et on force le click ur cette baise afin de créer un téléchargement
var link = document.createElement('a');
link.style.display = 'none';
link.setAttribute('target', '_blank');
link.setAttribute('href', 'data:text/xml;charset=utf-8,' + encodeURIComponent(res)); // reponse XML
link.setAttribute('download', filename);
document.body.appendChild(link);
link.click();
// on supprime cette balise
document.body.removeChild(link);
// on reactive le bouton submit pour refaire une annotation
*/
creerTableauCorrespondances(text, res);
$(".submit").attr("disabled", false);
})
});
} else { // si le code est different de 2xx, on affiche une erreur
$(".submit").attr("disabled", false);
document.getElementById("responseXML").innerHTML = " Ha ocurrido un error. Por favor intente otra vez.
";
}
}, function(error) { // si on a une erreur de connexion
$(".submit").attr("disabled", false);
document.getElementById("responseXML").innerHTML = " No se pudo establecer la conexión / el archivo enviado es incorrecto. Intentar otra vez.
";
});
}
function creerTableauCorrespondances(entree, text){
var arr = [];
document.getElementById("responseXML").innerHTML = "";
var textDoc = jQuery.parseXML(text).getElementsByTagName("text")[0].firstChild;
if (textDoc == null) {
// document.getElementById("responseXML").innerHTML = "Aucune information n'a été trouvée.";
document.getElementById("responseXML").innerHTML = "Sin término coincidente.";
} else {
var table = document.createElement('table');
table.innerHTML += "concepto | término coincidente | tipo | id |
";
var body = document.createElement('tbody');
var count = 0;
while (textDoc.nextElementSibling != null){
textDoc = textDoc.nextElementSibling;
if (! arr.includes(textDoc.attributes.termeReconnu.value.trim())){
body.innerHTML += ''+ textDoc.innerHTML + ' | ' + textDoc.attributes.termeReconnu.value + ' | ' + textDoc.attributes.status.value + ' | ' + textDoc.attributes.id.value + ' |
';
arr.push(textDoc.attributes.termeReconnu.value.trim());
count++;
}
}
table.appendChild(body);
creerDoc(entree, arr, 0);
document.getElementById("responseXML").appendChild(table);
}
}
function creerDoc(txt, arr, count){
if (arr.length != 0){
var nextTerm = arr.shift();
if (hasSpaces(nextTerm)){
var txtTable = txt.split(nextTerm);
var newTxt = txtTable[0];
for (var i = 1; i < txtTable.length; i++){
newTxt += `` + nextTerm + ``;
newTxt += txtTable[i];
}
creerDoc(newTxt, arr, count+1);
} else {
var txtTable = txt.split(' ');
var newTxt = "";
for (var i = 0; i < txtTable.length; i++){
if (txtTable[i] == nextTerm){
newTxt += `` + nextTerm + ` `;
} else {
newTxt += txtTable[i] + " ";
}
}
creerDoc(newTxt, arr, count+1);
}
} else {
var txtOriginal = document.createElement('div');
txtOriginal.setAttribute('id', 'divTextView');
txtOriginal.innerHTML = txt;
document.getElementById("responseXML").appendChild(txtOriginal);
$(".tooltip_expr").click(function(e){
var href = $(this).attr('href');
$(href).fadeOut(250).fadeIn(250).fadeOut(250).fadeIn(250).fadeOut(250).fadeIn(250).fadeOut(250).fadeIn(250);
});
}
}
function hasSpaces(str) {
if (str.indexOf(' ') !== -1) {
return true
} else {
return false
}
}