From 22916700560b69d46faaef6e2cd3d62dd54cdbc4 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Tue, 28 Jan 2020 12:32:48 +0000 Subject: [PATCH] Woohoo! it works Problem was a missing CSS file --- README.md | 3 +- package-lock.json | 13 ++ project.clj | 7 +- resources/html/home.html | 8 +- resources/public/img/credits/clojure-icon.gif | Bin 0 -> 2174 bytes .../img/credits/github-logo-transparent.png | Bin 0 -> 7890 bytes resources/public/img/credits/gnu.small.png | Bin 0 -> 5434 bytes resources/public/img/credits/luminus-logo.png | Bin 0 -> 9579 bytes .../img/map-pins/Planning-authority-pin.png | Bin 0 -> 1773 bytes .../img/map-pins/Planning-authority-pin.svg | 182 ++++++++++++++++++ .../public/img/map-pins/basic_map_pin.png | Bin 0 -> 333 bytes .../public/img/map-pins/basic_map_pin.svg | 149 ++++++++++++++ resources/public/img/map-pins/shadow_pin.png | Bin 0 -> 1966 bytes resources/public/img/map-pins/shadow_pin.svg | 122 ++++++++++++ resources/public/img/map-pins/unknown-pin.png | Bin 0 -> 1826 bytes resources/public/img/map-pins/unknown-pin.svg | 149 ++++++++++++++ resources/public/img/map-pins/unknown-pin.xcf | Bin 0 -> 3759 bytes resources/public/img/threelines.png | Bin 0 -> 266 bytes resources/public/img/threelines.xcf | Bin 0 -> 942 bytes src/cljs/geocsv/ajax.cljs | 4 +- src/cljs/geocsv/events.cljs | 5 + src/cljs/geocsv/gis.cljs | 86 ++++++--- src/cljs/geocsv/views/map.cljs | 14 +- 23 files changed, 705 insertions(+), 37 deletions(-) create mode 100644 package-lock.json create mode 100644 resources/public/img/credits/clojure-icon.gif create mode 100644 resources/public/img/credits/github-logo-transparent.png create mode 100644 resources/public/img/credits/gnu.small.png create mode 100644 resources/public/img/credits/luminus-logo.png create mode 100644 resources/public/img/map-pins/Planning-authority-pin.png create mode 100644 resources/public/img/map-pins/Planning-authority-pin.svg create mode 100644 resources/public/img/map-pins/basic_map_pin.png create mode 100644 resources/public/img/map-pins/basic_map_pin.svg create mode 100644 resources/public/img/map-pins/shadow_pin.png create mode 100644 resources/public/img/map-pins/shadow_pin.svg create mode 100644 resources/public/img/map-pins/unknown-pin.png create mode 100644 resources/public/img/map-pins/unknown-pin.svg create mode 100644 resources/public/img/map-pins/unknown-pin.xcf create mode 100644 resources/public/img/threelines.png create mode 100644 resources/public/img/threelines.xcf diff --git a/README.md b/README.md index 1f0b7cc..884224c 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,8 @@ You will need [Leiningen][1] 2.0 or above installed. To start a web server for the application, run: - lein run + lein npm install + lein run ## License diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a16f310 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "geocsv", + "version": "0.1.0-SNAPSHOT", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "leaflet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.3.1.tgz", + "integrity": "sha512-adQOIzh+bfdridLM1xIgJ9VnJbAUY3wqs/ueF+ITla+PLQ1z47USdBKUf+iD9FuUA8RtlT6j6hZBfZoA6mW+XQ==" + } + } +} diff --git a/project.clj b/project.clj index 3ba53f9..9992b17 100644 --- a/project.clj +++ b/project.clj @@ -39,6 +39,7 @@ [selmer "1.12.18"]] :min-lein-version "2.0.0" + :npm {:dependencies [[leaflet "1.3.1"]]} :source-paths ["src/clj" "src/cljs" "src/cljc"] :test-paths ["test/clj"] @@ -46,7 +47,11 @@ :target-path "target/%s/" :main ^:skip-aot geocsv.core - :plugins [[lein-cljsbuild "1.1.7"]] + :plugins [[lein-cljsbuild "1.1.7"] + [lein-codox "0.10.7"] + [lein-npm "0.6.2"] + [lein-release "1.0.5"]] + :clean-targets ^{:protect false} [:target-path [:cljsbuild :builds :app :compiler :output-dir] [:cljsbuild :builds :app :compiler :output-to]] :figwheel diff --git a/resources/html/home.html b/resources/html/home.html index d3d806d..95b7037 100644 --- a/resources/html/home.html +++ b/resources/html/home.html @@ -6,7 +6,7 @@ Welcome to geocsv - +
@@ -36,6 +36,12 @@ + + + + + + {% script "js/lib/node_modules/leaflet/dist/leaflet.js" %} {% script "/js/app.js" %} diff --git a/resources/public/img/credits/clojure-icon.gif b/resources/public/img/credits/clojure-icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..84eee16d95b131330e74e55f834849f27a1bb353 GIT binary patch literal 2174 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 literal 0 HcmV?d00001 diff --git a/resources/public/img/credits/gnu.small.png b/resources/public/img/credits/gnu.small.png new file mode 100644 index 0000000000000000000000000000000000000000..04177f65fbcf18865bc16930d07e7f2b9a832401 GIT binary patch literal 5434 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 literal 0 HcmV?d00001 diff --git a/resources/public/img/credits/luminus-logo.png b/resources/public/img/credits/luminus-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..df6c2837ac39a9c3aaa23ed1b63ebdabf54a932b GIT binary patch literal 9579 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 literal 0 HcmV?d00001 diff --git a/resources/public/img/map-pins/Planning-authority-pin.png b/resources/public/img/map-pins/Planning-authority-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..12061eac4ee0e0f22487a673734c5920c68c8f22 GIT binary patch literal 1773 zcmVJM$2_#Zwc4>2IZ*DpuF)lJ7Bnk-}(96dF000(r zMObu0a%Ew3X>V>IRB3Hx05UK!FfceUF$+otl>h(*yGcYrR9J=Wm|aX$XBfwy^U+gi zskB&Zkq!`K5;5yC{9sc@S%kS1P>dRJUQCzCAd8yaiC#D}m1XGa79I6QGf)#{fWn*~ z8ImPqh*Ct%D71)^f`t}sPphqM-}l|czz{%28`zb<%jcZ;|I0b==Q$LNpwVc;q*CcF znx?m7jFSi<0+<0Pit^JmZ4Lwir+J?Lp|P>i3jja?0BqQ>K}86;PSbRvTCMJni&Hsi znkF+L#u!r;izTwHtzCsN?)LlrYwPRl`zeh^6DE_%S|cOp#1s{MZjj5Py)z*k&*0!- zxL$wi9iHbcUaxm4qgJc;FbuPC&z@bkW=jeH5D^g(NJ&YtH#axG4FE2hVVE6iwYq;c zrK2bm3XfW?9$;B^2aPda7#|!$G?xy%F2GtFB$U9;4Um@BH}V$&Q4C_?P2BDwPKI?JMc2t*!aP<#GzLv$I#1l^tE+^?Ikw ze&y?_um44^)9F$q60yIu^ho>i<;(f0f|N?7ue9_VV^2@d-(_V-7iMODkg;vs$32CG zg?%i`PFNErh;Q7u5v9}V7CD_fS6Eosy=>W1CjfxaXcSE)9?S0CyL!61x~wNooP4vY z>S981@fTg2HfP&(c5MHWkcL}FqBUtL`lS6y8-UEc)6;_!gQ@-$4Z*C%IY zYM#jDa{r`amSxGogJ0b*Dk@&4RL*}MvT+QnwpeRQ8M4q&`|hj&1^PD#>UR~w6?ZJkJkKtKTS~-7z~E! z;^N}2?CcMR$9pD-S(YVfX=zTGEb2vK;sSS4Qj$9-M{Cc?(b_qV!z)&-cp{g}y`wdW zMB>ZH$gp!9hem5ERqXTB)KsTfEcRtuf?+lwQk)yvU&5S*7Wpr zD*%AiYUK(Fwxru^!{HpqA%Q@EB@&4b0HCk0Pa>Dk^|;;71kusao{{^-QmNEyx7$T3 zmC6MG;BYvE48stfcXF|@DtBdNMT=6Y^Z@`gH#aLUT)3DvVXbaxxEYm`llO=aOwGuX zQ8a02xEZx|Yk_raeS)~Rw^!_PIcMZ(JBrWeov=r<0DuYkch}mvv+%8sj*huADIMkE z!$)GhzWm;Z3$qNv4B73&A^?C>r}Xz`Lpm0_-7aDnW{5@z)wQ*?DG@?5(x+2_5TXo* zwitv^Elp9>VV>v1&YnHDn2>3m`9gva3>6iXi+P^sFvdq1qtWO{PENjWv)MlF>@-Sc zGMPsvlf9tnnVI4UAPOE-{C#_g>p=~u z{QUfR0AO0V^1a9T`T1r5fbMQnWO;e{Dva^Fb#-;k)6EL1BWr4Eh7dx>T3T+u;rIJ! z0D$)Pb_K&Q4}y^fEd~Gx1Oj@W&nLWdr*$3xKyPnvBtq!dU~_^NU%7I{3IM+u46QK; zA2>ChGjF8F8%liyM?5=+RTw9URRwiy$ P00000NkvXXu0mjflkh4- literal 0 HcmV?d00001 diff --git a/resources/public/img/map-pins/Planning-authority-pin.svg b/resources/public/img/map-pins/Planning-authority-pin.svg new file mode 100644 index 0000000..ca9926d --- /dev/null +++ b/resources/public/img/map-pins/Planning-authority-pin.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Basic pin for SceneHere + 20100801 + + + Simon Brooke + + + + + Copyright (c) 2010 Simon Brooke + + + basic_map_pin.svg + + Basic default map pin + $Revision: 1.2 $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/public/img/map-pins/basic_map_pin.png b/resources/public/img/map-pins/basic_map_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..c14e0be0f54cafc0a1cc8fe4a7e8c753b8f86e52 GIT binary patch literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yI!3HERJ&c?Lq*#ibJVQ8upoSx*1IXtr@Q5sC zU|_rf!i>LSmK6a7B}-f*N`mv#O3D+9QW?t2%k?tzvWt@w3sUv+i_&MmvylQSk_9OW z$t=l9WpGL?&P-M)$jnnn%P&$0PEO5B^++vBU1m8?8mLehq|mXnBqP6wAviNPKTpA_ zC_g_twJ)*rCQ#ZEB<+$~oLrPyP?DLS$H2wO2{AAwH7&6;r$iw)u>fQ^P+TP_wJft3 zsK`peP|rv~g^N?>!s+8cL&QLaI2WZRf=o~d$;?eEaj? q(falvBO{R4r0{=zo`(a7$*@OSREvReO3jarAfBhIpUXO@geCxOh+q%^ literal 0 HcmV?d00001 diff --git a/resources/public/img/map-pins/basic_map_pin.svg b/resources/public/img/map-pins/basic_map_pin.svg new file mode 100644 index 0000000..cd8409d --- /dev/null +++ b/resources/public/img/map-pins/basic_map_pin.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Basic pin for SceneHere + 20100801 + + + Simon Brooke + + + + + Copyright (c) 2010 Simon Brooke + + + basic_map_pin.svg + + Basic default map pin + $Revision: 1.2 $ + + + + + + + + + diff --git a/resources/public/img/map-pins/shadow_pin.png b/resources/public/img/map-pins/shadow_pin.png new file mode 100644 index 0000000000000000000000000000000000000000..07c4daa8da5879df63481756802790065671fadf GIT binary patch literal 1966 zcmV;f2T}NmP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00Gzl00Gzm`dp@R00007bV*G`2igZ8 z5Fi{_h}EqC00%BfL_t(o!@ZYFa^pr4hVxY*07_(2YRS{H^v3J<#^IGCwCrp2xpWOJ z`v}$z?4>-S)DoW{Q2CezKw149%W6+WFoM9MfDiwlnSbH;-+vGP;KH|W-@?0h?`Sj{ z(R3=(G*r}eT>`)u5y#9p2A~6Gst~CHfDs}lL}UQKh`>)aMU2lqEc)f{uI{?c*%oGY zBmWP;s;Wdp3bUfDYZ(*K1OTQf$&`o>iRgftYD6pna72Ux&_e=z3OQ^)fCfYWAVRoD zxVyP~s|qW3kcepiDM`V@KHLK$Qt=3o zh;XkEeony%fQT6WySs2oT^N4uA$=ojU*kbP=(Oh{oL; z`KRpJwrw#Qjp~%r1QCx?k`p36Nh!T#<`>L-z|18P6-3C0NQg*%9Rgyn-DlzUDiWc) zdmu)bg}O)M?n^U!9}(B?K97id`Idl}mzO-7%>)2SA|DeKQzCqsQgOn}ry_F9%r8V_ z%*-Q1OamYS3|RfYuSkgTs0Q6V)ZJS%+ojb2?5beV3BFN-4ccDV?SyGZ8ry;gXpOB4R{(u;*aW!KNSoV6Z0u0C>Nm zGqc7_mpSWuGy6}@`ASu<%xrFE_g&X*WY4A(@I zn27;^{`4gNk4Fu~2LTb`5us+@nb}rVS7vsrn&+x^t*UcXy+g!R+qTVgI_=~+fEO1R z{OZ*!QPt6CG#WGWbg<;9h@7M(FNyjF!%QU+3lTEFzOj6%?mlTSF^oYsb9J}Y%-5=U zVdgigIv?zLlXJcYfDIz-F@9O&2F(+d*?HRGRr>mK_ zX1X=g#h~0Ds(O`k{v#shs=6SewYzt#)ymG!&iwrR8~`AmY}cx)1OP@vG)^f^iRgHM zI%VdUDai|F*^h_xG<)vh9#Wc{xkh-aY8zEusOqhmUgxZHcfWD>J9l3*^KP+NXkFKK zc6Ju$=jRV?>dBC0Sys$^AVM={IuS`HB77>6jzwfD!ec}lG1HJ-5WWofQGkhudv4|) z;n~a^Gu`B@_wF{&S?8*H?e4cZ=SA0bTUFgPO{07De*N{=4>o=>BqAO%^D(oWipX~& za+*>)V&;j6RLoQ$q71|RBeM7;mVHRvhcoxk9?%+9Tbb#d*#qEQRo}b&(%l;o`NWRzPAtPf2Sjl9h={PE{&xNRv!$8c zndv-dotxP$0NknS8US|N?KXeTp3jCv#0etJ5a9?Br-)c1VgV4t(ddJZ8G~N#{?JU~ zkyisCygwd=Mnq?3t(k4yZK-N^W_qh?Hxcn(RhMnsZbYQLy1LRgZ{FDF?D=fSh$sLe z_4O7I5$f)F56Ijr)W@%I0I*)6u;F^JWe*P!IsmrrwsVh-nXXjr-rerZ{4PQls3*CI!GvL@eEH83Ai|Zw6aGKt_ZCKpyUQ?%qX2i-_HJ zyUmE0%d)hTk`Ln_}x~^+-&O0L7wQbvWUDr+~lg`ZY?d`1{9v<53 z*RTEJ;sP!&FaI{&b86Do>oug5sBPO05qCtiMg$$sdAo>M1HjtMnxcr^Zs%GQg{@Yr zsOvh`>-7gOKAX+rhaY|j0D$xJbNK!D-=C%2vmwvU&ivxy0?o`)N*w@fh8V^GmJxA> zh)vG9C8E4qskUwFKmGKRKi+4kF93jV4)yW+FRWs@=87f`p#T5?07*qoM6N<$f;>gG Aa{vGU literal 0 HcmV?d00001 diff --git a/resources/public/img/map-pins/shadow_pin.svg b/resources/public/img/map-pins/shadow_pin.svg new file mode 100644 index 0000000..595d104 --- /dev/null +++ b/resources/public/img/map-pins/shadow_pin.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Shadow pin for SceneHere + 20100801 + + + Simon Brooke + + + + + Copyright (c) 2010 Simon Brooke + + + shadow_pin.svg + $Revision: 1.2 $ + + + + + + + diff --git a/resources/public/img/map-pins/unknown-pin.png b/resources/public/img/map-pins/unknown-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b8fbb15f8d3ad76ce798d91491160e4edee0e0 GIT binary patch literal 1826 zcmV+-2i^FIP)00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4c7nw4c7reD4Tcy000McNliru;R7B89S@JPi=6-f2Cqp( zK~z}7#aCTy6xS90&bc$QJL^9Tu`wV>X)7Z{?Kmw_(?n4p5~-*HW?O}-Rf|%Rhej1? z)k>8r^)cirNENiIQVH5biYz1=>@g&fAt(unFsNxF;-AK}xT-Nw)3wdo-nDmU?m2x} zLjv*d;-p8q(#&Y?Ip6uY-?@hXAP544VTd3I(g5~~$io1VSYF97^BDjK!Z7Sir_*R} zZwCcI000Ewn24m;tZBH>*tluf_x*TTt>-4a{{H^e!^79BjWI8WVYoX80?o}l`20=u)aN)wL7hinoK>(W=z%vaE4L4d^S~5%WMlbo*@|X1rPnNPzRngqs zJmR`;4B!xp$U~bpZMweHu-D*~bw2mj0p+EurRBasRegj3BvUEBxU}tzB=^?A@zuu% z)#U)FsHiNKG?gI=N7xiRcBYUJ0I2y61Lov;gqwf)@|EJ z>=6j?^lGh%a*ir%Il8!<&?UWrdNMA79ft9>(s`%8+z8wRKqWF<6aXT}VRc+4$0g+i zQf_aZ;${Ts6N>?`0!D$^BQ%o&Qco_XK!BxHks=|VP@)O~hyW$^-HSDFj3E%9AY!W? zU8&`K#ICvGI~YkA9dlVnU89+Vkuitts0Vf8VehwnglV1yfTGBa`6_9vUxC&}GA_Y5 zOzaR$X_0XmrSC-S5{Lj%s1OVllJ~Co<)e^D)y9h0irPqFV^LTIikhQGt`Z`erwA1j z{GIDLJT|fhzy6xRL<&R%A|htO%pzk5>=1|vY?UlQEeI^4VoMPtOCVAZladqv$2stR zOlu3Xkrv-sV1i0JBrlvFu|Mf1l9Hz&0x?QJ48a&C$0-3}L&RMAh4?0B5XEL(cMc5E zOIPT$vUXeXDXdl%u0_vvjp+|AFI3#l ze8Btc8lzdhg(tWv60QPinpPFTuvDikZ4(RTV&0)mnwbfC@Yss9AO@c6d1H zQU6NVSjZMd<5)E+>UjR4OA=E=Hd2UHh!xlZ`Sd}}G6En}@Y#FRni!?1ds~FdfL#&h{A-W0&w=9<07X%=vuvIv*L9H#ZoQ-8D|NNP0+c;6`=`md` z?0auKdUOC10b-RT&x{GPEC77`wZ=#$2^(o_>&6EQe|+2Ois<%>sAA0S{&&Xy;sR{W zKt!wU(Y13mphW{v7_F4o8(^(W$~P}xu?OE%xN|7Al*a=%uJQ|AB5bRoBVQmCdA{2* z060W6k0A^%Iy#yv@eI+M z{rwkLCla5&RwbmT;=j(b7bfXjnfbi=blFBU&CQc@87Ct2^z^PHqBaJwKa)CYXIyu{r&xen>TO1=cAAMccxOQ+=dP7Cz)BP zB)D@eX7ZV1sfh6D)2G+J`s!=VMD%B@}hhg}ubUJ-&IK4TZ zR|9w%z>fL6+_Ps-S95dIsOrb5>FMcNb@=d~9$X+wM*ut-hT+tX9XoLR`0|K9z5TP93)f*CnIH8tfC(OY*roR;G~0DO1m_0RZ!Ne~44?`Hr10AoNtQoCRd QBLDyZ07*qoM6N<$f+f;shX4Qo literal 0 HcmV?d00001 diff --git a/resources/public/img/map-pins/unknown-pin.svg b/resources/public/img/map-pins/unknown-pin.svg new file mode 100644 index 0000000..638daa1 --- /dev/null +++ b/resources/public/img/map-pins/unknown-pin.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Basic pin for SceneHere + 20100801 + + + Simon Brooke + + + + + Copyright (c) 2010 Simon Brooke + + + basic_map_pin.svg + + Basic default map pin + $Revision: 1.2 $ + + + + + + + + + diff --git a/resources/public/img/map-pins/unknown-pin.xcf b/resources/public/img/map-pins/unknown-pin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b55b9f8500df60592bec0955d09938cc0df70bf0 GIT binary patch literal 3759 zcmds4YitzP6`q;h^^2q>#-(b~N-I^WNGhXHq|owmVlZIi-Lb(AP@3{Ew(FD_gh@gg zwLd~Jl%S?j3TmQ8s#2wCiiELuj7fMj2{fe85-=DW@4YkYeR%!c_ha7EbJyc#P|1(} z?MQd;Ip25gx%Zwqch23`wios~4>YwnTiSLvQ}8&UJwXI`9)U*F@G}ouQ6)!Fq`^}L z%?^!$Hs6$q-8aDg+tAN#1-IpGFYIV-E^pn}whJH%c$!+!vHz9b&CZTJyW4g>Ub3L2 zwQ0}pJ^P#sa$Whp)}1??PcD2i_dGyYWKxgA(47w$I?Fr1S|CFYbnM;H)YjhWTr@iu zfUi6VG_mp*+uQa#+uECc*4#nH?`di2Xx^V+AQ}DN&me3f?rs=e<8}P$`i9U_(CU3)vFP&p)gOI8eKzS03yyL2-+rY7^M!dMd994jI z-b6J47v@oIl&nM2H84--aR-Df3oC^6tGZ%=6Fw3LHLAdmGMe}9!1|=hsM!$4SyfS_ zJYmO@SAoK77Ch#*m2=Tf}Ood3a4)x0@|wHOd9YP_Kob0#DXEUF{$M>zJxZzU zW;gX1#juZ2HugJ|&QcFk|NB`e!8%D?>rv3qUHnk~BxuM>H1i;6yg;;Ez)LVaq6?N| zpa`L0z@p2+@L1S-3TzX)-*N_+h&B}lT_WzhBAJ#=;>#pZD*; z314V5Jm$kV81nn9gzWPNf;{Yw_G$dR6*;iV3qEk5dWVNCJD|PrmWKuil1qL_*Fglq zhu3e(eA+wj|0VC6b2Z>MJ7;PD+a;hfl=aWlfG$*w)X@(ybQ(UDD*^(6E;REFP?no z$o{7K#vnqu!N-2EWLd?kwYBw)&u)5lW8L~Sl@&{$T3r4-(Y-QJE%I9}t zL$dJv!k2L7_9H>GBpMc@FXKTbSpf0F~j`o8G_1{MhftGpsz9NC)rD&%gP$X_56tolx z0d?hz#BF}INQBHH(L8ytNc`n1iv&Zdb?382siCIMtcClZOm`X4q1&ammEpMYXDCie zmwv^=m2uggtH%3OopFUL=Cq#AxH+73#rWQZs0VcQoX`V+qI{OU%aw5Ios@^D*f4Gp zbu#%WQ3r`y%qczbWWPn1FQ!vt-C#FsAPbqa)N2LO*{pcY1a5OhoY{c%nisgJkkqe$YYvZujR4G%Y;OMCi_N2#}r>%AVX6ukA`G>(!)`@L=i;E-u| z`@pC6aqiO-G>q3N8>M}%$0#uL&%v911tjf*Vycj`Ga1`S<1EK@>o*uXQ%Z>n_HdsY zW#nq~rqSm?L2_@>{@EQrM+6k@GWHQ+n{mx>l3Np`5!{+o&NxfD0%H^WtI?0a-RVCQ Cjpg|O literal 0 HcmV?d00001 diff --git a/resources/public/img/threelines.png b/resources/public/img/threelines.png new file mode 100644 index 0000000000000000000000000000000000000000..72a2fe5b5b4aa0af75ae9c84be2ea0dd577bfa2e GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^hCr;r!3HG5U4{IC6kC$Fy9ABk`Uu+BCzd3jDiOH+ZK!2X? zmpo72sP(Xv3lmsa@#u}pe#L8DcP(eByV)AP>J$t-Qup^)>5FQoYXuosg?SeJnlbMO zzo^Vv;l=YLz8=ZYF54n%eXC3M>+i42~uelF{r G5}E)t6k)&s literal 0 HcmV?d00001 diff --git a/resources/public/img/threelines.xcf b/resources/public/img/threelines.xcf new file mode 100644 index 0000000000000000000000000000000000000000..e609fe3dd8e7ac08cfd607574096b406a0faff54 GIT binary patch literal 942 zcmah`yKcfj5VS262uXxd9#x8KA{kjmKuJ12B0U`EN3v-Bq@id6hF|UR>pgz6$6MfZ zuZcQ{@ta?6-h!4h(n9lmXq}hCniJCZ+WK()vQ~}3+WL0=!3o6{z4lpE$z9AEVpcU` p+%ojz6N)W*PiIvnA7a)Vv#PPdEpvZ!La{~f`K+qs^L72J`~i2G&+q^M literal 0 HcmV?d00001 diff --git a/src/cljs/geocsv/ajax.cljs b/src/cljs/geocsv/ajax.cljs index 726d626..4605fd6 100644 --- a/src/cljs/geocsv/ajax.cljs +++ b/src/cljs/geocsv/ajax.cljs @@ -6,9 +6,11 @@ [re-frame.core :as rf])) (defn local-uri? [{:keys [uri]}] - (not (re-find #"^\w+?://" uri))) + (js/console.log (str "local-uri?: received `" (str uri) "` (type " (type uri) ") as uri")) + (not (re-find #"^\w+?://" (str uri)))) (defn default-headers [request] + (js/console.log (str "default-headers: received `" request "` as request")) (if (local-uri? request) (-> request (update :headers #(merge {"x-csrf-token" js/csrfToken} %))) diff --git a/src/cljs/geocsv/events.cljs b/src/cljs/geocsv/events.cljs index 4e4f866..cab559a 100644 --- a/src/cljs/geocsv/events.cljs +++ b/src/cljs/geocsv/events.cljs @@ -162,6 +162,11 @@ (fn [route _] (-> route :data :name))) +(rf/reg-sub + :view + (fn [db _] + (:view db))) + (rf/reg-sub :zoom (fn [db _] diff --git a/src/cljs/geocsv/gis.cljs b/src/cljs/geocsv/gis.cljs index 76b3408..9d19b4e 100644 --- a/src/cljs/geocsv/gis.cljs +++ b/src/cljs/geocsv/gis.cljs @@ -4,7 +4,7 @@ (:require [ajax.core :refer [GET]] [ajax.json :refer [json-request-format json-response-format]] [cljs.reader :refer [read-string]] - [clojure.string :refer [capitalize lower-case]] + [clojure.string :as s] [cemerick.url :refer (url url-encode)] [day8.re-frame.http-fx] [re-frame.core :refer [dispatch reg-event-db reg-event-fx subscribe]])) @@ -51,8 +51,7 @@ (do (dispatch [:set-latitude lat]) (dispatch [:set-longitude lng]) - (.panTo view (.latLng js/L lat lng)) - (locality lat lng)) + (.panTo view (.latLng js/L lat lng))) (do (js/console.log (if view @@ -80,29 +79,65 @@ (s/replace (s/lower-case (str (:category record))) #"[^a-z0-9]" "-")) "-pin") "unknown-pin")) +(defn popup-content + "Appropriate content for the popup of a map pin for this `record`." + [record] + (str + "

