1- import _ from 'lodash' ;
2-
31import './map.scss' ;
42import template from './map.html' ;
53
@@ -11,25 +9,34 @@ function controller($location, $scope, $state, $stateParams, $timeout, leafletDa
119
1210 // bindings
1311
14- vm . goToItem = item => $state . go ( 'main.list' , { id : item . id . substring ( 1 ) } ) ;
12+ vm . goToItem = item => setMap ( item ) ;
1513 vm . map = mapService . getMapInstance ( { center : { lat : 51.686 , lng : 19.545 , zoom : 7 } } ) ;
14+ vm . querySearch = text => wikidata . getSearch ( text ) ;
1615 vm . list = [ ] ;
1716 vm . listParams = { } ;
1817 vm . loading = vm . loadingMap = true ;
1918 vm . search = { } ;
2019
2120 // activate
2221
22+ let langs = $stateParams . lang ? [ $stateParams . lang ] : [ ] ;
23+ langs = langs . concat ( localStorageService . get ( 'languages' ) || [ 'en' , 'de' ] ) ;
24+ wikidata . setLanguages ( langs ) ;
25+
2326 $scope . $on ( 'centerUrlHash' , ( event , centerHash ) => {
2427 $location . search ( { c : centerHash } ) ;
2528 } ) ;
2629
2730 $timeout ( ( ) => {
2831 vm . loadingMap = false ;
2932 leafletData . getMap ( ) . then ( ( map ) => {
30- getDataBB ( map . getBounds ( ) ) ;
31- map . on ( 'dragend zoomend' , ( ) => {
33+ if ( map . getZoom ( ) > 12 ) {
3234 getDataBB ( map . getBounds ( ) ) ;
35+ }
36+ map . on ( 'dragend zoomend' , ( ) => {
37+ if ( map . getZoom ( ) > 12 ) {
38+ getDataBB ( map . getBounds ( ) ) ;
39+ }
3340 } ) ;
3441 } ) ;
3542 } , 100 ) ;
@@ -38,15 +45,16 @@ function controller($location, $scope, $state, $stateParams, $timeout, leafletDa
3845
3946 function getDataBB ( bounds ) {
4047 vm . loading = true ;
41- wikidata . getSPARQL ( `SELECT ?item ?itemLabel ?admin ?adminLabel ?image ?coord WHERE {
48+ wikidata . getSPARQL ( `SELECT ?item ?itemLabel ?admin ?adminLabel ?image ?coord ?heritage WHERE {
4249 SERVICE wikibase:box {
4350 ?item wdt:P625 ?coord .
4451 bd:serviceParam wikibase:cornerWest "Point(${ bounds . getSouthWest ( ) . lng } ${ bounds . getSouthWest ( ) . lat } )"^^geo:wktLiteral .
4552 bd:serviceParam wikibase:cornerEast "Point(${ bounds . getNorthEast ( ) . lng } ${ bounds . getNorthEast ( ) . lat } )"^^geo:wktLiteral .
4653 }
4754 OPTIONAL { ?item wdt:P131 ?admin . }
4855 OPTIONAL { ?item wdt:P18 ?image . }
49- SERVICE wikibase:label { bd:serviceParam wikibase:language "pl" }
56+ ?item wdt:P1435 ?heritage .
57+ SERVICE wikibase:label { bd:serviceParam wikibase:language "${ langs . join ( ',' ) } " }
5058 }` ) . then ( ( data ) => {
5159 vm . map . markers = { } ;
5260 vm . list = data . map ( element => setListElement ( element ) ) ;
@@ -96,6 +104,24 @@ function controller($location, $scope, $state, $stateParams, $timeout, leafletDa
96104 return obj ;
97105 }
98106
107+ function setMap ( item ) {
108+ if ( ! item || ! item . id ) { return ; }
109+ vm . loading = true ;
110+ wikidata . getById ( item . id )
111+ . then ( ( data ) => {
112+ const element = Object . values ( data ) [ 0 ] ;
113+ const coords = element . claims . P625 ;
114+ if ( coords ) {
115+ const lat = coords . values [ 0 ] . value . latitude ;
116+ const lng = coords . values [ 0 ] . value . longitude ;
117+ leafletData . getMap ( ) . then ( ( map ) => {
118+ map . setView ( [ lat , lng ] , 14 ) ;
119+ getDataBB ( map . getBounds ( ) ) ;
120+ } ) ;
121+ }
122+ } ) ;
123+ }
124+
99125 function setMarker ( element ) {
100126 return {
101127 lat : + element . coord [ 1 ] ,
0 commit comments