@gouvfr-anct/mediation-numerique
Version:
📚 Bibliothèque pour la cartographie de l’offre de médiation numérique.
1 lines • 189 kB
Source Map (JSON)
{"version":3,"file":"gouvfr-anct-mediation-numerique.mjs","sources":["../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/geometry-polygon.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/initial-position.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/marker-type.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/configurations/zoom-level.configuration.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/repositories/geo-json.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/layers.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/markerType.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/marker.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.service.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/components/map.module.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/equipment.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/typeStructure.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/enum/weekday.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/address.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/time.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/day.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/addressGeometry.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/geojson.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/openingDay.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/personalOffer.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/week.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/map/models/structure.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/card/card.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/card/card.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/typeModal.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/filter.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/module.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/repositories/search.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/modal-filter/modal-filter.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/modal-filter/modal-filter.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/search/structure-list-search.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/search/structure-list-search.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/repositories/structure.repository.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-list/structure-list.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-list/structure-list.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/access-modality.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/public.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/services/print.service.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/demarches.enum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/enum/labels.emum.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/logo-card/logo-card.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/logo-card/logo-card.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-details/structure-details.component.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/components/structure-details/structure-details.component.html","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/modules/structure.module.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/lib/structure/models/category.model.ts","../../../../projects/@gouvfr-anct/mediation-numerique/src/gouvfr-anct-mediation-numerique.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { FeatureCollection, Polygon } from 'geojson';\n\nexport type GeometryPolygonConfiguration = FeatureCollection<Polygon>;\n\nexport const GEOMETRY_POLYGON_TOKEN: InjectionToken<GeometryPolygonConfiguration> =\n new InjectionToken<GeometryPolygonConfiguration>('geometry-polygon.configuration');\n","import { InjectionToken } from '@angular/core';\n\nexport type InitialPositionConfiguration = {\n latitude: number;\n longitude: number;\n};\n\nexport const INITIAL_POSITION_TOKEN: InjectionToken<InitialPositionConfiguration> =\n new InjectionToken<InitialPositionConfiguration>('initial-position.configuration');\n","import { InjectionToken } from '@angular/core';\n\nexport type MarkerTypeConfiguration = {\n structure: number;\n mdm: number;\n conseillerFrance: number;\n user: number;\n};\n\nexport const MARKER_TYPE_TOKEN: InjectionToken<MarkerTypeConfiguration> = new InjectionToken<MarkerTypeConfiguration>(\n 'marker-type.configuration'\n);\n","import { InjectionToken } from '@angular/core';\n\nexport type ZoomLevelConfiguration = {\n min: number;\n regular: number;\n userPosition: number;\n max: number;\n};\n\nexport const ZOOM_LEVEL_TOKEN: InjectionToken<ZoomLevelConfiguration> = new InjectionToken<ZoomLevelConfiguration>(\n 'zoom-level.configuration'\n);\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GeoJson } from '../models/geojson.model';\n\nexport interface GeoJsonRepository {\n getMDMGeoJson(): Observable<GeoJson[]>;\n getTownshipCoord(town: string): Observable<Array<any>>;\n}\n\nexport const GEO_JSON_TOKEN: InjectionToken<GeoJsonRepository> = new InjectionToken<GeoJsonRepository>(\n 'map.geo-json.repository'\n);\n","export enum Layers {\n mdm = 'mdm',\n user = 'user',\n structure = 'structure'\n}\n","export enum MarkerType {\n structure = 0,\n mdm = 1,\n conseillerFrance = 2,\n user = 3\n}\n","import { divIcon } from 'leaflet';\n\nexport const markerIcon = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\" fill=\"#4C4D53\"><use xlink:href=\"assets/ico/sprite.svg#map-marker\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconActive = divIcon({\n className: 'on-top-marker',\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-markerSelected\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconHover = divIcon({\n className: 'on-top-marker',\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-markerHover\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconAddedToList = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#map-marker-added\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const userLocationIcon = divIcon({\n className: null,\n html: '<svg width=\"34\" height=\"34\"><use xlink:href=\"assets/ico/sprite.svg#user-location\"></use></svg>',\n iconSize: [34, 34],\n iconAnchor: [17, 0]\n});\nexport const markerIconMdm = divIcon({\n className: null,\n html: '<svg width=\"19\" height=\"24\" fill=\"#D4C4A9\" class=\"mdm\"><use xlink:href=\"assets/ico/sprite.svg#mdm\"></use></svg>',\n iconSize: [19, 24],\n iconAnchor: [9, 0]\n});\nexport const markerIconMdmActive = divIcon({\n className: null,\n html: '<svg width=\"19\" height=\"24\"><use xlink:href=\"assets/ico/sprite.svg#mdmActive\"></use></svg>',\n iconSize: [19, 24],\n iconAnchor: [9, 0]\n});\nexport const markerIconFranceService = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\" fill=\"#ED3939\" class=\"france-service\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceService\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceActive = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceSelected\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceHover = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceHover\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\nexport const markerIconFranceServiceAddedToList = divIcon({\n className: null,\n html: '<svg width=\"48\" height=\"48\"><use xlink:href=\"assets/ico/sprite.svg#conseillerFranceServiceAdded\"></use></svg>',\n iconSize: [48, 48],\n iconAnchor: [24, 48],\n popupAnchor: [0, -48]\n});\n","import { Injectable } from '@angular/core';\nimport { DivIcon, Map, Marker } from 'leaflet';\nimport { Layers } from '../models/enum/layers.enum';\nimport { MarkerType } from '../models/enum/markerType.enum';\nimport {\n markerIcon,\n markerIconActive,\n markerIconAddedToList,\n markerIconHover,\n markerIconMdm,\n markerIconMdmActive,\n userLocationIcon\n} from './marker';\n\n@Injectable()\nexport class MapService {\n private static markersList = {};\n private isMarkerActive = false;\n\n public createMarker(lat: number, lon: number, markerType: MarkerType, id?: string, tooltip?: string): Marker {\n const marker = new Marker([lat, lon], {\n icon: this.getMarkerIcon(markerType),\n attribution: this.getLayerAttributton(markerType)\n });\n marker.on('mouseclick', (evt) => {\n evt.target.openPopup();\n });\n\n // handle icon change when select marker\n marker.on('click', (evt) => {\n evt.target.setIcon(this.getActiveMarkerIcon(markerType));\n });\n\n if (tooltip) {\n marker.bindPopup(tooltip);\n\n // handle icon change when unselect\n marker.getPopup().on('remove', (evt) => {\n marker.setIcon(this.getMarkerIcon(markerType));\n });\n }\n\n if (id) {\n MapService.markersList[id] = marker;\n }\n return marker;\n }\n\n private getLayerAttributton(markerType: MarkerType): string {\n if (markerType === MarkerType.mdm) {\n return Layers.mdm;\n } else if (markerType === MarkerType.user) {\n return Layers.user;\n } else {\n return Layers.structure;\n }\n }\n\n // Note: Marke IconFranceService has been removed temporarly on order to rework on buisness needs.\n // This comment is applied for the next 4 methods\n private getMarkerIcon(markerType: MarkerType): DivIcon {\n switch (markerType) {\n case MarkerType.mdm:\n return markerIconMdm;\n case MarkerType.conseillerFrance:\n return markerIcon;\n case MarkerType.user:\n return userLocationIcon;\n default:\n return markerIcon;\n }\n }\n\n private getActiveMarkerIcon(markerType: MarkerType): DivIcon {\n switch (markerType) {\n case MarkerType.mdm:\n return markerIconMdmActive;\n case MarkerType.conseillerFrance:\n // return markerIconFranceServiceActive;\n return markerIconActive;\n case MarkerType.user:\n return userLocationIcon;\n default:\n return markerIconActive;\n }\n }\n\n private getAddedToListMarkerIcon(markerType: MarkerType): DivIcon {\n switch (markerType) {\n case MarkerType.conseillerFrance:\n // return markerIconFranceServiceAddedToList;\n return markerIconAddedToList;\n case MarkerType.user:\n return userLocationIcon;\n default:\n return markerIconAddedToList;\n }\n }\n\n private getHoverMarkerIcon(markerType: MarkerType): DivIcon {\n switch (markerType) {\n case MarkerType.conseillerFrance:\n return markerIconHover;\n case MarkerType.user:\n return userLocationIcon;\n default:\n return markerIconHover;\n }\n }\n\n /**\n * @param id marker id\n */\n public setActiveMarker(id: string, type: MarkerType = MarkerType.structure): void {\n this.getMarker(id)?.setIcon(this.getHoverMarkerIcon(type));\n }\n\n public setAddedToListMarker(id: string, type: MarkerType = MarkerType.structure): void {\n this.getMarker(id).setIcon(this.getAddedToListMarkerIcon(type));\n }\n\n public setUnactiveMarker(id: string, type: MarkerType = MarkerType.structure): void {\n // To skip mouseleave when user emit click on structure list\n this.getMarker(id)?.setIcon(this.getMarkerIcon(type));\n this.isMarkerActive = false;\n }\n\n /**\n * Set a tooltip\n * @param id markerId\n * @param html html to display\n */\n public setToolTip(id: string, html: string): void {\n this.getMarker(id).bindTooltip(html);\n }\n\n /**\n * Set a marker as selected by changing icon color\n * @param id markerId\n * @param html html to display\n */\n public setSelectedMarker(id: string, type: MarkerType = MarkerType.structure): void {\n if (id) {\n this.getMarker(id)?.setIcon(this.getActiveMarkerIcon(type));\n this.isMarkerActive = true;\n }\n }\n\n /**\n * Set a marker as selected by changing icon color\n * @param id markerId\n * @param html html to display\n */\n public setDefaultMarker(id: string, type: MarkerType = MarkerType.structure): void {\n if (id) {\n this.getMarker(id).setIcon(this.getMarkerIcon(type));\n }\n }\n\n /**\n * Get marker by id\n */\n public getMarker(id: string): Marker {\n return MapService.markersList[id] ? MapService.markersList[id] : null;\n }\n\n public cleanMap(map: Map): Map {\n MapService.markersList = {};\n if (map) {\n map.eachLayer((layer) => {\n if (layer instanceof Marker && layer.options.attribution == Layers.structure) {\n map.removeLayer(layer);\n }\n });\n }\n return map;\n }\n}\n","import { Component, EventEmitter, HostListener, Inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport L, { geoJSON, latLng, layerGroup, Map, MapOptions, tileLayer } from 'leaflet';\nimport * as _ from 'lodash';\nimport { GeometryPolygonConfiguration, GEOMETRY_POLYGON_TOKEN } from '../../configurations/geometry-polygon.configuration';\nimport { InitialPositionConfiguration, INITIAL_POSITION_TOKEN } from '../../configurations/initial-position.configuration';\nimport { MarkerTypeConfiguration, MARKER_TYPE_TOKEN } from '../../configurations/marker-type.configuration';\nimport { ZoomLevelConfiguration, ZOOM_LEVEL_TOKEN } from '../../configurations/zoom-level.configuration';\nimport { GeoJsonProperties } from '../models/geoJsonProperties.model';\nimport { Structure } from '../models/structure.model';\nimport { GeoJsonRepository, GEO_JSON_TOKEN } from '../repositories/geo-json.repository';\nimport { MapService } from './map.service';\n\n@Component({\n selector: 'app-map',\n providers: [MapService],\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements OnChanges {\n @Input() public isOrientationForm = false;\n @Input() public structures: Structure[] = [];\n @Input() public structuresToPrint: Structure[] = [];\n @Input() public toogleToolTipId: string;\n @Input() public selectedMarkerId: string;\n @Input() public isMapPhone: boolean;\n @Input() public searchedValue: string | [number, number];\n @Output() public selectedStructure: EventEmitter<Structure> = new EventEmitter<Structure>();\n @Output() public orientationButtonClick: EventEmitter<Structure> = new EventEmitter<Structure>();\n private currentStructure: Structure;\n\n public map: Map;\n public mapOptions: MapOptions;\n public zoomOptions = { animate: true, duration: 0.5 };\n\n // Add listener on the popup button to show details of structure\n @HostListener('document:click', ['$event'])\n public clickout(event): void {\n if (event.target.classList.contains('btnShowDetails')) {\n this.selectedStructure.emit(this.currentStructure);\n }\n if (event.target.classList.contains('add')) {\n this.orientationButtonClick.emit(this.currentStructure);\n this.getStructuresPositions(this.structures);\n }\n }\n\n constructor(\n @Inject(GEOMETRY_POLYGON_TOKEN)\n private readonly metropole: GeometryPolygonConfiguration,\n @Inject(MARKER_TYPE_TOKEN)\n private readonly markerType: MarkerTypeConfiguration,\n @Inject(ZOOM_LEVEL_TOKEN)\n private readonly zoomLevel: ZoomLevelConfiguration,\n @Inject(INITIAL_POSITION_TOKEN)\n private readonly initialPosition: InitialPositionConfiguration,\n @Inject(GEO_JSON_TOKEN) private readonly geoJsonService: GeoJsonRepository,\n private readonly mapService: MapService\n ) {\n this.initializeMapOptions();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.searchedValue && !changes.searchedValue.firstChange) {\n if (changes.searchedValue.currentValue) {\n this.processTownCoordinate(changes.searchedValue.currentValue);\n } else {\n this.map.setView(this.mapOptions.center, this.mapOptions.zoom);\n }\n }\n if (changes.isMapPhone) {\n if (this.isMapPhone) {\n setTimeout(() => {\n this.map.invalidateSize();\n }, 0);\n }\n }\n if (changes.structures && this.map) {\n this.handleStructurePosition(changes.structures.previousValue);\n }\n // Handle map marker tooltip\n if (changes.toogleToolTipId && changes.toogleToolTipId.currentValue !== changes.toogleToolTipId.previousValue) {\n if (changes.toogleToolTipId.previousValue !== undefined) {\n if (this.isToPrint(changes.toogleToolTipId.previousValue)) {\n this.mapService.setAddedToListMarker(\n changes.toogleToolTipId.previousValue,\n this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue)\n );\n } else {\n this.mapService.setUnactiveMarker(\n changes.toogleToolTipId.previousValue,\n this.getMarkerTypeByStructureId(changes.toogleToolTipId.previousValue)\n );\n }\n }\n if (changes.toogleToolTipId.currentValue !== undefined) {\n this.mapService.setActiveMarker(\n changes.toogleToolTipId.currentValue,\n this.getMarkerTypeByStructureId(changes.toogleToolTipId.currentValue)\n );\n }\n }\n // Handle map marker if none selected\n if (changes.selectedMarkerId && this.map) {\n this.map.closePopup();\n if (changes.selectedMarkerId.currentValue === undefined) {\n this.mapService.setDefaultMarker(\n changes.selectedMarkerId.previousValue,\n this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue)\n );\n this.map.setView(this.mapOptions.center, this.mapOptions.zoom);\n }\n }\n // Handle map marker if one is set with url or selected\n if (this.mapService.getMarker(this.selectedMarkerId)) {\n this.mapService.setSelectedMarker(this.selectedMarkerId, this.getMarkerTypeByStructureId(this.selectedMarkerId));\n this.centerLeafletMapOnMarker(this.selectedMarkerId);\n }\n\n this.closePreviousMarker(changes);\n\n if (changes.structuresToPrint) {\n if (changes.structuresToPrint.currentValue < changes.structuresToPrint.previousValue) {\n this.mapService?.setUnactiveMarker(\n this.toogleToolTipId,\n this.getMarkerTypeByStructureId(changes.structuresToPrint.previousValue)\n );\n }\n this.structuresToPrint.forEach((structure: Structure) => {\n this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));\n });\n }\n }\n\n public processTownCoordinate(queryString: string): void {\n this.geoJsonService.getTownshipCoord(queryString).subscribe(\n (townData) => {\n if (townData.length > 0) {\n const bounds = new L.LatLngBounds(townData.map((dataArray) => dataArray.reverse()));\n this.map.fitBounds(bounds);\n }\n },\n (err) => {\n this.map.flyTo(this.mapOptions.center, this.mapOptions.zoom, this.zoomOptions);\n }\n );\n }\n\n /**\n * Create a user position marcker and center the map on it with a zoom level defined in ZoomLevel\n * @param coords {[number, number]} Map center position\n */\n public centerOnCoordinates(coords: [number, number]): void {\n this.mapService.createMarker(coords[1], coords[0], this.markerType.user, 'userLocation').addTo(this.map);\n this.map.flyTo(new L.LatLng(coords[1], coords[0]), this.zoomLevel.userPosition, this.zoomOptions);\n }\n\n /**\n * Get structures positions and add marker corresponding to those positons on the map\n */\n private handleStructurePosition(previousStructuresValue: Structure[]): void {\n // If there is more structure than before, append them\n if (\n previousStructuresValue &&\n previousStructuresValue.length > 0 &&\n previousStructuresValue.length < this.structures.length\n ) {\n this.getStructuresPositions(_.differenceWith(this.structures, previousStructuresValue, _.isEqual));\n } else if (this.structures) {\n this.map = this.mapService.cleanMap(this.map);\n this.getStructuresPositions(this.structures);\n this.structuresToPrint.forEach((structure: Structure) => {\n this.mapService.setAddedToListMarker(structure._id, this.getMarkerTypeByStructureId(structure._id));\n });\n }\n }\n\n private isToPrint(id: string): boolean {\n return this.structuresToPrint.findIndex((elem) => elem._id == id) > -1 ? true : false;\n }\n\n /**\n * Returns according marker type base on {MarkerType}\n * @param {Structure} structure\n * @returns {number}\n */\n private getMarkerType(structure: Structure): number {\n return structure?.labelsQualifications?.includes('conseillerNumFranceServices')\n ? this.markerType.conseillerFrance\n : this.markerType.structure;\n }\n\n /**\n * Return the map marker type given a structure id\n * @param {string} id - Structure id\n * @returns {number}\n */\n private getMarkerTypeByStructureId(id: string): number {\n return this.getMarkerType(this.structures.find((structure) => structure._id === id));\n }\n\n private getStructuresPositions(structureList: Structure[]): void {\n for (const structure of structureList) {\n this.mapService\n .createMarker(\n structure.getLat(),\n structure.getLon(),\n this.getMarkerType(structure),\n structure._id,\n this.buildToolTip(structure)\n )\n .addTo(this.map)\n // store structure before user click on button\n .on('popupopen', () => {\n this.currentStructure = structure;\n });\n }\n }\n\n /**\n * Create tooltip for display\n * @param structure Structure\n */\n private buildToolTip(structure: Structure): string {\n let cssAvailabilityClass = structure.isOpen ? 'available' : null;\n if (cssAvailabilityClass === null) {\n if (structure.openedOn.day) {\n cssAvailabilityClass = 'unavailable';\n } else {\n cssAvailabilityClass = 'unknown';\n }\n }\n return (\n '<h1>' +\n structure.structureName +\n '</h1>' +\n '<p>' +\n structure.getLabelTypeStructure() +\n '</p>' +\n (this.isOrientationForm\n ? '<div class=\"pop-up orientation\"><button type=\"button\" class=\"orientationButton btnShowDetails\"><span class=\"ico-gg-eye-alt eye\"></span>Voir</button></div>'\n : '<div class=\"pop-up\"><button type=\"button\" class=\"btnShowDetails\">Voir</button></div>')\n );\n }\n\n private buildMdmPopUp(mdmProperties: GeoJsonProperties): string {\n return `<h1>${mdmProperties.nom}</h1><p>${mdmProperties.adresse}</p>`;\n }\n\n /**\n * Add marker when map is ready to be showned\n * @param map map\n */\n public onMapReady(map: Map): void {\n this.map = map;\n if (this.searchedValue) {\n if (Array.isArray(this.searchedValue)) {\n this.centerOnCoordinates(this.searchedValue);\n }\n }\n }\n\n /**\n * Init map options :\n * - Metropole bounds based on a WMS service hosted by data.grandlyon.com\n * - Map Layer based on open street maps\n */\n private initializeMapOptions(): void {\n // Init mdm\n this.initMDMLayer();\n // Init WMS service with param from data.grandlyon.com\n layerGroup();\n const carteLayer = tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', {\n attribution: '© <a href=\"https://carto.com/attributions\">CARTO</a>',\n maxZoom: this.zoomLevel.max\n });\n // Center is set on townhall\n // Zoom is blocked on 11 to prevent people to zoom out from metropole\n this.mapOptions = {\n center: latLng(this.initialPosition.latitude, this.initialPosition.longitude),\n maxZoom: this.zoomLevel.max,\n zoom: this.zoomLevel.regular,\n minZoom: this.zoomLevel.min,\n layers: [carteLayer]\n };\n }\n\n private initMDMLayer(): void {\n this.geoJsonService.getMDMGeoJson().subscribe((res) => {\n res.forEach((mdm) => {\n this.mapService\n .createMarker(\n mdm.geometry.getLat(),\n mdm.geometry.getLon(),\n this.markerType.mdm,\n null,\n this.buildMdmPopUp(mdm.properties)\n )\n .addTo(this.map);\n });\n this.initMetropoleLayer();\n });\n }\n\n private centerLeafletMapOnMarker(markerId: string): void {\n if (this.mapService.getMarker(markerId)) {\n const marker = this.mapService.getMarker(markerId);\n const latLngs = marker.getLatLng();\n this.map.flyTo(new L.LatLng(latLngs.lat, latLngs.lng), this.zoomLevel.max, this.zoomOptions);\n }\n }\n\n private initMetropoleLayer(): void {\n this.map.addLayer(\n geoJSON(\n {\n type: this.metropole.features[0].geometry.type,\n coordinates: this.metropole.features[0].geometry.coordinates\n } as any,\n { style: () => ({ color: '#a00000', fillOpacity: 0, weight: 1 }) }\n )\n );\n }\n\n /**\n * Close previous markers\n * - if strucure is closed\n * - if a new marker is selected\n */\n private closePreviousMarker(changes: SimpleChanges): void {\n if (\n (changes.selectedMarkerId?.currentValue === undefined && changes.selectedMarkerId?.previousValue) ||\n changes.selectedMarkerId?.currentValue !== changes.selectedMarkerId?.previousValue\n ) {\n this.mapService.setUnactiveMarker(\n changes.selectedMarkerId.previousValue,\n this.getMarkerTypeByStructureId(changes.selectedMarkerId.previousValue)\n );\n }\n }\n}\n","<div\n id=\"map\"\n class=\"body-wrap\"\n [ngClass]=\"{ orientation: isOrientationForm }\"\n leaflet\n [leafletOptions]=\"mapOptions\"\n (leafletMapReady)=\"onMapReady($event)\"></div>\n","import { CommonModule } from '@angular/common';\nimport { Inject, ModuleWithProviders, NgModule, Optional, Type } from '@angular/core';\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\nimport { MapComponent } from './map.component';\nimport {\n ZOOM_LEVEL_TOKEN,\n ZoomLevelConfiguration,\n MARKER_TYPE_TOKEN,\n MarkerTypeConfiguration,\n GEOMETRY_POLYGON_TOKEN,\n GeometryPolygonConfiguration,\n INITIAL_POSITION_TOKEN,\n InitialPositionConfiguration\n} from '../../configurations';\nimport { GEO_JSON_TOKEN, GeoJsonRepository } from '../repositories';\n\n@NgModule({\n declarations: [MapComponent],\n exports: [MapComponent],\n imports: [CommonModule, LeafletModule]\n})\nexport class MapModule {\n public static forRoot(\n geometryPolygonConfiguration: GeometryPolygonConfiguration,\n zoomLevelConfiguration: ZoomLevelConfiguration,\n initialPositionConfiguration: InitialPositionConfiguration,\n markerTypeConfiguration: MarkerTypeConfiguration,\n geoJsonRepository: Type<GeoJsonRepository>\n ): ModuleWithProviders<MapModule> {\n return {\n ngModule: MapModule,\n providers: [\n { provide: GEO_JSON_TOKEN, useClass: geoJsonRepository },\n { provide: GEOMETRY_POLYGON_TOKEN, useValue: geometryPolygonConfiguration },\n { provide: MARKER_TYPE_TOKEN, useValue: markerTypeConfiguration },\n { provide: ZOOM_LEVEL_TOKEN, useValue: zoomLevelConfiguration },\n { provide: INITIAL_POSITION_TOKEN, useValue: initialPositionConfiguration }\n ]\n };\n }\n\n public constructor(\n @Optional() @Inject(GEOMETRY_POLYGON_TOKEN) private readonly geometryPolygonConfiguration: GeometryPolygonConfiguration,\n @Optional() @Inject(MARKER_TYPE_TOKEN) private readonly markerType: MarkerTypeConfiguration,\n @Optional() @Inject(ZOOM_LEVEL_TOKEN) private readonly zoomLevel: ZoomLevelConfiguration,\n @Optional() @Inject(INITIAL_POSITION_TOKEN) private readonly initialPosition: InitialPositionConfiguration,\n @Optional() @Inject(GEO_JSON_TOKEN) private readonly geoJsonRepository: GeoJsonRepository\n ) {\n if ([geometryPolygonConfiguration, markerType, zoomLevel, initialPosition, geoJsonRepository].includes(null)) {\n throw new Error(\n 'Cannot import `MapModule` without calling `forRoot` with valid parameters: you must provide defined `geometryPolygonConfiguration`, `markerType`, `zoomLevel`, `initialPosition` and `geoJsonRepository`.'\n );\n }\n }\n}\n","export enum Equipment {\n wifi = 'wifiEnAccesLibre',\n bornes = 'bornesNumeriques',\n printer = 'imprimantes',\n tablet = 'tablettes',\n computer = 'ordinateurs',\n scanner = 'scanners'\n}\n","export enum typeStructureEnum {\n fablab = 'Fablab',\n // A supprimer ?\n\n //A remplacer par Association ?\n associationQuartier = 'Structure associative de quartier',\n associationCaritative = 'Association caritative',\n\n // En attente de suppression remplacer par CAF CARSAT, Pole Emploi et CCAS\n grandOrganismePublic = 'Grand organisme public (CAF, CARSAT, Pôle emploi...)',\n\n mdm = 'Maison de la Métropole',\n mairie = 'Mairie',\n CAF = 'CAF',\n CCAS = 'CCAS',\n CARSAT = 'CARSAT',\n poleEmploi = 'Pole Emploi',\n mediatheque = 'Médiathèque/Bibliothèque',\n prefecture = 'Préfecture',\n bijPij = 'BIJ/PIJ',\n logement = 'Logement',\n MaisonFranceService = 'Maison France Service',\n\n association = 'Association',\n centreSocio = 'Centre socio-culturel',\n mjc = 'MJC / Cyberbase',\n pimms = 'PIMMS',\n sij = 'Structure information jeunesse (SIJ)',\n missionsLocales = 'Missions locales',\n\n formation = 'Structure de formation',\n insertion = \"Structure d'insertion\"\n}\n","export enum Weekday {\n monday = 1,\n tuesday,\n wednesday,\n thursday,\n friday,\n saturday,\n sunday\n}\n","export class Address {\n numero: string = null;\n street: string = null;\n commune: string = null;\n postcode?: number = null;\n coordinates? = [];\n}\n","export class Time {\n opening: string;\n closing: string;\n\n constructor(obj?: any) {\n Object.assign(this, obj);\n }\n\n public formatOpeningDate(): string {\n return this.formatDate(this.opening);\n }\n\n public formatClosingDate(): string {\n return this.formatDate(this.closing);\n }\n\n private formatDate(n: string): string {\n return n.replace(':', 'h');\n }\n}\n","import { Time } from './time.model';\n\nexport class Day {\n open: boolean = false;\n time: Time[];\n\n constructor(obj?: any) {\n Object.assign(this, obj, {\n time: obj && obj.time ? obj.time.map((time) => new Time(time)) : []\n });\n }\n}\n","export class AddressGeometry {\n public coordinates: Array<number>;\n public type: string;\n\n constructor(obj?: any) {\n Object.assign(this, obj);\n }\n\n public getLat(): number {\n return this.coordinates[1];\n }\n\n public getLon(): number {\n return this.coordinates[0];\n }\n}\n","import { AddressGeometry } from './addressGeometry.model';\nimport { GeoJsonProperties } from './geoJsonProperties.model';\n\nexport class GeoJson {\n public geometry: AddressGeometry;\n public type: string;\n public properties: GeoJsonProperties;\n\n constructor(obj?: any) {\n Object.assign(this, obj, {\n geometry: obj && obj.geometry ? new AddressGeometry(obj.geometry) : null\n });\n }\n}\n","export class OpeningDay {\n day: string = null;\n schedule: string = null;\n\n constructor(day?: string, schedule?: string) {\n this.day = day;\n this.schedule = schedule;\n }\n}\n","export class PersonalOffer {\n public publicsAccompaniment: string[] = [];\n public proceduresAccompaniment: string[] = [];\n public baseSkills: string[] = [];\n public accessRight: string[] = [];\n public digitalCultureSecurity: string[] = [];\n public socialAndProfessional: string[] = [];\n public parentingHelp: string[] = [];\n}\n","import { Day } from './day.model';\n\nexport class Week {\n monday: Day;\n tuesday: Day;\n wednesday: Day;\n thursday: Day;\n friday: Day;\n saturday: Day;\n sunday: Day;\n\n constructor(obj?: any) {\n Object.assign(this, obj, {\n monday: obj && obj.monday ? new Day(obj.monday) : new Day(),\n tuesday: obj && obj.tuesday ? new Day(obj.tuesday) : new Day(),\n wednesday: obj && obj.wednesday ? new Day(obj.wednesday) : new Day(),\n thursday: obj && obj.thursday ? new Day(obj.thursday) : new Day(),\n friday: obj && obj.friday ? new Day(obj.friday) : new Day(),\n saturday: obj && obj.saturday ? new Day(obj.saturday) : new Day(),\n sunday: obj && obj.sunday ? new Day(obj.sunday) : new Day()\n });\n }\n\n public getDayTranslation(day: string): string {\n switch (day) {\n case 'monday':\n return 'lundi';\n case 'tuesday':\n return 'mardi';\n case 'thursday':\n return 'jeudi';\n case 'wednesday':\n return 'mercredi';\n case 'friday':\n return 'vendredi';\n case 'saturday':\n return 'samedi';\n case 'sunday':\n return 'dimanche';\n default:\n return null;\n }\n }\n\n public hasData() {\n if (\n this.monday.time.length === 0 &&\n this.tuesday.time.length === 0 &&\n this.wednesday.time.length === 0 &&\n this.thursday.time.length === 0 &&\n this.friday.time.length === 0 &&\n this.saturday.time.length === 0 &&\n this.sunday.time.length === 0\n ) {\n return false;\n }\n return true;\n }\n}\n","import { Address } from './address.model';\nimport { Day } from './day.model';\nimport { Equipment } from './enum/equipment.enum';\nimport { typeStructureEnum } from './enum/typeStructure.enum';\nimport { Weekday } from './enum/weekday.enum';\nimport { OpeningDay } from './openingDay.model';\nimport { PersonalOffer } from './personalOffer.model';\nimport { Week } from './week.model';\n\nexport class Structure {\n public _id: string = null;\n public numero: string = null;\n public createdAt: string = null;\n public updatedAt: string = null;\n public structureName: string = null;\n public structureType: string = null;\n public description: string = null;\n public address: Address = new Address();\n public contactPhone: string = null;\n public contactMail: string = null;\n public website: string = null;\n public facebook: string = null;\n public twitter: string = null;\n public instagram: string = null;\n public linkedin: string = null;\n public lockdownActivity: string = null;\n public pmrAccess: boolean = null;\n public placeOfReception: boolean = null;\n public choiceCompletion: boolean = null;\n public contactPersonFirstName: string = null;\n public contactPersonLastName: string = null;\n public contactPersonEmail: string = null;\n public publicsAccompaniment: string[] = [];\n public proceduresAccompaniment: string[] = [];\n public remoteAccompaniment: boolean = null;\n public accessModality: string[] = [];\n public labelsQualifications: string[] = [];\n public publics: string[] = [];\n public nbComputers: number = null;\n public nbPrinters: number = null;\n public nbTablets: number = null;\n public nbNumericTerminal: number = null;\n public nbScanners: number = null;\n public exceptionalClosures: string = null;\n public equipmentsAndServices: string[] = [];\n public hours: Week;\n public freeWorkShop: boolean = null;\n public otherDescription: string = null;\n\n public isOpen: boolean = false;\n public openedOn: OpeningDay = new OpeningDay();\n public baseSkills: string[] = [];\n public accessRight: string[] = [];\n public parentingHelp: string[] = [];\n public socialAndProfessional: string[] = [];\n public digitalCultureSecurity: string[] = [];\n\n public distance?: number;\n public coord?: number[] = [];\n public dataShareConsentDate?: string;\n\n public accountVerified: boolean = false;\n\n public personalOffers: PersonalOffer[] = [];\n\n public alreadySelected? = false;\n public isClaimed?: boolean = null;\n\n constructor(obj?: any) {\n Object.assign(this, obj, {\n hours: obj && obj.hours ? new Week(obj.hours) : new Week()\n });\n }\n\n public getDayhours(day: Weekday): Day {\n switch (day) {\n case Weekday.monday:\n return this.hours.monday;\n case Weekday.tuesday:\n return this.hours.tuesday;\n case Weekday.thursday:\n return this.hours.thursday;\n case Weekday.wednesday:\n return this.hours.wednesday;\n case Weekday.friday:\n return this.hours.friday;\n case Weekday.saturday:\n return this.hours.saturday;\n case Weekday.sunday:\n return this.hours.sunday;\n default:\n return null;\n }\n }\n\n /**\n * Check if a structure has equipments\n */\n public hasEquipments(): boolean {\n if (this.equipmentsAndServices.length && this.hasNotOnlyEmptyEquipments()) {\n return true;\n }\n return false;\n }\n\n /**\n * Verify that a structure as not only equipments with 0 as value. This is mostly use for display.\n * @returns {Boolean} validation\n */\n public hasNotOnlyEmptyEquipments(): boolean {\n if (this.nbComputers + this.nbPrinters + this.nbTablets + this.nbNumericTerminal + this.nbScanners > 0) return true;\n return false;\n }\n\n /**\n * Check if a structure has pass Numeric label\n */\n public hasPassNumeric(): boolean {\n return this.labelsQualifications.includes('passNumerique');\n }\n\n /**\n * Return a range, according to the distance, between [1,3] to get a distance reference.\n * - [0,5km] => 1\n * - [5km,10km] => 2\n * - [10km, [ => 3\n */\n public getDistanceRange(): number {\n if (!this.distance) {\n return 3;\n } else {\n // If it's in km\n if (this.distance > 10000) {\n return 3;\n } else if (this.distance < 5000) {\n // If it's between 0 and 500 m\n return 1;\n } else {\n return 2;\n }\n }\n }\n\n public getLat(): number {\n return this.coord[1];\n }\n\n public getLon(): number {\n return this.coord[0];\n }\n\n public getEquipmentsIcon(equipment: Equipment): string {\n switch (equipment) {\n case Equipment.wifi:\n return 'wifi';\n case Equipment.bornes:\n return 'borne';\n case Equipment.printer:\n return 'print';\n case Equipment.tablet:\n return 'tablet';\n case Equipment.computer:\n return 'computer';\n case Equipment.scanner:\n return 'scan';\n default:\n return null;\n }\n }\n\n public getEquipmentsTitle(equipment: Equipment): string {\n switch (equipment) {\n case Equipment.wifi:\n return 'Wifi en accès libre';\n case Equipment.bornes:\n return this.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';\n case Equipment.printer:\n return this.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';\n case Equipment.tablet:\n return this.nbTablets > 1 ? 'Tablettes' : 'Tablette';\n case Equipment.computer:\n return this.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';\n case Equipment.scanner:\n return this.nbScanners > 1 ? 'Scanners' : 'Scanner';\n default:\n return null;\n }\n }\n\n public getLabelTypeStructure(): string {\n return typeStructureEnum[this.structureType] ? typeStructureEnum[this.structureType] : '';\n }\n\n public hasSocialNetwork(): boolean {\n return (\n (this.facebook !== null && this.facebook !== '') ||\n (this.instagram !== null && this.instagram !== '') ||\n (this.linkedin !== null && this.linkedin !== '') ||\n (this.twitter !== null && this.twitter !== '')\n );\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Structure } from '../../../map/models/structure.model';\n\n@Component({\n selector: 'app-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss']\n})\nexport class CardComponent {\n @Input() public structure: Structure;\n @Input() public isSelected: boolean;\n @Input() public isOrientation: boolean;\n @Input() public isClaimed = true;\n @Output() public showDetails: EventEmitter<Structure> = new EventEmitter<Structure>();\n @Output() public addToList: EventEmitter<Structure> = new EventEmitter<Structure>();\n @Output() public hover: EventEmitter<Structure> = new EventEmitter<Structure>();\n\n constructor(private route: ActivatedRoute, private router: Router) {}\n\n public cardClicked(): void {\n this.showDetails.emit(this.structure);\n if (!this.isOrientation) {\n const queryString = this.route.snapshot.queryParamMap.get('search');\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryString\n ? {\n id: this.structure._id,\n search: queryString\n }\n : {\n id: this.structure._id\n }\n });\n }\n }\n\n public cardHover(): void {\n this.hover.emit(this.structure);\n }\n\n public cardAddToList(): void {\n this.addToList.emit(this.structure);\n }\n}\n","<div\n class=\"structure\"\n fxLayout=\"column\"\n (click)=\"cardClicked()\"\n (mouseenter)=\"cardHover()\"\n [ngClass]=\"{ orientation: isOrientation }\">\n <div class=\"left\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between baseline\" fxLayoutGap=\"16px\">\n <div fxLayout=\"column\" fxLayoutAlign=\"end\">\n <span class=\"structure-name\" [ngClass]=\"{ notClaimed: !isClaimed }\">{{ structure.structureName }}</span>\n <span class=\"typeStructure\">{{ structure.getLabelTypeStructure() }}</span>\n </div>\n <div *ngIf=\"!isOrientation\" fxLayout=\"column\" fxLayoutAlign=\"none end\">\n <div class=\"distanceStructure\">\n {{ this.structure.address.commune }}\n </div>\n <div class=\"distance\" *ngIf=\"structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n </div>\n <div class=\"distance\" *ngIf=\"isOrientation && structure.distance\">\n {{ structure.distance | distance }}\n </div>\n </div>\n <div class=\"actions right\" *ngIf=\"isOrientation\">\n <div\n fxLayout=\"row\"\n *ngIf=\"!isSelected\"\n class=\"selection-button selected\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'add'\" [iconColor]=\"'green'\"></app-svg-icon>\n Ajouter\n </div>\n <div\n fxLayout=\"row\"\n *ngIf=\"isSelected\"\n class=\"selection-button to-select\"\n (click)=\"cardAddToList(); $event.stopPropagation()\">\n <app-svg-icon class=\"add-icon\" [type]=\"'ico'\" [icon]=\"'validate'\" [iconColor]=\"'white'\"></app-svg-icon>\n Ajouté\n </div>\n </div>\n</div>\n","export enum TypeModal {\n accompaniment = 1,\n training,\n public,\n equipments,\n moreFilters\n}\n","export class Filter {\n name: string;\n value: string;\n text?: string;\n checked: boolean;\n\n constructor(name: string, value: any, text?: string) {\n this.name = name;\n this.value = value.toString();\n this.text = text;\n this.checked = true;\n }\n}\n","export class Module {\n id: string;\n text: string;\n count: number;\n displayText?: string;\n\n constructor(id: string, text: string, displayText?: string) {\n this.id = id;\n this.text = text;\n this.displayText = displayText;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Module } from '../models/module.model';\nimport { Observable } from 'rxjs';\nimport { Category } from '../models/category.model';\n\nexport interface SearchRepository {\n getCategoriesAccompaniment(): Observable<Category[]>;\n\n getCategoriesOthers(): Observable<Category[]>;\n\n getCategoriesTraining(): Observable<Category[]>;\n\n getIndex(array: Module[], id: string, categ: string): number;\n}\n\nexport const SEARCH_TOKEN: InjectionToken<SearchRepository> = new InjectionToken<SearchRepository>(\n 'structure-list.search.repository'\n);\n","import { Component, EventEmitter, Inject, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { TypeModal } from '../../models/enum/typeModal.enum';\nimport { Category } from '../../models/category.model';\nimport { Module } from '../../models/module.model';\nimport { SEARCH_TOKEN, SearchRepository } from '../../repositories/search.repository';\n\n@Component({\n selector: 'app-modal-filter',\n templateUrl: './modal-filter.component.html',\n styleUrls: ['./modal-filter.component.scss']\n})\nexport class ModalFilterComponent implements OnInit, OnChanges {\n constructor(@Inject(SEARCH_TOKEN) readonly searchService: SearchRepository) {}\n\n @Input() public modalType: TypeModal;\n @Input() public categories: Category[];\n //checked modules filter list\n @Input() public modules: Module[] = [];\n @Output() searchEvent = new EventEmitter();\n @Output() closeEvent = new EventEmitter();\n public buttonTypeEnum = ButtonType;\n\n // Checkbox variable\n public checkedModules: Module[] = [];\n public toggledCategories: string[] = [];\n ngOnInit(): void {\n // Manage checkbox\n this.checkedModules = this.modules.slice();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.modalType) {\n this.checkedModules = this.modules.slice();\n }\n }\n\n // Management of the checkbox event (Check / Uncheck)\n public onCheckboxChange(event, categ: string, text?: string): void {\n const checkValue: string = event.target.value;\n if (event.target.checked) {\n this.checkedModules.push(new Module(checkValue, categ, text ? text : checkValue));\n } else {\n // Check if the module is present in the list and remove it\n if (this.searchService.getIndex(this.checkedModules, checkValue, categ) > -1) {\n this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, checkValue, categ), 1);\n }\n }\n }\n // Clear only filters in the current modal\n public clearFilters(): void {\n this.categories.forEach((categ: Category) => {\n categ.modules.forEach((module: Module) => {\n const index = this.searchService.getIndex(this.checkedModules, module.id, categ.id);\n if (index > -1) {\n this.checkedModules.splice(index, 1);\n }\n });\n });\n this.emitModules(this.checkedModules);\n }\n\n // Sends an array containing all modules\n public emitModules(m: Module[]): void {\n this.searchEvent.emit(m);\n }\n\n public getModalType(): string {\n switch (this.modalType) {\n case TypeModal.accompaniment:\n return 'accompaniment';\n case TypeModal.training:\n return 'training';\n case TypeModal.public:\n return 'public';\n case TypeModal.equipments:\n return 'equipments';\n case TypeModal.moreFilters:\n return 'moreFilters';\n default:\n return '';\n }\n }\n\n public closeModal(): void {\n this.closeEvent.emit();\n }\n\n public handleCategoryCheckBox(event, category: Category): void {\n const modules = this.categories.filter((c: Category) => c.id === category.id)[0].modules;\n if (event.target.checked) {\n for (const module of modules) {\n if (this.searchService.getIndex(this.checkedModules, module.id, category.id) === -1) {\n this.checkedModules.push(new Module(module.id, category.id, module.displayText));\n }\n }\n } else {\n for (const module of modules) {\n if (this.searchService.getIndex(this.checkedModules, module.id, category.id) > -1) {\n this.checkedModules.splice(this.searchService.getIndex(this.checkedModules, module.id, category.id), 1);\n }\n }\n }\n }\n\n public toggleShowCategory(categoryId: string): void {\n if (this.toggledCategories.includes(categoryId)) {\n const index = this.toggledCategories.indexOf(categoryId);\n this.toggledCategories.splice(index);\n } else {\n this.toggledCategories.push(categoryId);\n }\n }\n\n public getCategoryCheckboxStatus(c: Category): string {\n const selectedModule: Module[] = this.checkedModules.filter((m) => m.text === c.id);\n if (selectedModule.length === c.modules.length) {\n return 'checked';\n } else if (selectedModule.length === 0) {\n return 'unchecked';\n } else if (selectedModule.length && selectedModule.length > 0) {\n return 'halfChecked';\n }\n }\n}\n","<div *ngIf=\"modalType\" fxLayout=\"column\" fxLayoutAlign=\"center center\" [ngClass]=\"['modal', 'modal' + getModalType()]\">\n <div class=\"body-wrap\" fxLayout=\"column\" fxLayoutAlign=\"space-between\">\n <div class=\"titleFilter\" fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <span>Filtres</span>\n <div (click)=\"closeModal()\" class=\"ico-close-details\"></div>\n </div>\n <!-- Filter with single category -->\n <div class=\"contentModal\" fxLayout=\"row wrap\" fxLayoutAlign=\"flex-start\" *ngIf=\"categories.length === 1\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <ul class=\"blockLigne\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <!-- \"Other filters\" backdrop fullwidth modal -->\n <div\n class=\"contentModal maxModal\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() === 'moreFilters'\">\n <div\n class=\"blockLigne\"\n (clickOutside)=\"getModalType() === 'moreFilters' ? closeModal() : ''\"\n [ngClass]=\"{ backDropModal: getModalType() === 'moreFilters' }\">\n <div class=\"headerMoreFilters\" *ngIf=\"getModalType() === 'moreFilters'\">\n Plus de filtres\n <div class=\"iconClose\" (click)=\"closeModal()\">\n <app-svg-icon [iconClass]=\"'icon-28'\" [iconColor]=\"'grey-1'\" [icon]=\"'closeModal'\" [type]=\"'ico'\"></app-svg-icon>\n </div>\n </div>\n <div class=\"scroll-container\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <p>{{ c.name }}</p>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.displayText)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n </div>\n <!-- Filter with multiple categories -->\n <div\n class=\"contentModal maxModal max-height\"\n fxLayout=\"row wrap\"\n fxLayoutAlign=\"flex-start\"\n *ngIf=\"categories.length > 1 && getModalType() !== 'moreFilters'\">\n <ul class=\"blockLigne\">\n <div class=\"blockFiltre\" *ngFor=\"let c of categories\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem categoryCheckBox\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <label>\n <input\n type=\"checkbox\"\n class=\"multiCheck\"\n [checked]=\"getCategoryCheckboxStatus(c) === 'checked'\"\n (change)=\"handleCategoryCheckBox($event, c)\" />\n <span\n class=\"customCheck customCheckPrimary\"\n [ngClass]=\"{ halfCheck: getCategoryCheckboxStatus(c) === 'halfChecked' }\"></span>\n </label>\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n class=\"w-100 clickable\"\n (click)=\"toggleShowCategory(c.id)\">\n <div class=\"label\">{{ c.name }}</div>\n <div class=\"arrow\" [ngClass]=\"{ toggled: this.toggledCategories.includes(c.id) }\"></div>\n </div>\n </div>\n <ul class=\"blockLigne smallList\" [ngClass]=\"{ show: this.toggledCategories.includes(c.id) }\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"ligneFiltre\" *ngFor=\"let module of c.modules\">\n <li class=\"checkbox\">\n <div class=\"checkboxItem\">\n <label fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <input\n type=\"checkbox\"\n [checked]=\"searchService.getIndex(checkedModules, module.id, c.id) > -1\"\n [value]=\"module.id\"\n (change)=\"onCheckboxChange($event, c.id, module.text)\" />\n <span class=\"customCheck customCheckPrimary\"></span>\n <div class=\"label\">{{ module.text }}</div>\n </label>\n </div>\n </li>\n </div>\n </ul>\n </div>\n </li>\n </div>\n </ul>\n </div>\n <div\n class=\"footer\"\n fxLayout=\"row\"\n fxLayoutAlign=\"center center\"\n [ngClass]=\"{ backDropModalFooter: getModalType() === 'moreFilters' }\"\n *ngIf=\"getModalType() !== 'moreFilters'\">\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalSecondary\"\n [text]=\"'Effacer'\"\n (click)=\"clearFilters()\"\n tabindex=\"0\"></app-button>\n </div>\n <div class=\"half-width\">\n <app-button\n [style]=\"buttonTypeEnum.modalPrimary\"\n [text]=\"'Appliquer'\"\n (click)=\"emitModules(checkedModules)\"></app-button>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Inject, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { TypeModal } from '../../models/enum/typeModal.enum';\nimport { Category } from '../../models/category.model';\nimport { Filter } from '../../models/filter.model';\nimport { Module } from '../../models/module.model';\nimport { SEARCH_TOKEN, SearchRepository } from '../../repositories/search.repository';\n\n@Component({\n selector: 'app-structure-list-search',\n templateUrl: './structure-list-search.component.html',\n styleUrls: ['./structure-list-search.component.scss']\n})\nexport class StructureListSearchComponent implements OnInit {\n @Output() searchEvent = new EventEmitter();\n public locate = false;\n // Show/hide form createStructure\n public addStructureFormModal = false;\n public buttonTypeEnum = ButtonType;\n\n // Form search input\n public searchForm: FormGroup;\n public modalTypeOpened: TypeModal;\n // Checkbox variable\n public checkedModulesFilter: Module[];\n\n public numberTrainingChecked = 0;\n public numberAccompanimentChecked = 0;\n public numberPublicChecked = 0;\n public numberEquipmentChecked = 0;\n public numberMoreFiltersChecked = 0;\n\n // Modal categories\n public categoriesTraining: Category[] = [];\n public categoriesAccompaniment: Category[] = [];\n public categoriesPublic: Category[] = [];\n public categoriesEquipment: Category[] = [];\n public categoriesMoreFilters: Category[] = [];\n\n public queryString: string;\n // Modal confirmation variable\n public isConfirmationModalOpen = false;\n public confirmationModalContent =\n 'Afin d’ajouter votre structure,vous allez être redirigé vers le formulaire Grand Lyon à remplir.';\n\n constructor(\n @Inject(SEARCH_TOKEN) readonly searchService: SearchRepository,\n private fb: FormBuilder,\n private activatedRoute: ActivatedRoute,\n private route: ActivatedRoute,\n private router: Router\n ) {\n this.searchForm = this.fb.group({\n searchTerm: this.activatedRoute.snapshot.queryParamMap.get('search')\n ? this.activatedRoute.snapshot.queryParamMap.get('search')\n : ''\n });\n }\n ngOnInit(): void {\n // Will store the different categories\n this.getData();\n this.queryString = this.activatedRoute.snapshot.queryParamMap.get('search');\n this.checkedModulesFilter = new Array();\n if (this.queryString) {\n const filters: Filter[] = [];\n filters.push(new Filter('query', this.queryString));\n this.searchEvent.emit(filters);\n }\n }\n\n public convertModulesTofilters(modules: Module[], term?: string): Filter[] {\n const filters: Filter[] = [];\n if (term) {\n filters.push(new Filter('query', term));\n }\n // Add checked box filter\n modules.forEach((cm) => {\n filters.push(new Filter(cm.text, cm.id, cm.displayText));\n });\n return filters;\n }\n\n // Accessor to template angular.\n public get TypeModal(): typeof TypeModal {\n return TypeModal;\n }\n\n // Clear input search\n public clearInput(): void {\n this.searchForm.reset();\n this.applyFilter(null);\n }\n\n // Sends an array containing all filters\n public applyFilter(term: string): void {\n // Add search input filter\n if (term) {\n this.router.navigate(['/acteurs'], {\n relativeTo: this.route,\n queryParams: {\n search: term\n },\n queryParamsHandling: 'merge'\n });\n } else if (!term) {\n this.router.navigate(['/acteurs'], {\n relativeTo: this.route\n });\n }\n const filters = this.convertModulesTofilters(this.checkedModulesFilter, term);\n // Send filters\n this.searchEvent.emit(filters);\n }\n\n public fetchResults(checkedModules: Module[]): void {\n const inputTerm = this.searchForm.get('searchTerm').value;\n // Check if some modules is checked in filters\n if (this.checkedModulesFilter !== checkedModules) {\n this.countCheckFiltersOnModules(checkedModules);\n }\n // Store checked modules\n this.checkedModulesFilter = checkedModules;\n // Close modal after receive filters from her.\n this.closeModal();\n this.applyFilter(inputTerm);\n }\n\n // Check if some modules is checked on filter and store number of modules checked\n public countCheckFiltersOnModules(checkedModules: Module[]): void {\n this.numberAccompanimentChecked = checkedModules.filter((module) => module.text === 'proceduresAccompaniment').length;\n this.numberTrainingChecked = checkedModules.filter(\n (module) =>\n module.text === 'baseSkills' ||\n module.text === 'socialAndProfessional' ||\n module.text === 'parentingHelp' ||\n module.text === 'accessRight' ||\n module.text === 'digitalCultureSecurity'\n ).length;\n this.numberPublicChecked = checkedModules.filter((module) => module.text === 'publicsAccompaniment').length;\n this.numberEquipmentChecked = checkedModules.filter((module) => module.text === 'equipmentsAndServices').length;\n this.numberMoreFiltersChecked = checkedModules.filter(\n (module) => module.text === 'labelsQualifications' || module.text === 'accessModality'\n ).length;\n }\n\n public getModalCategory(): Category[] {\n switch (this.modalTypeOpened) {\n case TypeModal.accompaniment:\n return this.categoriesAccompaniment;\n case TypeModal.training:\n return this.categoriesTraining;\n\n case TypeModal.public:\n return this.categoriesPublic;\n\n case TypeModal.equipments:\n return this.categoriesEquipment;\n\n case TypeModal.moreFilters:\n return this.categoriesMoreFilters;\n default:\n throw new Error('Modal type not handle');\n }\n }\n\n // Open the modal and display the list according to the right filter button\n public openModal(modalType: TypeModal): void {\n // if modal already opened, reset type\n if (this.modalTypeOpened === modalType) {\n this.closeModal();\n } else if (this.modalTypeOpened !== modalType) {\n this.modalTypeOpened = modalType;\n }\n }\n\n public closeModal(): void {\n this.modalTypeOpened = undefined;\n }\n\n // Management of the checkbox event (Check / Uncheck)\n public externalCheckboxCheck(event, categ, displayName): void {\n const checkValue: string = event.target.value;\n const inputTerm = this.searchForm.get('searchTerm').value;\n if (event.target.checked) {\n this.checkedModulesFilter.push(new Module(checkValue, categ, displayName));\n this.numberMoreFiltersChecked++;\n } else {\n // Check if the module is present in the list and remove it\n const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === checkValue && m.text === categ);\n if (index > -1) {\n this.checkedModulesFilter.splice(index, 1);\n this.countCheckFiltersOnModules(this.checkedModulesFilter);\n }\n }\n this.applyFilter(inputTerm);\n }\n\n // Get the categories for each modal type\n private getData(): void {\n this.searchService.getCategoriesAccompaniment().subscribe((res) => {\n const categories: Category[] = res;\n categories.forEach((category) => {\n this.categoriesAccompaniment.push(category);\n });\n });\n this.searchService.getCategoriesTraining().subscribe((res) => {\n const categories: Category[] = res;\n categories.forEach((category) => {\n this.categoriesTraining.push(category);\n });\n });\n this.searchService.getCategoriesOthers().subscribe((res) => {\n const categories: Category[] = res;\n categories.forEach((category) => {\n if (category.id === 'publicsAccompaniment') {\n this.categoriesPublic.push(category);\n } else if (category.id === 'equipmentsAndServices') {\n this.categoriesEquipment.push(category);\n } else if (category.id === 'labelsQualifications' || category.id === 'accessModality') {\n this.categoriesMoreFilters.push(category);\n }\n });\n });\n }\n\n public resetFilters(): void {\n this.checkedModulesFilter = [];\n this.numberTrainingChecked = 0;\n this.numberAccompanimentChecked = 0;\n this.numberPublicChecked = 0;\n this.numberEquipmentChecked = 0;\n this.numberMoreFiltersChecked = 0;\n const inputTerm = this.searchForm.get('searchTerm').value;\n const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);\n this.searchEvent.emit(filters);\n }\n public removeFilter(module: Module): void {\n const index = this.checkedModulesFilter.findIndex((m: Module) => m.id === module.id);\n this.checkedModulesFilter.splice(index, 1);\n const inputTerm = this.searchForm.get('searchTerm').value;\n const filters = this.convertModulesTofilters(this.checkedModulesFilter, inputTerm);\n this.countCheckFiltersOnModules(this.checkedModulesFilter);\n this.searchEvent.emit(filters);\n }\n}\n","<div class=\"block\">\n <div class=\"content\">\n <form\n class=\"inputSearch\"\n [formGroup]=\"searchForm\"\n fxLayout=\"row\"\n fxLayoutGap=\"4px\"\n fxLayoutAlign=\" center\"\n (ngSubmit)=\"applyFilter(searchForm.value.searchTerm)\">\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between center\" class=\"container\">\n <input type=\"text\" formControlName=\"searchTerm\" placeholder=\"Rechercher une association, une commune...\" />\n <button\n *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\"\n (click)=\"clearInput()\"\n class=\"icon close\"\n type=\"button\">\n <div class=\"ico-close-search\"></div>\n </button>\n <span *ngIf=\"this.searchForm.get('searchTerm').value?.length > 0\" class=\"separation\"></span>\n <app-button [style]=\"buttonTypeEnum.searchIcon\" [iconBtn]=\"'search'\" [type]=\"'submit'\"></app-button>\n </div>\n </form>\n <div (clickOutside)=\"closeModal()\" class=\"btn-container\">\n <div class=\"btnSection\" fxLayout=\"row\" fxLayoutAlign=\"space-between center\" fxLayoutGap=\"4px\">\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.accompaniment,\n containCheckedFilters: numberAccompanimentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.accompaniment)\">\n <span>Aide numérique</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.training,\n containCheckedFilters: numberTrainingChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.training)\">\n <span>Ateliers</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.public,\n containCheckedFilters: numberPublicChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.public)\">\n <span>Public</span>\n <div class=\"arrow\"></div>\n </button>\n <button\n class=\"btn-filter isntPhoneContent\"\n type=\"button\"\n fxLayout=\"row\"\n [ngClass]=\"{\n selected: modalTypeOpened === TypeModal.equipments,\n containCheckedFilters: numberEquipmentChecked\n }\"\n fxLayoutAlign=\"space-between center\"\n (click)=\"openModal(TypeModal.equipments)\">\n <span>Matériel et wifi</span>\n <div class=\"arrow\"></div>\n </button>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"passNumerique\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'passNumerique', 'labelsQualifications') > -1\"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Pass numérique')\" />\n <div class=\"label pass\">Pass numérique</div>\n </label>\n </div>\n <div\n class=\"checkboxButton\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"conseillerNumFranceServices\"\n [checked]=\"\n searchService.getIndex(checkedModulesFilter, 'conseillerNumFranceServices', 'labelsQualifications') > -1\n \"\n (change)=\"externalCheckboxCheck($event, 'labelsQualifications', 'Conseillers numériques')\" />\n <div class=\"label pass\">Conseillers numériques</div>\n </label>\n </div>\n <div\n class=\"checkboxButton isntPhoneContent\"\n [ngClass]=\"{\n checked: searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\n }\">\n <label fxLayout=\"row\" fxLayoutAlign=\"center center\">\n <input\n type=\"checkbox\"\n value=\"accesLibre\"\n [checked]=\"searchService.getIndex(checkedModulesFilter, 'accesLibre', 'accessModality') > -1\"\n (change)=\"externalCheckboxCheck($event, 'accessModality', 'Accès libre')\" />\n <div class=\"label pass\">Accès libre</div>\n </label>\n </div>\n <app-button\n class=\"isntPhoneContent last-button\"\n [style]=\"buttonTypeEnum.Tertiary\"\n [text]=\"'Plus de filtres'\"\n fxLayout=\"row\"\n fxLayoutAlign=\"space-between center\"\n (action)=\"openModal(TypeModal.moreFilters)\"></app-button>\n <div *ngIf=\"modalTypeOpened\">\n <app-modal-filter\n [modalType]=\"modalTypeOpened\"\n [categories]=\"getModalCategory()\"\n [modules]=\"checkedModulesFilter\"\n (searchEvent)=\"fetchResults($event)\"\n (closeEvent)=\"closeModal()\"></app-modal-filter>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"checkedModulesFilter.length\" fxLayout=\"row wrap\" fxLayoutGap=\"4px\" class=\"filterTags isntPhoneContent\">\n <div class=\"title\">Filtres :</div>\n <app-button\n *ngFor=\"let filter of checkedModulesFilter\"\n [style]=\"buttonTypeEnum.TagCloudButton\"\n [text]=\"filter.displayText ? filter.displayText : filter.id\"\n (action)=\"removeFilter(filter)\"></app-button>\n <div class=\"reset-icon\" (click)=\"resetFilters()\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'tagReset'\" [iconColor]=\"'black'\"></app-svg-icon>\n </div>\n </div>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Structure } from '../../map/models/structure.model';\n\nexport interface StructureRepository {\n getStructure(id: string): Observable<Structure>;\n sendMailOnStructureError: (structureId: string, content: string) => Observable<any>;\n}\n\nexport const STRUCTURE_TOKEN: InjectionToken<StructureRepository> = new InjectionToken<StructureRepository>(\n 'structure-list.structure.repository'\n);\n","import { Component, EventEmitter, Inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ButtonType } from '@gouvfr-anct/mediation-numerique/shared';\nimport { GeoJson } from '../../../map/models/geojson.model';\nimport { Structure } from '../../../map/models/structure.model';\nimport { StructureRepository, STRUCTURE_TOKEN } from '../../repositories/structure.repository';\n\n@Component({\n selector: 'app-structure-list',\n templateUrl: './structure-list.component.html',\n styleUrls: ['./structure-list.component.scss']\n})\nexport class StructureListComponent implements OnChanges {\n @Input() public structureList: Structure[];\n @Input() public location: GeoJson;\n @Input() public selectedStructure: Structure = new Structure();\n @Output() public displayMapMarkerId: EventEmitter<string> = new EventEmitter<string>();\n @Output() public selectedMarkerId: EventEmitter<string> = new EventEmitter<string>();\n\n public buttonTypeEnum = ButtonType;\n public showStructureDetails = false;\n public structure: Structure;\n\n constructor(\n private route: ActivatedRoute,\n private router: Router,\n @Inject(STRUCTURE_TOKEN) readonly structureService: StructureRepository\n ) {\n this.route.queryParams.subscribe((queryParams) => {\n if (queryParams.id) {\n if (!this.structure) {\n this.structureService.getStructure(queryParams.id).subscribe((s) => {\n this.showDetails(new Structure(s));\n });\n }\n } else {\n this.closeDetails();\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selectedStructure && this.selectedStructure) {\n this.showDetails(this.selectedStructure);\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n id: this.selectedStructure._id\n }\n });\n }\n if (changes.structureList) {\n document.getElementById('listCard').scrollTo(0, 0);\n }\n }\n\n public showDetails(event: Structure): void {\n this.showStructureDetails = true;\n this.structure = event;\n this.selectedMarkerId.emit(this.structure._id);\n }\n\n public closeDetails(): void {\n this.selectedMarkerId.emit();\n this.showStructureDetails = false;\n }\n\n public handleCardHover(structure: Structure): void {\n this.displayMapMarkerId.emit(structure._id);\n }\n\n public mouseLeave(): void {\n this.displayMapMarkerId.emit(undefined);\n }\n}\n","<div class=\"structureList-container\">\n <div class=\"structureListHeader hide-on-print\">\n <div class=\"nbStructuresLabel\" [ngPlural]=\"structureList.length\">\n <ng-template ngPluralCase=\"0\">0 structure</ng-template>\n <ng-template ngPluralCase=\"1\">1 structure</ng-template>\n <ng-template ngPluralCase=\"other\">{{ structureList.length }} structures</ng-template>\n </div>\n <ng-content select=\"[slot=structure-list-actions]\"></ng-content>\n </div>\n\n <div id=\"listCard\" class=\"listCard\" (mouseleave)=\"mouseLeave()\">\n <ng-content select=\"[slot=structure-list-elements]\"></ng-content>\n <p *ngIf=\"structureList && structureList.length <= 0\">Il n'y a aucune réponse correspondant à votre recherche</p>\n </div>\n</div>\n<ng-content></ng-content>\n","export enum AccessModality {\n free = 'accesLibre',\n numeric = 'telephoneVisio',\n meetingOnly = 'uniquementSurRdv',\n meeting = 'surRdv'\n}\n","export enum PublicCategorie {\n under16Years = 'moinsDe16Ans',\n young = 'jeunes1625Ans',\n adult = 'adultes',\n elderly = 'seniorsPlusDe65Ans',\n all = 'toutPublic',\n women = 'uniquementFemmes'\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Structure } from '../../map/models/structure.model';\n\n@Injectable()\nexport class PrintService {\n public isPrinting = false;\n public structure: Structure;\n public structures: Structure[];\n\n constructor(private router: Router) {}\n\n public printDocument(documentName: string, structure: Structure): void {\n this.isPrinting = true;\n this.structure = structure;\n this.router.navigate([\n '/',\n {\n outlets: {\n print: ['print', documentName]\n }\n }\n ]);\n }\n\n public printDocuments(documentName: string, structures: Structure[]): void {\n this.isPrinting = true;\n this.structures = structures;\n this.router.navigate([\n '/',\n {\n outlets: {\n print: ['print', documentName]\n }\n }\n ]);\n }\n\n public onDataReady(): void {\n setTimeout(() => {\n window.print();\n this.isPrinting = false;\n this.router.navigate([{ outlets: { print: null } }]);\n }, 1500);\n }\n}\n","export enum Demarches {\n accompagnantCaf = 'CAF',\n carsat = 'CARSAT',\n cpam = 'CPAM',\n espacePublicNumeriqueepn = 'Espace public Numérique',\n impots = 'Impôts',\n logement = 'Logements',\n poleEmploi = 'Pôle Emploi',\n autres = 'Autres'\n}\n","export enum Labels {\n passNumerique = 'Pass numérique',\n maisonFranceService = 'Maison france service',\n aidantsConnect = 'Aidants connect',\n fabriqueDeTerritoire = 'Fabrique de territoire',\n demarcheMetropolitaine = 'Démarches Métropolitaines',\n pix = 'Évaluation des compétences numériques',\n conseillerNumFranceServices = 'Conseiller numérique'\n}\n","import { Component, Input } from '@angular/core';\nimport { Demarches } from '../../models/enum/demarches.enum';\nimport { Labels } from '../../models/enum/labels.emum';\n\n@Component({\n selector: 'app-logo-card',\n templateUrl: './logo-card.component.html',\n styleUrls: ['./logo-card.component.scss']\n})\nexport class LogoCardComponent {\n @Input() public logoPath: string;\n @Input() public name: string;\n\n public getName(key: string): string {\n if (Labels[key]) {\n return Labels[key];\n } else {\n return Demarches[key];\n }\n }\n}\n","<div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngIf=\"name\">\n <img [src]=\"'assets/logos/' + name + '.svg'\" [alt]=\"'logo ' + name\" />\n <p>{{ getName(name) }}</p>\n</div>\n","import { animate, AUTO_STYLE, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport * as _ from 'lodash';\nimport { Equipment } from '../../../map/models/enum/equipment.enum';\nimport { Structure } from '../../../map/models/structure.model';\nimport { Category } from '../../models/category.model';\nimport { AccessModality } from '../../models/enum/access-modality.enum';\nimport { PublicCategorie } from '../../models/enum/public.enum';\nimport { Module } from '../../models/module.model';\nimport { SearchRepository, SEARCH_TOKEN } from '../../repositories/search.repository';\nimport { StructureRepository, STRUCTURE_TOKEN } from '../../repositories/structure.repository';\nimport { PrintService } from '../../services/print.service';\n\n@Component({\n selector: 'app-structure-details',\n templateUrl: './structure-details.component.html',\n styleUrls: ['./structure-details.component.scss'],\n animations: [\n trigger('slideInOut', [\n transition(':enter', [style({ left: '-600px' }), animate('200ms ease-in', style({ left: '0' }))]),\n transition(':leave', [animate('200ms ease-in', style({ left: '-600px' }))])\n ]),\n trigger('fadeInOut', [\n transition(':enter', [\n style({ backgroundColor: 'rgb(00, 00, 00, 0)' }),\n animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0.6)' }))\n ]),\n transition(':leave', [animate('200ms ease-in', style({ backgroundColor: 'rgb(00, 00, 00, 0)' }))])\n ]),\n trigger('show', [\n state('true', style({ height: AUTO_STYLE, visibility: AUTO_STYLE, margin: '8px 0' })),\n state('false', style({ height: '0px', visibility: 'hidden', margin: '0' })),\n transition('true => false', animate('300ms ease-out')),\n transition('false => true', animate('300ms ease-out'))\n ])\n ],\n providers: [PrintService]\n})\nexport class StructureDetailsComponent implements OnInit {\n @Input() public structure: Structure;\n @Output() public closeDetails: EventEmitter<boolean> = new EventEmitter<boolean>();\n public accessModality = AccessModality;\n\n public baseSkillssReferentiel: Category;\n public accessRightsReferentiel: Category;\n public digitalCultureSecuritysReferentiel: Category;\n public socialAndProfessionalsReferentiel: Category;\n public parentingHelpsReferentiel: Category;\n public baseSkills: Module[];\n public accessRights: Module[];\n public parentingHelp: Module[];\n public socialAndProfessional: Module[];\n public digitalCultureSecurity: Module[];\n public showBaseSkills = false;\n public showAccessRights = false;\n public showParentingHelp = false;\n public showSocialAndProfessional = false;\n public showDigitalSecurity = false;\n public printMode = false;\n public isLoading = true;\n public lockdownInfoDisplay = false;\n public structureErrorModalOpenned = false;\n public fullScreen = false;\n\n constructor(\n @Inject(SEARCH_TOKEN) readonly searchService: SearchRepository,\n @Inject(STRUCTURE_TOKEN) readonly structureService: StructureRepository,\n private readonly printService: PrintService,\n private route: ActivatedRoute,\n private router: Router,\n private location: Location\n ) {\n route.url.subscribe((url) => {\n if (url[0]?.path === 'structure') {\n this.structure = new Structure(this.printService.structure);\n this.printMode = true;\n // Display formations for printing\n this.toggleAccessRights();\n this.toggleBaseSkills();\n this.toggleDigitalSecurity();\n this.toggleParentingHelp();\n this.toggleSocialAndProfessional();\n this.initForm();\n }\n });\n }\n\n ngOnInit(): void {\n this.isLoading = true;\n this.route.queryParams.subscribe((queryParams) => {\n if (queryParams.id) {\n this.initForm();\n } else if (!this.printMode) {\n this.structure = null;\n }\n });\n this.route.data.subscribe((data) => {\n if (data.fullScreen) {\n this.fullScreen = true;\n }\n });\n }\n private async initForm(): Promise<void> {\n this.searchService.getCategoriesTraining().subscribe((referentiels) => {\n referentiels.forEach((referentiel) => {\n if (referentiel.isBaseSkills()) {\n this.baseSkillssReferentiel = referentiel;\n } else if (referentiel.isRigthtsAccess()) {\n this.accessRightsReferentiel = referentiel;\n } else if (referentiel.isDigitalCultureSecurity()) {\n this.digitalCultureSecuritysReferentiel = referentiel;\n } else if (referentiel.isParentingHelp()) {\n this.parentingHelpsReferentiel = referentiel;\n } else if (referentiel.isSocialAndProfessional()) {\n this.socialAndProfessionalsReferentiel = referentiel;\n }\n });\n this.setServiceCategories();\n if (this.printMode) {\n this.printService.onDataReady();\n }\n this.isLoading = false;\n });\n const index = this.structure.proceduresAccompaniment.indexOf('autres');\n if (index > -1) {\n this.structure.proceduresAccompaniment.splice(index, 1);\n }\n }\n\n public getEquipmentsLabel(equipment: Equipment): string {\n switch (equipment) {\n case Equipment.wifi:\n return 'Wifi en accès libre';\n case Equipment.bornes:\n return this.structure.nbNumericTerminal > 1 ? 'Bornes numériques' : 'Borne numérique';\n case Equipment.printer:\n return this.structure.nbPrinters > 1 ? 'Imprimantes' : 'Imprimante';\n case Equipment.tablet:\n return this.structure.nbTablets > 1 ? 'Tablettes' : 'Tablette';\n case Equipment.computer:\n return this.structure.nbComputers > 1 ? 'Ordinateurs' : 'Ordinateur';\n case Equipment.scanner:\n return this.structure.nbScanners > 1 ? 'Scanners' : 'Scanner';\n default:\n return null;\n }\n }\n\n public close(): void {\n this.route.url.subscribe((urls) => {\n if (urls.length > 0 && urls[0].path !== 'orientation') {\n this.router.navigate(['/acteurs'], {\n relativeTo: this.route,\n queryParams: {\n id: null\n },\n queryParamsHandling: 'merge'\n });\n } else {\n this.isLoading = true;\n this.location.back();\n }\n });\n }\n\n public print(): void {\n this.printService.printDocument('structure', this.structure);\n }\n\n public getAccessLabel(accessModality: AccessModality): string {\n switch (accessModality) {\n case AccessModality.free:\n return 'Accès libre';\n case AccessModality.meeting:\n return 'Sur rendez-vous';\n case AccessModality.meetingOnly:\n return 'Uniquement sur RDV';\n case AccessModality.numeric:\n return 'Téléphone / Visio';\n default:\n return null;\n }\n }\n\n public getPublicLabel(tagetPublic: PublicCategorie): string {\n switch (tagetPublic) {\n case PublicCategorie.young:\n return 'Jeunes (16 - 25 ans)';\n case PublicCategorie.adult:\n return 'Adultes';\n case PublicCategorie.elderly:\n return 'Séniors (+ de 65 ans)';\n case PublicCategorie.all:\n return 'Tout public';\n case PublicCategorie.under16Years:\n return 'Moins de 16 ans';\n case PublicCategorie.women:\n return 'Uniquement femmes';\n default:\n return null;\n }\n }\n\n public setServiceCategories(): void {\n this.baseSkills = this.structure.baseSkills.map((skill) => _.find(this.baseSkillssReferentiel.modules, { id: skill }));\n this.accessRights = this.structure.accessRight.map((rights) =>\n _.find(this.accessRightsReferentiel.modules, { id: rights })\n );\n this.parentingHelp = this.structure.parentingHelp.map((help) =>\n _.find(this.parentingHelpsReferentiel.modules, { id: help })\n );\n this.socialAndProfessional = this.structure.socialAndProfessional.map((skill) =>\n _.find(this.socialAndProfessionalsReferentiel.modules, { id: skill })\n );\n this.digitalCultureSecurity = this.structure.digitalCultureSecurity.map((skill) =>\n _.find(this.digitalCultureSecuritysReferentiel.modules, { id: skill })\n );\n }\n\n public keepOriginalOrder = (a, b) => a.key;\n\n public isBaseSkills(): boolean {\n return this.baseSkills && this.baseSkills[0] !== undefined;\n }\n public isAccessRights(): boolean {\n return this.accessRights && this.accessRights[0] !== undefined;\n }\n public isParentingHelp(): boolean {\n return this.parentingHelp && this.parentingHelp[0] !== undefined;\n }\n public isSocialAndProfessional(): boolean {\n return this.socialAndProfessional && this.socialAndProfessional[0] !== undefined;\n }\n public isDigitalSecurity(): boolean {\n return this.digitalCultureSecurity && this.digitalCultureSecurity[0] !== undefined;\n }\n\n public filterOnlyEquipments(equipmentsAndServices: string[]): string[] {\n return equipmentsAndServices.filter((eqpt) =>\n ['ordinateurs', 'tablettes', 'bornesNumeriques', 'imprimantes', 'scanners', 'wifiEnAccesLibre'].includes(eqpt)\n );\n }\n\n public displayModalError(): void {\n this.structureErrorModalOpenned = !this.structureErrorModalOpenned;\n }\n\n public sendErrorEmail(modalValue: any): void {\n this.displayModalError();\n if (modalValue.shouldSend) {\n this.structureService.sendMailOnStructureError(this.structure._id, modalValue.content).subscribe(() => {});\n }\n }\n\n public multipleWorkshop(): boolean {\n if (\n this.structure.baseSkills.length +\n this.structure.accessRight.length +\n this.structure.parentingHelp.length +\n this.structure.socialAndProfessional.length +\n this.structure.digitalCultureSecurity.length >\n 1\n ) {\n return true;\n }\n return false;\n }\n\n public toggleBaseSkills(): void {\n this.showBaseSkills = !this.showBaseSkills;\n }\n public toggleAccessRights(): void {\n this.showAccessRights = !this.showAccessRights;\n }\n public toggleParentingHelp(): void {\n this.showParentingHelp = !this.showParentingHelp;\n }\n public toggleSocialAndProfessional(): void {\n this.showSocialAndProfessional = !this.showSocialAndProfessional;\n }\n public toggleDigitalSecurity(): void {\n this.showDigitalSecurity = !this.showDigitalSecurity;\n }\n\n public goToWebsite(): void {\n window.open(this.structure.website, '_blank');\n }\n}\n","<div class=\"structure-details\" [ngClass]=\"{ fullScreen: fullScreen === true }\" [@slideInOut] *ngIf=\"structure\">\n <div class=\"structure-details-container\">\n <!-- Header info -->\n <div class=\"structure-details-title\" fxLayout=\"row\" fxLayoutGap=\"8px\" fxLayoutAlign=\"space-evenly center\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'structureAvatar'\" [iconClass]=\"'icon-52'\"></app-svg-icon>\n <h1 class=\"bold\">{{ structure.structureName }}</h1>\n <div class=\"ico-close\">\n <div (click)=\"close()\" class=\"ico-close-details\"></div>\n </div>\n </div>\n <div class=\"structure-details-content\" fxLayout=\"row\" fxLayoutAlign=\"center center\" *ngIf=\"isLoading\">\n <img class=\"loader-gif\" src=\"/assets/gif/loader_circle.gif\" alt />\n </div>\n <div class=\"structure-details-content\" *ngIf=\"!isLoading\">\n <div class=\"structure-buttons hide-on-print\" fxLayout=\"row\" fxLayoutAlign=\"space-evenly\">\n <div *ngIf=\"structure.website\" class=\"clickableDiv\" role=\"button\" (click)=\"goToWebsite()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'web'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Voir le site</div>\n </div>\n <div role=\"button\" class=\"printButton clickableDiv\" (click)=\"print()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'printStructure'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Imprimer</div>\n </div>\n <div class=\"clickableDiv\" role=\"button\" (click)=\"displayModalError()\" tabindex=\"0\">\n <app-svg-icon class=\"icon\" [type]=\"'ico'\" [icon]=\"'watch'\" [iconClass]=\"'icon-32'\"></app-svg-icon>\n <div class=\"iconTitle\">Signaler une erreur</div>\n </div>\n <ng-content select=\"[slot=structure-details-actions]\"></ng-content>\n </div>\n\n <ng-content select=\"[slot=structure-admin-actions]\"></ng-content>\n\n <div class=\"structure-details-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"10px\">\n <!-- Informations-->\n <div fxLayout=\"column\">\n <h2>Informations</h2>\n <div class=\"info-block\">\n <div>\n {{ structure.getLabelTypeStructure() }}\n </div>\n <div *ngIf=\"structure.address\">\n {{ structure.address.numero }} {{ structure.address.street }},\n {{ structure.address.commune }}\n </div>\n <div *ngIf=\"structure.contactPhone\">\n {{ structure.contactPhone | phone }}\n </div>\n <div *ngIf=\"structure.contactMail && structure.contactMail !== 'unknown@unknown.com'\">\n <a href=\"mailto:{{ structure.contactMail }}\">{{ structure.contactMail }}</a>\n </div>\n </div>\n <!-- Social networks-->\n <div *ngIf=\"structure.hasSocialNetwork()\" fxLayout=\"row\" fxLayoutAlign=\"none baseline\" fxLayoutGap=\"4px\">\n <a\n *ngIf=\"structure.facebook\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.facebook\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'facebook'\" [title]=\"'Facebook'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.twitter\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.twitter\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'twitter'\" [title]=\"'Twitter'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.instagram\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.instagram\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'instagram'\" [title]=\"'Instagram'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n <a\n *ngIf=\"structure.linkedin\"\n target=\"_blank\"\n class=\"custom-link\"\n rel=\"noopener noreferrer\"\n [href]=\"'http://' + structure.linkedin\">\n <app-svg-icon [type]=\"'ico'\" [icon]=\"'linkedin'\" [title]=\"'Linkedin'\" [iconClass]=\"'icon-30'\"></app-svg-icon>\n </a>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.description\" class=\"description\">\n {{ structure.description }}\n </div>\n <div *ngIf=\"structure.lockdownActivity && lockdownInfoDisplay\" class=\"info\">\n {{ structure.lockdownActivity }}\n </div>\n </div>\n\n <div\n *ngIf=\"structure.accessModality.length > 0 || structure.hours.hasData() || structure.remoteAccompaniment\"\n class=\"structure-details-block\"\n fxLayout=\"column\">\n <div class=\"hours-services-block\">\n <!-- Opening Hours -->\n <div *ngIf=\"structure.hours.hasData()\" fxLayout=\"column\">\n <h2>Horaires</h2>\n <div fxLayout=\"column\" class=\"opening-hours\">\n <div *ngFor=\"let day of structure.hours | keyvalue: keepOriginalOrder\">\n <div *ngIf=\"day.value.open\" class=\"opening-hour\" fxLayout=\"row\" fxLayoutAlign=\"flex-start flex-start\">\n <h4 class=\"day\">{{ day.key | day }}</h4>\n <div class=\"opening-time\" fxLayout=\"column\" fxLayoutAlign=\"none flex-start\">\n <div *ngFor=\"let timeRange of day.value.time\" class=\"daily-opening-time\">\n <p *ngIf=\"timeRange.opening\">\n {{ timeRange.formatOpeningDate() }} -\n {{ timeRange.formatClosingDate() }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- services -->\n <div *ngIf=\"structure.accessModality.length > 0\" fxLayout=\"column\">\n <h2>Services</h2>\n <div fxLayout=\"column\" fxLayoutGap=\"10px\" class=\"services-block\">\n <div fxLayout=\"column\" fxLayoutGap=\"8px\">\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\"\n *ngFor=\"let acces of structure.accessModality\">\n <p>{{ getAccessLabel(acces) }}</p>\n </div>\n <p *ngIf=\"structure.pmrAccess\">Accessible aux personnes à mobilité réduite</p>\n </div>\n <div *ngFor=\"let public of structure.publics\" fxLayout=\"row\" fxLayoutAlign=\"none flex-end\" fxLayoutGap=\"8px\">\n <p>{{ getPublicLabel(public) }}</p>\n </div>\n <div\n *ngFor=\"let accompaniment of structure.publicsAccompaniment\"\n fxLayout=\"row\"\n fxLayoutAlign=\"none flex-end\"\n fxLayoutGap=\"8px\">\n <p>{{ accompaniment }}</p>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"structure.exceptionalClosures\" class=\"bold-info\">\n <p class=\"description\">{{ structure.exceptionalClosures }}</p>\n </div>\n <div *ngIf=\"structure.remoteAccompaniment\" class=\"bold-info\">\n <h3>Cette structure propose un accompagnement à distance.</h3>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.labelsQualifications.length\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"8px\">\n <h2>Labellisations</h2>\n <div class=\"wrapper\">\n <div *ngFor=\"let labels of structure.labelsQualifications\">\n <app-logo-card [name]=\"labels\"></app-logo-card>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-members]\"></ng-content>\n\n <div\n *ngIf=\"structure.proceduresAccompaniment.length || structure.otherDescription\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\"\n fxLayoutGap=\"12px\">\n <h2>Aides numérique</h2>\n <div fxLayout=\"column\">\n <div class=\"wrapper\">\n <div *ngFor=\"let accompagnement of structure.proceduresAccompaniment.sort()\">\n <app-logo-card *ngIf=\"accompagnement !== 'autres'\" [name]=\"accompagnement\"></app-logo-card>\n </div>\n </div>\n <p *ngIf=\"structure.otherDescription\" fxLayout=\"column\">\n {{ structure.otherDescription }}\n </p>\n </div>\n </div>\n\n <div\n *ngIf=\"isBaseSkills() || isAccessRights() || isParentingHelp() || isSocialAndProfessional() || isDigitalSecurity()\"\n fxLayout=\"column\"\n class=\"structure-details-block noSeparator\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Formations</h2>\n <div *ngIf=\"structure.freeWorkShop\">\n <span *ngIf=\"multipleWorkshop()\" class=\"bold-info\">L'accès à ces formations est gratuit</span>\n <span *ngIf=\"!multipleWorkshop()\" class=\"bold-info\">L'accès à cette formation est gratuit</span>\n </div>\n <div class=\"formationDetails\">\n <div *ngIf=\"isBaseSkills()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showBaseSkills }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleBaseSkills()\">\n <div class=\"titleCollapse\">Compétences de base</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showBaseSkills\">\n <div class=\"details\" *ngFor=\"let skill of baseSkills\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isAccessRights()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showAccessRights }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleAccessRights()\">\n <div class=\"titleCollapse\">Accès aux droits</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showAccessRights\">\n <div class=\"details\" *ngFor=\"let rights of accessRights\">\n {{ rights.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isParentingHelp()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showParentingHelp }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleParentingHelp()\">\n <div class=\"titleCollapse\">Aide à la parentalité</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showParentingHelp\">\n <div class=\"details\" *ngFor=\"let help of parentingHelp\">\n {{ help.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isSocialAndProfessional()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showSocialAndProfessional }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleSocialAndProfessional()\">\n <div class=\"titleCollapse\">Insertion sociale et professionnelle</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showSocialAndProfessional\">\n <div class=\"details\" *ngFor=\"let skill of socialAndProfessional\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"isDigitalSecurity()\" class=\"collapse\" [ngClass]=\"{ notCollapsed: !showDigitalSecurity }\">\n <div fxLayout=\"column\">\n <div\n class=\"collapseHeader\"\n fxLayout=\"row\"\n fxLayoutGap=\"20px\"\n fxLayoutAlign=\" center\"\n (click)=\"toggleDigitalSecurity()\">\n <div class=\"titleCollapse\">Culture et sécurité numérique</div>\n <div class=\"logo\">\n <svg class=\"show\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#unfold'\"></use>\n </svg>\n <svg class=\"hide\" aria-hidden=\"true\">\n <use [attr.xlink:href]=\"'assets/form/sprite.svg#fold'\"></use>\n </svg>\n </div>\n </div>\n <div class=\"detailsContainer\" [@show]=\"showDigitalSecurity\">\n <div class=\"details\" *ngFor=\"let skill of digitalCultureSecurity\">\n {{ skill.text }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n *ngIf=\"structure.hasEquipments()\"\n fxLayout=\"column\"\n class=\"structure-details-block\"\n fxLayoutAlign=\"baseline baseline\">\n <h2>Matériel et wifi</h2>\n <div fxLayout=\"column\">\n <div *ngIf=\"filterOnlyEquipments(structure.equipmentsAndServices).includes('wifiEnAccesLibre')\">\n {{ getEquipmentsLabel('wifiEnAccesLibre') }}\n </div>\n <p *ngFor=\"let equipement of filterOnlyEquipments(structure.equipmentsAndServices)\" class=\"no-margin-bottom\">\n <span *ngIf=\"equipement === 'ordinateurs' && structure.nbComputers\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbComputers }}\n </span>\n <span *ngIf=\"equipement === 'tablettes' && structure.nbTablets\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbTablets }}\n </span>\n <span *ngIf=\"equipement === 'bornesNumeriques' && structure.nbNumericTerminal\">\n {{ getEquipmentsLabel(equipement) }} :\n {{ structure.nbNumericTerminal }}\n </span>\n <span *ngIf=\"equipement === 'imprimantes' && structure.nbPrinters\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbPrinters }}\n </span>\n <span *ngIf=\"equipement === 'scanners' && structure.nbScanners\">\n {{ getEquipmentsLabel(equipement) }} : {{ structure.nbScanners }}\n </span>\n </p>\n </div>\n </div>\n <ng-content select=\"[slot=structure-details-access]\"></ng-content>\n <div fxLayout=\"column\" class=\"structure-details-block\" fxLayoutAlign=\"baseline baseline\" fxLayoutGap=\"20px\">\n <div fxLayout=\"row\" fxLayoutAlign=\"none flex-start\" fxLayoutGap=\"13px\">\n <p class=\"updated\">Mise à jour le {{ structure.updatedAt | date: 'mediumDate' }}</p>\n </div>\n </div>\n </div>\n\n <ng-content select=\"[slot=structure-details-modals]\"></ng-content>\n <app-text-input-modal\n [openned]=\"structureErrorModalOpenned\"\n [placeholder]=\"'Décrivez l\\'erreur ici. Ex: Horaires faux...'\"\n [content]=\"\n 'Voulez-vous notifier res\\'in d\\'une erreur sur la fiche de cet acteur ? Votre commentaire sera envoyé à l\\'acteur en question ainsi qu\\'aux administrateurs.'\n \"\n (closed)=\"sendErrorEmail($event)\"\n (newContent)=\"sendErrorEmail($event)\"></app-text-input-modal>\n </div>\n</div>\n","import { Inject, ModuleWithProviders, NgModule, Optional, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexModule } from '@angular/flex-layout';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n ModalModule,\n DayModule,\n PhoneModule,\n TextInputModalModule,\n DistanceModule,\n ButtonModule,\n SvgIconModule\n} from '@gouvfr-anct/mediation-numerique/shared';\nimport { ModalFilterComponent } from '../components/modal-filter/modal-filter.component';\nimport { StructureListSearchComponent } from '../components/search/structure-list-search.component';\nimport { CardComponent } from '../components/card/card.component';\nimport { StructureDetailsComponent } from '../components/structure-details/structure-details.component';\nimport { LogoCardComponent } from '../components/logo-card/logo-card.component';\nimport { StructureListComponent } from '../components/structure-list/structure-list.component';\n\nimport { SEARCH_TOKEN, SearchRepository } from '../repositories/search.repository';\nimport { STRUCTURE_TOKEN, StructureRepository } from '../repositories/structure.repository';\n\n@NgModule({\n declarations: [\n ModalFilterComponent,\n StructureListSearchComponent,\n CardComponent,\n StructureDetailsComponent,\n LogoCardComponent,\n StructureListComponent\n ],\n exports: [StructureListSearchComponent, StructureListComponent, StructureDetailsComponent, CardComponent],\n imports: [\n CommonModule,\n FlexModule,\n ReactiveFormsModule,\n SvgIconModule,\n ButtonModule,\n ModalModule,\n DayModule,\n PhoneModule,\n DistanceModule,\n TextInputModalModule\n ]\n})\nexport class StructureModule {\n public static forRoot(\n searchRepository: Type<SearchRepository>,\n structureRepository: Type<StructureRepository>\n ): ModuleWithProviders<StructureModule> {\n return {\n ngModule: StructureModule,\n providers: [\n {\n provide: SEARCH_TOKEN,\n useClass: searchRepository\n },\n {\n provide: STRUCTURE_TOKEN,\n useClass: structureRepository\n }\n ]\n };\n }\n\n public constructor(\n @Optional() @Inject(SEARCH_TOKEN) private readonly searchRepository: SearchRepository,\n @Optional() @Inject(STRUCTURE_TOKEN) private readonly structureRepository: StructureRepository\n ) {\n if ([searchRepository].includes(null)) {\n throw new Error(\n 'Cannot import `StructureListModule` without calling `forRoot` with valid parameters: you must provide defined `searchRepository` and `structureRepository`.'\n );\n }\n }\n}\n","import { Module } from './module.model';\n\nexport class Category {\n name: string;\n surname: string;\n id: string;\n modules: Module[];\n\n constructor(obj?: any) {\n Object.assign(this, obj, {\n modules:\n obj && obj.modules\n ? obj.modules.map((module) => new Module(module.display_id ? module.display_id : module.id, module.text, module.text))\n : null\n });\n }\n\n public isBaseSkills(): boolean {\n return this.id === 'baseSkills';\n }\n\n public isRigthtsAccess(): boolean {\n return this.id === 'accessRight';\n }\n\n public isParentingHelp(): boolean {\n return this.id === 'parentingHelp';\n }\n\n public isDigitalCultureSecurity(): boolean {\n return this.id === 'digitalCultureSecurity';\n }\n\n public isSocialAndProfessional(): boolean {\n return this.id === 'socialAndProfessional';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MapService","i2","i3","i4","i1","i6.ModalFilterComponent","i1.PrintService","i6.LogoCardComponent"],"mappings":"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"}