" + (:name record) + "
" + (apply + str + (map #(str "
" (name %) "
" (record %) "
") (keys record))) + "
")) + +(defn popup-table-content + "Appropriate content for the popup of a map pin for this `record`, as a + table. Obviously this is semantically wrong, but for styling reasons it's + worth trying." + [record] + (str + "
" + (:name record) + "
" + (apply + str + (map #(str "") (keys record))) + "
" (name %) "" (record %) "
")) + (defn add-map-pin - "Add an appropriate map-pin for this `record` in this map `view`." + "Add an appropriate map-pin for this `record` in this map `view`, if it + has a valid `:latitude` and `:longitude`." [record index view] (let [lat (:latitude record) - lng (:longitude record) - pin (.icon js/L - (clj->js - {:iconAnchor [16 41] - :iconSize [32 42] - :iconUrl (str "img/map-pins/" (pin-image record) ".png") - :riseOnHover true - :shadowAnchor [16 23] - :shadowSize [57 24] - :shadowUrl "img/map-pins/shadow_pin.png"})) - marker (.marker js/L - (.latLng js/L lat lng) - (clj->js {:icon pin - :title (:name record)}))] - (.on + lng (:longitude record)] + (if + (and + (number? lat) + (number? lng) + (not (zero? lat)) + (not (zero? lng))) + (let [pin (.icon js/L + (clj->js + {:iconAnchor [16 41] + :iconSize [32 42] + :iconUrl (str "img/map-pins/" (pin-image record) ".png") + :riseOnHover true + :shadowAnchor [16 23] + :shadowSize [57 24] + :shadowUrl "img/map-pins/shadow_pin.png"})) + marker (.marker js/L + (.latLng js/L lat lng) + (clj->js {:icon pin + :title (:name record)}))] + (.bindPopup marker (popup-table-content record)) (.addTo marker view) - "click" - (fn [_] (map-pin-click-handler index))) - marker)) +;; (.on +;; (.addTo marker view) +;; "click" +;; (fn [_] (map-pin-click-handler index))) + (js/console.log (str "Added `"(:name record)"` in at " lat ", " lng)) + marker)))) (defn map-remove-pins "Remove all pins from this map `view`. Side-effecty; liable to be @@ -120,13 +155,12 @@ "Refresh the map pins on the current map. Side-effecty; liable to be problematic." [db] - (let [view (map-remove-pins @(re-frame/subscribe [:view])) + (let [view (map-remove-pins @(subscribe [:view])) data (:data db)] (if view - (do - (js/console.log (str "Adding " (count data) " pins")) - (doall (map #(add-map-pin %1 %2 view) data (range)))) + (let [added (remove nil? (map #(add-map-pin %1 %2 view) data (range)))] + (js/console.log (str "Adding " (count added) " pins"))) (js/console.log "View is not yet ready")) db)) diff --git a/src/cljs/geocsv/views/map.cljs b/src/cljs/geocsv/views/map.cljs index 7d1d3d5..282083b 100644 --- a/src/cljs/geocsv/views/map.cljs +++ b/src/cljs/geocsv/views/map.cljs @@ -70,12 +70,12 @@ :maxZoom 18})) view) (dispatch-sync [:set-view view]) - (.on view "moveend" - (fn [_] (let [c (.getCenter view)] - (js/console.log (str "Moving centre to " c)) - (dispatch-sync [:set-latitude (.-lat c)]) - (dispatch-sync [:set-longitude (.-lng c)]) - (dispatch [:fetch-data])))) +;; (.on view "moveend" +;; (fn [_] (let [c (.getCenter view)] +;; (js/console.log (str "Moving centre to " c)) +;; (dispatch-sync [:set-latitude (.-lat c)]) +;; (dispatch-sync [:set-longitude (.-lng c)]) +;; (dispatch [:fetch-data])))) ;; (refresh-map-pins) view)) @@ -91,7 +91,7 @@ (defn map-render "Render the actual div containing the map." [] - [:div#map {:style {:height "500px"}}]) + [:div#map {:style {:height "500px" :width "800px"}}]) (defn panel "A reagent class for the map object."