1- import { Component , AfterViewInit } from '@angular/core' ;
1+ import { Component , AfterViewInit , OnInit } from '@angular/core' ;
22import { environment } from 'src/environments/environment' ;
33import * as mapboxgl from 'mapbox-gl' ;
44import * as MapboxGeocoder from '@mapbox/mapbox-gl-geocoder' ;
5+ import { SheltersService } from '../_services/shelters.service' ;
6+ import * as $ from 'jquery' ;
7+ import { AlertService } from '../_services/alert.service' ;
8+ import { Router } from '@angular/router' ;
59
610@Component ( {
711 selector : 'app-request-shelter' ,
812 templateUrl : './request-shelter.component.html' ,
913 styleUrls : [ './request-shelter.component.css' ]
1014} )
11- export class RequestShelterComponent implements AfterViewInit {
15+ export class RequestShelterComponent implements AfterViewInit , OnInit {
1216 mapboxAccessToken = environment . mapboxAccessToken ;
17+ requestCoordinates : any ;
1318
14- constructor ( ) { }
19+ constructor (
20+ private sheltersService : SheltersService ,
21+ private alertService : AlertService ,
22+ private router : Router
23+ ) { }
24+
25+ ngOnInit ( ) {
26+ }
1527
1628 ngAfterViewInit ( ) {
29+ console . log ( this . requestCoordinates ) ;
1730 Object . getOwnPropertyDescriptor ( mapboxgl , "accessToken" ) . set ( this . mapboxAccessToken ) ;
1831
1932 var map = new mapboxgl . Map ( {
@@ -33,6 +46,61 @@ export class RequestShelterComponent implements AfterViewInit {
3346 map . addControl ( new MapboxGeocoder ( {
3447 accessToken : mapboxgl . accessToken
3548 } ) ) ;
49+
50+ var personMarkerDiv = document . createElement ( 'div' ) ;
51+ personMarkerDiv . style . backgroundImage = 'url("../../assets/person.png")' ;
52+ personMarkerDiv . style . width = '100px' ;
53+ personMarkerDiv . style . height = '100px' ;
54+ personMarkerDiv . style . backgroundRepeat = 'no-repeat'
55+
56+ this . sheltersService . getShelterRequest ( )
57+ . subscribe (
58+ ( res ) => {
59+ this . requestCoordinates = res . lngLat ;
60+
61+ if ( this . requestCoordinates ) {
62+ new mapboxgl . Marker ( personMarkerDiv )
63+ . setLngLat ( this . requestCoordinates . split ( ',' ) )
64+ . addTo ( map ) ;
65+ }
66+ } ,
67+ ( err ) => this . alertService . error ( err )
68+ )
69+
70+ map . on ( 'click' , function ( e ) {
71+ if ( this . shelterMarker ) {
72+ this . shelterMarker . remove ( ) ;
73+ }
74+
75+ this . shelterMarker = new mapboxgl . Marker ( personMarkerDiv )
76+ . setLngLat ( e . lngLat )
77+ . addTo ( map ) ;
78+
79+ $ ( '#lnglat' ) . val ( `${ e . lngLat . lng } ,${ e . lngLat . lat } ` ) ;
80+ } ) ;
81+ }
82+
83+ submitRequest ( ) {
84+ if ( ! $ ( '#lnglat' ) . val ( ) ) {
85+ this . alertService . errorWithMessage ( 'Location is needed' )
86+ return ;
87+ }
88+
89+ this . sheltersService . requestShelter ( $ ( '#lnglat' ) . val ( ) )
90+ . subscribe (
91+ ( res ) => this . alertService . success ( 'Request submitted' ) ,
92+ ( err ) => this . alertService . error ( err )
93+ )
3694 }
3795
96+ clearRequest ( ) {
97+ this . sheltersService . requestShelter ( '' )
98+ . subscribe (
99+ ( ) => {
100+ this . alertService . success ( 'Request cleared' ) ;
101+ window . location . reload ( ) ;
102+ } ,
103+ ( err ) => this . alertService . error ( err )
104+ ) ;
105+ }
38106}
0 commit comments