/trunk/jrest/services/CelWidgetExport.php |
---|
53,7 → 53,8 |
'limite' => 'limite', |
'format' => 'format', |
'colonnes' => 'colonnes', |
'transmission' => 'transmission' |
'transmission' => 'transmission', |
'obsids' => 'obsids', |
); |
private $limite_decoupage_defaut = 9000; |
152,16 → 153,20 |
} |
$chercheur_observations = new RechercheObservation($this->config); |
$debut = isset($criteres['debut']) ? $criteres['debut'] : 0; |
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0; |
$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0; |
$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0; |
$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance'; |
if($criteres['obsids']) $criteres['sql_brut'] = sprintf('id_observation IN (%s)', |
implode(',', $criteres['obsids'])); |
unset($criteres['limite']); |
unset($criteres['debut']); |
unset($criteres['format']); |
unset($criteres['colonnes']); |
$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite)->get(); |
unset($criteres['obsids']); |
$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite, TRUE)->get(); |
$ids = array(); |
foreach($observations as &$obs) { |
$ids[] = $obs['id_observation']; |
200,6 → 205,7 |
$parametres_traites[$this->parametres_autorises[$cle]] = $valeur; |
} |
} |
$parametres_traites['obsids'] = @self::traiterObsIds($parametres['obsids']); |
return $parametres_traites; |
} |
353,5 → 359,33 |
$utilisateur['id_utilisateur'] != '' && |
$id_utilisateur == $utilisateur['id_utilisateur']; |
} |
static function traiterObsIds($range_param) { |
if (!isset($range_param)) return NULL; |
// trim() car: `POST http://url<<<"range=*"` |
if (trim($range_param) == '*') return NULL; |
return self::rangeToList(trim($range_param)); |
} |
/* |
* @param $fieldSets: un range, eg: 1-5,8,32,58-101 |
* @return un tableau trié, eg: 1,2,3,4,5,8,32,58,...,101 |
* http://stackoverflow.com/questions/7698664/converting-a-range-or-partial-array-in-the-form-3-6-or-3-6-12-into-an-arra |
*/ |
static function rangeToList($in = '') { |
$inSets = explode(',', trim($in, ',')); |
$outSets = array(); |
foreach($inSets as $inSet) { |
list($start,$end) = explode('-', $inSet . '-' . $inSet); |
// ignore les ranges trop importants |
if($start > 10000000 || $end > 10000000 || abs($start-$end) > 10000) continue; |
$outSets = array_merge($outSets,range($start,$end)); |
} |
$outSets = array_unique($outSets); |
$outSets = array_filter($outSets, 'is_numeric'); |
sort($outSets); |
return $outSets; |
} |
} |
?> |
/trunk/src/org/tela_botanica/client/modeles/dao/ExportObservationsDAO.java |
---|
14,7 → 14,7 |
om = observationModele ; |
} |
public void exporterObservations(String identifiant, String[][] criteres) { |
public void exporterObservations(String identifiant, String[][] criteres, String format) { |
String requete = "" ; |
38,7 → 38,7 |
if(requete != "") { |
requete += "&"; |
} |
requete += "id_utilisateur="+identifiant+"&format=xls"; |
requete += "id_utilisateur="+identifiant+"&format="+format; |
Window.open(Configuration.getServiceBaseUrl()+"/CelWidgetExport/export/?"+requete,"Export",null) ; |
} |
/trunk/src/org/tela_botanica/client/observation/ObservationMediateur.java |
---|
782,7 → 782,21 |
observationModele.exporterObservations() ; |
} |
public void exporterObservationsPDF() { |
if(listeObservation.getIdSelectionnees() > 300) { |
// com.google.gwt.user.client |
Window.alert("Les étiquettes ne peuvent être générées pour plus de 300 observations d'un coup."); |
return; |
} |
// TODO: nombre en fonction des filtres actifs, combien d'éléments seraient envoyés ? |
if(listeObservation.getIdSelectionnees() == 0) { |
//import com.google.gwt.core.client.GWT.log( XXX éléments); |
} |
observationModele.exporterObservationsPDF(listeObservation.getIdSelectionnees()); |
} |
public void deconnecterUtilisateur() { |
if(panneauPrincipalObservation == null || panneauPrincipalObservation.isCreated() || !panneauPrincipalObservation.isVisible()) |
/trunk/src/org/tela_botanica/client/observation/ObservationModele.java |
---|
331,18 → 331,33 |
public void exporterObservations() { |
String[][] criteres = {{"",""}} ; |
criteres = observationMediateur.renvoyerFiltres() ; |
criteres = observationMediateur.renvoyerFiltres(); |
// on rassemble les critères |
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages) |
ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ; |
exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres) ; |
exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), criteres, "xls") ; |
} |
public void exporterObservationsPDF(String[] ordres) { |
String[][] criteres = {{"",""}} ; |
criteres = observationMediateur.renvoyerFiltres(); |
String ids = ""; |
for (int j = 0; j < ordres.length; j++) { |
ids += getIdPourOrdreObs(ordres[j]) + ","; |
} |
String[] fmt = {"obsids", ids}; |
String[][] tous_criteres = new String[criteres.length + 1][]; |
System.arraycopy(criteres, 0, tous_criteres, 0, criteres.length); |
tous_criteres[tous_criteres.length - 1] = fmt; |
ExportObservationsDAO exoDAO = new ExportObservationsDAO(this) ; |
exoDAO.exporterObservations(Utilisateur.getInstance().getIdentifiantUtilisateurConsulte(), tous_criteres, "pdf") ; |
} |
public void supprimerLiaisonImages(String idImg, String idObs) { |
LienImageAsynchroneDAO lienDAO = new LienImageAsynchroneDAO(this) ; |
/trunk/src/org/tela_botanica/client/vues/observation/ListeObservationVue.java |
---|
187,6 → 187,7 |
}); |
ToolbarTextItem exporter = new ToolbarTextItem("<a href=\"#\" id=\"lienExport\"> Exporter </a>"); |
ToolbarTextItem exporterPDF = new ToolbarTextItem("<a href=\"#\" id=\"lienExportPDF\" title=\"Génération d'étiquettes au format PDF pour la sélection\"> Étiquettes </a>"); |
barreActions.addButton(publier); |
barreActions.addButton(privatiser); |
196,6 → 197,7 |
barreActions.addButton(importer); |
barreActions.addSpacer(); |
barreActions.addItem(exporter); |
barreActions.addItem(exporterPDF); |
this.setTopToolbar(barreActions) ; |
this.setBottomToolbar(bt); |
386,14 → 388,19 |
ExtElement lienExport = Ext.get("lienExport") ; |
lienExport.addListener("click", new EventCallback() { |
@Override |
public void execute(EventObject e) { |
observationMediateur.exporterObservations(); |
} |
}); |
ExtElement lienExportPDF = Ext.get("lienExportPDF") ; |
lienExportPDF.addListener("click", new EventCallback() { |
@Override |
public void execute(EventObject e) { |
observationMediateur.exporterObservationsPDF(); |
} |
}); |
} |
}); |