1,11 → 1,13 |
var dictionnaire = new Array(); |
var motsAyantDefinition = new Array(); |
var noeudAyantsDefinition = new Array(); |
var motsAyantDefinition = null; |
var mouseX = null; |
var mouseY = null; |
var tempsDepuisRequeteAjax = 0; |
var active = false; |
|
function getUrlBaseService() { |
return 'http://localhost/dictionnaire/services/0.1/dictionnaire/'; |
// provient de dictionnaire.config.js |
return URL_BASE_SERVICE; |
} |
|
function supprimerAccents(str) { |
43,6 → 45,20 |
.replace('œ',"(œ|oe)"); |
} |
|
function afficherLienDefinitions() { |
html = '<div id="conteneur_activation_definition"><a href="#">rechercher les définitions</a></div>'; |
$('#conteneur_activation_definition').live('click', function(event) { |
event.preventDefault(); |
supprimerToutesDefinitions(); |
if(motsAyantDefinition == null) { |
getMotsADefinitions(); |
} else { |
ajouterDefinitions(motsAyantDefinition); |
} |
}); |
$('body').append(html); |
} |
|
function normaliserMotPourRecherche(str) { |
str = supprimerAccents(str); |
str = etendreChaineAccents(str); |
49,30 → 65,41 |
return str; |
} |
|
$.fn.remplacerDefinition = function(mot) { |
|
motSimplifie = supprimerAccents(mot).toLowerCase(); |
mot = normaliserMotPourRecherche(mot); |
|
var regExp = new RegExp("("+mot+")", 'ig'); |
$.fn.remplacerDefinitions = function(mots) { |
this.each(function() { |
$(this).contents().filter(function() { |
return this.nodeType == Node.TEXT_NODE; |
return this.nodeType == 3; |
}).each(function() { |
termeDansTexte = regExp.exec($(this).text()); |
if(termeDansTexte != null && termeDansTexte.length > 0) { |
motOriginal = termeDansTexte[0]; |
templateMotADefinition = formaterTemplateMotADefinition(motSimplifie, motOriginal); |
output = $(this).text().replace(regExp, definitionHtml); |
$(this).replaceWith(output); |
noeudAyantsDefinition.push($(this)); |
} |
element = $(this); |
texte = element.text(); |
if(texte != "") { |
$.each(mots, function(index, valeur) { |
def = valeur['cle']; |
texte = rechercherEtRemplacerMotParDefinition(texte, def); |
}); |
element.replaceWith(texte); |
} |
}); |
}); |
return this; |
} |
|
function getMotADefinitions() { |
function rechercherEtRemplacerMotParDefinition(texte, mot) { |
motSimplifie = supprimerAccents(mot).toLowerCase(); |
mot = normaliserMotPourRecherche(mot); |
exclureSpan = '[^(?:class="definition_term">)]'; |
regExp = new RegExp(exclureSpan+"[ |,|-|;|.]+("+mot+")[a-zA-Z]{1}", 'ig'); |
termeDansTexte = regExp.exec(texte); |
if(termeDansTexte != null && termeDansTexte.length > 1) { |
motOriginal = termeDansTexte[1]; |
templateMotADefinition = formaterTemplateMotADefinition(motSimplifie, motOriginal); |
texte = texte.replace(motOriginal, templateMotADefinition); |
} |
|
return texte; |
} |
|
function getMotsADefinitions() { |
$.ajax({ |
url: getUrlBaseService()+'mots/', |
success: function(data) { |
88,10 → 115,8 |
} |
|
function ajouterDefinitions(motsAvecDefinitions) { |
jQuery.each(motsAvecDefinitions, function(index) { |
def = motsAvecDefinitions[index]['cle']; |
$('p, span, td, th, div').remplacerDefinition(def); |
}); |
set = 'p, span:not("definition_term"), td, pre'; |
$(set).remplacerDefinitions(motsAvecDefinitions); |
} |
|
function formaterTemplateMotADefinition(motSimplifie, motOriginal) { |
115,7 → 140,7 |
function afficherDefinition(element) { |
mot = element.attr('rel'); |
if(dictionnaire[mot] != null) { |
element.append(formaterDefinition(element)); |
element.after(formaterDefinition(element)); |
afficherPopupDefinition(); |
} else { |
chargerDefinitionDistante(element); |
122,7 → 147,9 |
} |
} |
|
function chargerDefinitionDistante(element) { |
function chargerDefinitionDistante(element) { |
date = new Date(); |
tempsDepuisRequeteAjax = date.getTime(); |
$.ajax({ |
url: getUrlBaseService()+'def/'+mot, |
success: function(data) { |
129,7 → 156,7 |
retour = data; |
definition = retour.valeur; |
dictionnaire[mot] = definition; |
element.append(formaterDefinition(element)); |
element.after(formaterDefinition(element)); |
afficherPopupDefinition(); |
}, |
dataType: "JSON", |
150,7 → 177,7 |
data = dictionnaire[mot]; |
defHtml = '<div class="definition_container">'+ |
'<span class="definition_container_fleche"></span>'+ |
data+ |
'<span class="definition">'+data+'</span>'+ |
'</div>'; |
return defHtml; |
} |
162,11 → 189,6 |
cacherPopupsDefinitions(); |
} |
|
function surFinRequeteAjax() { |
supprimerToutesDefinitions(); |
ajouterDefinitions(motsAyantDefinition); |
} |
|
$(document).bind('mousemove', function(e){ |
mouseX = e.pageX; |
mouseY = e.pageY - $(window).scrollTop(); |
173,10 → 195,6 |
}); |
|
$(document).ready(function() { |
getMotADefinitions(); |
afficherLienDefinitions(); |
}); |
|
$(document).ajaxStop(function() { |
t = setTimeout(function(){surFinRequeteAjax()},800) |
}); |
|