Browse Source

Add files

master
Maxime Wack 7 years ago
parent
commit
9b8b405092
10 changed files with 45999 additions and 0 deletions
  1. +4523
    -0
      CMA_Gyn.txt
  2. +165
    -0
      cim10.R
  3. +40824
    -0
      cim10.csv
  4. +74
    -0
      css/cim10.css
  5. +273
    -0
      groupes.csv
  6. BIN
      images/button-closed.png
  7. BIN
      images/button-open.png
  8. BIN
      images/button.png
  9. +136
    -0
      js/cim10.js
  10. +4
    -0
      js/jquery-3.0.0.min.js

+ 4523
- 0
CMA_Gyn.txt
File diff suppressed because it is too large
View File


+ 165
- 0
cim10.R View File

@@ -0,0 +1,165 @@
library(readr)
library(dplyr)
library(stringr)
library(tidyr)
library(purrr)
library(magrittr)

read_csv2("cim10.csv") %>%
mutate(famille_libelle = famille_libelle %>% str_replace("\\w\\d+ ", ""),
CMD_libelle = CMD_libelle %>% str_replace("\\d+ ", "")) %>%
left_join(read_csv("CMA_Gyn.txt", col_names = "code") %>%
mutate(gyn = "O"),
by = c("diag_code" = "code")) -> cim10

# groupes ----------
read_csv2("groupes.csv") %>%
separate(groupe_code, sep = "-", into = c("borne_inf", "borne_sup"), remove = F) %>%
unite(groupe, groupe_code, groupe_libelle, sep = " ", remove = F) -> groupes

cim10 %<>%
mutate(groupe = famille_code %>%
map_chr(. %>%
{
ifelse(identical(groupes$groupe[. >= groupes$borne_inf & . <= groupes$borne_sup], character(0)),
"",
groupes$groupe[. >= groupes$borne_inf & . <= groupes$borne_sup] %>%
str_c(collapse = "|"))
})) %>%
unite(chapitre, chapitre_code, chapitre_libelle, sep = " ") %>%
unite(famille, famille_code, famille_libelle, sep = " ") %>%
unite(diag, diag_code, diag_libelle, sep = " ") %>%
unite(CMD, CMD_code, CMD_libelle, sep = " ") %>%
mutate(famille = ifelse(famille == diag, "", famille)) %>%
mutate(path = str_c(chapitre, groupe, famille, diag, sep = "|") %>%
str_replace("\\|{2,}", "|") %>%
str_split("\\|")) %>%
select(path, CMA, gyn) %>%
filter(!is.na(CMA), CMA > 1 | gyn == "O")

rm(groupes)

cim10 %<>% tree
cim10 %<>% summ_var("CMA")
cim10 %<>% summ_var("gyn")
cim10 %>% tree2html -> cim10_html

tree <- function(df)
{
if ((df$path %>% map_dbl(length) == 0) %>% all)
{
df %>% select(-path)
} else
{
df$path %>% map(head, 1) -> df$nodes
df$path %<>% map(tail, -1)

df$nodes %>% flatten_chr %>% unique %>%
sapply(simplify = F, function(node)
{
df %>% filter(nodes == node) %>% select(-nodes)
}) %>%
sapply(simplify = F, tree)
}
}

add_names <- function(tr, name = NULL)
{
if (tr %>% is.data.frame)
{
tr$name <- name
tr
} else if (tr %>% is.atomic)
{
tr
} else
{
tr %>% map2(tr %>% names, add_names)
}
}

untree <- function(tr)
{
empty_path <- function(tr)
{
if (tr %>% is.data.frame)
{
tr$path <- rep(list(character(0)), nrow(tr))
tr
} else
{
tr %>% map(empty_path)
}
}

tr %<>% empty_path

untree_ <- function(tr)
{
if (tr %>% map_lgl(is.data.frame) %>% all)
{
tr %>% names %>% rep(tr %>% map_dbl(nrow)) -> nodes
tr %>%
reduce(bind_rows) %>%
mutate(path = map2(nodes, path, splice))
} else if (tr %>% is.data.frame)
{
tr
} else
{
tr %>% map(untree_)
}
}

while (!is.data.frame(tr))
{
tr %<>% untree_
}

tr
}

