9,25 → 9,21 |
import java.util.Map; |
|
import org.tela_botanica.client.CarnetEnLigneMediateur; |
import org.tela_botanica.client.cel2; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.dao.ListeReferentielChampsEtendusDAO; |
import org.tela_botanica.client.modeles.dao.ListeReferentielLocaliteAsynchroneDAO; |
import org.tela_botanica.client.modeles.dao.ListeReferentielNomAsynchroneDAO; |
import org.tela_botanica.client.modeles.dao.ListeReferentielPersoAsynchroneDAO; |
import org.tela_botanica.client.modeles.objets.ChampEtendu; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation; |
import org.tela_botanica.client.modeles.objets.ListeObservation; |
import org.tela_botanica.client.modeles.objets.ListeReferentielLocalite; |
import org.tela_botanica.client.modeles.objets.ListeReferentielNom; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso; |
import org.tela_botanica.client.modeles.objets.Observation; |
import org.tela_botanica.client.modeles.objets.Ontologies; |
import org.tela_botanica.client.modeles.objets.ReferentielLocalite; |
import org.tela_botanica.client.modeles.objets.ReferentielNom; |
import org.tela_botanica.client.modeles.objets.Utilisateur; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels; |
import org.tela_botanica.client.observation.ObservationMediateur; |
import org.tela_botanica.client.util.AutoCompletionRefComboBox; |
import org.tela_botanica.client.util.ChampSaisieEtendu; |
import org.tela_botanica.client.util.FormulaireSaisieChampEtendu; |
import org.tela_botanica.client.util.Util; |
36,10 → 32,6 |
import com.google.gwt.event.dom.client.ClickEvent; |
import com.google.gwt.event.dom.client.ClickHandler; |
import com.google.gwt.http.client.Response; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.Timer; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.ui.HTML; |
50,20 → 42,12 |
import com.gwtext.client.core.ExtElement; |
import com.gwtext.client.core.ListenerConfig; |
import com.gwtext.client.core.Position; |
import com.gwtext.client.data.ArrayReader; |
import com.gwtext.client.data.FieldDef; |
import com.gwtext.client.data.MemoryProxy; |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
import com.gwtext.client.widgets.BoxComponent; |
import com.gwtext.client.widgets.Button; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.DatePicker; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.ToolTip; |
import com.gwtext.client.widgets.Toolbar; |
import com.gwtext.client.widgets.event.ButtonListenerAdapter; |
import com.gwtext.client.widgets.event.ContainerListenerAdapter; |
import com.gwtext.client.widgets.event.DatePickerListenerAdapter; |
105,12 → 89,15 |
private AutoCompletionComboBox station = null; |
private AutoCompletionComboBox milieu = null; |
private TextField comment = null; |
private ComboBox localite = null; |
private AutoCompletionComboBox localite = null; |
|
private String codeLocalite = null; |
private String pays = null; |
|
private ComboBox espece = null; |
private AutoCompletionComboBox espece = null; |
private Map<String, ReferentielNom> referentielNom = null; |
private Map<String, ReferentielLocalite> referentielLocalite = null; |
|
private String numeroNom = null; |
private String numeroOrdre = null; |
private String referentielTaxo = null; |
118,7 → 105,7 |
|
// Pour remise a zero partielle lors d'une validation |
|
private enum Champs { |
private enum Champs { |
DATE, LIEUDIT, STATION, MILIEU, COMMENT, LOCALITE, ESPECE, TOUT, LATITUDE, LONGITUDE, ALTITUDE, ABONDANCE, CERTITUDE, REFERENTIELTAXO, PHENOLOGIE; |
|
@Override |
186,8 → 173,6 |
private boolean selectionCertitude = false; |
private boolean selectionPhenologie = false; |
|
private Toolbar bt = null ; |
|
private final String VALEURS_MULTIPLES = "(Valeurs multiples)"; |
private final String modeleMessageModif = "localite:lieu-dit:station:milieu:latitude:longitude:altitude:date:espece:commentaire:abondance:identification:referentiel:phenologie"; |
private boolean localiteModifiee = false; |
335,16 → 320,36 |
this.setPaddings(5) ; |
|
// Accesskey pour debugging |
localite = new ComboBox("Localite","localite\" accesskey=\"1"); |
localite = new AutoCompletionComboBox("Localité", ListeReferentielLocaliteAsynchroneDAO.getUrlReferentielLocalites()) { |
@Override |
protected Map<String, String> parserResultatRequete(Response response) { |
referentielLocalite = Util.parserRetourReferentielLocaliteIndexeParNom(response); |
return Util.convertirListeReferentielLocaliteVersMap(referentielLocalite); |
} |
|
@Override |
public void onSelectionValeur() { |
localiteModifiee = true; |
surSelectionLocalite(); |
} |
|
@Override |
protected void onModificationValeur() { |
localiteModifiee = true; |
} |
|
final String resultTpllocalite = "<div class=\"search-item-localite\">{localite}</div>"; |
localite.setTpl(resultTpllocalite); |
localite.setMode(ComboBox.REMOTE); |
localite.setItemSelector("div.search-item-localite"); |
localite.setTypeAhead(true); |
localite.setLoadingText("Recherche..."); |
localite.setHideTrigger(true); |
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.LOCALITE); |
} |
|
/*@Override |
protected String preTraiterUrlRequete(String urlRequete, String valeur) { |
|
}*/ |
}; |
|
|
//création du lien "Accès carto" dans le formulaire |
String aideLienLocaliser = "Via une carte, obtenez les coordonnées (latitude/longitude) de votre observation, Vous pouvez entrer une nom sous la forme commune (departement) ou bien localite (pays) "+ |
"avec un numéro de département sur 2 chiffres ou un code de pays à deux lettres (format iso 3166 1)"; |
387,6 → 392,11 |
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.STATION); |
} |
|
@Override |
protected String preTraiterUrlRequete(String urlRequete, String valeur) { |
return ListeReferentielPersoAsynchroneDAO.formaterUrlRequeteAutoCompletionPerso(urlRequete, valeur); |
} |
}; |
panneauPremierColonne.add(station, new AnchorLayoutData("95%")); |
487,18 → 497,46 |
selecteurReferentielTaxo.setForceSelection(true); |
selecteurReferentielTaxo.setTpl(champsListeTpl); |
|
espece=new ComboBox("Espèce","nom"); |
final String resultTplEspece = "<div class=\"search-item-espece {indicateurNomRetenu}\">{nom}</div>"; |
espece = new AutoCompletionComboBox("Espèce", ListeReferentielNomAsynchroneDAO.getBaseUrlReferentielNom()) { |
@Override |
protected Map<String, String> parserResultatRequete(Response response) { |
referentielNom = Util.parserRetourReferentielNomIndexeParNom(response); |
return Util.convertirListeReferentielNomVersMap(referentielNom); |
} |
|
@Override |
public void onSelectionValeur() { |
especeModifiee = true; |
surSelectionEspece(); |
} |
|
@Override |
protected void onModificationValeur() { |
especeModifiee = true; |
} |
|
@Override |
public void onValidationSaisie() { |
validerSaisie(Champs.ESPECE); |
} |
|
@Override |
protected String preTraiterUrlRequete(String urlRequete, String valeur) { |
return ListeReferentielNomAsynchroneDAO.formaterUrlAutoCompletionReferentielNom(urlRequete, referentielTaxo, valeur); |
} |
|
@Override |
protected String preTraiterValeurAvantAffichage(String valeur) { |
ReferentielNom nomValeur = referentielNom.get(valeur); |
String valeurAffichee = nomValeur.getNom(); |
// Pour afficher les noms retenus en gras |
if (nomValeur.estRetenu()) { |
valeurAffichee = "<span class=\"nomRetenu\">" + nomValeur.getNom() + "</span>"; |
} |
return valeurAffichee; |
} |
}; |
|
espece.setTpl(resultTplEspece); |
espece.setMode(ComboBox.REMOTE); |
espece.setItemSelector("div.search-item-espece"); |
espece.setTypeAhead(true); |
espece.setLoadingText("Recherche..."); |
|
espece.setHideTrigger(true); |
|
Panel panelSeparationPp = new Panel(); |
panelSeparationPp.setHeight(15); |
panelSeparationPp.setBorder(false); |
539,6 → 577,11 |
public void onValidationSaisie() { |
validerSaisie(Champs.LIEUDIT); |
} |
|
@Override |
protected String preTraiterUrlRequete(String urlRequete, String valeur) { |
return ListeReferentielPersoAsynchroneDAO.formaterUrlRequeteAutoCompletionPerso(urlRequete, valeur); |
} |
}; |
panneauSecondeColonne.add(lieudit, new AnchorLayoutData("95%")); |
|
562,6 → 605,11 |
public void onValidationSaisie() { |
validerSaisie(Champs.MILIEU); |
} |
|
@Override |
protected String preTraiterUrlRequete(String urlRequete, String valeur) { |
return ListeReferentielPersoAsynchroneDAO.formaterUrlRequeteAutoCompletionPerso(urlRequete, valeur); |
} |
}; |
panneauSecondeColonne.add(milieu, new AnchorLayoutData("95%")); |
|
705,6 → 753,19 |
saisieTabindex(); |
} |
|
protected void surSelectionEspece() { |
ReferentielNom nom = referentielNom.get(espece.getText()); |
numeroNom = nom.getNumeroNom(); |
selectionEspece = true; |
observationMediateur.obtenirImageInformationExternes(referentielTaxo, numeroNom); |
} |
|
protected void surSelectionLocalite() { |
ReferentielLocalite infosLoc = referentielLocalite.get(localite.getText()); |
codeLocalite = infosLoc.getCodeLocalite(); |
selectionlocalite=true; |
} |
|
private void gererLienAjoutChampsEtendus() { |
popUpAjoutChampEtendu.setStylePrimaryName("popup_champ_etendu"); |
lienAjouterChampsEtendus.addClickHandler(new ClickHandler() { |
815,7 → 876,7 |
@Override |
public void execute(EventObject e) { |
|
if(localite.getValue() != null && !localite.getValue().equals("")) { |
if(localite.getText() != null && !localite.getText().equals("")) { |
obtenirInformationLocalite(); |
longlatAjoutee = true; |
} else { |
876,10 → 937,8 |
|
}; |
|
ajouterListenerChampEvenementsClavier(localite, listenerConfiglocalite); |
ajouterListenerChampEvenementsClavier(date); |
ajouterListenerChampEvenementsClavier(selecteurReferentielTaxo); |
ajouterListenerChampEvenementsClavier(espece, listenerConfigEspece); |
ajouterListenerChampEvenementsClavier(comment); |
ajouterListenerChampEvenementsClavier(latitude); |
ajouterListenerChampEvenementsClavier(longitude); |
935,21 → 994,6 |
} |
|
private void ajouterListenerChampsCombobox() { |
localite.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
localite.setValue(record.getAsString("localite")); |
codeLocalite=record.getAsString("departement"); |
selectionlocalite=true; |
localite.collapse(); |
} |
|
@Override |
public void onExpand(ComboBox comboBox) { |
comboBox.focus(); |
} |
}); |
|
selecteurReferentielTaxo.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
959,16 → 1003,6 |
} |
}); |
|
espece.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
espece.setValue(record.getAsString("nom")); |
numeroNom=record.getAsString("numeroNom"); |
selectionEspece=true; |
observationMediateur.obtenirImageInformationExternes(referentielTaxo, numeroNom); |
} |
}); |
|
selecteurAbondance.addListener(new ComboBoxListenerAdapter() { |
@Override |
public void onSelect(ComboBox comboBox, Record record, int index) { |
1154,7 → 1188,6 |
|
if(champ.equals(espece)) { |
numeroNom=""; |
obtenirListeReferentielNom(); |
especeModifiee = true; |
} |
|
1169,7 → 1202,6 |
if(champ.equals(localite)) { |
codeLocalite=""; |
localite.collapse(); |
obtenirListeReferentiellocalite(); |
localiteModifiee= true; |
} |
} |
1206,84 → 1238,7 |
@Override |
public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) { |
|
// si l'on a reçu une liste du referentiel localite (completion referentiel localite) |
if(nouvelleDonnees instanceof ListeReferentielLocalite) |
{ |
ListeReferentielLocalite data = (ListeReferentielLocalite) nouvelleDonnees ; |
Object[][] localiteData = new Object[data.size()][3]; |
int i = 0 ; |
|
// on la parse et on récupère les informations quiç nous interessent |
for (Iterator it = data.keySet().iterator(); it.hasNext();) |
{ |
ReferentielLocalite ref=data.get(it.next()); |
|
localiteData[i][0]= ref.getLocalite(); |
localiteData[i][1]= ref.getCodeLocalite(); |
localiteData[i][2]= ref.getCodeInsee(); |
i++ ; |
} |
|
// creation du store |
FieldDef deflocalite = new StringFieldDef("localite"); |
FieldDef defDepartement = new StringFieldDef("departement"); |
FieldDef defCodeInsee = new StringFieldDef("codeInsee"); |
|
FieldDef[] defTab = { deflocalite, defDepartement, defCodeInsee}; |
|
RecordDef rd = new RecordDef(defTab); |
|
final MemoryProxy dataProxy = new MemoryProxy(localiteData); |
final ArrayReader reader = new ArrayReader(rd); |
|
Store store=new Store(dataProxy,reader); |
localite.setStore(store); |
store.load(); |
|
} |
|
// si l'on a reçu une liste du référentiel nom (complétion referentiel nom) |
if(nouvelleDonnees instanceof ListeReferentielNom) |
{ |
ListeReferentielNom data = (ListeReferentielNom) nouvelleDonnees ; |
Object[][] nomData = new Object[data.size()][3]; |
int i = 0 ; |
|
// on la parse et on récupère les informations qui nous interessent |
for (Iterator it = data.keySet().iterator(); it.hasNext();) |
{ |
|
ReferentielNom ref=data.get(it.next()); |
|
nomData[i][0]= ref.getNom(); |
nomData[i][1]= ref.getNumeroNom(); |
if (ref.getStatut().equals("3")) { |
nomData[i][2]="nom_retenu"; |
} |
else { |
nomData[i][2]=""; |
} |
i++ ; |
} |
|
FieldDef defNom = new StringFieldDef("nom"); |
FieldDef defNumeroNom = new StringFieldDef("numeroNom"); |
FieldDef indicateurNomRetenu = new StringFieldDef("indicateurNomRetenu"); |
|
FieldDef[] defTab = { defNom, defNumeroNom, indicateurNomRetenu}; |
|
RecordDef rd = new RecordDef(defTab); |
|
final MemoryProxy dataProxy = new MemoryProxy(nomData); |
final ArrayReader reader = new ArrayReader(rd); |
|
Store store=new Store(dataProxy,reader); |
espece.setStore(store); |
store.load() ; |
} |
|
// On recoit une observation dont on veut afficher le detail |
|
if(nouvelleDonnees instanceof Observation) |
{ |
Observation obs = (Observation)nouvelleDonnees ; |
1399,12 → 1354,12 |
|
if (!nlocalite.isEmpty()) { |
// Vide ou null, on remplace ! |
if(localite.getValue() == null || localite.getValue().trim().isEmpty()) { |
if(localite.getText() == null || localite.getText().trim().isEmpty()) { |
localite.setValue(nlocalite); |
} else { |
// Afin de pas effacer un pays précédemment saisi, si on a déjà saisi une localité |
// avec le même nom mais avec un pays, on ne remplace rien |
if(localite.getValue() != null && !localite.getValue().contains(nlocalite)) { |
if(localite.getText() != null && !localite.getText().contains(nlocalite)) { |
localite.setValue(nlocalite); |
} |
} |
1431,31 → 1386,6 |
coordPanel.setVisible(true); |
} |
|
public void obtenirListeReferentiellocalite() { |
|
String com=localite.getText(); |
com=com.replaceAll("%",""); |
|
observationMediateur.obtenirListeReferentielLocalite(this,com); |
|
} |
|
public void obtenirListeReferentielNom() { |
String esp=espece.getText().replaceAll(" ","/*"); |
esp=esp.replaceAll("%",""); |
String referentiel = this.referentielTaxo; |
|
observationMediateur.obtenirListeReferentielNom(this,referentiel ,esp); |
} |
|
protected void obtenirListeReferentielMilieu() { |
observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_MILIEU,milieu.getText()); |
} |
|
protected void obtenirReferentielLieuDit() { |
observationMediateur.obtenirListeReferentielPerso(this,TypesReferentiels.REFERENTIEL_LIEU_DIT,lieudit.getText()); |
} |
|
public void ajouterObservation() { |
|
if(date.getRawValue() != null && !date.getRawValue().equals("") && !Util.verifierDateFormatCel(date.getRawValue())) { |
1935,7 → 1865,6 |
ChampSaisieEtendu ch = listeChampsEtendus.get(iterator.next()); |
ch.redimensionner(largeur - 15); |
if(ch.getFieldWidth() < ch.getLabelWidth()) { |
cel2.LogVersFirebug(ch.getLabelText()+" : "+ch.getFieldWidth()+" < "+ch.getLabelWidth()); |
ch.addClass("panneauModePetiteLargeur"); |
ch.agrandirChamp(largeur - 82); |
} else { |
2307,8 → 2236,8 |
|
String valeurlocalite = ""; |
|
if(localite.getValue() != null) { |
valeurlocalite = localite.getValue(); |
if(localite.getText() != null) { |
valeurlocalite = localite.getText(); |
} |
return valeurlocalite; |
} |