1,7 → 1,9 |
package org.tela_botanica.del.client.cache; |
|
import java.util.Arrays; |
import java.util.List; |
|
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation; |
import org.tela_botanica.del.client.modeles.Image; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
9,6 → 11,8 |
import org.tela_botanica.del.client.modeles.Protocole; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
|
import com.google.gwt.core.client.GWT; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.Window.Location; |
|
public class CacheClient { |
34,6 → 38,10 |
private Utilisateur utilisateur; |
private String pageCourante = home; |
private String statut; |
private String[] statutsPossibles = {ConstantesNavigation.PARAM_TYPE_TOUS, |
ConstantesNavigation.PARAM_TYPE_A_DETERMINER, |
ConstantesNavigation.PARAM_TYPE_EN_DISCUSSION, |
ConstantesNavigation.PARAM_TYPE_VALIDEES}; |
|
public void supprimerFiltreStatut() { |
this.statut = null; |
75,6 → 83,8 |
String tagDel = Location.getParameter("masque.tag_pictoflora"); |
String referentiel = Location.getParameter("masque.referentiel"); |
|
String statutParam = Location.getParameter("masque.type"); |
|
InformationsRecherche rechercheParArguments = new InformationsRecherche(); |
rechercheParArguments.setRechercheLibre(rechercheLibre); |
rechercheParArguments.setFamille(famille); |
89,6 → 99,7 |
rechercheParArguments.setMotClefCel(tagCel); |
rechercheParArguments.setMotClefDel(tagDel); |
} |
|
rechercheParArguments.setMotClef(tag); |
|
// si le référentiel est passé dans l'url alors il ne doit pas être modifiable |
98,6 → 109,17 |
referentielNonModifiable = true; |
} |
|
if(Location.getParameterMap().size() == 0) { |
// par défaut l'application s'ouvre sur l'onglet à déterminer |
statut = ConstantesNavigation.PARAM_TYPE_DEFAUT; |
} else { |
if(Arrays.asList(statutsPossibles).contains(statutParam)) { |
statut = statutParam; |
} else { |
statut = ConstantesNavigation.PARAM_TYPE_DEFAUT; |
} |
} |
|
informationsRechercheImage = rechercheParArguments; |
informationsRechercheObservation = rechercheParArguments; |
} |
243,4 → 265,65 |
public boolean getReferentielNonModifiable() { |
return referentielNonModifiable; |
} |
|
public String genererUrlCourante() { |
String url = Window.Location.getHref(); |
CacheClient cache = CacheClient.getInstance(); |
|
String arguments = ""; |
String argumentsRecherche = ""; |
if (cache.getPageCourante().equals(ConstantesNavigation.PAGE_RECHERCHE_IMAGES)) { |
|
InformationsRecherche infoRecherche; |
infoRecherche = cache.getInformationsRechercheImage(); |
argumentsRecherche = infoRecherche.versChaineRequete(); |
|
if(!GWT.isScript()) { |
argumentsRecherche += "&gwt.codesvr="+Location.getParameter("gwt.codesvr")+""; |
} |
|
argumentsRecherche = (argumentsRecherche.isEmpty()) ? argumentsRecherche : "?" + argumentsRecherche; |
arguments = argumentsRecherche + "#" + ConstantesNavigation.PAGE_RECHERCHE_IMAGES; |
url = new Config().getUrl("del") + arguments; |
|
if (CacheClient.getInstance().getProtocoleCourant() != null) { |
url += "~"+String.valueOf(CacheClient.getInstance().getProtocoleCourant().getId()); |
} |
} else if (cache.getPageCourante().equals(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS) || cache.getPageCourante().equals("")) { |
|
InformationsRecherche infoRecherche; |
infoRecherche = cache.getInformationsRechercheObservation(); |
argumentsRecherche = "masque.type="+statut; |
argumentsRecherche += "&"+infoRecherche.versChaineRequete(); |
|
if(!GWT.isScript()) { |
argumentsRecherche += "&gwt.codesvr="+Location.getParameter("gwt.codesvr")+""; |
} |
arguments = "?"+argumentsRecherche + "#" + ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS; |
url = new Config().getUrl("del") + arguments; |
} else if (cache.getPageCourante().contains(ConstantesNavigation.PAGE_VALIDATION) || cache.getPageCourante().contains(ConstantesNavigation.PAGE_VALIDATION_PICTOFLORA)) { |
url = new Config().getUrl("del"); |
if(!GWT.isScript()) { |
url += "?gwt.codesvr="+Location.getParameter("gwt.codesvr"); |
} |
url += "#"+cache.getPageCourante(); |
} |
// remplacements batards pour corriger l'url |
// TODO: factoriser toute la fonction |
url = url.replaceAll("&#", "#"); |
url = url.replaceAll("&&", "&"); |
url = url.replaceAll("\\?&", "?"); |
|
return url; |
} |
|
|
public void mettreAjourUrlCourante() { |
mettreAJourUrlCouranteSansRecharger(genererUrlCourante()); |
} |
|
private static native void mettreAJourUrlCouranteSansRecharger(String nouvelleUrl) /*-{ |
$wnd.history.pushState(nouvelleUrl, "", nouvelleUrl); |
}-*/; |
|
} |