summ_var <- function(tr, varname = NULL)
{
if (varname %>% is.null)
{
return(tr)
}

if (tr %>% is.data.frame | tr %>% is.atomic)
{
tr
} else
{
tr %<>% map(summ_var, varname)
tr[[varname]] <- tr %>% map(varname) %>% unlist %>% unique %>% sort
tr
}
}

tree2html <- function(tr)
{
if (!is.data.frame(tr))
{
tr %>% Filter(is.list, .) %>% names -> names
str_c('<ul>\n',
tr %>% Filter(is.list, .) %>% map2(names, function(tr, name)
{
labels <- c("info", "success", "warning", "danger")
label <- labels[tr$CMA]
label2 <- ifelse(length(tr$gyn) == 1, '<span class = "label label-info">O</span>', '')
str_c("<li>", name, str_c('<span class = "label label-', label, '">', tr$CMA, "</span>", collapse = " "), label2, tree2html(tr), "</li>", sep = " ")
}) %>% str_c(collapse = "\n"),
"</ul>")
}
}

df <- data.frame(path = c(str_c("A", "A1", "A11", sep = "|"),
str_c("A", "A1", "A11", sep = "|"),
str_c("A", "A1", "A12", sep = "|"),
str_c("A", "A2", sep = "|"),
str_c("B", sep = "|")),
var1 = letters[1:5],
var2 = 1:5,
stringsAsFactors = F) %>%
mutate(path = path %>% str_split("\\|"))

+ 40824
- 0
cim10.csv
File diff suppressed because it is too large
View File


+ 74
- 0
css/cim10.css View File

@@ -0,0 +1,74 @@
body
{
font-family: Helvetica, sans-serif;
font-size: 1em;
}

.label
{
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 1em;
}

.label-info
{
background-color: #5bc0de;
}

.label-success
{
background-color: #449d44;
}

.label-warning
{
background-color: #ec971f;
}

.label-danger
{
background-color: #c9302c;
}

#search
{
font-size: 150%;
padding: .5em;
margin: 1em;
width: 80%;
}

.tree li
{
margin:0;
padding:0.2em;
list-style-position:inside;
list-style-image:url('../images/button.png');
cursor:auto;
color: #333;
font-weight: bold;
}

.tree li.open
{
list-style-image:url('../images/button-open.png');
cursor:pointer;
color: #444;
font-weight: normal;
}

.tree li.closed
{
list-style-image:url('../images/button-closed.png');
cursor:pointer;
color: #444;
font-weight: normal;
}

+ 273
- 0
groupes.csv View File

