@@ -9,11 +9,17 @@ const ListComponent = {
99 template : template
1010} ;
1111
12- function controller ( $stateParams , $timeout , wikidata ) {
12+ function controller ( $state , $ stateParams, $timeout , leafletData , wikidata ) {
1313 let vm = this ;
14+ const ids = $stateParams . id . split ( '-in-' ) . map ( id => id [ 0 ] === 'Q' ? id : 'Q' + id ) ;
15+
1416 vm . map = { } ;
17+ vm . listParams = { } ;
18+
19+ vm . goToItem = ( item ) => item ? $state . go ( 'main.list' , { id : ids [ 0 ] . substring ( 1 ) + '-in-' + item . id . substring ( 1 ) } ) : false ;
20+ vm . querySearch = ( text ) => wikidata . getSearch ( text ) ;
21+ vm . search = { } ;
1522
16- const ids = $stateParams . id . split ( '-in-' ) . map ( id => id [ 0 ] === 'Q' ? id : 'Q' + id ) ;
1723 const icon = {
1824 iconUrl : 'assets/images/marker.png' ,
1925 shadowUrl : undefined ,
@@ -32,40 +38,68 @@ function controller($stateParams, $timeout, wikidata) {
3238 markers : { }
3339 } ;
3440
35- wikidata . getSPARQL ( `SELECT ?item ?itemLabel ?admin ?adminLabel ?coord WHERE {
36- ?item wdt:P31 wd:` + ids [ 0 ] + ` .
41+ wikidata . getSearch ( ids [ 1 ] ) . then ( results => {
42+ vm . search . selectedItem = results . length ? results [ 0 ] : undefined ;
43+ } ) ;
44+
45+ /*
46+ wikidata.getLabels(ids).then(labels => {
47+ angular.extend(vm.listParams, {
48+ object: {
49+ id: ids[0],
50+ label: labels[ids[0]]
51+ },
52+ place: {
53+ id: ids[1],
54+ label: labels[ids[1]]
55+ }
56+ });
57+ });
58+ */
59+
60+ wikidata . getSPARQL ( `SELECT DISTINCT ?item ?itemLabel ?admin ?adminLabel ?coord ?image WHERE {
61+ ?item p:P1435 ?monument .
3762 ?item wdt:P131* wd:` + ids [ 1 ] + ` .
3863 ?item wdt:P131 ?admin .
3964 ?item wdt:P625 ?coord .
65+ OPTIONAL { ?item wdt:P18 ?image }
4066 SERVICE wikibase:label { bd:serviceParam wikibase:language "pl,en" }
4167 }` ) . then ( data => {
42- console . log ( data )
43- vm . list = data . map ( element => ( {
44- name : {
45- value_id : element . item . value . substring ( element . item . value . indexOf ( '/Q' ) + 1 ) ,
46- value : element . itemLabel . value
47- } ,
48- admin : {
49- value_id : element . admin . value . substring ( element . admin . value . indexOf ( '/Q' ) + 1 ) ,
50- value : element . adminLabel . value
51- } ,
52- coord : element . coord . value ? element . coord . value . replace ( 'Point(' , '' ) . replace ( ')' , '' ) . split ( ' ' ) : false
53- } ) ) ;
54- return vm . list ;
55- } ) . then ( list => {
56- list . forEach ( element => {
57- if ( element . coord ) {
58- vm . map . markers [ element . name . value_id ] = {
59- lat : + element . coord [ 1 ] ,
60- lng : + element . coord [ 0 ] ,
61- icon : icon
62- } ;
63- }
68+ console . log ( data )
69+ vm . list = data . map ( element => ( {
70+ name : {
71+ value_id : element . item . value . substring ( element . item . value . indexOf ( '/Q' ) + 1 ) ,
72+ value : element . itemLabel . value
73+ } ,
74+ admin : {
75+ value_id : element . admin . value . substring ( element . admin . value . indexOf ( '/Q' ) + 1 ) ,
76+ value : element . adminLabel . value
77+ } ,
78+ coord : element . coord . value ? element . coord . value . replace ( 'Point(' , '' ) . replace ( ')' , '' ) . split ( ' ' ) : false ,
79+ image : element . image ? element . image . value . replace ( 'wiki/Special:FilePath' , 'w/index.php?title=Special:Redirect/file' ) + '&width=75' : false
80+ } ) ) ;
81+ return vm . list ;
82+ } ) . then ( list => {
83+ let bounds = [ ] ;
84+ list . forEach ( element => {
85+ if ( element . coord ) {
86+ vm . map . markers [ element . name . value_id ] = {
87+ lat : + element . coord [ 1 ] ,
88+ lng : + element . coord [ 0 ] ,
89+ icon : icon
90+ } ;
91+ bounds . push ( [ + element . coord [ 1 ] , + element . coord [ 0 ] ] ) ;
92+ }
93+ } ) ;
94+ $timeout ( ( ) => {
95+ vm . showMap = true ;
96+ leafletData . getMap ( ) . then ( function ( map ) {
97+ if ( bounds . length ) {
98+ map . fitBounds ( bounds , { padding : [ 25 , 25 ] } ) ;
99+ }
100+ } ) ;
101+ } ) ;
64102 } ) ;
65- $timeout ( ( ) => {
66- vm . showMap = true ;
67- } ) ;
68- } ) ;
69103}
70104
71105export default ( ) => {
0 commit comments