Administration » Historique » Révision 14
Révision 13 (Ludovic Lestrat, 26/04/2018 12:33) → Révision 14/24 (Ludovic Lestrat, 26/04/2018 12:34)
[[Mode équipe]]
[[Ajustement de l'outil "Filtre sur emprise"]]
Pour éviter une montée en charge du CPU lié à l'utilisation de cet outil, il faut modifier deux fichiers comme indiqué sur les pages github :
- Environnement/Outils/FiltreCarte.php : https://github.com/mathieubossaert/obs_occ/commit/6a1a7afc30cb01f97d7de5a1e5811b665c32c2ab
- Sources/Configuration/ConfigUtilisee.php : https://github.com/mathieubossaert/obs_occ/commit/a029fb9206edc9e430c1a0466987e55087bf3347#diff-7be1b306267c9f2d4fc3deb5a0b2c3dc
[[Optimisation Observateurs et structure]]
Pour améliorer le temps de filtrage dans l'interface de SICEN Web sur les observateurs et les structures, voici les modifications à apporter.
h2. En base :
<pre>
ALTER TABLE saisie.saisie_observation ADD COLUMN observateurs_pour_tri text;
ALTER TABLE saisie.saisie_observation ADD COLUMN structures_pour_tri text;
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN observateurs_pour_tri text;
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN structures_pour_tri text;
CREATE INDEX observateurs_pour_tri_index
ON saisie.saisie_observation
USING gist
(observateurs_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
CREATE INDEX structures_pour_tri_index
ON saisie.saisie_observation
USING gist
(structures_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
CREATE OR REPLACE FUNCTION saisie.alimente_observateurs_pour_tri()
RETURNS trigger AS
$BODY$
BEGIN
NEW.observateurs_pour_tri = md.liste_nom_auteur(NEW.observateur);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER alim_observateurs_pour_tri
BEFORE INSERT OR UPDATE OF observateur
ON saisie.saisie_observation
FOR EACH ROW
EXECUTE PROCEDURE saisie.alimente_observateurs_pour_tri();
CREATE OR REPLACE FUNCTION saisie.alimente_structures_pour_tri()
RETURNS trigger AS
$BODY$
BEGIN
NEW.structures_pour_tri = md.liste_nom_structure(NEW.structure);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER alim_structures_pour_tri
BEFORE INSERT OR UPDATE OF structure
ON saisie.saisie_observation
FOR EACH ROW
EXECUTE PROCEDURE saisie.alimente_structures_pour_tri();
UPDATE saisie.saisie_observation SET structures_pour_tri = md.liste_nom_structure(structure), observateurs_pour_tri = md.liste_nom_auteur(observateur);
</pre>
h2. Dans l'appli :
h3. Dans Modeles/Adaptations/fGrille.php :
<pre>
[[// $where = str_replace(' observat ', ' md.liste_nom_auteur(observateur) ', $where);
$where = str_replace(' observat ', ' observateurs_pour_tri ', $where);
// $where = str_replace(' struct ', ' md.liste_nom_structure(structure) ', $where);
$where = str_replace(' struct ', ' stuctures_pour_tri ', $where);]]
</pre>
h3. Dans Modeles/GeoJson/gjObs.php :
- remplacer les appels à md.liste_nom_structure(structure) par structures_pour_tri
- remplacer les appels à md.liste_nom_auteur(observateur) par observateurs_pour_tri
[[Gestion des tri ET des filtres dans l'interface]]
Afin que les tris restent opérationnels dans le tableau de l'interface, même si un filtre est présent sur un champ, il faut effectuer la modification suivante dans le fichier Sources/Modeles/GeoJson/gjObs.php :
<pre>
if ($limit !== 'AUCUNE') {
$row_number = $start + 1 +$limit;
$req .= 'WHERE row_number > ' . $start . ' AND row_number < ' . $row_number;
$req .= 'order by ' . $sort . ' ' . $dir . ' NULLS LAST;'; // ligne à ajouter
Cf : https://github.com/mathieubossaert/obs_occ/blob/4dfbf9a56b97d9243ad2263d60dda838c8fdbab6/Sources/Modeles/GeoJson/gjObs.php#L45
</pre>
[[Ajustement de l'outil "Filtre sur emprise"]]
Pour éviter une montée en charge du CPU lié à l'utilisation de cet outil, il faut modifier deux fichiers comme indiqué sur les pages github :
- Environnement/Outils/FiltreCarte.php : https://github.com/mathieubossaert/obs_occ/commit/6a1a7afc30cb01f97d7de5a1e5811b665c32c2ab
- Sources/Configuration/ConfigUtilisee.php : https://github.com/mathieubossaert/obs_occ/commit/a029fb9206edc9e430c1a0466987e55087bf3347#diff-7be1b306267c9f2d4fc3deb5a0b2c3dc
[[Optimisation Observateurs et structure]]
Pour améliorer le temps de filtrage dans l'interface de SICEN Web sur les observateurs et les structures, voici les modifications à apporter.
h2. En base :
<pre>
ALTER TABLE saisie.saisie_observation ADD COLUMN observateurs_pour_tri text;
ALTER TABLE saisie.saisie_observation ADD COLUMN structures_pour_tri text;
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN observateurs_pour_tri text;
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN structures_pour_tri text;
CREATE INDEX observateurs_pour_tri_index
ON saisie.saisie_observation
USING gist
(observateurs_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
CREATE INDEX structures_pour_tri_index
ON saisie.saisie_observation
USING gist
(structures_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
CREATE OR REPLACE FUNCTION saisie.alimente_observateurs_pour_tri()
RETURNS trigger AS
$BODY$
BEGIN
NEW.observateurs_pour_tri = md.liste_nom_auteur(NEW.observateur);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER alim_observateurs_pour_tri
BEFORE INSERT OR UPDATE OF observateur
ON saisie.saisie_observation
FOR EACH ROW
EXECUTE PROCEDURE saisie.alimente_observateurs_pour_tri();
CREATE OR REPLACE FUNCTION saisie.alimente_structures_pour_tri()
RETURNS trigger AS
$BODY$
BEGIN
NEW.structures_pour_tri = md.liste_nom_structure(NEW.structure);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CREATE TRIGGER alim_structures_pour_tri
BEFORE INSERT OR UPDATE OF structure
ON saisie.saisie_observation
FOR EACH ROW
EXECUTE PROCEDURE saisie.alimente_structures_pour_tri();
UPDATE saisie.saisie_observation SET structures_pour_tri = md.liste_nom_structure(structure), observateurs_pour_tri = md.liste_nom_auteur(observateur);
</pre>
h2. Dans l'appli :
h3. Dans Modeles/Adaptations/fGrille.php :
<pre>
[[// $where = str_replace(' observat ', ' md.liste_nom_auteur(observateur) ', $where);
$where = str_replace(' observat ', ' observateurs_pour_tri ', $where);
// $where = str_replace(' struct ', ' md.liste_nom_structure(structure) ', $where);
$where = str_replace(' struct ', ' stuctures_pour_tri ', $where);]]
</pre>
h3. Dans Modeles/GeoJson/gjObs.php :
- remplacer les appels à md.liste_nom_structure(structure) par structures_pour_tri
- remplacer les appels à md.liste_nom_auteur(observateur) par observateurs_pour_tri
[[Gestion des tri ET des filtres dans l'interface]]
Afin que les tris restent opérationnels dans le tableau de l'interface, même si un filtre est présent sur un champ, il faut effectuer la modification suivante dans le fichier Sources/Modeles/GeoJson/gjObs.php :
<pre>
if ($limit !== 'AUCUNE') {
$row_number = $start + 1 +$limit;
$req .= 'WHERE row_number > ' . $start . ' AND row_number < ' . $row_number;
$req .= 'order by ' . $sort . ' ' . $dir . ' NULLS LAST;'; // ligne à ajouter
Cf : https://github.com/mathieubossaert/obs_occ/blob/4dfbf9a56b97d9243ad2263d60dda838c8fdbab6/Sources/Modeles/GeoJson/gjObs.php#L45
</pre>