/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(); |
}); |
}); |