@@ -0,0 +1,273 @@
groupe_code;groupe_libelle
A00-A09;Maladies intestinales infectieuses
A15-A19;Tuberculose
A20-A28;Certaines anthropozoonoses bactériennes
A30-A49;Autres maladies bactériennes
A50-A64;Infections dont le mode de transmission est essentiellement sexuel
A65-A69;Autres maladies à spirochètes
A70-A74;Autres maladies à Chlamydia
A75-A79;Rickettsioses
A80-A89;Infections virales du système nerveux central
A90-A99;Fièvres virales transmises par des arthropodes et fièvres virales hémorragiques
B00-B09;Infections virales caractérisées par des lésions cutanéomuqueuses
B15-B19;Hépatite virale
B20-B24;Maladies dues au virus de l'immunodéficience humaine [VIH]
B25-B34;Autres maladies virales
B35-B49;Mycoses
B50-B64;Maladies dues à des protozoaires
B65-B83;Helminthiases
B85-B89;Pédiculose, acariase et autres infestations
B90-B94;Séquelles de maladies infectieuses et parasitaires
B95-B98;Agents d'infections bactériennes, virales et autres
B99-B99;Autres maladies infectieuses
C00-C97;Tumeurs malignes
C00-C75;Tumeurs malignes, primitives ou présumées primitives, de siège précisé, à l’exception des tissus lymphoïde, hématopoïétique et apparentés
C00-C14;Tumeurs malignes de la lèvre, de la cavité buccale et du pharynx
C15-C26;Tumeurs malignes des organes digestifs
C30-C39;Tumeurs malignes des organes respiratoires et intrathoraciques
C40-C41;Tumeurs malignes des os et du cartilage articulaire
C43-C44;Mélanome malin et autres tumeurs malignes de la peau
C45-C49;Tumeurs malignes du tissu mésothélial et des tissus mous
C50-C50;Tumeur maligne du sein
C51-C58;Tumeurs malignes des organes génitaux de la femme
C60-C63;Tumeurs malignes des organes génitaux de l'homme
C64-C68;Tumeurs malignes des voies urinaires
C69-C72;Tumeurs malignes de l'oeil, de l'encéphale et d'autres parties du système nerveux central
C73-C75;Tumeurs malignes de la thyroïde et d'autres glandes endocrines
C76-C80;Tumeurs malignes de sièges mal définis, secondaires et non précisés
C81-C96;Tumeurs malignes primitives ou présumées primitives des tissus lymphoïde, hématopoïétique et apparentés
C97-C97;Tumeurs malignes de sièges multiples indépendants (primitifs)
D00-D09;Tumeurs in situ
D10-D36;Tumeurs bénignes
D37-D48;Tumeurs à évolution imprévisible ou inconnue
D50-D53;Anémies nutritionnelles
D55-D59;Anémies hémolytiques
D60-D64;Anémies médullaires [aplastiques] et autres anémies
D65-D69;Anomalies de la coagulation, purpura et autres affections hémorragiques
D70-D77;Autres maladies du sang et des organes hématopoïétiques
D80-D89;Certaines anomalies du système immunitaire
E00-E07;Affections de la glande thyroïde
E10-E14;Diabète sucré
E15-E16;Autres anomalies de la régulation du glucose et de la sécrétion pancréatique interne
E20-E35;Maladies des autres glandes endocrines
E40-E46;Malnutrition
E50-E64;Autres carences nutritionnelles
E65-E68;Obésité et autres excès d'apport
E70-E90;Anomalies du métabolisme
F00-F09;Troubles mentaux organiques, y compris les troubles symptomatiques
F10-F19;Troubles mentaux et du comportement liés à l'utilisation de substances psychoactives
F20-F29;Schizophrénie, trouble schizotypique et troubles délirants
F30-F39;Troubles de l'humeur [affectifs]
F40-F48;Troubles névrotiques, troubles liés à des facteurs de stress et troubles somatoformes
F50-F59;Syndromes comportementaux associés à des perturbations physiologiques et à des facteurs physiques
F60-F69;Troubles de la personnalité et du comportement chez l'adulte
F70-F79;Retard mental
F80-F89;Troubles du développement psychologique
F90-F98;Troubles du comportement et troubles émotionnels apparaissant habituellement durant l'enfance et l'adolescence
F99-F99;Trouble mental, sans précision
G00-G09;Maladies inflammatoires du système nerveux central
G10-G14;Affections dégénératives systémiques affectant principalement le système nerveux central
G20-G26;Syndromes extrapyramidaux et troubles de la motricité
G30-G32;Autres affections dégénératives du système nerveux
G35-G37;Maladies démyélinisantes du système nerveux central
G40-G47;Affections épisodiques et paroxystiques
G50-G59;Affections des nerfs et des racines et plexus nerveux
G60-G64;Polynévrites et autres affections du système nerveux périphérique
G70-G73;Affections musculaires et neuromusculaires
G80-G83;Paralysies cérébrales et autres syndromes paralytiques
G90-G99;Autres affections du système nerveux
H00-H06;Affections de la paupière, de l'appareil lacrymal et de l'orbite
H10-H13;Affections de la conjonctive
H15-H22;Affections de la sclérotique, de la cornée, de l'iris et du corps ciliaire
H25-H28;Affections du cristallin
H30-H36;Affections de la choroïde et de la rétine
H40-H42;Glaucome
H43-H45;Affections du corps vitré et du globe oculaire
H46-H48;Affections du nerf et des voies optiques
H49-H52;Affections des muscles oculaires, des mouvements binoculaires, de l'accommodation et de la réfraction
H53-H54;Troubles de la vision et cécité
H55-H59;Autres affections de l'oeil et de ses annexes
H60-H62;Maladies de l'oreille externe
H65-H75;Maladies de l'oreille moyenne et de l'apophyse mastoïde
H80-H83;Maladies de l'oreille interne
H90-H95;Autres affections de l'oreille
I00-I02;Rhumatisme articulaire aigu
I05-I09;Cardiopathies rhumatismales chroniques
I10-I15;Maladies hypertensives
I20-I25;Cardiopathies ischémiques
I26-I28;Affections cardiopulmonaires et maladies de la circulation pulmonaire
I30-I52;Autres formes de cardiopathies
I60-I69;Maladies cérébrovasculaires
I70-I79;Maladies des artères, artérioles et capillaires
I80-I89;Maladies des veines, des vaisseaux et des ganglions lymphatiques, non classées ailleurs
I95-I99;Troubles autres et non précisés de l'appareil circulatoire
J00-J06;Affections aigües des voies respiratoires supérieures
J09-J18;Grippe et pneumopathie
J20-J22;Autres affections aigües des voies respiratoires inférieures
J30-J39;Autres maladies des voies respiratoires supérieures
J40-J47;Maladies chroniques des voies respiratoires inférieures
J60-J70;Maladies du poumon dues à des agents externes
J80-J84;Autres maladies respiratoires touchant principalement le tissu interstitiel
J85-J86;Maladies suppurées et nécrotiques des voies respiratoires inférieures
J90-J94;Autres affections de la plèvre
J95-J99;Autres maladies de l'appareil respiratoire
K00-K14;Maladies de la cavité buccale, des glandes salivaires et des maxillaires
K20-K31;Maladies de l'oesophage, de l'estomac et du duodénum
K35-K38;Maladies de l'appendice
K40-K46;Hernies
K50-K52;Entérites et colites non infectieuses
K55-K64;Autres maladies de l'intestin
K65-K67;Maladies du péritoine
K70-K77;Maladies du foie
K80-K87;Maladies de la vésicule biliaire, des voies biliaires et du pancréas
K90-K93;Autres maladies de l'appareil digestif
L00-L08;Infections de la peau et du tissu cellulaire souscutané
L10-L14;Dermatoses bulleuses
L20-L30;Dermatoses et exémas [eczémas]
L40-L45;Lésions papulosquameuses
L50-L54;Urticaire et érythème
L55-L59;Affections de la peau et du tissu cellulaire souscutané liées à une irradiation
L60-L75;Maladies des phanères et des annexes de la peau
L80-L99;Autres affections de la peau et du tissu cellulaire souscutané
M00-M25;Arthropathies
M00-M03;Arthropathies infectieuses
M05-M14;Polyarthropathies inflammatoires
M15-M19;Arthroses
M20-M25;Autres affections articulaires
M30-M36;Affections disséminées du tissu conjonctif
M40-M54;Dorsopathies
M40-M43;Dorsopathies avec déformation
M45-M49;Spondylopathies
M50-M54;Autres dorsopathies
M60-M79;Affections des tissus mous
M60-M63;Myopathies
M65-M68;Atteintes des synoviales et des tendons
M70-M79;Autres affections des tissus mous
M80-M94;Ostéopathies et chondropathies
M80-M85;Anomalies de la densité et de la structure osseuses
M86-M90;Autres ostéopathies
M91-M94;Chondropathies
M95-M99;Autres maladies du système ostéoarticulaire, des muscles et du tissu conjonctif
N00-N08;Glomérulopathies
N10-N16;Maladies rénales tubulo-interstitielles
N17-N19;Insuffisance rénale
N20-N23;Lithiases urinaires
N25-N29;Autres affections du rein et de l'uretère
N30-N39;Autres maladies de l'appareil urinaire
N40-N51;Maladies des organes génitaux de l'homme
N60-N64;Affections du sein
N70-N77;Affections inflammatoires des organes pelviens de la femme
N80-N98;Affections non inflammatoires de l'appareil génital de la femme
N99-N99;Autres affections de l'appareil génito-urinaire
O00-O08;Grossesse se terminant par un avortement
O10-O16;OEdème, protéinurie et hypertension au cours de la grossesse, de l'accouchement et de la puerpéralité
O20-O29;Autres affections maternelles liées principalement à la grossesse
O30-O48;Soins maternels liés au foetus et à la cavité amniotique, et problèmes possibles posés par l'accouchement
O60-O75;Complications du travail et de l'accouchement
O80-O84;Accouchement
O85-O92;Complications principalement liées à la puerpéralité
O94-O99;Autres problèmes obstétricaux, non classés ailleurs
P00-P04;Foetus et nouveau-né affectés par des troubles maternels et par des complications de la grossesse, du travail et de l'accouchement
P05-P08;Anomalies liées à la durée de la gestation et à la croissance du foetus
P10-P15;Traumatismes obstétricaux
P20-P29;Affections respiratoires et cardiovasculaires spécifiques de la période périnatale
P35-P39;Infections spécifiques de la période périnatale
P50-P61;Affections hémorragiques et hématologiques du foetus et du nouveau-né
P70-P74;Anomalies endocriniennes et métaboliques transitoires spécifiques du foetus et du nouveau-né
P75-P78;Affections de l'appareil digestif du foetus et du nouveau-né
P80-P83;Affections intéressant les téguments et la régulation thermique du foetus et du nouveau-né
P90-P96;Autres affections dont l'origine se situe dans la période périnatale
Q00-Q07;Malformations congénitales du système nerveux
Q10-Q18;Malformations congénitales de l'oeil, de l'oreille, de la face et du cou
Q20-Q28;Malformations congénitales de l'appareil circulatoire
Q30-Q34;Malformations congénitales de l'appareil respiratoire
Q35-Q37;Fente labiale et fente palatine
Q38-Q45;Autres malformations congénitales de l'appareil digestif
Q50-Q56;Malformations congénitales des organes génitaux
Q60-Q64;Malformations congénitales de l'appareil urinaire
Q65-Q79;Malformations congénitales du système ostéoarticulaire et des muscles
Q80-Q89;Autres malformations congénitales
Q90-Q99;Anomalies chromosomiques, non classées ailleurs
R00-R09;Symptômes et signes relatifs aux appareils circulatoire et respiratoire
R10-R19;Symptômes et signes relatifs à l'appareil digestif et à l'abdomen
R20-R23;Symptômes et signes relatifs à la peau et au tissu cellulaire souscutané
R25-R29;Symptômes et signes relatifs aux systèmes nerveux et ostéomusculaire
R30-R39;Symptômes et signes relatifs à l'appareil urinaire
R40-R46;Symptômes et signes relatifs à la connaissance, la perception, l'humeur et le comportement
R47-R49;Symptômes et signes relatifs au language et à la voix
R50-R69;Symptômes et signes généraux
R70-R79;Résultats anormaux de l'examen du sang, sans diagnostic
R80-R82;Résultats anormaux de l'examen des urines, sans diagnostic
R83-R89;Résultats anormaux de l'examen d'autres liquides, substances et tissus, sans diagnostic
R90-R94;Résultats anormaux d'imagerie diagnostique et d'épreuves fonctionnelles, sans diagnostic
R95-R99;Causes de mortalité mal définies et inconnues
S00-S09;Lésions traumatiques de la tête
S10-S19;Lésions traumatiques du cou
S20-S29;Lésions traumatiques du thorax
S30-S39;Lésions traumatiques de l'abdomen, des lombes, du rachis lombaire et du bassin
S40-S49;Lésions traumatiques de l'épaule et du bras
S50-S59;Lésions traumatiques du coude et de l'avant-bras
S60-S69;Lésions traumatiques du poignet et de la main
S70-S79;Lésions traumatiques de la hanche et de la cuisse
S80-S89;Lésions traumatiques du genou et de la jambe
S90-S99;Lésions traumatiques de la cheville et du pied
T00-T07;Lésions traumatiques de plusieurs parties du corps
T08-T14;Lésions traumatiques de siège non précisé du tronc, membre ou autre région du corps
T15-T19;Effets dus à un corps étranger ayant pénétré dans un orifice naturel
T20-T32;Brulures et corrosions
T20-T25;Brulures et corrosions de la surface externe du corps, selon la localisation
T26-T28;Brulures et corrosions de l'oeil et des organes internes
T29-T32;Brulures et corrosions de parties du corps, multiples et non précisées
T33-T35;Gelures
T36-T50;Intoxications par des médicaments et des substances biologiques
T51-T65;Effets toxiques de substances d'origine essentiellement non médicinale
T66-T78;Effets de causes externes, autres et non précisés
T79-T79;Certaines complications précoces des traumatismes
T80-T88;Complications de soins chirurgicaux et médicaux, non classées ailleurs
T90-T98;Séquelles de lésions traumatiques, d'empoisonnements et d'autres conséquences de causes externes
V01-X59;Accidents
V01-V99;Accidents de transport
V01-V09;Piéton blessé dans un accident de transport
V10-V19;Cycliste blessé dans un accident de transport
V20-V29;Motocycliste blessé dans un accident de transport
V30-V39;Occupant d'un véhicule à trois roues blessé dans un accident de transport
V40-V49;Occupant d'une automobile blessé dans un accident de transport
V50-V59;Occupant d'une camionnette blessé dans un accident de transport
V60-V69;Occupant d'un véhicule lourd blessé dans un accident de transport
V70-V79;Occupant d'un autobus blessé dans un accident de transport
V80-V89;Autres accidents de transport terrestre
V90-V94;Accidents de transport par eau
V95-V97;Accidents de transport aérien et de vol spatial
V98-V99;Accidents de transport, autres et sans précision
W00-X59;Autres causes externes de lésion traumatique accidentelle
W00-W19;Chutes
W20-W49;Exposition à des forces mécaniques
W50-W64;Exposition à des forces animées
W65-W74;Noyade et submersion accidentelles
W75-W84;Autres accidents affectant la respiration
W85-W99;Exposition au courant électrique, aux rayonnements et à des températures et pressions extrêmes de l'air ambiant
X00-X09;Exposition à la fumée, au feu et aux flammes
X10-X19;Contact avec une source de chaleur et des substances brulantes
X20-X29;Contact avec des animaux venimeux et des plantes vénéneuses
X30-X39;Exposition aux forces de la nature
X40-X49;Intoxication accidentelle par des substances nocives et exposition à ces substances
X50-X57;Surmenage, voyages et privations
X58-X59;Exposition accidentelle à des facteurs, autres et sans précision
X60-X84;Lésions auto-infligées
X85-Y09;Agressions
Y10-Y34;Evénements dont l'intention n'est pas déterminée
Y35-Y36;Intervention de la force publique et faits de guerre
Y40-Y84;Complications de soins médicaux et chirurgicaux
Y40-Y59;Médicaments et substances biologiques ayant provoqué des effets indésirables au cours de leur usage thérapeutique
Y60-Y69;Accidents et complications au cours d'actes médicaux et chirurgicaux
Y70-Y82;Dispositifs médicaux associés à des accidents au cours d'actes diagnostiques et thérapeutiques
Y83-Y84;Actes chirurgicaux et autres actes médicaux à l'origine de réactions anormales du patient ou de complications ultérieures, sans mention d'accident au cours de l'intervention
Y85-Y89;Séquelles de causes externes de morbidité et de mortalité
Y90-Y98;Facteurs supplémentaires se rapportant aux causes de morbidité et de mortalité classées ailleurs
Z00-Z13;Sujets en contact avec les services de santé pour des examens divers
Z20-Z29;Sujets pouvant courir un risque lié à des maladies transmissibles
Z30-Z39;Sujets ayant recours aux services de santé pour des motifs liés à la reproduction
Z40-Z54;Sujets ayant recours aux services de santé pour des actes médicaux et des soins spécifiques
Z55-Z65;Sujets dont la santé peut être menacée par des conditions socioéconomiques et psychosociales
Z70-Z76;Sujets ayant recours aux services de santé pour d'autres motifs
Z80-Z99;Sujets dont la santé peut être menacée en raison d'antécédents personnels et familiaux et de certaines affections

