app: Ajoute URL & facteur d’importance @ mock
This commit is contained in:
parent
268289f1f7
commit
c5a408251c
|
@ -15,7 +15,8 @@ export const terms = {
|
|||
name: 'Grippe',
|
||||
alias: [],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000035,
|
||||
weight: -10.68959934320834,
|
||||
url: 'https://fr.wikipedia.org/wiki/Grippe',
|
||||
},
|
||||
Q154882: {
|
||||
id: 'Q154882',
|
||||
|
@ -24,14 +25,16 @@ export const terms = {
|
|||
'Maladie des légionnaires',
|
||||
],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000015,
|
||||
weight: -11.05394782419729,
|
||||
url: 'https://fr.wikipedia.org/wiki/Légionellose',
|
||||
},
|
||||
Q155098: {
|
||||
id: 'Q155098',
|
||||
name: 'Leptospirose',
|
||||
alias: [],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.00001,
|
||||
weight: -11.3969031483456 ,
|
||||
url: 'https://fr.wikipedia.org/wiki/Leptospirose',
|
||||
},
|
||||
Q326663: {
|
||||
id: 'Q326663',
|
||||
|
@ -47,23 +50,28 @@ export const terms = {
|
|||
'Maladie de Kumlinge',
|
||||
],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000001,
|
||||
weight: -13.862833353191204,
|
||||
url: 'https://fr.wikipedia.org/wiki/Encéphalite_à_tiques',
|
||||
},
|
||||
Q133780: {
|
||||
id: 'Q133780',
|
||||
name: 'Peste',
|
||||
alias: [],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000032,
|
||||
weight: -10.356303313736584,
|
||||
url: 'https://fr.wikipedia.org/wiki/Peste',
|
||||
},
|
||||
Q38933: {
|
||||
id: 'Q38933',
|
||||
name: 'Fièvre',
|
||||
alias: [
|
||||
'Pyrexie',
|
||||
'Hyperthermie',
|
||||
'État fébrile',
|
||||
],
|
||||
types: [termTypes.symptom],
|
||||
weight: 0,
|
||||
weight: -10.83729224261442,
|
||||
url: 'https://wikimedi.ca/wiki/Fièvre',
|
||||
},
|
||||
Q474959: {
|
||||
id: 'Q474959',
|
||||
|
@ -72,7 +80,8 @@ export const terms = {
|
|||
'Douleur musculaire',
|
||||
],
|
||||
types: [termTypes.symptom],
|
||||
weight: 0,
|
||||
weight: -12.475240614075794,
|
||||
url: 'https://fr.wikipedia.org/wiki/Myalgie',
|
||||
},
|
||||
Q86: {
|
||||
id: 'Q86',
|
||||
|
@ -81,7 +90,8 @@ export const terms = {
|
|||
'Mal de tête',
|
||||
],
|
||||
types: [termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -11.042885864744003,
|
||||
url: 'https://wikimedi.ca/wiki/C%C3%A9phal%C3%A9e',
|
||||
},
|
||||
Q1115038: {
|
||||
id: 'Q1115038',
|
||||
|
@ -91,14 +101,16 @@ export const terms = {
|
|||
'Écoulement nasal',
|
||||
],
|
||||
types: [termTypes.symptom],
|
||||
weight: 0,
|
||||
weight: -13.291547222741679,
|
||||
url: 'https://fr.wikipedia.org/wiki/Rhinorrh%C3%A9e',
|
||||
},
|
||||
Q9690: {
|
||||
id: 'Q9690',
|
||||
name: 'Fatigue',
|
||||
alias: [],
|
||||
types: [termTypes.symptom],
|
||||
weight: 0,
|
||||
weight: -12.8932707907014,
|
||||
url: 'https://wikimedi.ca/wiki/Fatigue',
|
||||
},
|
||||
Q127076: {
|
||||
id: 'Q127076',
|
||||
|
@ -109,7 +121,8 @@ export const terms = {
|
|||
'Vomir',
|
||||
],
|
||||
types: [termTypes.symptom, termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -11.76320423121043,
|
||||
url: 'https://fr.wikipedia.org/wiki/Vomissement',
|
||||
},
|
||||
Q178061: {
|
||||
id: 'Q178061',
|
||||
|
@ -118,7 +131,8 @@ export const terms = {
|
|||
'Insuffisance circulatoire aiguë',
|
||||
],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000038,
|
||||
weight: -12.48541367835562,
|
||||
url: 'https://fr.wikipedia.org/wiki/État_de_choc_circulatoire',
|
||||
},
|
||||
Q35805: {
|
||||
id: 'Q35805',
|
||||
|
@ -128,53 +142,64 @@ export const terms = {
|
|||
'Toussote',
|
||||
],
|
||||
types: [termTypes.symptom, termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -12.62883965458582,
|
||||
url: 'https://wikimedi.ca/wiki/Toux',
|
||||
},
|
||||
Q647099: {
|
||||
id: 'Q647099',
|
||||
name: 'Hémoptysie',
|
||||
alias: [
|
||||
'Expectoration sanglante',
|
||||
'Crachat sanguin',
|
||||
],
|
||||
types: [termTypes.symptom],
|
||||
weight: 0,
|
||||
weight: -11.816428715881282,
|
||||
url: 'https://wikimedi.ca/wiki/Hémoptysies',
|
||||
},
|
||||
Q653197: {
|
||||
id: 'Q653197',
|
||||
name: 'Rash',
|
||||
alias: [],
|
||||
alias: [
|
||||
'Éruption cutanée',
|
||||
],
|
||||
types: [termTypes.symptom, termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -13.089336365426849,
|
||||
url: 'https://fr.wikipedia.org/wiki/Rash_(médecine)',
|
||||
},
|
||||
Q160796: {
|
||||
id: 'Q160796',
|
||||
name: 'Syndrome confusionnel',
|
||||
alias: [
|
||||
'Confusion mentale',
|
||||
'Délirium',
|
||||
],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.000004,
|
||||
weight: -12.406564919730442,
|
||||
url: 'https://wikimedi.ca/wiki/Délirium',
|
||||
},
|
||||
Q186235: {
|
||||
id: 'Q186235',
|
||||
name: 'Myocardite',
|
||||
alias: [],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.0000075,
|
||||
weight: -11.874480758774315,
|
||||
url: 'https://fr.wikipedia.org/wiki/Myocardite',
|
||||
},
|
||||
Q476921: {
|
||||
id: 'Q476921',
|
||||
name: 'Insuffisance rénale',
|
||||
alias: [],
|
||||
types: [termTypes.disease],
|
||||
weight: 0.0000046,
|
||||
weight: -12.359763775778456,
|
||||
url: 'https://fr.wikipedia.org/wiki/Insuffisance_rénale',
|
||||
},
|
||||
Q281289: {
|
||||
id: 'Q281289',
|
||||
name: 'Photophobie',
|
||||
alias: [],
|
||||
types: [termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -12.568109501931065,
|
||||
url: 'https://fr.wikipedia.org/wiki/Photophobie',
|
||||
},
|
||||
Q159557: {
|
||||
id: 'Q159557',
|
||||
|
@ -185,7 +210,8 @@ export const terms = {
|
|||
'Perte de connaissance',
|
||||
],
|
||||
types: [termTypes.sign],
|
||||
weight: 0,
|
||||
weight: -11.415040299689283,
|
||||
url: 'https://wikimedi.ca/wiki/Coma',
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -14,36 +14,102 @@ export const termTypes = {
|
|||
sign: 'Signe',
|
||||
};
|
||||
|
||||
/**
|
||||
* Crée un valideur de type de propriété React supportant l’extension
|
||||
* `.isRequired` pour marquer une propriété comme requise.
|
||||
*
|
||||
* @param basicValidator Fonction basique de validation.
|
||||
* @return Fonction augmentée supportant l’extension `.isRequired`.
|
||||
*/
|
||||
const makePropType = basicValidator =>
|
||||
{
|
||||
const validator = (props, propName, componentName) =>
|
||||
{
|
||||
// Version optionnelle : on n’appelle le valideur que si la propriété a
|
||||
// été passée
|
||||
if (propName in props)
|
||||
{
|
||||
return basicValidator(props, propName, componentName);
|
||||
}
|
||||
};
|
||||
|
||||
validator.isRequired = (props, propName, componentName) =>
|
||||
{
|
||||
// Version obligatoire : on jette une erreur si la propriété n’a pas
|
||||
// été passée puis on procède à la validation
|
||||
if (!(propName in props))
|
||||
{
|
||||
return new Error(
|
||||
`Missing prop “${propName}” in props supplied to `
|
||||
+ `${componentName}.`
|
||||
);
|
||||
}
|
||||
|
||||
return basicValidator(props, propName, componentName);
|
||||
};
|
||||
|
||||
return validator;
|
||||
};
|
||||
|
||||
/**
|
||||
* Type de terme.
|
||||
*/
|
||||
export const TermType = PropTypes.oneOf(Object.values(termTypes));
|
||||
|
||||
/**
|
||||
* URL.
|
||||
*/
|
||||
const URL = makePropType((props, propName, componentName) =>
|
||||
{
|
||||
const value = props[propName];
|
||||
|
||||
if (typeof value !== 'string')
|
||||
{
|
||||
return new Error(
|
||||
`URL passed as ${componentName}’s ${propName} prop must be `
|
||||
+ `a string, not a ${typeof value}.`
|
||||
);
|
||||
}
|
||||
|
||||
if (!value.startsWith('http://') && !value.startsWith('https://'))
|
||||
{
|
||||
return new Error(
|
||||
`URL “${value}”, passed as ${componentName}’s ${propName} `
|
||||
+ `prop, does not start with “http://” or “https://”.`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Terme.
|
||||
*
|
||||
* Peut être une maladie, un symptôme ou un signe.
|
||||
*/
|
||||
export const Term = PropTypes.exact({
|
||||
// Identifiant unique
|
||||
id: PropTypes.string.isRequired,
|
||||
|
||||
// Nom canonique
|
||||
name: PropTypes.string.isRequired,
|
||||
|
||||
// Noms alternatifs
|
||||
alias: PropTypes.arrayOf(PropTypes.string).isRequired,
|
||||
|
||||
// Types (maladie, symptôme, signe)
|
||||
types: PropTypes.arrayOf(TermType).isRequired,
|
||||
|
||||
// Facteur d’importance
|
||||
weight: PropTypes.number.isRequired,
|
||||
|
||||
// Adresse de la ressource de référence
|
||||
url: URL.isRequired,
|
||||
});
|
||||
|
||||
/**
|
||||
* Relation entre deux termes.
|
||||
*/
|
||||
export const Relation = (props, propName, componentName) =>
|
||||
export const Relation = makePropType((props, propName, componentName) =>
|
||||
{
|
||||
if (!(propName in props))
|
||||
{
|
||||
return new Error(
|
||||
`Missing ${propName} in props supplied to ${componentName}.`
|
||||
);
|
||||
}
|
||||
|
||||
const value = props[propName];
|
||||
|
||||
if (!Array.isArray(value))
|
||||
|
@ -59,14 +125,4 @@ export const Relation = (props, propName, componentName) =>
|
|||
`Relation ${propName} must contain exactly two entries.`
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
typeof value[0] !== 'string'
|
||||
|| typeof value[1] !== 'string'
|
||||
)
|
||||
{
|
||||
return new Error(
|
||||
`Entries of relation ${propName} must be string IDs.`
|
||||
);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue