Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1713 → Rev 1714

/trunk/jrest/lib/FormateurGroupeColonne.php
18,6 → 18,14
// test sur la table cel_references, mis à TRUE si la table existe
static $is_table = false;
 
// les groupes de champs utilisables
static $fieldGroups = array(
'standard',
'avance',
'etendu',
'baseflor'
);
 
// les données baseflor à récupérer: colonnes présentes dans cel_references
// et intitulés associés
static $baseflor_col = array(
35,6 → 43,25
"syntaxon" => "Syntaxon",
);
 
static function colGroupsValidation($groupe_de_champs = 'standard,avance') {
if(! $groupe_de_champs) return FALSE;
if(is_string($groupe_de_champs)) {
$groupe_de_champs = array_flip(explode(',', $groupe_de_champs));
}
elseif(is_array($groupe_de_champs)) {
$groupe_de_champs = array_flip($groupe_de_champs);
}
else {
return NULL;
}
$groupe_de_champs = array_intersect_key(array_flip(self::$fieldGroups),
$groupe_de_champs);
if(!$groupe_de_champs) return FALSE;
// toujours ajouter standard
$groupe_de_champs['standard'] = TRUE;
return implode(',', array_keys($groupe_de_champs));
}
 
/*
* @param $fieldSets: un liste de noms de colonnes ou de sets de colonnes
* séparés par des virgules
44,7 → 71,7
* clé: abbrev [machine-name] de la colonne (eg: "espece" ou "mot-clef")
* valeur: des données relative à cette colonne, cf GenColInfo
*
* @TODO: fonction commune à la génération en CSV
* @TODO: noms communs à part, gestion des champs étendus
*
*/
static function nomEnsembleVersListeColonnes($groupe_de_champs = 'standard') {
58,7 → 85,7
else {
return NULL;
}
$groupe_de_champs = array_intersect_key(array_flip(array('standard','avance','etendu','baseflor')),
$groupe_de_champs = array_intersect_key(array_flip(self::$fieldGroups),
$groupe_de_champs);
if(!$groupe_de_champs) return NULL;
 
125,6 → 152,13
);
}
 
if(isset($groupe_de_champs['etendu'])) {
$colonnes += array(
// champ dynamique
'etendu' => self::GenColInfo('etendu', '', 1, NULL, NULL, FALSE, NULL, NULL),
);
}
 
return $colonnes;
}
 
/trunk/jrest/services/CelWidgetExport.php
96,7 → 96,7
$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0;
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
$colonnes = @FormateurGroupeColonne::colGroupsValidation($criteres['colonnes']);
unset($criteres['limite']);
unset($criteres['debut']);
154,8 → 154,10
$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0;
$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0;
$groupes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
$groupes = @FormateurGroupeColonne::colGroupsValidation($criteres['colonnes']);
if(!$groupes) die('erreur: Ne peut identifier les groupes de champs demandés.');
 
 
if($criteres['obsids']) $criteres['sql_brut'] = sprintf('id_observation IN (%s)',
implode(',', $criteres['obsids']));
178,18 → 180,21
}
 
// cas XLS et CSV: on peut avoir besoin des champs étendus, des noms communs et des champs baseflor:
// 0) obtention des colonnes correspondantes aux groupes de champs
$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($groupes);
 
// 1) champs étendus
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids);
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($ids);
// 1) champs étendus, si demandés
$colonnes_champs_supp_par_obs = $champs_supp_par_obs = array();
if(isset($colonnes['etendu'])) {
$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids);
$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($ids);
}
 
// 2) nom communs
// $cache pourrait être utilisé par les fonctions de colonnes
// * Pour "nom commun", "preload" retourne NULL, car c'est le cache statique de FormateurGroupeColonne
// qu'il initialise et utilise en interne sans qu'un passage par paramètre ne soit nécessaire
$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($groupes);
if(!$colonnes) die('ne peut identifier les groupes de champs demandés');
$cache = FormateurGroupeColonne::preload($colonnes, $this, $ids);
// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
/trunk/widget/modules/export/squelettes/js/export.js
172,12 → 172,12
 
function validerExport() {
var urlCalcul = getUrlExport()+'/calcul';
var valeurs = {};
$.each($('#form-export-obs').serializeArray(), function(i, field) {
if(field.value != null && $.trim(field.value) != '') {
valeurs[field.name] = field.value;
}
});
var valeurs =
$.grep($('#form-export-obs').serializeArray(), function(field, i) {
if($.trim(field.value) == '') return false;
return true;
});
 
$.get(urlCalcul, valeurs, function(data) {
if(data.length == 1) {
window.location.href = data[0];
209,4 → 209,4
$("#date_fin").datepicker($.datepicker.regional['fr']);
$(".lien_telechargement").live("click", function(event) {ouvrirDansUneNouvelleFenetre(event, $(this))});
configurerValidationFormulaire();
});
});