Projet

Général

Profil

Optimisation Observateurs et structure » Historique » Version 1

Ludovic Lestrat, 26/04/2018 12:35

1 1 Ludovic Lestrat
Pour améliorer le temps de filtrage dans l'interface de SICEN Web sur les observateurs et les structures, voici les modifications à apporter.
2
3
h2. En base :
4
5
<pre>
6
ALTER TABLE saisie.saisie_observation ADD COLUMN observateurs_pour_tri text;
7
ALTER TABLE saisie.saisie_observation ADD COLUMN structures_pour_tri text;
8
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN observateurs_pour_tri text;
9
ALTER TABLE saisie.suivi_saisie_observation ADD COLUMN structures_pour_tri text;
10
11
CREATE INDEX observateurs_pour_tri_index
12
  ON saisie.saisie_observation
13
  USING gist
14
  (observateurs_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
15
16
CREATE INDEX structures_pour_tri_index
17
  ON saisie.saisie_observation
18
  USING gist
19
  (structures_pour_tri COLLATE pg_catalog."default" gist_trgm_ops);
20
21
CREATE OR REPLACE FUNCTION saisie.alimente_observateurs_pour_tri()
22
  RETURNS trigger AS
23
$BODY$ 
24
BEGIN
25
NEW.observateurs_pour_tri = md.liste_nom_auteur(NEW.observateur);
26
RETURN NEW;
27
END;
28
$BODY$
29
  LANGUAGE plpgsql VOLATILE
30
  COST 100;
31
32
CREATE TRIGGER alim_observateurs_pour_tri
33
  BEFORE INSERT OR UPDATE OF observateur
34
  ON saisie.saisie_observation
35
  FOR EACH ROW
36
  EXECUTE PROCEDURE saisie.alimente_observateurs_pour_tri();
37
38
CREATE OR REPLACE FUNCTION saisie.alimente_structures_pour_tri()
39
  RETURNS trigger AS
40
$BODY$ 
41
BEGIN
42
NEW.structures_pour_tri = md.liste_nom_structure(NEW.structure);
43
RETURN NEW;
44
END;
45
$BODY$
46
  LANGUAGE plpgsql VOLATILE
47
  COST 100;
48
49
CREATE TRIGGER alim_structures_pour_tri
50
  BEFORE INSERT OR UPDATE OF structure
51
  ON saisie.saisie_observation
52
  FOR EACH ROW
53
  EXECUTE PROCEDURE saisie.alimente_structures_pour_tri();
54
55
UPDATE saisie.saisie_observation SET structures_pour_tri = md.liste_nom_structure(structure), observateurs_pour_tri = md.liste_nom_auteur(observateur);
56
</pre>
57
58
59
h2. Dans l'appli :
60
61
h3. Dans Modeles/Adaptations/fGrille.php :
62
<pre>
63
[[// $where = str_replace(' observat ', ' md.liste_nom_auteur(observateur) ', $where);
64
$where = str_replace(' observat ', ' observateurs_pour_tri ', $where);
65
// $where = str_replace(' struct ', ' md.liste_nom_structure(structure) ', $where);
66
$where = str_replace(' struct ', ' stuctures_pour_tri ', $where);]]
67
</pre>
68
69
h3.  Dans Modeles/GeoJson/gjObs.php :
70
71
- remplacer les appels à md.liste_nom_structure(structure) par structures_pour_tri
72
- remplacer les appels à md.liste_nom_auteur(observateur) par observateurs_pour_tri