-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ajout de la fonctionnalité permettant de choisir le type de vaccin #143
base: dev
Are you sure you want to change the base?
Changes from 8 commits
1198727
c08569a
bde62ec
7bb403a
053631e
1f3997a
60c6051
2dd2e8c
f22280c
4e84f80
e530d61
669e3f1
16e6076
d692a01
ebe7ada
57f5b02
fe2e3de
6609d34
dcf84f1
50527d7
1c4441a
55dadef
77ad7b0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -15,7 +15,10 @@ import { | |||||||||||||||||||
Lieu, LieuAffichableAvecDistance, LieuxAvecDistanceParDepartement, | ||||||||||||||||||||
LieuxParDepartement, | ||||||||||||||||||||
State, TriCentre, | ||||||||||||||||||||
TRIS_CENTRE | ||||||||||||||||||||
TRIS_CENTRE, | ||||||||||||||||||||
CodeTypeVaccin, | ||||||||||||||||||||
FILTRE_TYPE_VACCIN, | ||||||||||||||||||||
TYPES_VACCIN, | ||||||||||||||||||||
} from "../state/State"; | ||||||||||||||||||||
import {Dates} from "../utils/Dates"; | ||||||||||||||||||||
import {Strings} from "../utils/Strings"; | ||||||||||||||||||||
|
@@ -125,7 +128,8 @@ export abstract class AbstractVmdRdvView extends LitElement { | |||||||||||||||||||
libelleUrlPathDuDepartement(departement!), | ||||||||||||||||||||
commune.code, | ||||||||||||||||||||
commune.codePostal, | ||||||||||||||||||||
libelleUrlPathDeCommune(commune) | ||||||||||||||||||||
libelleUrlPathDeCommune(commune), | ||||||||||||||||||||
'all' | ||||||||||||||||||||
); | ||||||||||||||||||||
return; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
@@ -144,7 +148,7 @@ export abstract class AbstractVmdRdvView extends LitElement { | |||||||||||||||||||
|
||||||||||||||||||||
async departementSelected(departement: Departement, triggerNavigation: boolean): Promise<void> { | ||||||||||||||||||||
if(this.communeSelectionnee) { | ||||||||||||||||||||
Router.navigateToRendezVousAvecDepartement(departement.code_departement, libelleUrlPathDuDepartement(departement)); | ||||||||||||||||||||
Router.navigateToRendezVousAvecDepartement(departement.code_departement, libelleUrlPathDuDepartement(departement),this.typeVaccin); | ||||||||||||||||||||
return; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
|
@@ -184,6 +188,18 @@ export abstract class AbstractVmdRdvView extends LitElement { | |||||||||||||||||||
</vmd-commune-or-departement-selector> | ||||||||||||||||||||
</div> | ||||||||||||||||||||
</div> | ||||||||||||||||||||
<div class="rdvForm-fields row align-items-center"> | ||||||||||||||||||||
<label class="col-sm-24 col-md-auto mb-md-3"> | ||||||||||||||||||||
Je recherche un vaccin de type : | ||||||||||||||||||||
</label> | ||||||||||||||||||||
<div class="col"> | ||||||||||||||||||||
<vmd-button-switch class="mb-3" | ||||||||||||||||||||
codeSelectionne="${this.typeVaccin}" | ||||||||||||||||||||
.options="${Array.from(FILTRE_TYPE_VACCIN.values()).map(tc => ({code: tc.codeTypeVaccin, libelle: tc.libelle }))}" | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. On avait déjà parlé de ARNm et adenovirus avant, ça serait peut être bien de mettre There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oui on en avait parlé sur le chat. Il faut que je corrige mais cela va aussi dépendre de où va le filtre au final. |
||||||||||||||||||||
@changed="${(event: ValueStrCustomEvent<CodeTypeVaccin>) => this.critereVaccinUpdated(event.detail.value)}"> | ||||||||||||||||||||
</vmd-button-switch> | ||||||||||||||||||||
</div> | ||||||||||||||||||||
</div> | ||||||||||||||||||||
${this.renderAdditionnalSearchCriteria()} | ||||||||||||||||||||
</div> | ||||||||||||||||||||
|
||||||||||||||||||||
|
@@ -352,7 +368,7 @@ export abstract class AbstractVmdRdvView extends LitElement { | |||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
if (this.codeDepartementSelectionne) { | ||||||||||||||||||||
Router.navigateToRendezVousAvecDepartement(this.codeDepartementSelectionne, libelleUrlPathDuDepartement(this.departementSelectionne!)); | ||||||||||||||||||||
Router.navigateToRendezVousAvecDepartement(this.codeDepartementSelectionne, libelleUrlPathDuDepartement(this.departementSelectionne!),this.typeVaccin); | ||||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
|
@@ -404,6 +420,40 @@ export abstract class AbstractVmdRdvView extends LitElement { | |||||||||||||||||||
throw new Error(`Unsupported tri : ${tri}`); | ||||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
protected filterTypeVaccin(vaccine_type: Array, typeVaccin: CodeTypeVaccin) { | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Le typage de There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. en effet, je modifie |
||||||||||||||||||||
if(typeVaccin === 'all') { | ||||||||||||||||||||
return true; | ||||||||||||||||||||
} else { | ||||||||||||||||||||
let result = false; | ||||||||||||||||||||
|
||||||||||||||||||||
if(vaccine_type && vaccine_type.length) | ||||||||||||||||||||
{ | ||||||||||||||||||||
if(vaccine_type.indexOf(',')!==-1) | ||||||||||||||||||||
{ | ||||||||||||||||||||
let arrayVaccinne = vaccine_type.split(','); | ||||||||||||||||||||
mccob marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||||||||||||
|
||||||||||||||||||||
arrayVaccinne.forEach(function(item){ | ||||||||||||||||||||
if(TYPES_VACCIN[item.trim()]==typeVaccin) | ||||||||||||||||||||
{ | ||||||||||||||||||||
result = true; | ||||||||||||||||||||
} | ||||||||||||||||||||
}); | ||||||||||||||||||||
}else{ | ||||||||||||||||||||
if(TYPES_VACCIN[vaccine_type.trim()]==typeVaccin) | ||||||||||||||||||||
{ | ||||||||||||||||||||
result = true; | ||||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. il ya un problème avec la touche espace ? ^^ |
||||||||||||||||||||
return result; | ||||||||||||||||||||
}else{ | ||||||||||||||||||||
// Not hidding vaccine center of vaccine type is unknown | ||||||||||||||||||||
result = true; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
return result; | ||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hello, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Le problème est qu'elle est nécessaire au moins pour la boucle forEach : la valeur finale du result est nécessaire dans ce cadre. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. J'ai l'impression que tout ça peut se simplifier en :
non ? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. La méthode There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Merci |
||||||||||||||||||||
} | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
abstract libelleLieuSelectionne(): TemplateResult; | ||||||||||||||||||||
abstract afficherLieuxParDepartement(lieuxParDepartement: LieuxParDepartement): LieuxAvecDistanceParDepartement; | ||||||||||||||||||||
|
@@ -414,7 +464,8 @@ export class VmdRdvParCommuneView extends AbstractVmdRdvView { | |||||||||||||||||||
@property({type: String}) codeCommuneSelectionne: string | undefined = undefined; | ||||||||||||||||||||
@property({type: String}) codePostalSelectionne: string | undefined = undefined; | ||||||||||||||||||||
|
||||||||||||||||||||
@property({type: String}) critèreDeTri: 'date' | 'distance' = 'distance' | ||||||||||||||||||||
@property({type: String}) critèreDeTri: 'date' | 'distance' = 'distance'; | ||||||||||||||||||||
@property({type: String}) typeVaccin: 'all' | 'arnm' | 'adenovirus' = 'all'; | ||||||||||||||||||||
|
||||||||||||||||||||
preventRafraichissementLieux() { | ||||||||||||||||||||
return !this.communeSelectionnee; | ||||||||||||||||||||
|
@@ -436,7 +487,7 @@ export class VmdRdvParCommuneView extends AbstractVmdRdvView { | |||||||||||||||||||
_onRefreshPageWhenValidParams() { | ||||||||||||||||||||
// To be overriden | ||||||||||||||||||||
if(this.departementSelectionne && this.communeSelectionnee && this.codePostalSelectionne) { | ||||||||||||||||||||
Router.navigateToRendezVousAvecCommune(this.critèreDeTri, this.departementSelectionne.code_departement, libelleUrlPathDuDepartement(this.departementSelectionne), this.communeSelectionnee.code, this.communeSelectionnee.codePostal, libelleUrlPathDeCommune(this.communeSelectionnee)); | ||||||||||||||||||||
Router.navigateToRendezVousAvecCommune(this.critèreDeTri, this.departementSelectionne.code_departement, libelleUrlPathDuDepartement(this.departementSelectionne), this.communeSelectionnee.code, this.communeSelectionnee.codePostal, libelleUrlPathDeCommune(this.communeSelectionnee),this.typeVaccin); | ||||||||||||||||||||
return 'return'; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
|
@@ -525,6 +576,7 @@ export class VmdRdvParCommuneView extends AbstractVmdRdvView { | |||||||||||||||||||
.concat([...lieuxIndisponibles].map(l => ({...l, disponible: false}))) | ||||||||||||||||||||
.map(l => ({...l, distance: distanceAvec(l) })) | ||||||||||||||||||||
.filter(l => !l.distance || l.distance < MAX_DISTANCE_CENTRE_IN_KM) | ||||||||||||||||||||
.filter(l => this.filterTypeVaccin(l.vaccine_type,this.typeVaccin)) | ||||||||||||||||||||
.sortBy(l => this.extraireFormuleDeTri(l, this.critèreDeTri)) | ||||||||||||||||||||
.build() | ||||||||||||||||||||
}; | ||||||||||||||||||||
|
@@ -538,6 +590,14 @@ export class VmdRdvParCommuneView extends AbstractVmdRdvView { | |||||||||||||||||||
this.refreshPageWhenValidParams(); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
critereVaccinUpdated(typeVaccin: CodeTypeVaccin) { | ||||||||||||||||||||
this.typeVaccin = typeVaccin; | ||||||||||||||||||||
|
||||||||||||||||||||
Analytics.INSTANCE.critereTypeVaccinMisAJour(typeVaccin); | ||||||||||||||||||||
|
||||||||||||||||||||
this.refreshPageWhenValidParams(); | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
renderAdditionnalSearchCriteria(): TemplateResult { | ||||||||||||||||||||
return html` | ||||||||||||||||||||
<div class="rdvForm-fields row align-items-center"> | ||||||||||||||||||||
|
@@ -559,6 +619,8 @@ export class VmdRdvParCommuneView extends AbstractVmdRdvView { | |||||||||||||||||||
@customElement('vmd-rdv-par-departement') | ||||||||||||||||||||
export class VmdRdvParDepartementView extends AbstractVmdRdvView { | ||||||||||||||||||||
|
||||||||||||||||||||
@property({type: String}) typeVaccin: 'all' | 'arnm' | 'adenovirus' = 'all'; | ||||||||||||||||||||
|
||||||||||||||||||||
async onceStartupPromiseResolved() { | ||||||||||||||||||||
if(this.codeDepartementSelectionne) { | ||||||||||||||||||||
const departementSelectionne = this.departementsDisponibles.find(d => d.code_departement === this.codeDepartementSelectionne); | ||||||||||||||||||||
|
@@ -590,8 +652,17 @@ export class VmdRdvParDepartementView extends AbstractVmdRdvView { | |||||||||||||||||||
lieuxAffichables: ArrayBuilder.from([...lieuxDisponibles].map(l => ({...l, disponible: true}))) | ||||||||||||||||||||
.concat([...lieuxIndisponibles].map(l => ({...l, disponible: false}))) | ||||||||||||||||||||
.map(l => ({...l, distance: undefined })) | ||||||||||||||||||||
.filter(l => this.filterTypeVaccin(l.vaccine_type,this.typeVaccin)) | ||||||||||||||||||||
.sortBy(l => this.extraireFormuleDeTri(l, 'date')) | ||||||||||||||||||||
.build() | ||||||||||||||||||||
}; | ||||||||||||||||||||
} | ||||||||||||||||||||
|
||||||||||||||||||||
critereVaccinUpdated(typeVaccin: CodeTypeVaccin) { | ||||||||||||||||||||
this.typeVaccin = typeVaccin; | ||||||||||||||||||||
|
||||||||||||||||||||
Analytics.INSTANCE.critereTypeVaccinMisAJour(typeVaccin); | ||||||||||||||||||||
|
||||||||||||||||||||
this.refreshPageWhenValidParams(); | ||||||||||||||||||||
} | ||||||||||||||||||||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pas fan de l'URL. Je pense que juste ARNm ou Adenovaccin serait plus clair