BIN
images/button-closed.png View File

Before After
Width: 11  |  Height: 11  |  Size: 256B

BIN
images/button-open.png View File

Before After
Width: 11  |  Height: 11  |  Size: 240B

BIN
images/button.png View File

Before After
Width: 11  |  Height: 11  |  Size: 230B

+ 136
- 0
js/cim10.js View File

@@ -0,0 +1,136 @@
var treeInit = function(root, searchbox)
{
$(root).addClass("tree");
// Attribut value de chaque li contient l'ensemble du texte de ses descendants (chemin d'accès aux résultats de recherche facile)
$(root).find('li').
map(function()
{
$(this).
attr("value",
$(this).
text().
replace(/^ *\n/mg, "").
replace(/ +/g, " ").
replace(/( \d)*/g, "").
replace(/ O /g, " ").
toLowerCase())
});

// Tous les ul sauf le premier son cachés, et leurs parents li prennent l'attribut closed
$(root).
find('li').
children('ul').hide().
parent().addClass("closed");

// Évènements
// Cliquer pour ouvrir/fermer un noeud
$(root).find('li').click(toggleNode);
// Chercher dans l'arbre en tapant dans le champ de recherche
$(searchbox).keyup($(root), searchTree);
// Recherche par niveau de cma au clic sur un niveau de cma
$(root).find('li > span').click($(searchbox), searchCMA);
}

var toggleNode = function(event)
{
var target = $(event.target);

if (target.hasClass("closed"))
{
// Deplier explicitement fait toujours tout afficher
target.
children('ul').slideDown().
find('li').slideDown();
// Et switch l'attribut du li
target.
removeClass("closed").
addClass("open");
}
else if (target.hasClass("open"))
{
// Replier explicitement ne fait que cacher l'ul
target.
children('ul').slideUp();
// Et switch l'attribut du li
target.
removeClass("open").
addClass("closed");
}
event.stopPropagation();
}

var searchTree = function(event)
{
var tree = event.data;
var val = $(event.target).val().toLowerCase();

// à chaque actualisation de la recherche ferme tout et rétablit l'attribut closed
$(tree).find('li').
children('ul').hide().
parent().addClass("closed").
removeClass("open");

// si le champ n'est pas assez rempli on remontre bien tous les noeuds
if (val.length < 1)
{
$(tree).find('li').show();
return;
}

var result = $(tree).find('li[value *= "'+ val +'"]');

// on cache tous les noeuds puis on montre et déplie les résultats
$(tree).find('li').hide();
result.show().
children('ul').show();

// si tous les sous-noeuds sont montrés par la recherche, on met le statut du parent à open
result.children('ul').each(function()
{
if ($(this).children('li[style *= "none"]').length == 0)
{
$(this).parent().addClass("open").removeClass("closed");
}
});
}

var searchCMA = function(event)
{
var searchbox = event.data;
var this_ = $(event.target).parent();
var cma = this_.add(this_.find('li > span:contains("' + $(this).text() + '")').parent());

// cacher tous les sous-noeuds
this_.find('li').hide();

// capture de résultats de la recherche sous le noeud pour continuer à les afficher
if (typeof $(searchbox).val() != 'undefined')
{
var result = this_.find('li[value *= "'+ $(searchbox).val().toLowerCase() +'"]');

result.show().
children('ul').show();
}

// this_ est-il une feuille ?
var leaf = !(this_.hasClass("closed") || this_.hasClass("open"))

this_.show().
addClass("closed").
removeClass("open").
children('ul').show();

if (leaf)
this_.removeClass("closed");

cma.show().
children('ul').show();

cma.children('ul').each(function()
{
if ($(this).children('li[style *= "none"]').length == 0)
{
$(this).parent().addClass("open").removeClass("closed");
}
});
}

+ 4
- 0
js/jquery-3.0.0.min.js
File diff suppressed because it is too large
View File


Loading…
Cancel
Save