Merge develop into master
1
.gitignore
vendored
|
@ -9,6 +9,7 @@ pom.xml.asc
|
||||||
/checkouts/
|
/checkouts/
|
||||||
/resources/public/content/.git
|
/resources/public/content/.git
|
||||||
/resources/public/vendor
|
/resources/public/vendor
|
||||||
|
/bower_components/
|
||||||
.lein-deps-sum
|
.lein-deps-sum
|
||||||
.lein-repl-history
|
.lein-repl-history
|
||||||
.lein-plugins/
|
.lein-plugins/
|
||||||
|
|
23
README.md
|
@ -22,7 +22,7 @@ I've put a [dummy site](http://www.journeyman.cc/~simon/tmp/yyy-dummy/index.html
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
You will need [Leiningen][1] 2.0 or above installed. The database required must be [Postgres][2].
|
You will need [Leiningen][1] 2.0 or above installed. The database required must be [Postgres][2] 9.3 or above.
|
||||||
|
|
||||||
[1]: https://github.com/technomancy/leiningen
|
[1]: https://github.com/technomancy/leiningen
|
||||||
[2]: https://www.postgresql.org/
|
[2]: https://www.postgresql.org/
|
||||||
|
@ -38,6 +38,27 @@ You'll also need to create your own local copy of *profiles.clj*, which should c
|
||||||
|
|
||||||
Where *username* is the username required to access the database, and *thisisnotsecure* is the password which authenticates that username.
|
Where *username* is the username required to access the database, and *thisisnotsecure* is the password which authenticates that username.
|
||||||
|
|
||||||
|
It will be helpful for you to have the [Zenhub](https://www.zenhub.com/) plugin in your browser, either Firefox or Chrome, as I'm using it for project planning.
|
||||||
|
|
||||||
|
## Further Reading
|
||||||
|
|
||||||
|
If you're thinking of joining in development on this I'd strongly recommend you get hold of a copy of [Dmitry Sotnikov](https://github.com/yogthos)'s [Web Development with Clojure, Second Edition](https://pragprog.com/book/dswdcloj2/web-development-with-clojure-second-edition).
|
||||||
|
|
||||||
|
You should also read the [User-Oriented Specification](doc/specification/userspec.md) and any other documentation which appears under the *doc/specification* hierarchy.
|
||||||
|
|
||||||
|
|
||||||
|
## Getting the database up
|
||||||
|
|
||||||
|
Do get the database initialised, run
|
||||||
|
|
||||||
|
createdb youyesyet_dev
|
||||||
|
|
||||||
|
followed by
|
||||||
|
|
||||||
|
lein migratus migrate
|
||||||
|
|
||||||
|
**NOTE THAT** in the namespace *youyesyet.db.schema*, there are a series of functions *create-xxx-table!*. These are a snare and a delusion; they are how I originally bootstrapped the database, but are no longer used (and should probably be deleted). The database is now constructed using [migratus](https://github.com/yogthos/migratus).
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
To start a web server for the application, run:
|
To start a web server for the application, run:
|
||||||
|
|
23
doc/specification/competitors.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# Competitor Analysis
|
||||||
|
|
||||||
|
Obviously **You Yes Yet?** is my baby; I've put a lot of thought into it. At the time I started working on it I wasn't aware of any open source competitors; I did to a web search, and I emailed the Bernie Sanders campaign to see whether their widely admired tools were open source. I didn't find anything.
|
||||||
|
|
||||||
|
However, I've just been pointed to [Vote Leave](http://www.voteleavetakecontrol.org/)'s [Vics](https://dominiccummings.wordpress.com/2016/10/29/on-the-referendum-20-the-campaign-physics-and-data-science-vote-leaves-voter-intention-collection-system-vics-now-available-for-all/) tool, and there may well be others.
|
||||||
|
|
||||||
|
There is no room here for ego. What matters is that the Yes campaign gets the best available tool for the job. So it's important to do competitor analysis, and not to invest too much work into **You Yes Yet?** unless there's a realistic possibility of producing a tool which is better than any of the available alternatives. But it's also the case that by studying competitors we may find ways to improve the design of **You Yes Yet?**.
|
||||||
|
|
||||||
|
## Vics
|
||||||
|
|
||||||
|
Vics, the **Voter Intention Collection System**, is reputed to have been a significant factor in the successful campaign by Vote Leave to take Britain out of the EU. It has been [released](https://github.com/celestial-winter/vics) as open source under MIT licence, so it is unambiguously available for us to use.
|
||||||
|
|
||||||
|
The architecture comprises a single-page app built using Angular talking to a server built in Java using the Spring framework. The database engine used is Postgres. [Jedis](https://github.com/xetorthio/jedis), a Java port of [Redis](https://redis.io/), is used as an in-memory data cache, server side.
|
||||||
|
|
||||||
|
### Download and initial build
|
||||||
|
|
||||||
|
I checked out the source from the GitHub repository, and following the instructions in the README created the database and ran a maven install process. Unfortunately, run as a normal user, when this process goes into its test sequence many tests fail unable to contact Jedis. I find it slightly worrying to run such a large and complex build as *root*, but as *root* it gets substantially further. The build still doesn't complete but it seems that it is closer to completion.
|
||||||
|
|
||||||
|
The ironic point is that it fails because it depends on the JavaScript package manager [bower](https://bower.io/), and bower (very sensibly) refuses to run as *root*. I therefore made a small modification to the build script to allow it to run *bower* as root, but unfortunately that didn't solve the build problem; the jedis service was still not found where it was expected.
|
||||||
|
|
||||||
|
This is difficult to diagnose; the exception is so deeply nested in framework code that no code from the actual Vics application appears on the stack dump, which makes it very hard to know where to start in debugging.
|
||||||
|
|
||||||
|
So for tonight I've failed. I shall try again.
|
|
@ -25,16 +25,16 @@
|
||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="0.98994949"
|
inkscape:zoom="1.979899"
|
||||||
inkscape:cx="473.75864"
|
inkscape:cx="833.70674"
|
||||||
inkscape:cy="409.50744"
|
inkscape:cy="324.89697"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="996"
|
inkscape:window-height="1058"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="1920"
|
||||||
inkscape:window-y="28"
|
inkscape:window-y="0"
|
||||||
inkscape:window-maximized="1">
|
inkscape:window-maximized="1">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
<dc:format>image/svg+xml</dc:format>
|
<dc:format>image/svg+xml</dc:format>
|
||||||
<dc:type
|
<dc:type
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
<dc:title></dc:title>
|
<dc:title />
|
||||||
</cc:Work>
|
</cc:Work>
|
||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -57,6 +57,13 @@
|
||||||
inkscape:groupmode="layer"
|
inkscape:groupmode="layer"
|
||||||
id="layer1"
|
id="layer1"
|
||||||
transform="translate(0,-308.26772)">
|
transform="translate(0,-308.26772)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#060000;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4428"
|
||||||
|
width="1030"
|
||||||
|
height="730"
|
||||||
|
x="232.23355"
|
||||||
|
y="376.0018" />
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
|
||||||
|
@ -166,7 +173,7 @@
|
||||||
height="100"
|
height="100"
|
||||||
x="20"
|
x="20"
|
||||||
y="174.09448" /></flowRegion><flowPara
|
y="174.09448" /></flowRegion><flowPara
|
||||||
id="flowPara4176"></flowPara></flowRoot> <rect
|
id="flowPara4176" /></flowRoot> <rect
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
id="rect4178"
|
id="rect4178"
|
||||||
width="100"
|
width="100"
|
||||||
|
@ -372,23 +379,26 @@
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="g4264"
|
id="g4369">
|
||||||
transform="translate(170.18532,391.93918)">
|
<g
|
||||||
<path
|
transform="translate(170.18532,391.93918)"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
id="g4264">
|
||||||
d="m 100,442.3622 0,60"
|
<path
|
||||||
id="path4266"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4266"
|
||||||
<path
|
d="m 100,442.3622 0,60"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
d="m 90,452.3622 20,0"
|
<path
|
||||||
id="path4268"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4268"
|
||||||
<path
|
d="m 90,452.3622 20,0"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
d="m 90,502.3622 10,-10 10,10"
|
<path
|
||||||
id="path4270"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4270"
|
||||||
|
d="m 90,502.3622 10,-10 10,10"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="g4278"
|
id="g4278"
|
||||||
|
@ -410,23 +420,26 @@
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="g4283"
|
id="g4402">
|
||||||
transform="translate(169.17517,152.53303)">
|
<g
|
||||||
<path
|
transform="translate(169.17517,152.53303)"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
id="g4283">
|
||||||
d="m 150,532.3622 70,0"
|
<path
|
||||||
id="path4285"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4285"
|
||||||
<path
|
d="m 150,532.3622 70,0"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
d="m 160,522.3622 0,20 0,0 0,0 0,0"
|
<path
|
||||||
id="path4287"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4287"
|
||||||
<path
|
d="m 160,522.3622 0,20 0,0 0,0 0,0"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
d="m 220,522.3622 -10,10 10,10"
|
<path
|
||||||
id="path4289"
|
inkscape:connector-curvature="0"
|
||||||
inkscape:connector-curvature="0" />
|
id="path4289"
|
||||||
|
d="m 220,522.3622 -10,10 10,10"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
transform="translate(339.89095,152.53303)"
|
transform="translate(339.89095,152.53303)"
|
||||||
|
@ -504,59 +517,38 @@
|
||||||
d="m 90,502.3622 10,-10 10,10"
|
d="m 90,502.3622 10,-10 10,10"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
</g>
|
</g>
|
||||||
<rect
|
|
||||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="rect4323"
|
|
||||||
width="100"
|
|
||||||
height="60"
|
|
||||||
x="560.60675"
|
|
||||||
y="653.08313" />
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
x="570.60675"
|
|
||||||
y="683.08313"
|
|
||||||
id="text4325"
|
|
||||||
sodipodi:linespacing="125%"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4327"
|
|
||||||
x="570.60675"
|
|
||||||
y="683.08313"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial">Option</tspan></text>
|
|
||||||
<g
|
<g
|
||||||
transform="matrix(-1,0,0,1,709.23435,152.53303)"
|
id="g4356"
|
||||||
id="g4329">
|
transform="translate(-170.71578,120.20815)">
|
||||||
<path
|
<rect
|
||||||
inkscape:connector-curvature="0"
|
y="653.08313"
|
||||||
id="path4331"
|
x="560.60675"
|
||||||
d="m 150,532.3622 70,0"
|
height="60"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
width="100"
|
||||||
<path
|
id="rect4323"
|
||||||
inkscape:connector-curvature="0"
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
id="path4333"
|
<text
|
||||||
d="m 160,522.3622 0,20 0,0 0,0 0,0"
|
sodipodi:linespacing="125%"
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
id="text4325"
|
||||||
<path
|
y="683.08313"
|
||||||
inkscape:connector-curvature="0"
|
x="570.60675"
|
||||||
id="path4335"
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 220,522.3622 -10,10 10,10"
|
xml:space="preserve"><tspan
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial"
|
||||||
|
y="683.08313"
|
||||||
|
x="570.60675"
|
||||||
|
id="tspan4327"
|
||||||
|
sodipodi:role="line">Option</tspan></text>
|
||||||
</g>
|
</g>
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 490.18532,561.65662 200,0 0,110 40,0"
|
d="m 470.48735,533.37235 -0.005,-30.30458 219.70308,0 0,159.4362 42.32143,0"
|
||||||
id="path4337"
|
id="path4337"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="cccc" />
|
sodipodi:nodetypes="ccccc" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 720.18532,661.65662 0,20"
|
d="m 460.43658,533.32159 10,-10 10,10"
|
||||||
id="path4339"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 490.18532,551.65662 10,10 -10,10"
|
|
||||||
id="path4341"
|
id="path4341"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="ccc" />
|
sodipodi:nodetypes="ccc" />
|
||||||
|
@ -580,7 +572,7 @@
|
||||||
sodipodi:nodetypes="cccc" />
|
sodipodi:nodetypes="cccc" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 320,791.65662 120,0 0,130 290,0"
|
d="m 320,791.65662 30.09642,0 0,130 379.90358,0"
|
||||||
id="path4349"
|
id="path4349"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="cccc" />
|
sodipodi:nodetypes="cccc" />
|
||||||
|
@ -598,16 +590,10 @@
|
||||||
sodipodi:nodetypes="ccc" />
|
sodipodi:nodetypes="ccc" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 270,961.65662 0,49.99998 620,0.1015 0,-330.10148 -60,0"
|
d="m 270,961.65662 0,49.99998 590.70558,0.1015 1.01015,-269.49233 -42.12183,1.01016 0.30457,-31.31473"
|
||||||
id="path4355"
|
id="path4355"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="ccccc" />
|
sodipodi:nodetypes="cccccc" />
|
||||||
<path
|
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 840,671.65662 0,20"
|
|
||||||
id="path4357"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cc" />
|
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 260,961.65662 10,10 10,-10"
|
d="m 260,961.65662 10,10 10,-10"
|
||||||
|
@ -627,14 +613,14 @@
|
||||||
y="394.48404"
|
y="394.48404"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial"><tspan
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
|
||||||
id="tspan4371">Version: </tspan>0.1</tspan><tspan
|
id="tspan4371">Version: </tspan>0.2</tspan><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="472.0152"
|
x="472.0152"
|
||||||
y="413.23404"
|
y="413.23404"
|
||||||
id="tspan4365"
|
id="tspan4365"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial"><tspan
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;font-family:Arial;-inkscape-font-specification:Arial"><tspan
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'"
|
||||||
id="tspan4373">Date: </tspan>20161014</tspan><tspan
|
id="tspan4373">Date: </tspan>20170315</tspan><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
x="472.0152"
|
x="472.0152"
|
||||||
y="431.98404"
|
y="431.98404"
|
||||||
|
@ -651,12 +637,13 @@
|
||||||
id="tspan4377">Copyright:</tspan> (c) 2016 Simon Brooke for Radical Independence Campaign</tspan></text>
|
id="tspan4377">Copyright:</tspan> (c) 2016 Simon Brooke for Radical Independence Campaign</tspan></text>
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 730,692.3622 -40,0 0,60 60,0 0,-40"
|
d="m 731.60714,702.69832 -41.60714,0 0,49.66388 60,0 0,-40"
|
||||||
id="path4379"
|
id="path4379"
|
||||||
inkscape:connector-curvature="0" />
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccc" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
d="m 720,682.3622 0,20"
|
d="m 720,692.46373 0,20"
|
||||||
id="path4381"
|
id="path4381"
|
||||||
inkscape:connector-curvature="0" />
|
inkscape:connector-curvature="0" />
|
||||||
<path
|
<path
|
||||||
|
@ -680,14 +667,14 @@
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
x="530"
|
x="530"
|
||||||
y="552.36218"
|
y="498.31903"
|
||||||
id="text4389"
|
id="text4389"
|
||||||
sodipodi:linespacing="125%"><tspan
|
sodipodi:linespacing="125%"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4391"
|
id="tspan4391"
|
||||||
x="530"
|
x="530"
|
||||||
y="552.36218"
|
y="498.31903"
|
||||||
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">Visited</tspan></text>
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">Visited</tspan></text>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;text-anchor:start;text-align:start;writing-mode:lr;"
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;text-anchor:start;text-align:start;writing-mode:lr;"
|
||||||
|
@ -820,18 +807,6 @@
|
||||||
x="280"
|
x="280"
|
||||||
y="742.36218"
|
y="742.36218"
|
||||||
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">Requested</tspan></text>
|
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">Requested</tspan></text>
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
x="510"
|
|
||||||
y="702.36218"
|
|
||||||
id="text4437"
|
|
||||||
sodipodi:linespacing="125%"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4439"
|
|
||||||
x="510"
|
|
||||||
y="702.36218"
|
|
||||||
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">For</tspan></text>
|
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
@ -856,5 +831,333 @@
|
||||||
x="340"
|
x="340"
|
||||||
y="552.36218"
|
y="552.36218"
|
||||||
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">To</tspan></text>
|
style="-inkscape-font-specification:'Arial, Normal';font-family:Arial;font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;font-size:10px;text-anchor:start;text-align:start;writing-mode:lr;line-height:125%">To</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 810,722.36221 20,0"
|
||||||
|
id="path4281"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect4283"
|
||||||
|
width="100"
|
||||||
|
height="60"
|
||||||
|
x="902.03827"
|
||||||
|
y="653.08313" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="908.88831"
|
||||||
|
y="682.36218"
|
||||||
|
id="text4285"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4287"
|
||||||
|
x="908.88831"
|
||||||
|
y="682.36218"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;text-align:start;writing-mode:lr-tb;text-anchor:start">Team</tspan></text>
|
||||||
|
<rect
|
||||||
|
y="533.88513"
|
||||||
|
x="902.03827"
|
||||||
|
height="60"
|
||||||
|
width="100"
|
||||||
|
id="rect4298"
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect4300"
|
||||||
|
width="100"
|
||||||
|
height="60"
|
||||||
|
x="902.03827"
|
||||||
|
y="773.29126" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
|
||||||
|
x="920"
|
||||||
|
y="562.36218"
|
||||||
|
id="text4302"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4304"
|
||||||
|
x="920"
|
||||||
|
y="562.36218" /></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="908.88831"
|
||||||
|
y="802.36218"
|
||||||
|
id="text4306"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4308"
|
||||||
|
x="908.88831"
|
||||||
|
y="802.36218"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial">Organiser-</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="908.88831"
|
||||||
|
y="821.11218"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:Arial"
|
||||||
|
id="tspan4310">ship</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="908.88831"
|
||||||
|
y="562.36218"
|
||||||
|
id="text4312"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4314"
|
||||||
|
x="908.88831"
|
||||||
|
y="562.36218">Team</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="908.88831"
|
||||||
|
y="581.11218"
|
||||||
|
id="tspan4385">Membership</tspan></text>
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 830,672.36221 40,0 0,-110 30,0"
|
||||||
|
id="path4316"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 830,692.36221 40,0 0,110 30,0"
|
||||||
|
id="path4318"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 950,592.36221 0,60"
|
||||||
|
id="path4320"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 950,712.36221 0,60"
|
||||||
|
id="path4322"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 840,662.36221 0,40"
|
||||||
|
id="path4324"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 940,642.36221 20,0"
|
||||||
|
id="path4328"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 940,722.36221 20,0"
|
||||||
|
id="path4330"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 940,772.36221 10,-10 10,10"
|
||||||
|
id="path4334"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 940,592.36221 10,10 10,-10"
|
||||||
|
id="path4336"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 900,552.36221 -10,10 10,10"
|
||||||
|
id="path4338"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<text
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
id="text4340"
|
||||||
|
y="743.37231"
|
||||||
|
x="879.90356"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
|
||||||
|
y="743.37231"
|
||||||
|
x="879.90356"
|
||||||
|
id="tspan4342"
|
||||||
|
sodipodi:role="line">Has</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;line-height:125%;font-family:'URW Chancery L';-inkscape-font-specification:'URW Chancery L Bold Italic';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="879.90356"
|
||||||
|
y="621.14386"
|
||||||
|
id="text4344"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4346"
|
||||||
|
x="879.90356"
|
||||||
|
y="621.14386"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">Has</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="960"
|
||||||
|
y="622.36218"
|
||||||
|
id="text4348"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4350"
|
||||||
|
x="960"
|
||||||
|
y="622.36218"
|
||||||
|
style="font-size:10px">of</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="960"
|
||||||
|
y="742.36218"
|
||||||
|
id="text4352"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4354"
|
||||||
|
x="960"
|
||||||
|
y="742.36218"
|
||||||
|
style="font-size:10px">of</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4375"
|
||||||
|
transform="matrix(1,0,0,-1,171.72593,1606.7279)">
|
||||||
|
<g
|
||||||
|
id="g4377"
|
||||||
|
transform="translate(170.18532,391.93918)">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 100,442.3622 0,60"
|
||||||
|
id="path4380"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 90,452.3622 20,0"
|
||||||
|
id="path4382"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 90,502.3622 10,-10 10,10"
|
||||||
|
id="path4384"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="450"
|
||||||
|
y="742.36218"
|
||||||
|
id="text4386"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4388"
|
||||||
|
x="450"
|
||||||
|
y="742.36218"
|
||||||
|
style="font-size:10px">For</tspan></text>
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect4390"
|
||||||
|
width="100"
|
||||||
|
height="60"
|
||||||
|
x="561.61688"
|
||||||
|
y="653.08313" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="570"
|
||||||
|
y="682.36218"
|
||||||
|
id="text4394"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4396"
|
||||||
|
x="570"
|
||||||
|
y="682.36218">Role</tspan><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
x="570"
|
||||||
|
y="701.11218"
|
||||||
|
id="tspan4383">Membership</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4354"
|
||||||
|
transform="translate(0,-241.93154)">
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.4000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
|
id="rect4392"
|
||||||
|
width="100"
|
||||||
|
height="60"
|
||||||
|
x="561.61688"
|
||||||
|
y="774.30139" />
|
||||||
|
<text
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
id="text4398"
|
||||||
|
y="802.36218"
|
||||||
|
x="570"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
y="802.36218"
|
||||||
|
x="570"
|
||||||
|
id="tspan4400"
|
||||||
|
sodipodi:role="line">Role</tspan></text>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g4338">
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4412"
|
||||||
|
d="m 731.79186,682.5738 -70,0"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4414"
|
||||||
|
d="m 719.82757,672.5738 0,20 0,0 0,0 0,0"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4416"
|
||||||
|
d="m 661.79186,672.5738 10,10 -10,10"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4344"
|
||||||
|
d="m 720,652.46373 0,20"
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="690"
|
||||||
|
y="677.36218"
|
||||||
|
id="text4346"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4348"
|
||||||
|
x="690"
|
||||||
|
y="677.36218"
|
||||||
|
style="font-size:10px">Is</tspan></text>
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="619.09393"
|
||||||
|
y="631.24536"
|
||||||
|
id="text4350"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4352"
|
||||||
|
x="619.09393"
|
||||||
|
y="631.24536"
|
||||||
|
style="font-size:10px">Includes</tspan></text>
|
||||||
|
<g
|
||||||
|
id="g4359"
|
||||||
|
transform="translate(341.43156,-241.93151)">
|
||||||
|
<g
|
||||||
|
id="g4361"
|
||||||
|
transform="translate(170.18532,391.93918)">
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 100,442.3622 0,60"
|
||||||
|
id="path4363"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 90,452.3622 20,0"
|
||||||
|
id="path4365"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 90,502.3622 10,-10 10,10"
|
||||||
|
id="path4367"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 61 KiB |
|
@ -42,6 +42,22 @@ This means that the maximum number of transactions per second across Scotland is
|
||||||
|
|
||||||
## Spreading the load
|
## Spreading the load
|
||||||
|
|
||||||
|
### Caching and memoizing
|
||||||
|
|
||||||
|
People typically go out canvassing in teams; each member of the team will need the same elector data.
|
||||||
|
|
||||||
|
Glasgow has a population density of about 3,260 per Km^2; that means each half kilometer square has a maximum population of not much more than 1,000. Downloading 1,000 elector records at startup time is not infeasible. If we normalise data requests to a 100 metre square grid and serve records in 500 metre square chunks, all the members of the same team will request the same chunk of data. Also, elector data is not volatile. Therefore it makes sense to memoize requests for elector data. The app should only request fresh elector data when the device moves within 100 metres of the edge of the current 500 metre cell.
|
||||||
|
|
||||||
|
Intention data is volatile: we'll want to update canvassers with fresh intention data frequently, because the other members of their team will be recording intention data as they work, and it's by seeing that intention data that the canvassers know which doors are still unchapped. So we don't want to cache intention data for very long. But nevertheless it still makes sense to deliver it in normalised 500 metre square chunks, because that means we can temporarily cache it server side and do not actually have to hit the database with many requests for the same data.
|
||||||
|
|
||||||
|
Finally, issue data is not volatile over the course of a canvassing session, although it may change over a period of days. So issue data - all the current issues - should be fetched once at app startup time, and not periodically refreshed during a canvassing session. Also, of course, every canvasser will require exactly the same issue data (unless we start thinking of local or regional issues...?), so it absolutely makes sense to memoise requests for issue data.
|
||||||
|
|
||||||
|
All this normalisation and memoisation reduces the number of read requests on the database.
|
||||||
|
|
||||||
|
Note that [clojure.core.memoize](https://github.com/clojure/core.memoize) provides us with functions to create both size-limited, least-recently-used caches and duration limited, time-to-live caches.
|
||||||
|
|
||||||
|
At 56 degrees north there are 111,341 metres per degree of latitude, 62,392 metres per degree of longitude. So a 100 metre box is about 0.0016 degrees east-west and .0009 degrees north-south. If we simplify that slightly (and we don't need square boxes, we need units of area covering a group of people working together) then we can take .001 of a degree in either direction which is computationally cheap.
|
||||||
|
|
||||||
### Geographic sharding
|
### Geographic sharding
|
||||||
|
|
||||||
Volunteers canvassing simultaneously in the same street or the same locality need to see in near real time which dwellings have been canvassed by other volunteers, otherwise we'll get the same households canvassed repeatedly, which wastes volunteer time and annoys voters. So they all need to be sending updates to, and receiving updates from, the same server. But volunteers canvassing in Aberdeen don't need to see in near real time what is happening in Edinburgh.
|
Volunteers canvassing simultaneously in the same street or the same locality need to see in near real time which dwellings have been canvassed by other volunteers, otherwise we'll get the same households canvassed repeatedly, which wastes volunteer time and annoys voters. So they all need to be sending updates to, and receiving updates from, the same server. But volunteers canvassing in Aberdeen don't need to see in near real time what is happening in Edinburgh.
|
||||||
|
@ -56,6 +72,28 @@ The geographic sharding strategy is scalable. We could start with a single serve
|
||||||
|
|
||||||
But having considerable numbers of database servers will have cost implications.
|
But having considerable numbers of database servers will have cost implications.
|
||||||
|
|
||||||
|
### Geographic sharding by DNS
|
||||||
|
|
||||||
|
When I first thought of geographic sharding, I intended sharding by electoral district, but actually that makes no sense because electoral districts are complex polygons, which makes point-within-polygon computationally expensive. 4 degrees west falls just west of Stirling, and divides the country in half north-south. 56 degrees north runs north of Edinburgh and Glasgow, but just south of Falkirk. It divides the country in half east to west. Very few towns (and no large towns) straddle either line. Thus we can divide Scotland neatly into four, and it is computationally extremely cheap to compute which shard each data item should be despatched to.
|
||||||
|
|
||||||
|
We can then set up in DNS four addresses:
|
||||||
|
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
| Address | longitude | latitude |
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
| nw.data.yyy.scot | < -4 | >= 56 |
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
| ne.data.yyy.scot | >= -4 | >= 56 |
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
| sw.data.yyy.scot | < -4 | < 56 |
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
| se.data.yyy.scot | >= -4 | < 56 |
|
||||||
|
+----------------------+-----------+-----------+
|
||||||
|
|
||||||
|
giving us an incredibly simple dispatch table. Furthermore, initially all four addresses can point to the same server. This is an incredibly simple scheme, and I'm confident it's good enough.
|
||||||
|
|
||||||
|
Data that's inserted from the canvassing app - that is to say, voter intention data and followup request data - should have an additional field 'shard' (char(2)) which should hold the digraph representing the shard to which it was dispatched, and that field should form part of the primary key, allowing the data from all servers to be integrated. Data that isn't from the canvassing app should probably be directed to the 'nw' shard (which will be lightest loaded), or to a separate master server, and then all servers should be synced overnight.
|
||||||
|
|
||||||
### Read servers and write servers
|
### Read servers and write servers
|
||||||
|
|
||||||
It's a common practice in architecting busy web systems to have one master database server to which all write operations are directed, surrounded by a ring of slave databases which replicate from the master and serve all read requests. This works because for the majority of web systems there are many more reads than writes.
|
It's a common practice in architecting busy web systems to have one master database server to which all write operations are directed, surrounded by a ring of slave databases which replicate from the master and serve all read requests. This works because for the majority of web systems there are many more reads than writes.
|
||||||
|
@ -76,15 +114,13 @@ From the above I think the scaling problem should be addressed as follows:
|
||||||
4. When the initial cluster of three database servers becomes overloaded, shard into two identical groups ('east' and 'west');
|
4. When the initial cluster of three database servers becomes overloaded, shard into two identical groups ('east' and 'west');
|
||||||
5. When any shard becomes overloaded, split it into two further shards.
|
5. When any shard becomes overloaded, split it into two further shards.
|
||||||
|
|
||||||
If we have prepared for sharding, all that is required is to duplicate the database and then set geographic polygons to address database requests from clients within a given polygon to the database server for that polygon.
|
If we have prepared for sharding, all that is required is to duplicate the database.
|
||||||
|
|
||||||
This means that essentially we should set up one polygon for each electoral district from the launch of the app, but initially requests from all of these polygons should be directed to the same database server group. As shards are added, the map of polygons to database server groups should be updated.
|
|
||||||
|
|
||||||
Obviously, once we have split the database into multiple shards, there is a task to integrate the data from the multiple shards in order to create an 'across Scotland' overview of the canvas data; however, again if we have prepared for it in advance, merging the databases should not be difficult, and can be done either in the wee sma' oors or alternatively during the working day, as the system will be relatively lighty loaded during these periods.
|
Obviously, once we have split the database into multiple shards, there is a task to integrate the data from the multiple shards in order to create an 'across Scotland' overview of the canvas data; however, again if we have prepared for it in advance, merging the databases should not be difficult, and can be done either in the wee sma' oors or alternatively during the working day, as the system will be relatively lighty loaded during these periods.
|
||||||
|
|
||||||
## Preparing for sharding
|
## Preparing for sharding
|
||||||
|
|
||||||
We should prepare a Docker image for the app server and a Docker image for the database server. We should prepare, as part of the app (i.e. not in the database but as a Clojure or Json data file) a datastructure which maps polygons representing each of Scotland's electoral districts to database URLs. For security reasons this datastructure should live server-side and should not be part of the single-page app sent to the client.
|
We should prepare a Docker image for the app server and an image or setup script for the database server.
|
||||||
|
|
||||||
## Further reading on optimising Postgres performance
|
## Further reading on optimising Postgres performance
|
||||||
|
|
||||||
|
|
19
env/dev/clj/user.clj
vendored
|
@ -13,4 +13,23 @@
|
||||||
(stop)
|
(stop)
|
||||||
(start))
|
(start))
|
||||||
|
|
||||||
|
;; Roughly working under Tomcat.
|
||||||
|
;; Database setup using JNDI: see http://www.luminusweb.net/docs/deployment.md#deploying_to_tomcat
|
||||||
|
;; Note that this duplicates configuration in profiles.clj; one of these is wrong (and neither
|
||||||
|
;; should be in the Git repository but this is for now!)
|
||||||
|
(System/setProperty "java.naming.factory.initial"
|
||||||
|
"org.apache.naming.java.javaURLContextFactory")
|
||||||
|
(System/setProperty "java.naming.factory.url.pkgs"
|
||||||
|
"org.apache.naming")
|
||||||
|
|
||||||
|
(doto (new javax.naming.InitialContext)
|
||||||
|
(.createSubcontext "java:")
|
||||||
|
(.createSubcontext "java:comp")
|
||||||
|
(.createSubcontext "java:comp/env")
|
||||||
|
(.createSubcontext "java:comp/env/jdbc")
|
||||||
|
(.bind "java:comp/env/jdbc/testdb"
|
||||||
|
(doto (org.postgresql.ds.PGSimpleDataSource.)
|
||||||
|
(.setServerName "localhost")
|
||||||
|
(.setDatabaseName "youyesyet_dev")
|
||||||
|
(.setUser "youyesyet")
|
||||||
|
(.setPassword "thisisnotsecure"))))
|
||||||
|
|
BIN
favicon.ico
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
favicon.xcf
Normal file
72
followup.cljs
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
(ns youyesyet.views.followup
|
||||||
|
(:require [reagent.core :as r]
|
||||||
|
[re-frame.core :refer [reg-sub subscribe]]
|
||||||
|
;; [re-frame-forms.core :as form]
|
||||||
|
;; [re-frame-forms.input :as input]
|
||||||
|
;; [re-com.core :refer [h-box v-box box gap single-dropdown input-text checkbox label title hyperlink-href p]]
|
||||||
|
;; [re-com.dropdown :refer [filter-choices-by-keyword single-dropdown-args-desc]]
|
||||||
|
[youyesyet.ui-utils :as ui]
|
||||||
|
))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;
|
||||||
|
;;;; youyesyet.views.followup: followup-request view for youyesyet.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
;;; The pattern from the re-com demo (https://github.com/Day8/re-com) is to have
|
||||||
|
;;; one source file/namespace per view. Each namespace contains a function 'panel'
|
||||||
|
;;; whose output is an enlive-style specification of the view to be redered.
|
||||||
|
;;; I propose to follow this pattern. This file will (eventually) provide the followup-request view.
|
||||||
|
|
||||||
|
;;; See https://github.com/simon-brooke/youyesyet/blob/master/doc/specification/userspec.md#followup-request-form
|
||||||
|
|
||||||
|
(defn panel
|
||||||
|
"Generate the followup-request panel."
|
||||||
|
[]
|
||||||
|
(js/console.log (str "Rendering follow-up form"))
|
||||||
|
|
||||||
|
(let [issue @(subscribe [:issue])
|
||||||
|
issues @(subscribe [:issues])
|
||||||
|
elector @(subscribe [:elector])
|
||||||
|
address @(subscribe [:address])
|
||||||
|
form (form/make-form {:elector (:id elector)
|
||||||
|
:issue (:id issue)})]
|
||||||
|
[:div
|
||||||
|
[:h1 "Followup Request"]
|
||||||
|
(let [selected-elector-id (r/atom (:id elector))
|
||||||
|
selected-issue (r/atom (:id issue))]
|
||||||
|
[:form {}
|
||||||
|
[:p.widget
|
||||||
|
[:label {:for "elector"} "Elector"]
|
||||||
|
[single-dropdown
|
||||||
|
:id elector
|
||||||
|
:choices (:electors address)
|
||||||
|
:model selected-elector-id
|
||||||
|
:label-fn #(:name %)]]
|
||||||
|
[:p.widget
|
||||||
|
[:label {:for "issue"} "Issue"]
|
||||||
|
[single-dropdown
|
||||||
|
:id issue
|
||||||
|
:choices (map #({:id % :label %}) (keys issues))
|
||||||
|
:model issue]]
|
||||||
|
|
||||||
|
])]))
|
74
project.clj
|
@ -5,35 +5,37 @@
|
||||||
|
|
||||||
:dependencies [[org.clojure/clojure "1.8.0"]
|
:dependencies [[org.clojure/clojure "1.8.0"]
|
||||||
[org.clojure/clojurescript "1.9.229" :scope "provided"]
|
[org.clojure/clojurescript "1.9.229" :scope "provided"]
|
||||||
[ring/ring-servlet "1.5.0"]
|
[ring/ring-servlet "1.5.1"]
|
||||||
|
[lib-noir "0.9.9" :exclusions [org.clojure/tools.reader]]
|
||||||
[clj-oauth "1.5.5"]
|
[clj-oauth "1.5.5"]
|
||||||
[ch.qos.logback/logback-classic "1.1.8"]
|
[ch.qos.logback/logback-classic "1.2.2"]
|
||||||
[re-frame "0.9.1"]
|
[re-frame "0.9.2"]
|
||||||
[cljs-ajax "0.5.8"]
|
[cljs-ajax "0.5.8"]
|
||||||
[secretary "1.2.3"]
|
[secretary "1.2.3"]
|
||||||
[reagent-utils "0.2.0"]
|
[reagent-utils "0.2.1"]
|
||||||
[reagent "0.6.0"]
|
[reagent "0.6.1"]
|
||||||
[korma "0.4.3"]
|
[korma "0.4.3"]
|
||||||
[selmer "1.10.3"]
|
[selmer "1.10.6"]
|
||||||
[markdown-clj "0.9.91"]
|
[markdown-clj "0.9.98"]
|
||||||
[ring-middleware-format "0.7.0"]
|
[ring-middleware-format "0.7.2"]
|
||||||
[metosin/ring-http-response "0.8.0"]
|
[metosin/ring-http-response "0.8.2"]
|
||||||
[bouncer "1.0.0"]
|
[bouncer "1.0.1"]
|
||||||
[org.webjars/bootstrap "4.0.0-alpha.5"]
|
[org.webjars/bootstrap "4.0.0-alpha.6-1"]
|
||||||
[org.webjars/font-awesome "4.7.0"]
|
[org.webjars/font-awesome "4.7.0"]
|
||||||
[org.webjars.bower/tether "1.3.7"]
|
[org.webjars.bower/tether "1.4.0"]
|
||||||
[org.clojure/tools.logging "0.3.1"]
|
[org.clojure/tools.logging "0.3.1"]
|
||||||
[compojure "1.5.1"]
|
[compojure "1.5.2"]
|
||||||
|
[metosin/compojure-api "1.1.10"]
|
||||||
[ring-webjars "0.1.1"]
|
[ring-webjars "0.1.1"]
|
||||||
[ring/ring-defaults "0.2.1"]
|
[ring/ring-defaults "0.2.3"]
|
||||||
[luminus/ring-ttl-session "0.3.1"]
|
[luminus/ring-ttl-session "0.3.1"]
|
||||||
[mount "0.1.11"]
|
[mount "0.1.11"]
|
||||||
[cprop "0.1.9"]
|
[cprop "0.1.10"]
|
||||||
[org.clojure/tools.cli "0.3.5"]
|
[org.clojure/tools.cli "0.3.5"]
|
||||||
[migratus "0.8.32"]
|
[migratus "0.8.33"]
|
||||||
[luminus-nrepl "0.1.4"]
|
[luminus-nrepl "0.1.4"]
|
||||||
[luminus-migrations "0.2.9"]
|
[luminus-migrations "0.3.0"]
|
||||||
[conman "0.6.2"]
|
[conman "0.6.3"]
|
||||||
[org.postgresql/postgresql "9.4.1212"]
|
[org.postgresql/postgresql "9.4.1212"]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -57,19 +59,15 @@
|
||||||
[lein-bower "0.5.1"]
|
[lein-bower "0.5.1"]
|
||||||
[lein-less "1.7.5"]]
|
[lein-less "1.7.5"]]
|
||||||
|
|
||||||
:bower-dependencies [
|
:bower-dependencies [[leaflet "0.7.3"]]
|
||||||
;; Problem with using boostrap and font-awsome from Bower: neither
|
|
||||||
;; of the distributed packages compile cleanly with less :-(
|
|
||||||
;; [bootstrap "2.3.1"]
|
|
||||||
;; [font-awesome "3.2.1"]
|
|
||||||
[leaflet "0.7.3"]]
|
|
||||||
|
|
||||||
:cucumber-feature-paths ["test/clj/features"]
|
:cucumber-feature-paths ["test/clj/features"]
|
||||||
|
|
||||||
:hooks [leiningen.less]
|
:hooks [leiningen.less]
|
||||||
|
|
||||||
:uberwar
|
:uberwar
|
||||||
{:handler youyesyet.handler/app
|
{:prep-tasks ["compile" "bower" ["cljsbuild" "once" "min"]]
|
||||||
|
:handler youyesyet.handler/app
|
||||||
:init youyesyet.handler/init
|
:init youyesyet.handler/init
|
||||||
:destroy youyesyet.handler/destroy
|
:destroy youyesyet.handler/destroy
|
||||||
:name "youyesyet.war"}
|
:name "youyesyet.war"}
|
||||||
|
@ -87,20 +85,14 @@
|
||||||
|
|
||||||
:profiles
|
:profiles
|
||||||
{:uberjar {:omit-source true
|
{:uberjar {:omit-source true
|
||||||
:prep-tasks ["compile" ["cljsbuild" "once" "min"]]
|
:prep-tasks ["compile" ["bower" "install"] ["cljsbuild" "once" "min"]]
|
||||||
:cljsbuild
|
:cljsbuild
|
||||||
{:builds
|
{:builds
|
||||||
{:min
|
{:min
|
||||||
{:source-paths ["src/cljc" "src/cljs" "env/prod/cljs"]
|
{:source-paths ["src/cljc" "src/cljs" "env/prod/cljs"]
|
||||||
:compiler
|
:compiler
|
||||||
{:output-to "target/cljsbuild/public/js/app.js"
|
{:optimizations :advanced
|
||||||
:externs ["react/externs/react.js" "externs.js"]
|
:pretty-print false}}}}
|
||||||
:optimizations :advanced
|
|
||||||
:pretty-print false
|
|
||||||
:closure-warnings
|
|
||||||
{:externs-validation :off :non-standard-jsdoc :off}}}}}
|
|
||||||
|
|
||||||
|
|
||||||
:aot :all
|
:aot :all
|
||||||
:uberjar-name "youyesyet.jar"
|
:uberjar-name "youyesyet.jar"
|
||||||
:source-paths ["env/prod/clj"]
|
:source-paths ["env/prod/clj"]
|
||||||
|
@ -111,21 +103,21 @@
|
||||||
|
|
||||||
:project/dev {:dependencies [[prone "1.1.4"]
|
:project/dev {:dependencies [[prone "1.1.4"]
|
||||||
[ring/ring-mock "0.3.0"]
|
[ring/ring-mock "0.3.0"]
|
||||||
[ring/ring-devel "1.5.0"]
|
[ring/ring-devel "1.5.1"]
|
||||||
[luminus-jetty "0.1.4"]
|
[luminus-jetty "0.1.4"]
|
||||||
[pjstadig/humane-test-output "0.8.1"]
|
[pjstadig/humane-test-output "0.8.1"]
|
||||||
[org.clojure/core.cache "0.6.5"]
|
[org.clojure/core.cache "0.6.5"]
|
||||||
[org.apache.httpcomponents/httpcore "4.4.5"]
|
[org.apache.httpcomponents/httpcore "4.4.6"]
|
||||||
[clj-webdriver/clj-webdriver "0.7.2"]
|
[clj-webdriver/clj-webdriver "0.7.2"]
|
||||||
[org.seleniumhq.selenium/selenium-server "3.0.1"]
|
[org.seleniumhq.selenium/selenium-server "3.3.1" :exclusions [org.seleniumhq.selenium/selenium-support]]
|
||||||
[doo "0.1.7"]
|
[doo "0.1.7"]
|
||||||
[binaryage/devtools "0.8.3"]
|
[binaryage/devtools "0.9.2"]
|
||||||
[figwheel-sidecar "0.5.8"]
|
[figwheel-sidecar "0.5.9"]
|
||||||
[com.cemerick/piggieback "0.2.2-SNAPSHOT"]
|
[com.cemerick/piggieback "0.2.2-SNAPSHOT"]
|
||||||
[directory-naming/naming-java "0.8"]]
|
[directory-naming/naming-java "0.8"]]
|
||||||
:plugins [[com.jakemccrary/lein-test-refresh "0.14.0"]
|
:plugins [[com.jakemccrary/lein-test-refresh "0.14.0"]
|
||||||
[lein-doo "0.1.7"]
|
[lein-doo "0.1.7"]
|
||||||
[lein-figwheel "0.5.8"]
|
[lein-figwheel "0.5.9"]
|
||||||
[org.clojure/clojurescript "1.9.229"]]
|
[org.clojure/clojurescript "1.9.229"]]
|
||||||
:cljsbuild
|
:cljsbuild
|
||||||
{:builds
|
{:builds
|
||||||
|
@ -134,6 +126,7 @@
|
||||||
:compiler
|
:compiler
|
||||||
{:main "youyesyet.app"
|
{:main "youyesyet.app"
|
||||||
:asset-path "/js/out"
|
:asset-path "/js/out"
|
||||||
|
:externs ["react/externs/react.js" "externs.js"]
|
||||||
:output-to "target/cljsbuild/public/js/app.js"
|
:output-to "target/cljsbuild/public/js/app.js"
|
||||||
:output-dir "target/cljsbuild/public/js/out"
|
:output-dir "target/cljsbuild/public/js/out"
|
||||||
:source-map true
|
:source-map true
|
||||||
|
@ -155,6 +148,7 @@
|
||||||
{:source-paths ["src/cljc" "src/cljs" "test/cljs"]
|
{:source-paths ["src/cljc" "src/cljs" "test/cljs"]
|
||||||
:compiler
|
:compiler
|
||||||
{:output-to "target/test.js"
|
{:output-to "target/test.js"
|
||||||
|
:externs ["react/externs/react.js" "externs.js"]
|
||||||
:main "youyesyet.doo-runner"
|
:main "youyesyet.doo-runner"
|
||||||
:optimizations :whitespace
|
:optimizations :whitespace
|
||||||
:pretty-print true}}}}
|
:pretty-print true}}}}
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
<div class="bs-callout bs-callout-danger">
|
|
||||||
|
|
||||||
### Database Configuration is Required
|
|
||||||
|
|
||||||
If you haven't already, then please follow the steps below to configure your database connection and run the necessary migrations.
|
|
||||||
|
|
||||||
* Create the database for your application.
|
|
||||||
* Update the connection URL in the `profiles.clj` file with your database name and login.
|
|
||||||
* Run `lein run migrate` in the root of the project to create the tables.
|
|
||||||
* Let `mount` know to start the database connection by `require`-ing youyesyet.db.core in some other namespace.
|
|
||||||
* Restart the application.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
### Managing Your Middleware
|
|
||||||
|
|
||||||
Request middleware functions are located under the `youyesyet.middleware` namespace.
|
|
||||||
|
|
||||||
This namespace is reserved for any custom middleware for the application. Some default middleware is
|
|
||||||
already defined here. The middleware is assembled in the `wrap-base` function.
|
|
||||||
|
|
||||||
Middleware used for development is placed in the `youyesyet.dev-middleware` namespace found in
|
|
||||||
the `env/dev/clj/` source path.
|
|
||||||
|
|
||||||
### Here are some links to get started
|
|
||||||
|
|
||||||
1. [HTML templating](http://www.luminusweb.net/docs/html_templating.md)
|
|
||||||
2. [Accessing the database](http://www.luminusweb.net/docs/database.md)
|
|
||||||
3. [Setting response types](http://www.luminusweb.net/docs/responses.md)
|
|
||||||
4. [Defining routes](http://www.luminusweb.net/docs/routes.md)
|
|
||||||
5. [Adding middleware](http://www.luminusweb.net/docs/middleware.md)
|
|
||||||
6. [Sessions and cookies](http://www.luminusweb.net/docs/sessions_cookies.md)
|
|
||||||
7. [Security](http://www.luminusweb.net/docs/security.md)
|
|
||||||
8. [Deploying the application](http://www.luminusweb.net/docs/deployment.md)
|
|
|
@ -1 +0,0 @@
|
||||||
DROP TABLE users;
|
|
|
@ -1,9 +0,0 @@
|
||||||
CREATE TABLE users
|
|
||||||
(id VARCHAR(20) PRIMARY KEY,
|
|
||||||
first_name VARCHAR(30),
|
|
||||||
last_name VARCHAR(30),
|
|
||||||
email VARCHAR(30),
|
|
||||||
admin BOOLEAN,
|
|
||||||
last_login TIME,
|
|
||||||
is_active BOOLEAN,
|
|
||||||
pass VARCHAR(300));
|
|
|
@ -68,7 +68,7 @@ SET default_with_oids = false;
|
||||||
-- Name: addresses; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: addresses; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE addresses (
|
CREATE TABLE IF NOT EXISTS addresses (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
address character varying(256) NOT NULL,
|
address character varying(256) NOT NULL,
|
||||||
postcode character varying(16),
|
postcode character varying(16),
|
||||||
|
@ -106,7 +106,7 @@ ALTER SEQUENCE addresses_id_seq OWNED BY addresses.id;
|
||||||
-- Name: authorities; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: authorities; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE authorities (
|
CREATE TABLE IF NOT EXISTS authorities (
|
||||||
id character varying(32) NOT NULL
|
id character varying(32) NOT NULL
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
@ -117,8 +117,9 @@ ALTER TABLE public.authorities OWNER TO youyesyet;
|
||||||
-- Name: canvassers; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: canvassers; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE canvassers (
|
CREATE TABLE IF NOT EXISTS canvassers (
|
||||||
id character varying(32) NOT NULL,
|
id serial,
|
||||||
|
username character varying(32) NOT NULL,
|
||||||
fullname character varying(64) NOT NULL,
|
fullname character varying(64) NOT NULL,
|
||||||
elector_id integer,
|
elector_id integer,
|
||||||
address_id integer NOT NULL,
|
address_id integer NOT NULL,
|
||||||
|
@ -135,7 +136,7 @@ ALTER TABLE public.canvassers OWNER TO youyesyet;
|
||||||
-- Name: districts; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: districts; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE districts (
|
CREATE TABLE IF NOT EXISTS districts (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
name character varying(64) NOT NULL
|
name character varying(64) NOT NULL
|
||||||
);
|
);
|
||||||
|
@ -147,7 +148,7 @@ ALTER TABLE public.districts OWNER TO youyesyet;
|
||||||
-- Name: electors; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: electors; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE electors (
|
CREATE TABLE IF NOT EXISTS electors (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
name character varying(64) NOT NULL,
|
name character varying(64) NOT NULL,
|
||||||
address_id integer NOT NULL,
|
address_id integer NOT NULL,
|
||||||
|
@ -162,10 +163,10 @@ ALTER TABLE public.electors OWNER TO youyesyet;
|
||||||
-- Name: followupactions; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: followupactions; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE followupactions (
|
CREATE TABLE IF NOT EXISTS followupactions (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
request_id integer NOT NULL,
|
request_id integer NOT NULL,
|
||||||
actor character varying(32) NOT NULL,
|
actor integer NOT NULL,
|
||||||
date timestamp with time zone DEFAULT now() NOT NULL,
|
date timestamp with time zone DEFAULT now() NOT NULL,
|
||||||
notes text,
|
notes text,
|
||||||
closed boolean
|
closed boolean
|
||||||
|
@ -199,7 +200,7 @@ ALTER SEQUENCE followupactions_id_seq OWNED BY followupactions.id;
|
||||||
-- Name: followupmethods; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: followupmethods; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE followupmethods (
|
CREATE TABLE IF NOT EXISTS followupmethods (
|
||||||
id character varying(32) NOT NULL
|
id character varying(32) NOT NULL
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
@ -218,7 +219,7 @@ insert into followupmethods values ('Post');
|
||||||
--;;
|
--;;
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE followuprequests (
|
CREATE TABLE IF NOT EXISTS followuprequests (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
elector_id integer NOT NULL,
|
elector_id integer NOT NULL,
|
||||||
visit_id integer NOT NULL,
|
visit_id integer NOT NULL,
|
||||||
|
@ -258,8 +259,8 @@ ALTER SEQUENCE followuprequests_id_seq OWNED BY followuprequests.id;
|
||||||
-- Name: issueexpertise; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: issueexpertise; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE issueexpertise (
|
CREATE TABLE IF NOT EXISTS issueexpertise (
|
||||||
canvasser_id character varying(32) NOT NULL,
|
canvasser_id integer NOT NULL,
|
||||||
issue_id character varying(32) NOT NULL,
|
issue_id character varying(32) NOT NULL,
|
||||||
method_id character varying(32) NOT NULL
|
method_id character varying(32) NOT NULL
|
||||||
);
|
);
|
||||||
|
@ -273,7 +274,7 @@ ALTER TABLE public.issueexpertise OWNER TO youyesyet;
|
||||||
-- Name: issues; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: issues; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE issues (
|
CREATE TABLE IF NOT EXISTS issues (
|
||||||
id character varying(32) NOT NULL,
|
id character varying(32) NOT NULL,
|
||||||
url character varying(256)
|
url character varying(256)
|
||||||
);
|
);
|
||||||
|
@ -287,7 +288,7 @@ ALTER TABLE public.issues OWNER TO youyesyet;
|
||||||
-- Name: options; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: options; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE options (
|
CREATE TABLE IF NOT EXISTS options (
|
||||||
id character varying(32) NOT NULL
|
id character varying(32) NOT NULL
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
@ -300,7 +301,7 @@ ALTER TABLE public.options OWNER TO youyesyet;
|
||||||
-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE schema_migrations (
|
CREATE TABLE IF NOT EXISTS schema_migrations (
|
||||||
id bigint NOT NULL
|
id bigint NOT NULL
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
@ -313,10 +314,10 @@ ALTER TABLE public.schema_migrations OWNER TO youyesyet;
|
||||||
-- Name: visits; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: visits; Type: TABLE; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE TABLE visits (
|
CREATE TABLE IF NOT EXISTS visits (
|
||||||
id integer NOT NULL,
|
id integer NOT NULL,
|
||||||
address_id integer NOT NULL,
|
address_id integer NOT NULL,
|
||||||
canvasser_id character varying(32) NOT NULL,
|
canvasser_id integer NOT NULL,
|
||||||
date timestamp with time zone DEFAULT now() NOT NULL
|
date timestamp with time zone DEFAULT now() NOT NULL
|
||||||
);
|
);
|
||||||
--;;
|
--;;
|
||||||
|
@ -484,8 +485,8 @@ ALTER TABLE ONLY options
|
||||||
-- Name: schema_migrations_id_key; Type: CONSTRAINT; Schema: public; Owner: youyesyet; Tablespace:
|
-- Name: schema_migrations_id_key; Type: CONSTRAINT; Schema: public; Owner: youyesyet; Tablespace:
|
||||||
--
|
--
|
||||||
|
|
||||||
ALTER TABLE ONLY schema_migrations
|
--ALTER TABLE ONLY schema_migrations
|
||||||
ADD CONSTRAINT schema_migrations_id_key UNIQUE (id);
|
-- ADD CONSTRAINT schema_migrations_id_key UNIQUE (id);
|
||||||
--;;
|
--;;
|
||||||
|
|
||||||
|
|
||||||
|
|
13
resources/migrations/20170315190500-roles-and-teams.down.sql
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
drop table teammemberships;
|
||||||
|
|
||||||
|
drop table teamorganiserships;
|
||||||
|
|
||||||
|
drop index ix_teams_name;
|
||||||
|
|
||||||
|
drop table teams;
|
||||||
|
|
||||||
|
drop table rolememberships;
|
||||||
|
|
||||||
|
drop index ix_roles_name;
|
||||||
|
|
||||||
|
drop table roles;
|
39
resources/migrations/20170315190500-roles-and-teams.up.sql
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
create table if not exists roles (
|
||||||
|
id serial primary key,
|
||||||
|
name varchar(64) not null
|
||||||
|
);
|
||||||
|
|
||||||
|
create unique index ix_roles_name on roles(name);
|
||||||
|
|
||||||
|
create table if not exists rolememberships (
|
||||||
|
role_id integer not null references roles(id),
|
||||||
|
canvasser_id integer not null references canvassers(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table if not exists teams (
|
||||||
|
id serial primary key,
|
||||||
|
name varchar(64) not null,
|
||||||
|
district_id integer not null references districts(id),
|
||||||
|
latitude real,
|
||||||
|
longitude real
|
||||||
|
);
|
||||||
|
|
||||||
|
create unique index ix_teams_name on teams(name);
|
||||||
|
|
||||||
|
create table if not exists teammemberships (
|
||||||
|
team_id integer not null references teams(id),
|
||||||
|
canvasser_id integer not null references canvassers(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
create table if not exists teamorganiserships (
|
||||||
|
team_id integer not null references teams(id),
|
||||||
|
canvasser_id integer not null references canvassers(id)
|
||||||
|
);
|
||||||
|
|
||||||
|
alter table roles owner to youyesyet;
|
||||||
|
|
||||||
|
alter table rolememberships owner to youyesyet;
|
||||||
|
|
||||||
|
alter table teams owner to youyesyet;
|
||||||
|
|
||||||
|
alter table teammemberships owner to youyesyet;
|
|
@ -1,51 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<title>About YouYesYet</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
About YouYesYet
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<p>
|
|
||||||
This isn't finished and doesn't work yet! This site is just a look-and-feel
|
|
||||||
dummy.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<b>YouYesYet</b> is a project to build a canvassing app for the new Scottish
|
|
||||||
Independence Referendum. The source code is <a href="https://github.com/simon-brooke/youyesyet">here</a>. The specification
|
|
||||||
is <a href="https://github.com/simon-brooke/youyesyet/blob/master/doc/specification/userspec.md">here</a>.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
If we're going to get this working in time I cannot do it alone: I need help. Contact
|
|
||||||
me <a href="mailto:simon@journeyman.cc">by email</a> or on <a href="">on Twitter</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<title>Issues: Currency</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Issues: Currency
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<p>
|
|
||||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer tincidunt
|
|
||||||
at ex id pretium. Proin nec ultricies mauris. Donec mattis, velit at commodo
|
|
||||||
vehicula, nisi velit mattis justo, at tempor enim eros eget tortor. Quisque
|
|
||||||
a porttitor lorem. Vestibulum tempus ex id sem laoreet, id fermentum enim
|
|
||||||
pharetra. Cras diam ante, pulvinar sed pharetra sed, venenatis eget tellus.
|
|
||||||
Quisque fermentum sem sed nulla mollis, et fermentum nisl pretium. Pellentesque
|
|
||||||
porttitor interdum ultricies. Nunc ut accumsan leo, rutrum tempor tellus.
|
|
||||||
Nam ultricies magna ipsum.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Pellentesque in est rutrum, consectetur nisi vel, dictum felis. Quisque id
|
|
||||||
elementum enim. Donec aliquet, massa id mattis semper, lectus elit scelerisque
|
|
||||||
justo, quis dapibus tortor eros a erat. Vestibulum erat mauris, consectetur id
|
|
||||||
condimentum ut, luctus vitae diam. Integer faucibus ultrices mi sed consequat.
|
|
||||||
Aliquam lacinia sapien quis urna blandit, sed consectetur ligula gravida. Ut
|
|
||||||
eleifend purus id mi vulputate faucibus ut quis risus. Donec dapibus finibus
|
|
||||||
tincidunt. Nunc luctus libero tellus, eget porta diam lacinia vel. Pellentesque
|
|
||||||
turpis nunc, venenatis vitae nisl eu, mollis pulvinar erat. Nulla scelerisque
|
|
||||||
tellus eget ex hendrerit tincidunt.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Duis tincidunt iaculis magna, ac rutrum velit congue quis. Maecenas feugiat
|
|
||||||
efficitur sem, in hendrerit erat. Nunc congue, dui sit amet commodo faucibus,
|
|
||||||
enim nisl feugiat nisl, a tincidunt massa metus nec nisi. Duis viverra nunc ut
|
|
||||||
libero tempus, sed convallis elit dapibus. Sed venenatis condimentum odio, non
|
|
||||||
elementum diam. Morbi fermentum metus justo, ac viverra dui fermentum at.
|
|
||||||
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere
|
|
||||||
cubilia Curae; Aliquam erat volutpat.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Please call me!</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Please call me!
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<p>
|
|
||||||
Use this form to request someone to phone you to discuss your concerns about independence.
|
|
||||||
</p>
|
|
||||||
<form action="" method="post">
|
|
||||||
<p class="widget">
|
|
||||||
<label for="name">Your name</label>
|
|
||||||
<input type="text" id="name" name="name"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="postcode">Your post-code</label>
|
|
||||||
<input type="text" id="postcode" name="postcode"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="phone">Your phone number</label>
|
|
||||||
<input type="text" id="phone" name="phone"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="concern">Your concerns</label>
|
|
||||||
<select name="concern" id="concern">
|
|
||||||
<option>Currency</option>
|
|
||||||
<option>EU Membership</option>
|
|
||||||
<option>Can we afford it?</option>
|
|
||||||
<option>The Queen</option>
|
|
||||||
<option>Defence/NATO</option>
|
|
||||||
</select>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="submit"> </label>
|
|
||||||
<input name="submit" id="submit" type="submit" class="action" value="Call me!"/>
|
|
||||||
</p>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,68 +0,0 @@
|
||||||
html,
|
|
||||||
body {
|
|
||||||
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.navbar {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
.navbar-brand {
|
|
||||||
float: none;
|
|
||||||
}
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: none;
|
|
||||||
}
|
|
||||||
.navbar-divider,
|
|
||||||
.navbar-nav .nav-item+.nav-item,
|
|
||||||
.navbar-nav .nav-link + .nav-link {
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
@media (min-width: 34em) {
|
|
||||||
.navbar-brand {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.navbar-nav .nav-item {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.navbar-divider,
|
|
||||||
.navbar-nav .nav-item+.nav-item,
|
|
||||||
.navbar-nav .nav-link + .nav-link {
|
|
||||||
margin-left: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@-moz-keyframes three-quarters-loader {
|
|
||||||
0% {
|
|
||||||
-moz-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-moz-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes three-quarters-loader {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes three-quarters-loader {
|
|
||||||
0% {
|
|
||||||
-moz-transform: rotate(0deg);
|
|
||||||
-ms-transform: rotate(0deg);
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-moz-transform: rotate(360deg);
|
|
||||||
-ms-transform: rotate(360deg);
|
|
||||||
-webkit-transform: rotate(360deg);
|
|
||||||
transform: rotate(360deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
141
resources/public/css/spinner.css
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
/*
|
||||||
|
* Cribbed from http://tobiasahlin.com/spinkit/
|
||||||
|
* (source here https://github.com/tobiasahlin/SpinKit)
|
||||||
|
* Thanks Tobias!
|
||||||
|
*/
|
||||||
|
|
||||||
|
.sk-fading-circle {
|
||||||
|
margin: 100px auto;
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-fading-circle .sk-circle {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sk-fading-circle .sk-circle:before {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 15%;
|
||||||
|
height: 15%;
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 100%;
|
||||||
|
-webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||||
|
animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle2 {
|
||||||
|
-webkit-transform: rotate(30deg);
|
||||||
|
-ms-transform: rotate(30deg);
|
||||||
|
transform: rotate(30deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle3 {
|
||||||
|
-webkit-transform: rotate(60deg);
|
||||||
|
-ms-transform: rotate(60deg);
|
||||||
|
transform: rotate(60deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle4 {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
-ms-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle5 {
|
||||||
|
-webkit-transform: rotate(120deg);
|
||||||
|
-ms-transform: rotate(120deg);
|
||||||
|
transform: rotate(120deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle6 {
|
||||||
|
-webkit-transform: rotate(150deg);
|
||||||
|
-ms-transform: rotate(150deg);
|
||||||
|
transform: rotate(150deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle7 {
|
||||||
|
-webkit-transform: rotate(180deg);
|
||||||
|
-ms-transform: rotate(180deg);
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle8 {
|
||||||
|
-webkit-transform: rotate(210deg);
|
||||||
|
-ms-transform: rotate(210deg);
|
||||||
|
transform: rotate(210deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle9 {
|
||||||
|
-webkit-transform: rotate(240deg);
|
||||||
|
-ms-transform: rotate(240deg);
|
||||||
|
transform: rotate(240deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle10 {
|
||||||
|
-webkit-transform: rotate(270deg);
|
||||||
|
-ms-transform: rotate(270deg);
|
||||||
|
transform: rotate(270deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle11 {
|
||||||
|
-webkit-transform: rotate(300deg);
|
||||||
|
-ms-transform: rotate(300deg);
|
||||||
|
transform: rotate(300deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle12 {
|
||||||
|
-webkit-transform: rotate(330deg);
|
||||||
|
-ms-transform: rotate(330deg);
|
||||||
|
transform: rotate(330deg);
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle2:before {
|
||||||
|
-webkit-animation-delay: -1.1s;
|
||||||
|
animation-delay: -1.1s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle3:before {
|
||||||
|
-webkit-animation-delay: -1s;
|
||||||
|
animation-delay: -1s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle4:before {
|
||||||
|
-webkit-animation-delay: -0.9s;
|
||||||
|
animation-delay: -0.9s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle5:before {
|
||||||
|
-webkit-animation-delay: -0.8s;
|
||||||
|
animation-delay: -0.8s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle6:before {
|
||||||
|
-webkit-animation-delay: -0.7s;
|
||||||
|
animation-delay: -0.7s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle7:before {
|
||||||
|
-webkit-animation-delay: -0.6s;
|
||||||
|
animation-delay: -0.6s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle8:before {
|
||||||
|
-webkit-animation-delay: -0.5s;
|
||||||
|
animation-delay: -0.5s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle9:before {
|
||||||
|
-webkit-animation-delay: -0.4s;
|
||||||
|
animation-delay: -0.4s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle10:before {
|
||||||
|
-webkit-animation-delay: -0.3s;
|
||||||
|
animation-delay: -0.3s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle11:before {
|
||||||
|
-webkit-animation-delay: -0.2s;
|
||||||
|
animation-delay: -0.2s;
|
||||||
|
}
|
||||||
|
.sk-fading-circle .sk-circle12:before {
|
||||||
|
-webkit-animation-delay: -0.1s;
|
||||||
|
animation-delay: -0.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes sk-circleFadeDelay {
|
||||||
|
0%, 39%, 100% { opacity: 0; }
|
||||||
|
40% { opacity: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes sk-circleFadeDelay {
|
||||||
|
0%, 39%, 100% { opacity: 0; }
|
||||||
|
40% { opacity: 1; }
|
||||||
|
}
|
182
resources/public/css/yyy-app.css
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
/**
|
||||||
|
* Additional CSS for the main site. Navigation works differently between
|
||||||
|
* app and the main site; in the app it's driven by React, while in
|
||||||
|
* the main site it's CSS.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
width:100%;
|
||||||
|
background-color: rgb(7, 57, 106);
|
||||||
|
color: white;
|
||||||
|
font-family: "Archivo Black", "Sans Bold", "Arial Black", sans-serif;
|
||||||
|
font-weight: normal;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* desktops and laptops, primarily. Adapted to mouse; targets may be small */
|
||||||
|
@media all and (min-device-width: 1025px) {
|
||||||
|
|
||||||
|
/* top-of-page navigation, not editable, provided by Smeagol */
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
_position: absolute;
|
||||||
|
_top: expression(document.documentElement.scrollTop);
|
||||||
|
z-index: 149;
|
||||||
|
background:rgba(7,27,51,0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* only needed for fly-out menu effect on tablet and phone stylesheets */
|
||||||
|
#nav-icon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0.1em 0.75em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li.active a { background: gray;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu li#user {
|
||||||
|
padding: 0 1em;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tablets, primarily. Adapted to touch; targets are larger */
|
||||||
|
@media all and (min-device-width: 769px) and (max-device-width: 1024px) {
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 149;
|
||||||
|
color: silver;
|
||||||
|
background:rgba(40,40,40,0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav:hover #nav-menu {
|
||||||
|
display: block;
|
||||||
|
list-style-type: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-icon {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0.5em 2em 0.5em 0.5em;
|
||||||
|
margin: 0.5 em;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav ul li.active a { background: silver;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu #user {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* phones, and, indeed, smaller phones. Adapted to touch; display radically
|
||||||
|
* decluttered */
|
||||||
|
@media all and (max-device-width: 768px) {
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 149;
|
||||||
|
color: silver;
|
||||||
|
background:rgba(40,40,40,0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav:hover #nav-menu {
|
||||||
|
display: block;
|
||||||
|
list-style-type: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-icon {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
list-style-type: none;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0.5em 2em 0.5em 0.5em;
|
||||||
|
margin: 0.5 em;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav ul li.active a { background: silver;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu #user {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,6 +23,14 @@
|
||||||
* ## html elements generally in alphabetic order
|
* ## html elements generally in alphabetic order
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: silver;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover, a:active {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: "Archivo Narrow", "Helvetica", "Sans", sans-serif;
|
font-family: "Archivo Narrow", "Helvetica", "Sans", sans-serif;
|
||||||
background-color: rgb( 50, 109, 177);
|
background-color: rgb( 50, 109, 177);
|
||||||
|
@ -133,7 +141,6 @@ select {
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
border: 2px solid black;
|
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +167,7 @@ th {
|
||||||
#main-container{
|
#main-container{
|
||||||
}
|
}
|
||||||
|
|
||||||
#back-link {
|
#back-link, .back-link {
|
||||||
min-width: 8em;
|
min-width: 8em;
|
||||||
padding: 0.25em 1em;
|
padding: 0.25em 1em;
|
||||||
background-color: gray;
|
background-color: gray;
|
||||||
|
@ -170,7 +177,7 @@ th {
|
||||||
border-bottom-right-radius: 0.5em;
|
border-bottom-right-radius: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#back-link:hover, #back-link:active {
|
#back-link:hover, #back-link:active, .back-link:hover, .back-link:active, {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background-color: rgb(160, 160, 160);
|
background-color: rgb(160, 160, 160);
|
||||||
}
|
}
|
||||||
|
@ -193,11 +200,13 @@ th {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* left bar for all pages in the Wiki - editable, provided by users. Within main-container */
|
#big-links {
|
||||||
#side-bar {
|
width: 100%;
|
||||||
width: 17%;
|
min-height: 3.5em;
|
||||||
height: 100%;
|
}
|
||||||
float: left;
|
|
||||||
|
#content {
|
||||||
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cookies information box, fixed, in right margin, just above footer */
|
/* cookies information box, fixed, in right margin, just above footer */
|
||||||
|
@ -308,6 +317,9 @@ th {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.splash-screen {
|
||||||
|
}
|
||||||
|
|
||||||
.warn {
|
.warn {
|
||||||
color: maroon;
|
color: maroon;
|
||||||
}
|
}
|
||||||
|
@ -326,62 +338,11 @@ th {
|
||||||
|
|
||||||
/* desktops and laptops, primarily. Adapted to mouse; targets may be small */
|
/* desktops and laptops, primarily. Adapted to mouse; targets may be small */
|
||||||
@media all and (min-device-width: 1025px) {
|
@media all and (min-device-width: 1025px) {
|
||||||
/* content of the current page in the Wiki - editable, provided by users. Within main-container */
|
|
||||||
#content {
|
#content {
|
||||||
border: thin solid silver;
|
|
||||||
width: 80%;
|
width: 80%;
|
||||||
float: right;
|
float: right;
|
||||||
padding-bottom: 5em;
|
padding-bottom: 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#phone-side-bar, #phone-credits {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* top-of-page navigation, not editable, provided by Smeagol */
|
|
||||||
#nav{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
_position: absolute;
|
|
||||||
_top: expression(document.documentElement.scrollTop);
|
|
||||||
z-index: 149;
|
|
||||||
background:rgba(7,27,51,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* only needed for fly-out menu effect on tablet and phone stylesheets */
|
|
||||||
#nav-icon {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-menu {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li a {
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
padding: 0.1em 0.75em;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li.active a { background: gray;}
|
|
||||||
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
|
||||||
li.nav-item a:active { background: gray; color: white; }
|
|
||||||
|
|
||||||
#nav menu li#user {
|
|
||||||
padding: 0 1em;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tablets, primarily. Adapted to touch; targets are larger */
|
/* tablets, primarily. Adapted to touch; targets are larger */
|
||||||
|
@ -399,54 +360,6 @@ th {
|
||||||
float: right;
|
float: right;
|
||||||
padding-bottom: 5em;
|
padding-bottom: 5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#nav{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 149;
|
|
||||||
color: silver;
|
|
||||||
background:rgba(40,40,40,0.9);
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav a {
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav:hover #nav-menu {
|
|
||||||
display: block;
|
|
||||||
list-style-type: none;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-icon {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-menu, #phone-side-bar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li {
|
|
||||||
padding: 0.5em;
|
|
||||||
margin: 0.5 em;
|
|
||||||
font-size: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li a {
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav ul li.active a { background: silver;}
|
|
||||||
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
|
||||||
li.nav-item a:active { background: gray; color: white; }
|
|
||||||
|
|
||||||
#nav menu #user {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* phones, and, indeed, smaller phones. Adapted to touch; display radically
|
/* phones, and, indeed, smaller phones. Adapted to touch; display radically
|
||||||
|
@ -459,8 +372,23 @@ th {
|
||||||
h1 {
|
h1 {
|
||||||
/* I wouldn't normally use a px value, but the menu icon is 49px wide */
|
/* I wouldn't normally use a px value, but the menu icon is 49px wide */
|
||||||
padding: 0.25em 5%;
|
padding: 0.25em 5%;
|
||||||
padding-left: 100px;
|
padding-left: 75px;
|
||||||
text-align: right;
|
}
|
||||||
|
|
||||||
|
input, select {
|
||||||
|
background-color: rgb( 50, 109, 177);
|
||||||
|
color: white;
|
||||||
|
font-size: 1.1em;
|
||||||
|
padding: 0.25em 1em;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shown {
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* content of the current in the Wiki - editable, provided by users. Within main-container */
|
/* content of the current in the Wiki - editable, provided by users. Within main-container */
|
||||||
|
@ -480,56 +408,4 @@ th {
|
||||||
#cookies {
|
#cookies {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#nav{
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 149;
|
|
||||||
color: silver;
|
|
||||||
background:rgba(40,40,40,0.9);
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav a {
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav:hover #nav-menu, #nav:hover #phone-side-bar {
|
|
||||||
display: block;
|
|
||||||
list-style-type: none;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-icon {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-menu, #phone-side-bar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li {
|
|
||||||
padding: 0.5em;
|
|
||||||
margin: 0.5 em;
|
|
||||||
font-size: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav menu li a {
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav ul li.active a { background: silver;}
|
|
||||||
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
|
||||||
li.nav-item a:active { background: gray; color: white; }
|
|
||||||
|
|
||||||
#nav menu #user {
|
|
||||||
text-decoration: none;
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#side-bar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
177
resources/public/css/yyy-site.css
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
/**
|
||||||
|
* Additional CSS for the app. Navigation works differently between
|
||||||
|
* app and the main site; in the app it's driven by React, while in
|
||||||
|
* the main site it's CSS.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* # The Stylesheet
|
||||||
|
*
|
||||||
|
* ## html elements generally in alphabetic order
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* desktops and laptops, primarily. Adapted to mouse; targets may be small */
|
||||||
|
@media all and (min-device-width: 1025px) {
|
||||||
|
/* top-of-page navigation, not editable, provided by Smeagol */
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
_position: absolute;
|
||||||
|
_top: expression(document.documentElement.scrollTop);
|
||||||
|
z-index: 149;
|
||||||
|
background:rgba(7,27,51,0.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* only needed for fly-out menu effect on tablet and phone stylesheets */
|
||||||
|
#nav-icon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 0.1em 0.75em;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li.active a { background: gray;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu li#user {
|
||||||
|
padding: 0 1em;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tablets, primarily. Adapted to touch; targets are larger */
|
||||||
|
@media all and (min-device-width: 769px) and (max-device-width: 1024px) {
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 149;
|
||||||
|
color: silver;
|
||||||
|
background:rgba(40,40,40,0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav:hover #nav-menu {
|
||||||
|
display: block;
|
||||||
|
list-style-type: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-icon {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu, #phone-side-bar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0.5em 2em 0.5em 0.5em;
|
||||||
|
margin: 0.5 em;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav ul li.active a { background: silver;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu #user {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* phones, and, indeed, smaller phones. Adapted to touch; display radically
|
||||||
|
* decluttered */
|
||||||
|
@media all and (max-device-width: 768px) {
|
||||||
|
#nav{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 149;
|
||||||
|
color: silver;
|
||||||
|
background:rgba(40,40,40,0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav a {
|
||||||
|
color: white;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav:hover #nav-menu {
|
||||||
|
display: block;
|
||||||
|
list-style-type: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-icon {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-menu {
|
||||||
|
list-style-type: none;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li {
|
||||||
|
padding: 0.5em 2em 0.5em 0.5em;
|
||||||
|
margin: 0.5 em;
|
||||||
|
font-size: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav menu li a {
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav ul li.active a { background: silver;}
|
||||||
|
li.nav-item a:hover { background: rgb( 240, 240, 240) }
|
||||||
|
li.nav-item a:active { background: gray; color: white; }
|
||||||
|
|
||||||
|
#nav menu #user {
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,61 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Sign up!</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="mapview.html">Map</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="index.html">Logout</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
<h1>
|
|
||||||
43 Imaginary Terrace
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<table class="fill-container">
|
|
||||||
<tr>
|
|
||||||
<td><img src="img/male.png"/></td>
|
|
||||||
<td><img src="img/female.png"/></td>
|
|
||||||
<td><img src="img/female.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Jock Tamson</td>
|
|
||||||
<td>Anne Tamson</td>
|
|
||||||
<td>Mary Tamson</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="img/saltire.png"/></td>
|
|
||||||
<td><img src="img/saltire-grey.png"/></td>
|
|
||||||
<td><img src="img/saltire-grey.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="img/ujack-grey.png"/></td>
|
|
||||||
<td><img src="img/ujack.png"/></td>
|
|
||||||
<td><img src="img/ujack-grey.png"/></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="library.html"><img src="img/unknown.png"/></a></td>
|
|
||||||
<td><a href="library.html"><img src="img/unknown.png"/></a></td>
|
|
||||||
<td><a href="library.html"><img src="img/unknown.png"/></a></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,46 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Login with Facebook</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Login with Facebook
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<p>
|
|
||||||
The actual login page is provided by the 0-auth provider chosen by the user. We don't
|
|
||||||
handle login ourselves, and we don't store <em>any</em> passwords.
|
|
||||||
</p>
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="mapview.html" class="big-link" id="app-link">Login</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,46 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Login with Google</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Login with Google
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<p>
|
|
||||||
The actual login page is provided by the 0-auth provider chosen by the user. We don't
|
|
||||||
handle login ourselves, and we don't store <em>any</em> passwords.
|
|
||||||
</p>
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="mapview.html" class="big-link" id="app-link">Login</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
144
resources/public/img/basic_button.svg
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="basic_button.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.5"
|
||||||
|
inkscape:cx="29.960513"
|
||||||
|
inkscape:cy="32"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="949"
|
||||||
|
inkscape:window-x="200"
|
||||||
|
inkscape:window-y="33"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="fill:#898988;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
id="path2395"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
id="path2397"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
id="path3183"
|
||||||
|
sodipodi:nodetypes="czzczzc" />
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:62.48704529px;line-height:125%;font-family:'Arial Black';-inkscape-font-specification:'Arial Black, ';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
x="14.00945"
|
||||||
|
y="54.545456"
|
||||||
|
id="text4147"
|
||||||
|
sodipodi:linespacing="125%"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4149"
|
||||||
|
x="14.00945"
|
||||||
|
y="54.545456">?</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.9 KiB |
BIN
resources/public/img/clojure-icon.gif
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 4 KiB |
BIN
resources/public/img/gender/female.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
resources/public/img/gender/female.xcf
Normal file
BIN
resources/public/img/gender/fluid.png
Normal file
After Width: | Height: | Size: 511 B |
BIN
resources/public/img/gender/fluid.xcf
Normal file
BIN
resources/public/img/gender/male.png
Normal file
After Width: | Height: | Size: 983 B |
73
resources/public/img/gender/male.svg
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="385.05206"
|
||||||
|
height="988.05249"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:modified="true"
|
||||||
|
version="1.1"
|
||||||
|
sodipodi:docname="male.svg"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/male.png"
|
||||||
|
inkscape:export-xdpi="19.128538"
|
||||||
|
inkscape:export-ydpi="19.128538">
|
||||||
|
<defs
|
||||||
|
id="defs4" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.25"
|
||||||
|
inkscape:cx="-3109.3322"
|
||||||
|
inkscape:cy="805.94824"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1058"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
showgrid="false"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1" />
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-179.52121,-32.154841)">
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-opacity:1"
|
||||||
|
d="m 302.07468,1018.9879 c -15.81897,-5.1904 -28.34737,-16.8655 -31.92586,-29.75162 -1.42594,-5.13478 -2.10543,-110.17978 -2.11301,-326.65896 l -0.0112,-319.09031 -8.01483,0 -8.01483,0 0,120.45053 c 0,118.07986 -0.0815,120.59391 -4.14303,127.73631 -5.26073,9.25131 -11.16854,13.58617 -22.73067,16.67855 -17.09376,4.5719 -35.7878,-4.15819 -42.50097,-19.84788 -4.3193,-10.09485 -4.038,-279.33842 0.30928,-296.02878 9.79916,-37.6215 41.53277,-68.44297 78.54331,-76.28567 19.49608,-4.1313 199.75046,-4.18226 219.18913,-0.062 19.80013,4.19692 36.80657,13.69012 51.85463,28.94588 15.47834,15.69199 22.70364,28.42132 28.09297,49.4934 3.75647,14.68761 3.96364,22.55346 3.96364,150.49169 0,116.94951 -0.41197,135.98001 -3.08199,142.37026 -4.15156,9.9361 -8.42366,14.40454 -17.95694,18.78224 -15.82006,7.2646 -35.92704,2.59108 -45.28163,-10.52495 l -4.81104,-6.74554 -0.54573,-122.72704 -0.54575,-122.72704 -7.97001,0 -7.97002,0 0,320.65745 c 0,351.50048 0.79525,328.16116 -11.62761,341.25028 -9.81312,10.3393 -19.82011,14.2505 -36.46136,14.2505 -16.64124,0 -26.64824,-3.9112 -36.46135,-14.2505 -12.18104,-12.83433 -11.62761,-2.8865 -11.62761,-209.00564 l 0,-188.41279 -8.01483,0 -8.01483,0 0,188.41279 c 0,153.54409 -0.50003,189.60605 -2.70192,194.86049 -4.03669,9.63295 -12.81825,19.13045 -22.03661,23.83335 -8.88472,4.5326 -29.05582,6.6393 -37.38936,3.905 z M 347.1449,193.72648 c -24.22231,-8.65142 -39.193,-21.98708 -49.78959,-44.35181 -5.8651,-12.37867 -6.28804,-14.75664 -6.28804,-35.35422 0,-20.841905 0.36411,-22.822531 6.47924,-35.244117 30.5436,-62.042861 118.72329,-62.194977 149.21506,-0.257406 6.31342,12.824377 6.60596,14.440919 6.60596,36.503383 0,21.21804 -0.45292,24.00705 -5.60092,34.49028 -8.64792,17.61029 -21.42101,30.45108 -38.86769,39.0737 -13.5458,6.69469 -16.9855,7.52828 -33.40502,8.0955 -13.77794,0.47595 -20.7882,-0.25485 -28.349,-2.95531 z"
|
||||||
|
id="path2558"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
BIN
resources/public/img/gender/male.xcf
Normal file
BIN
resources/public/img/gender/unknown.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/public/img/gender/unknown.xcf
Normal file
BIN
resources/public/img/github-logo-transparent.png
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
resources/public/img/gnu.small.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
resources/public/img/issues.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
150
resources/public/img/issues.svg
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="issues.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.5"
|
||||||
|
inkscape:cx="32.687786"
|
||||||
|
inkscape:cy="32"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="949"
|
||||||
|
inkscape:window-x="200"
|
||||||
|
inkscape:window-y="33"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<g
|
||||||
|
id="g4174"
|
||||||
|
inkscape:export-xdpi="86.849998"
|
||||||
|
inkscape:export-ydpi="86.849998">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccc"
|
||||||
|
id="path2395"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
style="fill:#898988;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccccc"
|
||||||
|
id="path2397"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="czzczzc"
|
||||||
|
id="path3183"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0" />
|
||||||
|
<text
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
id="text4147"
|
||||||
|
y="54.545456"
|
||||||
|
x="14.00945"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:62.48704529px;line-height:125%;font-family:'Arial Black';-inkscape-font-specification:'Arial Black, ';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#f9f9f9;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
y="54.545456"
|
||||||
|
x="14.00945"
|
||||||
|
id="tspan4149"
|
||||||
|
sodipodi:role="line">?</tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.1 KiB |
BIN
resources/public/img/luminus-logo.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
BIN
resources/public/img/map-pins/basic_map_pin.png
Normal file
After Width: | Height: | Size: 333 B |
149
resources/public/img/map-pins/basic_map_pin.svg
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="240.5"
|
||||||
|
height="317.00851"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="basic_map_pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/map-pins/basic_map_pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3155">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3157" />
|
||||||
|
<stop
|
||||||
|
id="stop3163"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffd200;stop-opacity:0.74789917;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3159" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3155"
|
||||||
|
id="radialGradient3161"
|
||||||
|
cx="77.050865"
|
||||||
|
cy="429.06537"
|
||||||
|
fx="77.050865"
|
||||||
|
fy="429.06537"
|
||||||
|
r="155.491"
|
||||||
|
gradientTransform="matrix(1,0,0,1.0302596,0,-12.983332)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="-144.01361"
|
||||||
|
inkscape:cy="86.04423"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1031"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-384.75"
|
||||||
|
originy="-548.24148" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Basic pin for SceneHere</dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>basic_map_pin.svg</dc:identifier>
|
||||||
|
<dc:description>
|
||||||
|
Basic default map pin
|
||||||
|
$Revision: 1.2 $
|
||||||
|
</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-384.75,-187.11218)">
|
||||||
|
<path
|
||||||
|
style="fill:#dddddc;fill-opacity:0.70403586;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:10.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 430,192.36218 150,0 c 20,1e-5 40,20.00001 40,40 l 0,150 c 0,20.00001 -20,40.00001 -40,40 l -40,0 c -20,0 -20,46.66667 -30,70 -13.33333,-23.33333 -20,-70 -40,-70 l -40,0 c -20,10e-6 -40,-19.99999 -40,-40 l 0,-150 c 0,-19.99999 20,-39.99999 40,-40 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill:url(#radialGradient3161);fill-opacity:1;stroke:#f4f3f3;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path3153"
|
||||||
|
sodipodi:sides="5"
|
||||||
|
sodipodi:cx="90"
|
||||||
|
sodipodi:cy="432.36218"
|
||||||
|
sodipodi:r1="168.77766"
|
||||||
|
sodipodi:r2="56.68261"
|
||||||
|
sodipodi:arg1="0.69157251"
|
||||||
|
sodipodi:arg2="1.2771074"
|
||||||
|
inkscape:flatsided="false"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 220,540 106.40877,486.61778 27.802561,589.26144 43.470446,464.73376 -78.440131,421.69344 44.83438,398.11331 48.095713,268.86928 108.61567,378.82364 232.54186,341.98675 146.67073,433.52241 Z"
|
||||||
|
transform="matrix(0.6026863,0.1441863,-0.1441863,0.6026863,509.16002,39.357112)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
BIN
resources/public/img/map-pins/mixed-pin.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
198
resources/public/img/map-pins/mixed-pin.svg
Normal file
|
@ -0,0 +1,198 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="240.5"
|
||||||
|
height="317.00851"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="mixed-pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/map-pins/mixed-pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3155">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3157" />
|
||||||
|
<stop
|
||||||
|
id="stop3163"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffd200;stop-opacity:0.74789917;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3159" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8"
|
||||||
|
inkscape:cx="-48.091792"
|
||||||
|
inkscape:cy="146.25309"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1058"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-384.75"
|
||||||
|
originy="-548.24148" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>basic_map_pin.svg</dc:identifier>
|
||||||
|
<dc:description>
|
||||||
|
Basic default map pin
|
||||||
|
$Revision: 1.2 $
|
||||||
|
</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-384.75,-187.11218)">
|
||||||
|
<path
|
||||||
|
style="fill:#999999;fill-opacity:0.70403586;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:10.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 430,192.36218 150,0 c 20,1e-5 40,20.00001 40,40 l 0,150 c 0,20.00001 -20,40.00001 -40,40 l -40,0 c -20,0 -20,46.66667 -30,70 -13.33333,-23.33333 -20,-70 -40,-70 l -40,0 c -20,10e-6 -40,-19.99999 -40,-40 l 0,-150 c 0,-19.99999 20,-39.99999 40,-40 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
transform="matrix(4.6670821,0,0,4.6670821,353.35851,157.66476)"
|
||||||
|
id="g4168">
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="10"
|
||||||
|
height="35"
|
||||||
|
width="45"
|
||||||
|
id="rect4148"
|
||||||
|
style="opacity:1;fill:#214478;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="28"
|
||||||
|
height="35"
|
||||||
|
width="9"
|
||||||
|
id="rect4150"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="27.09091"
|
||||||
|
x="10"
|
||||||
|
height="8.727273"
|
||||||
|
width="45"
|
||||||
|
id="rect4152"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4154"
|
||||||
|
d="m 13,14 -3,0 0.09091,5.272727 42,29.818182 L 55,49 54.909091,43.818182 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 13,49.090909 -3,0 0.09091,-5.272727 L 52.09091,14 55,14.090909 54.90909,19.272727 Z"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4156"
|
||||||
|
d="m 12,14 -2,0 0,4 44,31 1,0 0,-4 z"
|
||||||
|
style="fill:#971e1f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#971e1f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 12,49 -2,0 0,-4 44,-31 1,0 0,4 z"
|
||||||
|
id="path4158"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="30"
|
||||||
|
height="35"
|
||||||
|
width="5"
|
||||||
|
id="rect4162"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="29"
|
||||||
|
x="10"
|
||||||
|
height="5"
|
||||||
|
width="45"
|
||||||
|
id="rect4164"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:0.99130434"
|
||||||
|
d="m 400,382.36217 210,-150 0,-10 -210,0 z"
|
||||||
|
id="path4199"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:#0044aa;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="m 400,362.36217 195,-140 -195,0 z"
|
||||||
|
id="path4201"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="m 400,222.36217 15,0 90,65 -24.64286,17.5 -80.35714,-57.5 0,-25"
|
||||||
|
id="path4203"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="cccccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 7.5 KiB |
BIN
resources/public/img/map-pins/no-pin.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
182
resources/public/img/map-pins/no-pin.svg
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="240.5"
|
||||||
|
height="317.00851"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="no-pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/map-pins/no-pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3155">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3157" />
|
||||||
|
<stop
|
||||||
|
id="stop3163"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffd200;stop-opacity:0.74789917;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3159" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="-637.97821"
|
||||||
|
inkscape:cy="86.04423"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1058"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-384.75"
|
||||||
|
originy="-548.24148" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Basic pin for SceneHere</dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>basic_map_pin.svg</dc:identifier>
|
||||||
|
<dc:description>
|
||||||
|
Basic default map pin
|
||||||
|
$Revision: 1.2 $
|
||||||
|
</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-384.75,-187.11218)">
|
||||||
|
<path
|
||||||
|
style="fill:#a02c2c;fill-opacity:0.70403586;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:10.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 430,192.36218 150,0 c 20,1e-5 40,20.00001 40,40 l 0,150 c 0,20.00001 -20,40.00001 -40,40 l -40,0 c -20,0 -20,46.66667 -30,70 -13.33333,-23.33333 -20,-70 -40,-70 l -40,0 c -20,10e-6 -40,-19.99999 -40,-40 l 0,-150 c 0,-19.99999 20,-39.99999 40,-40 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<g
|
||||||
|
transform="matrix(4.6365492,0,0,4.6365492,353.66384,158.09222)"
|
||||||
|
id="g4168">
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="10"
|
||||||
|
height="35"
|
||||||
|
width="45"
|
||||||
|
id="rect4148"
|
||||||
|
style="opacity:1;fill:#214478;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="28"
|
||||||
|
height="35"
|
||||||
|
width="9"
|
||||||
|
id="rect4150"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="27.09091"
|
||||||
|
x="10"
|
||||||
|
height="8.727273"
|
||||||
|
width="45"
|
||||||
|
id="rect4152"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4154"
|
||||||
|
d="m 13,14 -3,0 0.09091,5.272727 42,29.818182 L 55,49 54.909091,43.818182 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 13,49.090909 -3,0 0.09091,-5.272727 L 52.09091,14 55,14.090909 54.90909,19.272727 Z"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4156"
|
||||||
|
d="m 12,14 -2,0 0,4 44,31 1,0 0,-4 z"
|
||||||
|
style="fill:#971e1f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#971e1f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 12,49 -2,0 0,-4 44,-31 1,0 0,4 z"
|
||||||
|
id="path4158"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="30"
|
||||||
|
height="35"
|
||||||
|
width="5"
|
||||||
|
id="rect4162"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="29"
|
||||||
|
x="10"
|
||||||
|
height="5"
|
||||||
|
width="45"
|
||||||
|
id="rect4164"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.7 KiB |
BIN
resources/public/img/map-pins/shadow_pin.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
122
resources/public/img/map-pins/shadow_pin.svg
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="393.64932"
|
||||||
|
height="234.32486"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="shadow_pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/scenehere/src/war/images/icons/shadow_pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective2470"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<filter
|
||||||
|
inkscape:collect="always"
|
||||||
|
id="filter3286"
|
||||||
|
x="-0.097085193"
|
||||||
|
width="1.1941704"
|
||||||
|
y="-0.18284883"
|
||||||
|
height="1.3656976">
|
||||||
|
<feGaussianBlur
|
||||||
|
inkscape:collect="always"
|
||||||
|
stdDeviation="13.632102"
|
||||||
|
id="feGaussianBlur3288" />
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="139.64551"
|
||||||
|
inkscape:cy="107.26322"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="949"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-309.93331"
|
||||||
|
originy="-527.02249" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Shadow pin for SceneHere</dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>shadow_pin.svg</dc:identifier>
|
||||||
|
<dc:description>$Revision: 1.2 $</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-309.93331,-291.01483)">
|
||||||
|
<path
|
||||||
|
style="opacity:0.66115699;fill:#373434;fill-opacity:0.52017942;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:7.35060501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3286)"
|
||||||
|
d="m 529.41369,322.3882 128.012,0.5673 c 17.06824,0.0757 19.06491,11.56969 3.99332,22.98808 l -113.037,85.63797 c -15.0716,11.4184 -47.21146,22.76115 -64.27972,22.68551 l -34.13654,-0.15128 c -17.06826,-0.0756 -52.23533,26.56729 -78.35299,39.85092 6.20469,-13.37188 35.68233,-40.04002 18.61406,-40.11566 l -34.13653,-0.15128 c -17.06826,-0.0756 -19.06494,-11.56967 -3.99332,-22.98807 l 113.03699,-85.63798 c 15.07158,-11.41838 47.21147,-22.76114 64.27973,-22.68551 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.3 KiB |
149
resources/public/img/map-pins/unknown-pin.svg
Normal file
|
@ -0,0 +1,149 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="240.5"
|
||||||
|
height="317.00851"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="basic_map_pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/scenehere/src/war/images/icons/basic_map_pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3155">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3157" />
|
||||||
|
<stop
|
||||||
|
id="stop3163"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffd200;stop-opacity:0.74789917;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3159" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3155"
|
||||||
|
id="radialGradient3161"
|
||||||
|
cx="77.050865"
|
||||||
|
cy="429.06537"
|
||||||
|
fx="77.050865"
|
||||||
|
fy="429.06537"
|
||||||
|
r="155.491"
|
||||||
|
gradientTransform="matrix(1,0,0,1.0302596,0,-12.983332)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="-144.01361"
|
||||||
|
inkscape:cy="86.04423"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1031"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-384.75"
|
||||||
|
originy="-548.24148" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Basic pin for SceneHere</dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>basic_map_pin.svg</dc:identifier>
|
||||||
|
<dc:description>
|
||||||
|
Basic default map pin
|
||||||
|
$Revision: 1.2 $
|
||||||
|
</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-384.75,-187.11218)">
|
||||||
|
<path
|
||||||
|
style="fill:#dddddc;fill-opacity:0.70403586;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:10.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 430,192.36218 150,0 c 20,1e-5 40,20.00001 40,40 l 0,150 c 0,20.00001 -20,40.00001 -40,40 l -40,0 c -20,0 -20,46.66667 -30,70 -13.33333,-23.33333 -20,-70 -40,-70 l -40,0 c -20,10e-6 -40,-19.99999 -40,-40 l 0,-150 c 0,-19.99999 20,-39.99999 40,-40 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="star"
|
||||||
|
style="fill:url(#radialGradient3161);fill-opacity:1;stroke:#f4f3f3;stroke-width:0;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path3153"
|
||||||
|
sodipodi:sides="5"
|
||||||
|
sodipodi:cx="90"
|
||||||
|
sodipodi:cy="432.36218"
|
||||||
|
sodipodi:r1="168.77766"
|
||||||
|
sodipodi:r2="56.68261"
|
||||||
|
sodipodi:arg1="0.69157251"
|
||||||
|
sodipodi:arg2="1.2771074"
|
||||||
|
inkscape:flatsided="false"
|
||||||
|
inkscape:rounded="0"
|
||||||
|
inkscape:randomized="0"
|
||||||
|
d="M 220,540 106.40877,486.61778 27.802561,589.26144 43.470446,464.73376 -78.440131,421.69344 44.83438,398.11331 48.095713,268.86928 108.61567,378.82364 232.54186,341.98675 146.67073,433.52241 Z"
|
||||||
|
transform="matrix(0.6026863,0.1441863,-0.1441863,0.6026863,509.16002,39.357112)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
BIN
resources/public/img/map-pins/yes-pin.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
146
resources/public/img/map-pins/yes-pin.svg
Normal file
|
@ -0,0 +1,146 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<!-- Icon created for SceneHere (c) 2010 Simon Brooke $Revision: 1.2 $ -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="240.5"
|
||||||
|
height="317.00851"
|
||||||
|
id="svg2"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="yes-pin.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/map-pins/yes-pin.png"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3155">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3157" />
|
||||||
|
<stop
|
||||||
|
id="stop3163"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#ffd200;stop-opacity:0.74789917;" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#ffff67;stop-opacity:0;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3159" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 526.18109 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="744.09448 : 526.18109 : 1"
|
||||||
|
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
|
||||||
|
id="perspective10" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
gridtolerance="10000"
|
||||||
|
guidetolerance="10"
|
||||||
|
objecttolerance="10"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="0.98994949"
|
||||||
|
inkscape:cx="-390.99591"
|
||||||
|
inkscape:cy="86.04423"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1031"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
fit-margin-top="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2383"
|
||||||
|
originx="-384.75"
|
||||||
|
originy="-548.24148" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>Basic pin for SceneHere</dc:title>
|
||||||
|
<dc:date>20100801</dc:date>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Copyright (c) 2010 Simon Brooke</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:identifier>basic_map_pin.svg</dc:identifier>
|
||||||
|
<dc:description>
|
||||||
|
Basic default map pin
|
||||||
|
$Revision: 1.2 $
|
||||||
|
</dc:description>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-384.75,-187.11218)">
|
||||||
|
<path
|
||||||
|
style="fill:#3771c8;fill-opacity:0.70403586;fill-rule:evenodd;stroke:#4f4f4f;stroke-width:10.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
d="m 430,192.36218 150,0 c 20,1e-5 40,20.00001 40,40 l 0,150 c 0,20.00001 -20,40.00001 -40,40 l -40,0 c -20,0 -20,46.66667 -30,70 -13.33333,-23.33333 -20,-70 -40,-70 l -40,0 c -20,10e-6 -40,-19.99999 -40,-40 l 0,-150 c 0,-19.99999 20,-39.99999 40,-40 z"
|
||||||
|
id="path2387"
|
||||||
|
sodipodi:nodetypes="cccccccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
inkscape:export-xdpi="11.98"
|
||||||
|
inkscape:export-ydpi="11.98" />
|
||||||
|
<g
|
||||||
|
id="g4961"
|
||||||
|
transform="matrix(4.6365492,0,0,4.6365492,748.94595,305.18963)">
|
||||||
|
<rect
|
||||||
|
y="-16"
|
||||||
|
x="-75"
|
||||||
|
height="35"
|
||||||
|
width="45"
|
||||||
|
id="rect4148"
|
||||||
|
style="opacity:1;fill:#214478;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4154"
|
||||||
|
d="m -72,-16 -3,0 0.09091,5.272727 42,29.818182 L -30,19 -30.09091,13.818182 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -72,19.090909 -3,0 0.09091,-5.272727 42,-29.818182 2.90909,0.09091 -0.09091,5.181818 z"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
BIN
resources/public/img/option/no-selected.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
197
resources/public/img/option/no-selected.svg
Normal file
|
@ -0,0 +1,197 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="no-selected.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/option/no-unselected.png"
|
||||||
|
inkscape:export-xdpi="86.849998"
|
||||||
|
inkscape:export-ydpi="86.849998"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="11"
|
||||||
|
inkscape:cx="-21.670772"
|
||||||
|
inkscape:cy="32.267296"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1058"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="fill:#961015;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
id="path2395"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
id="path2397"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<g
|
||||||
|
id="g4168">
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="10"
|
||||||
|
height="35"
|
||||||
|
width="45"
|
||||||
|
id="rect4148"
|
||||||
|
style="opacity:1;fill:#214478;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="28"
|
||||||
|
height="35"
|
||||||
|
width="9"
|
||||||
|
id="rect4150"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="27.09091"
|
||||||
|
x="10"
|
||||||
|
height="8.727273"
|
||||||
|
width="45"
|
||||||
|
id="rect4152"
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4154"
|
||||||
|
d="m 13,14 -3,0 0.09091,5.272727 42,29.818182 L 55,49 54.909091,43.818182 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 13,49.090909 -3,0 0.09091,-5.272727 L 52.09091,14 55,14.090909 l -0.09091,5.181818 z"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4156"
|
||||||
|
d="m 12,14 -2,0 0,4 44,31 1,0 0,-4 z"
|
||||||
|
style="fill:#971e1f;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#971e1f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 12,49 -2,0 0,-4 44,-31 1,0 0,4 z"
|
||||||
|
id="path4158"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<rect
|
||||||
|
y="14"
|
||||||
|
x="30"
|
||||||
|
height="35"
|
||||||
|
width="5"
|
||||||
|
id="rect4162"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<rect
|
||||||
|
y="29"
|
||||||
|
x="10"
|
||||||
|
height="5"
|
||||||
|
width="45"
|
||||||
|
id="rect4164"
|
||||||
|
style="opacity:1;fill:#971e1f;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
id="path3183"
|
||||||
|
sodipodi:nodetypes="czzczzc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8.1 KiB |
BIN
resources/public/img/option/no-unselected.png
Normal file
After Width: | Height: | Size: 5.2 KiB |
194
resources/public/img/option/no-unselected.svg
Normal file
|
@ -0,0 +1,194 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="no-unselected.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/option/no-unselected.png"
|
||||||
|
inkscape:export-xdpi="86.849998"
|
||||||
|
inkscape:export-ydpi="86.849998">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.5"
|
||||||
|
inkscape:cx="-14.494032"
|
||||||
|
inkscape:cy="32"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="949"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="fill:#898988;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
id="path2395"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
id="path2397"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#333333;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4148"
|
||||||
|
width="45"
|
||||||
|
height="35"
|
||||||
|
x="10.090909"
|
||||||
|
y="14" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4150"
|
||||||
|
width="9"
|
||||||
|
height="35"
|
||||||
|
x="28.09091"
|
||||||
|
y="14" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#fefefd;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4152"
|
||||||
|
width="45"
|
||||||
|
height="8.727273"
|
||||||
|
x="10.090909"
|
||||||
|
y="27.09091" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 13.090909,14 -3,0 0.09091,5.272727 42,29.818182 L 55.090909,49 55,43.818182 Z"
|
||||||
|
id="path4154"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4160"
|
||||||
|
d="m 13.090909,49.090909 -3,0 0.09091,-5.272727 42,-29.818182 2.90909,0.09091 -0.09091,5.181818 z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 12.090909,14 -2,0 0,4 44,31 1,0 0,-4 z"
|
||||||
|
id="path4156"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4158"
|
||||||
|
d="m 12.090909,49 -2,0 0,-4 44,-31 1,0 0,4 z"
|
||||||
|
style="fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4162"
|
||||||
|
width="5"
|
||||||
|
height="35"
|
||||||
|
x="30.09091"
|
||||||
|
y="14" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#666666;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4164"
|
||||||
|
width="45"
|
||||||
|
height="5"
|
||||||
|
x="10.090909"
|
||||||
|
y="29" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
id="path3183"
|
||||||
|
sodipodi:nodetypes="czzczzc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 8 KiB |
BIN
resources/public/img/option/yes-selected.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
160
resources/public/img/option/yes-selected.svg
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="yes-selected.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/option/yes-selected.png"
|
||||||
|
inkscape:export-xdpi="86.849998"
|
||||||
|
inkscape:export-ydpi="86.849998"
|
||||||
|
version="1.1">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.5"
|
||||||
|
inkscape:cx="-29.475852"
|
||||||
|
inkscape:cy="32"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1058"
|
||||||
|
inkscape:window-x="1920"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="fill:#343b57;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
id="path2395"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
id="path2397"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<g
|
||||||
|
id="g4961"
|
||||||
|
transform="translate(85.454545,29.818182)">
|
||||||
|
<rect
|
||||||
|
y="-16"
|
||||||
|
x="-75"
|
||||||
|
height="35"
|
||||||
|
width="45"
|
||||||
|
id="rect4148"
|
||||||
|
style="opacity:1;fill:#214478;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4154"
|
||||||
|
d="m -72,-16 -3,0 0.09091,5.272727 42,29.818182 L -30,19 -30.09091,13.818182 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m -72,19.090909 -3,0 0.09091,-5.272727 42,-29.818182 2.90909,0.09091 -0.09091,5.181818 z"
|
||||||
|
id="path4160"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
id="path3183"
|
||||||
|
sodipodi:nodetypes="czzczzc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.5 KiB |
BIN
resources/public/img/option/yes-unselected.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
156
resources/public/img/option/yes-unselected.svg
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="64px"
|
||||||
|
height="64px"
|
||||||
|
id="svg2383"
|
||||||
|
sodipodi:version="0.32"
|
||||||
|
inkscape:version="0.91 r13725"
|
||||||
|
sodipodi:docname="yes-unselected.svg"
|
||||||
|
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:export-filename="/home/simon/workspace/youyesyet/resources/public/img/option/yes-unselected.png"
|
||||||
|
inkscape:export-xdpi="86.849998"
|
||||||
|
inkscape:export-ydpi="86.849998">
|
||||||
|
<defs
|
||||||
|
id="defs2385">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3201">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffbff;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3203" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#fffffc;stop-opacity:0.43697479;"
|
||||||
|
offset="1"
|
||||||
|
id="stop3205" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient3169">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#000000;stop-opacity:0;"
|
||||||
|
offset="0"
|
||||||
|
id="stop3171" />
|
||||||
|
<stop
|
||||||
|
id="stop3181"
|
||||||
|
offset="0.5"
|
||||||
|
style="stop-color:#1f2022;stop-opacity:0.3277311;" />
|
||||||
|
<stop
|
||||||
|
id="stop3179"
|
||||||
|
offset="1"
|
||||||
|
style="stop-color:#3e4044;stop-opacity:0.70588237;" />
|
||||||
|
</linearGradient>
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 32 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="64 : 32 : 1"
|
||||||
|
inkscape:persp3d-origin="32 : 21.333333 : 1"
|
||||||
|
id="perspective2391" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3169"
|
||||||
|
id="radialGradient3177"
|
||||||
|
cx="13.824846"
|
||||||
|
cy="37.06712"
|
||||||
|
fx="13.824846"
|
||||||
|
fy="37.06712"
|
||||||
|
r="25.818182"
|
||||||
|
gradientTransform="matrix(-2.0844779,1.8066511e-3,-1.855545e-3,-2.1408903,68.70455,103.6953)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
<radialGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient3201"
|
||||||
|
id="radialGradient3207"
|
||||||
|
cx="54.506241"
|
||||||
|
cy="11.290954"
|
||||||
|
fx="54.506241"
|
||||||
|
fy="11.290954"
|
||||||
|
r="23.233509"
|
||||||
|
gradientTransform="matrix(-1.5702192,-1.55969e-2,1.5196965e-2,-1.5299634,139.92139,29.720959)"
|
||||||
|
gradientUnits="userSpaceOnUse" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="5.5"
|
||||||
|
inkscape:cx="-14.494032"
|
||||||
|
inkscape:cy="32"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:window-width="1280"
|
||||||
|
inkscape:window-height="949"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="0">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2393" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata2388">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
id="layer1"
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer">
|
||||||
|
<path
|
||||||
|
style="fill:#898988;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.18181818,14 C -0.48484839,4.1212121 4.6666668,-1 14.727273,-0.90909091 L 50.181818,-0.72727273 C 59.818182,-0.54545455 64.545455,4.3636364 64.909091,14 L 64.909091,49.090909 C 65,59.090909 59.69697,64 50,64.363636 L 14.727273,64 C 5.1515153,64 -7.4940054e-16,59.151515 0.18181818,49.090909 L -0.18181818,14 z"
|
||||||
|
id="path2395"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3177);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
|
||||||
|
d="M -0.90909091,14.181818 L 0.18181818,49.272727 C 0.42424239,59 4.8484848,64 15.090909,64.181818 L 50.727273,64.727273 C 59.424243,63.878788 62.666667,59.575758 64.818182,54 C 62.969697,57.69697 37.121212,57.212121 20,54.181818 C 15,51.575758 12.606061,49 10,43.636364 C 7.4242424,28.848485 5.7575757,4.6060608 14.818182,-0.72727264 C 4.8484848,-0.60606061 -0.75757577,4.4242423 -0.90909091,14.181818 z"
|
||||||
|
id="path2397"
|
||||||
|
sodipodi:nodetypes="ccccccccc" />
|
||||||
|
<path
|
||||||
|
style="fill:url(#radialGradient3207);fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1.0"
|
||||||
|
d="M 14.545455,9.0909091 C 14.149553,8.8269747 37.554919,5.8999467 44.727273,9.0909091 C 51.899626,12.281872 52.329649,12.942069 54.909091,19.090909 C 57.488533,25.239749 54.909091,49.272727 54.909091,49.272727 C 54.909091,49.272727 60.647722,31.308545 60.545455,19.090909 C 60.443186,6.8731043 56.958524,4.453501 44.545455,4.1818182 C 32.127079,3.9100192 14.545455,9.0909091 14.545455,9.0909091 z"
|
||||||
|
id="path3183"
|
||||||
|
sodipodi:nodetypes="czzczzc" />
|
||||||
|
<rect
|
||||||
|
style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.324;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51906158"
|
||||||
|
id="rect4148"
|
||||||
|
width="45"
|
||||||
|
height="35"
|
||||||
|
x="10"
|
||||||
|
y="13.818182" />
|
||||||
|
<path
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 13,13.818182 -3,0 0.09091,5.272727 42,29.818182 L 55,48.818182 54.90909,43.636364 Z"
|
||||||
|
id="path4154"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
sodipodi:nodetypes="ccccccc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="ccccccc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path4160"
|
||||||
|
d="m 13,48.909091 -3,0 0.09091,-5.272727 42,-29.818182 L 55,13.909092 54.90909,19.09091 Z"
|
||||||
|
style="fill:#fefefd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
BIN
resources/public/img/ric-logo.png
Normal file
After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 5.8 KiB |
|
@ -1,53 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<title>Issues</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Issues
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="blurb.html" class="big-link" id="currency-link">Currency</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="blurb.html" class="big-link" id="eu-link">EU Membership</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="blurb.html" class="big-link" id="afford-link">Can Scotland afford it?</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="blurb.html" class="big-link" id="queen-link">Keep the Queen?</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="blurb.html" class="big-link" id="defence-link">Defence/NATO</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<title>Please Log in</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
<h1>
|
|
||||||
Please Log in
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="google-login.html" class="big-link" id="google-login-link">Login with Google</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="facebook-login.html" class="big-link" id="facebook-login-link">Login with Facebook</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="twitter-login.html" class="big-link" id="twitter-login-link">Login with Twitter</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Sign up!</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="mapview.html">Map</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="index.html">Logout</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<a href="electorsview.html">
|
|
||||||
<img src="img/mapview_800.png" alt="Dummy map view"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,42 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<title>Can we persuade you?</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
<h1>
|
|
||||||
Can we persuade you?
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="library.html" class="big-link" id="library-link">Browse the issues</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="call-me.html" class="big-link" id="call-me-link">Get us to talk to you</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,76 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Sign up!</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Sign up!
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<p>
|
|
||||||
Use this form to request someone to phone you to discuss your concerns about independence.
|
|
||||||
</p>
|
|
||||||
<form action="mapview.html" method="post">
|
|
||||||
<p class="widget">
|
|
||||||
<label for="name">Choose a user name</label>
|
|
||||||
<input type="text" id="username" name="username"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="name">Your real name</label>
|
|
||||||
<input type="text" id="name" name="name"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="postcode">Your post-code</label>
|
|
||||||
<input type="text" id="postcode" name="postcode"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="phone">Your phone number</label>
|
|
||||||
<input type="text" id="phone" name="phone"/>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="provider">Choose an authentication provider</label>
|
|
||||||
<select name="provider" id="provider">
|
|
||||||
<option>Twitter</option>
|
|
||||||
<option>Facebook</option>
|
|
||||||
<option>Google</option>
|
|
||||||
</select>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="agree">Agree to the conditions of use</label>
|
|
||||||
<select name="agree" id="agree">
|
|
||||||
<option value="false">I don't agree</option>
|
|
||||||
<option value="true">I agree</option>
|
|
||||||
</select>
|
|
||||||
</p>
|
|
||||||
<p class="widget">
|
|
||||||
<label for="submit"> </label>
|
|
||||||
<input name="submit" id="submit" type="submit" class="action" value="Join us!"/>
|
|
||||||
</p>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Are you registered?</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Have you signed up as a canvasser yet?
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="login.html" class="big-link" id="yes-link">Yes</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="register.html" class="big-link" id="signup-link">No</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,46 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Narrow" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Archivo+Black" rel="stylesheet">
|
|
||||||
<title>Login with Twitter</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header>
|
|
||||||
<div id="nav">
|
|
||||||
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
|
||||||
<menu id="nav-menu" class="nav">
|
|
||||||
<li class=""><a href="index.html">Home</a></li>
|
|
||||||
<li class=""><a href="library.html">Library</a></li>
|
|
||||||
<li class=""><a href="register.html">Register</a></li>
|
|
||||||
<li class=""><a href="login.html">Login</a></li>
|
|
||||||
<li class=""><a href="about.html">About</a></li>
|
|
||||||
</menu>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h1>
|
|
||||||
Login with Twitter
|
|
||||||
</h1>
|
|
||||||
</header>
|
|
||||||
<div id="main-container" class="container">
|
|
||||||
<p>
|
|
||||||
The actual login page is provided by the 0-auth provider chosen by the user. We don't
|
|
||||||
handle login ourselves, and we don't store <em>any</em> passwords.
|
|
||||||
</p>
|
|
||||||
<div id="back-link-container">
|
|
||||||
<a href="javascript:history.back()" id="back-link">Back</a>
|
|
||||||
</div>
|
|
||||||
<div class="big-link-container">
|
|
||||||
<a href="mapview.html" class="big-link" id="app-link">Login</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
54
resources/templates/app.html
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/yyy-common.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/yyy-app.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/spinner.css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Archivo+Black|Archivo+Narrow" rel="stylesheet"/>
|
||||||
|
<title>You Yes Yet?</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="app">
|
||||||
|
<div class="splash-screen">
|
||||||
|
<div class="sk-fading-circle">
|
||||||
|
<div class="sk-circle1 sk-circle"></div>
|
||||||
|
<div class="sk-circle2 sk-circle"></div>
|
||||||
|
<div class="sk-circle3 sk-circle"></div>
|
||||||
|
<div class="sk-circle4 sk-circle"></div>
|
||||||
|
<div class="sk-circle5 sk-circle"></div>
|
||||||
|
<div class="sk-circle6 sk-circle"></div>
|
||||||
|
<div class="sk-circle7 sk-circle"></div>
|
||||||
|
<div class="sk-circle8 sk-circle"></div>
|
||||||
|
<div class="sk-circle9 sk-circle"></div>
|
||||||
|
<div class="sk-circle10 sk-circle"></div>
|
||||||
|
<div class="sk-circle11 sk-circle"></div>
|
||||||
|
<div class="sk-circle12 sk-circle"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="footer">
|
||||||
|
You Yes Yet is loading.
|
||||||
|
You must enable JavaScript to use the You Yes Yet app.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- scripts and styles -->
|
||||||
|
<!-- ATTENTION \/ -->
|
||||||
|
<!-- Leaflet -->
|
||||||
|
<link rel="stylesheet" href="vendor/leaflet/dist/leaflet.css" />
|
||||||
|
<script src="vendor/leaflet/dist/leaflet.js"></script>
|
||||||
|
<!-- ATTENTION /\ -->
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
var context = "{{servlet-context}}";
|
||||||
|
var csrfToken = "{{csrf-token}}";
|
||||||
|
</script>
|
||||||
|
{% script "/js/app.js" %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
<link rel="stylesheet" type="text/css" href="css/yyy-static.css" />
|
||||||
<title>You Yes Yet?</title>
|
<link rel="stylesheet" type="text/css" href="css/spinner.css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Archivo+Black|Archivo+Narrow" rel="stylesheet"/>
|
||||||
|
<title>{{title}}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
|
@ -20,21 +22,21 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
You yes yet?
|
{{title}}
|
||||||
</h1>
|
</h1>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div id="main-container" class="container">
|
<div id="main-container" class="container">
|
||||||
<div class="big-link-container">
|
<div id="big-links">
|
||||||
<a href="supporter.html" class="big-link" id="yes-link">Yes</a>
|
{{big-links}}
|
||||||
</div>
|
</div>
|
||||||
<div class="big-link-container">
|
<div if="#content">
|
||||||
<a href="notyet.html" class="big-link" id="not-yet-link">No</a>
|
{{content}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
|
||||||
<div class="dummy">
|
|
||||||
This is a dummy page illustrating the intended navigation flow through the app. It may be replaced by something more dynamic later.
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
58
resources/templates/base-unauthenticated.html
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/yyy-common.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="css/yyy-site.css" />
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Archivo+Black|Archivo+Narrow" rel="stylesheet"/>
|
||||||
|
<title>{{title}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<div id="nav">
|
||||||
|
<img id="nav-icon" src="img/threelines.png" alt="Menu"/>
|
||||||
|
<menu id="nav-menu" class="nav">
|
||||||
|
<li class=""><a href="home">Home</a></li>
|
||||||
|
<li class=""><a href="auth">Login</a></li>
|
||||||
|
<li class=""><a href="about">About</a></li>
|
||||||
|
</menu>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1>
|
||||||
|
{{title}}
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<div id="main-container" class="container">
|
||||||
|
<div id="big-links">
|
||||||
|
{% block big-links %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
<div if="#content">
|
||||||
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<div id="credits">
|
||||||
|
<div>
|
||||||
|
<img src="img/ric-logo.png" width="24" height="24"/>
|
||||||
|
A project of the
|
||||||
|
<a href="https://radical.scot/">Radical Independence Campaign</a> ||
|
||||||
|
Version {{version}}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<img height="16" width="16" alt="Clojure" src="img/luminus-logo.png"/>Built with <a href="http://www.luminusweb.net/">LuminusWeb</a> ||
|
||||||
|
<img height="16" width="16" alt="Clojure" src="img/clojure-icon.gif"/> Powered by <a href="http://clojure.org">Clojure</a> ||
|
||||||
|
<img height="16" width="16" alt="GitHub" src="img/github-logo-transparent.png"/>Find me/fork me on <a href="https://github.com/simon-brooke/smeagol">Github</a> ||
|
||||||
|
<img height="16" width="16" alt="Free Software Foundation" src="img/gnu.small.png"/>Licensed under the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License version 2.0</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var context = "{{servlet-context}}";
|
||||||
|
var csrfToken = "{{csrf-token}}";
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
41
resources/templates/call-me-accepted.html
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{% extends "base-unauthenticated.html" %}
|
||||||
|
{% block big-links %}
|
||||||
|
<div id="back-link-container">
|
||||||
|
<a href="javascript:history.back()" id="back-link">Back</a>
|
||||||
|
</div>
|
||||||
|
<div class="big-link-container">
|
||||||
|
<a href="library" class="big-link" id="library-link">Browse the issues</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<p>
|
||||||
|
Thank you, {{name}}. Someone will call you shortly on {{phone}} to talk to you about
|
||||||
|
{{concern}}.
|
||||||
|
</p>
|
||||||
|
<form action="call-me" method="post">
|
||||||
|
<p class="widget">
|
||||||
|
<label for="name">Your name</label>
|
||||||
|
<input type="text" id="name" name="name"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="postcode">Your post-code</label>
|
||||||
|
<input type="text" id="postcode" name="postcode"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="phone">Your phone number</label>
|
||||||
|
<input type="text" id="phone" name="phone"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="concern">Your concerns</label>
|
||||||
|
<select name="concern" id="concern">
|
||||||
|
{% for concern in concerns %}
|
||||||
|
<option>{{concern.title}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="submit"> </label>
|
||||||
|
<input name="submit" id="submit" type="submit" class="action" value="Call me!"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
37
resources/templates/call-me.html
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{% extends "base-unauthenticated.html" %}
|
||||||
|
{% block big-links %}
|
||||||
|
<div id="back-link-container">
|
||||||
|
<a href="javascript:history.back()" id="back-link">Back</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<p>
|
||||||
|
Use this form to request someone to phone you to discuss your concerns about independence.
|
||||||
|
</p>
|
||||||
|
<form action="call-me" method="post">
|
||||||
|
<p class="widget">
|
||||||
|
<label for="name">Your name</label>
|
||||||
|
<input type="text" id="name" name="name"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="postcode">Your post-code</label>
|
||||||
|
<input type="text" id="postcode" name="postcode"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="phone">Your phone number</label>
|
||||||
|
<input type="text" id="phone" name="phone"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="concern">Your concerns</label>
|
||||||
|
<select name="concern" id="concern">
|
||||||
|
{% for concern in concerns %}
|
||||||
|
<option>{{concern.title}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="submit"> </label>
|
||||||
|
<input name="submit" id="submit" type="submit" class="action" value="Call me!"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
|
@ -1,47 +1,9 @@
|
||||||
<!DOCTYPE html>
|
{% extends "base-unauthenticated.html" %}
|
||||||
<html>
|
{% block big-links %}
|
||||||
<head>
|
<div class="big-link-container">
|
||||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
<a href="supporter" class="big-link" id="yes-link">Yes</a>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<title>Welcome to YouYesYet</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="app">
|
|
||||||
<div class="container-fluid">
|
|
||||||
<div class="card-deck">
|
|
||||||
<div class="card-block">
|
|
||||||
<h4>Welcome to YouYesYet</h4>
|
|
||||||
<p>If you're seeing this message, that means you haven't yet compiled your ClojureScript!</p>
|
|
||||||
<p>Please run <code>lein figwheel</code> to start the ClojureScript compiler and reload the page.</p>
|
|
||||||
<h4>For better ClojureScript development experience in Chrome follow these steps:</h4>
|
|
||||||
<ul>
|
|
||||||
<li>Open DevTools
|
|
||||||
<li>Go to Settings ("three dots" icon in the upper right corner of DevTools > Menu > Settings F1 > General > Console)
|
|
||||||
<li>Check-in "Enable custom formatters"
|
|
||||||
<li>Close DevTools
|
|
||||||
<li>Open DevTools
|
|
||||||
</ul>
|
|
||||||
<p>See <a href="http://www.luminusweb.net/docs/clojurescript.md">ClojureScript</a> documentation for further details.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="big-link-container">
|
||||||
|
<a href="notyet" class="big-link" id="not-yet-link">No</a>
|
||||||
<!-- scripts and styles -->
|
</div>
|
||||||
{% script "/vendor/leaflet/dist/leaflet.js" %}
|
{% endblock %}
|
||||||
{% style "/assets/bootstrap/css/bootstrap.min.css" %}
|
|
||||||
{% style "/assets/font-awesome/css/font-awesome.min.css" %}
|
|
||||||
{% style "/css/screen.css" %}
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
var context = "{{servlet-context}}";
|
|
||||||
var csrfToken = "{{csrf-token}}";
|
|
||||||
</script>
|
|
||||||
{% script "/js/app.js" %}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
27
resources/templates/login.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{% extends "base-unauthenticated.html" %}
|
||||||
|
{% block big-links %}
|
||||||
|
<div id="back-link-container">
|
||||||
|
<a href="javascript:history.back()" id="back-link">Back</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
{% block content %}
|
||||||
|
<p>
|
||||||
|
We're not going to do login in the long term; we're going to use oauth.
|
||||||
|
This is a temporary login form.
|
||||||
|
</p>
|
||||||
|
<form action="auth" method="post">
|
||||||
|
{% csrf-field %}
|
||||||
|
<p class="widget">
|
||||||
|
<label for="username">Username</label>
|
||||||
|
<input type="text" id="username" name="username"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="password">Your password</label>
|
||||||
|
<input type="password" id="password" name="password"/>
|
||||||
|
</p>
|
||||||
|
<p class="widget">
|
||||||
|
<label for="submit"> </label>
|
||||||
|
<input name="submit" id="submit" type="submit" class="action" value="Log in!"/>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
12
resources/templates/notyet.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{% extends "base-unauthenticated.html" %}
|
||||||
|
{% block big-links %}
|
||||||
|
<div id="back-link-container">
|
||||||
|
<a href="javascript:history.back()" id="back-link">Back</a>
|
||||||
|
</div>
|
||||||
|
<div class="big-link-container">
|
||||||
|
<a href="library" class="big-link" id="library-link">Browse the issues</a>
|
||||||
|
</div>
|
||||||
|
<div class="big-link-container">
|
||||||
|
<a href="call-me" class="big-link" id="call-me-link">Get us to talk to you</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
12
resources/templates/supporter.html
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{% extends "base-unauthenticated.html" %}
|
||||||
|
{% block big-links %}
|
||||||
|
<div id="back-link-container">
|
||||||
|
<a href="javascript:history.back()" id="back-link">Back</a>
|
||||||
|
</div>
|
||||||
|
<div class="big-link-container">
|
||||||
|
<a href="auth" class="big-link" id="yes-link">Yes</a>
|
||||||
|
</div>
|
||||||
|
<div class="big-link-container">
|
||||||
|
<a href="register" class="big-link" id="signup-link">No</a>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -15,9 +15,12 @@
|
||||||
Timestamp
|
Timestamp
|
||||||
PreparedStatement]))
|
PreparedStatement]))
|
||||||
|
|
||||||
(defstate ^:dynamic *db*
|
(def ^:dynamic *db* {:name "java:comp/env/jdbc/EmployeeDB"})
|
||||||
:start (conman/connect! {:jdbc-url (env :database-url)})
|
;; (defstate ^:dynamic *db*
|
||||||
:stop (conman/disconnect! *db*))
|
;; :start (conman/connect! {:jdbc-url-env (env :database-url)
|
||||||
|
;; :jdbc-url "jdbc:postgresql://127.0.0.1/youyesyet_dev?user=youyesyet&password=thisisnotsecure"
|
||||||
|
;; :driver-class-name "org.postgresql.Driver"})
|
||||||
|
;; :stop (conman/disconnect! *db*))
|
||||||
|
|
||||||
(conman/bind-connection *db* "sql/queries.sql")
|
(conman/bind-connection *db* "sql/queries.sql")
|
||||||
|
|
||||||
|
|
|
@ -186,7 +186,7 @@
|
||||||
(kc/entity-fields :id :fullname :phone :email :is_admin :authorised)
|
(kc/entity-fields :id :fullname :phone :email :is_admin :authorised)
|
||||||
(kc/has-one elector)
|
(kc/has-one elector)
|
||||||
(kc/has-one address)
|
(kc/has-one address)
|
||||||
(kc/has-one canvasser {:fk :introduced_by})
|
;; (kc/has-one canvasser {:fk :introduced_by})
|
||||||
(kc/has-one authority))
|
(kc/has-one authority))
|
||||||
|
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@
|
||||||
yyydb/*db*
|
yyydb/*db*
|
||||||
(sql/create-table-ddl
|
(sql/create-table-ddl
|
||||||
:optionsdistricts
|
:optionsdistricts
|
||||||
[:option_id"varchar(32) not null references options(option)"]
|
[:option_id "varchar(32) not null references options(option)"]
|
||||||
[:district_id "integer not null references districts(id)"])))
|
[:district_id "integer not null references districts(id)"])))
|
||||||
|
|
||||||
|
|
||||||
|
@ -395,6 +395,73 @@
|
||||||
(kc/has-one canvasser {:fk :actor}))
|
(kc/has-one canvasser {:fk :actor}))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn create-role-table!
|
||||||
|
"Create a table to record roles. I'm not even yet certain that this is strictly necessary,
|
||||||
|
but it allows us to record the fact that different users (canvassers) have different roles
|
||||||
|
in the system."
|
||||||
|
[]
|
||||||
|
(sql/db-do-commands
|
||||||
|
yyydb/*db*
|
||||||
|
(sql/create-table-ddl
|
||||||
|
:roles
|
||||||
|
[:id "serial primary key"]
|
||||||
|
[:name "varchar(64) not null"])))
|
||||||
|
|
||||||
|
|
||||||
|
(defn create-role-membership-table!
|
||||||
|
"Create a link table to record membership of roles."
|
||||||
|
[]
|
||||||
|
(sql/db-do-commands
|
||||||
|
yyydb/*db*
|
||||||
|
(sql/create-table-ddl
|
||||||
|
:rolememberships
|
||||||
|
[:role_id "integer not null references role(id)"]
|
||||||
|
[:canvasser_id "integer not null references canvasser(id)"])))
|
||||||
|
|
||||||
|
|
||||||
|
(kc/defentity role
|
||||||
|
(kc/table :roles)
|
||||||
|
(kc/database yyydb/*db*)
|
||||||
|
(kc/entity-fields :id :name)
|
||||||
|
(kc/many-to-many canvasser :rolememberships))
|
||||||
|
|
||||||
|
|
||||||
|
(defn create-team-table!
|
||||||
|
"Create a table to record teams."
|
||||||
|
[]
|
||||||
|
(sql/db-do-commands
|
||||||
|
yyydb/*db*
|
||||||
|
(sql/create-table-ddl
|
||||||
|
:teams
|
||||||
|
[:id "serial primary key"]
|
||||||
|
[:name "varchar(64) not null"]
|
||||||
|
;; the electoral district within which this address exists
|
||||||
|
[:district_id "integer references districts(id)"]
|
||||||
|
;; nominal home location of this team
|
||||||
|
[:latitude :real]
|
||||||
|
[:longitude :real])))
|
||||||
|
|
||||||
|
|
||||||
|
(defn create-team-membership-table!
|
||||||
|
"Create a link table to record membership of team."
|
||||||
|
[]
|
||||||
|
(sql/db-do-commands
|
||||||
|
yyydb/*db*
|
||||||
|
(sql/create-table-ddl
|
||||||
|
:teammemberships
|
||||||
|
[:team_id "integer not null references team(id)"]
|
||||||
|
[:canvasser_id "integer not null references canvasser(id)"])))
|
||||||
|
|
||||||
|
|
||||||
|
(kc/defentity team
|
||||||
|
(kc/table :teams)
|
||||||
|
(kc/database yyydb/*db*)
|
||||||
|
(kc/entity-fields :id :name :latitude :longitude)
|
||||||
|
(kc/has-one district)
|
||||||
|
(kc/many-to-many canvasser :teammemberships))
|
||||||
|
|
||||||
|
|
||||||
(defn init-db! []
|
(defn init-db! []
|
||||||
"Initialised the whole database."
|
"Initialised the whole database."
|
||||||
(create-districts-table!)
|
(create-districts-table!)
|
||||||
|
@ -409,4 +476,8 @@
|
||||||
(create-issue-expertise-table!)
|
(create-issue-expertise-table!)
|
||||||
(create-followup-requests-table!)
|
(create-followup-requests-table!)
|
||||||
(create-followup-actions-table!)
|
(create-followup-actions-table!)
|
||||||
|
(create-role-table!)
|
||||||
|
(create-role-membership-table!)
|
||||||
|
(create-team-table!)
|
||||||
|
(create-team-membership-table!)
|
||||||
)
|
)
|
||||||
|
|
|
@ -22,7 +22,8 @@
|
||||||
(assoc params
|
(assoc params
|
||||||
:page template
|
:page template
|
||||||
:csrf-token *anti-forgery-token*
|
:csrf-token *anti-forgery-token*
|
||||||
:servlet-context *app-context*)))
|
:servlet-context *app-context*
|
||||||
|
:version (System/getProperty "youyesyet.version"))))
|
||||||
"text/html; charset=utf-8"))
|
"text/html; charset=utf-8"))
|
||||||
|
|
||||||
(defn error-page
|
(defn error-page
|
||||||
|
|
|
@ -1,15 +1,58 @@
|
||||||
(ns youyesyet.routes.home
|
(ns youyesyet.routes.home
|
||||||
(:require [youyesyet.layout :as layout]
|
(:require [clojure.walk :refer [keywordize-keys]]
|
||||||
|
[noir.response :as nresponse]
|
||||||
|
[noir.util.route :as route]
|
||||||
|
[youyesyet.layout :as layout]
|
||||||
[youyesyet.db.core :as db-core]
|
[youyesyet.db.core :as db-core]
|
||||||
[compojure.core :refer [defroutes GET]]
|
[compojure.core :refer [defroutes GET POST]]
|
||||||
[ring.util.http-response :as response]
|
[ring.util.http-response :as response]
|
||||||
[clojure.java.io :as io]))
|
[clojure.java.io :as io]))
|
||||||
|
|
||||||
|
(defn app-page []
|
||||||
|
(layout/render "app.html"))
|
||||||
|
|
||||||
|
(defn about-page []
|
||||||
|
(layout/render "about.html"))
|
||||||
|
|
||||||
|
(defn call-me-page [request]
|
||||||
|
(if
|
||||||
|
request
|
||||||
|
(do
|
||||||
|
;; do something to store it in the database
|
||||||
|
(layout/render "call-me-accepted.html" (:params request)))
|
||||||
|
(layout/render "call-me.html"
|
||||||
|
{:title "Please call me!"
|
||||||
|
;; TODO: Issues need to be fetched from the database
|
||||||
|
:concerns nil})))
|
||||||
|
|
||||||
(defn home-page []
|
(defn home-page []
|
||||||
(layout/render "home.html"))
|
(layout/render "home.html" {:title "You Yes Yet?"}))
|
||||||
|
|
||||||
|
(defn login-page
|
||||||
|
"This is very temporary. We're going to do authentication by oauth."
|
||||||
|
[request]
|
||||||
|
(let [params (keywordize-keys (:form-params request))
|
||||||
|
session (:session request)
|
||||||
|
username (:username params)
|
||||||
|
password (:password params)
|
||||||
|
redirect-to (or (:redirect-to params) "app")]
|
||||||
|
(if
|
||||||
|
(and (= username "test") (= password "test"))
|
||||||
|
(do
|
||||||
|
(assoc (response/found redirect-to) :session (assoc session :user username)))
|
||||||
|
(layout/render "login.html" {:title "Please log in" :redirect-to redirect-to}))))
|
||||||
|
|
||||||
|
|
||||||
(defroutes home-routes
|
(defroutes home-routes
|
||||||
(GET "/" [] (home-page))
|
(GET "/" [] (home-page))
|
||||||
(GET "/docs" [] (-> (response/ok (-> "docs/docs.md" io/resource slurp))
|
(GET "/home" [] (home-page))
|
||||||
(response/header "Content-Type" "text/plain; charset=utf-8"))))
|
(GET "/about" [] (about-page))
|
||||||
|
(GET "/app" [] (route/restricted (app-page)))
|
||||||
|
(GET "/call-me" [] (call-me-page nil))
|
||||||
|
(POST "/call-me" request (call-me-page request))
|
||||||
|
(GET "/auth" request (login-page request))
|
||||||
|
(POST "/auth" request (login-page request))
|
||||||
|
(GET "/notyet" [] (layout/render "notyet.html"
|
||||||
|
{:title "Can we persuade you?"}))
|
||||||
|
(GET "/supporter" [] (layout/render "supporter.html"
|
||||||
|
{:title "Have you signed up as a canvasser yet?"})))
|
||||||
|
|
|
@ -44,4 +44,4 @@
|
||||||
:return Long
|
:return Long
|
||||||
:header-params [x :- Long, y :- Long]
|
:header-params [x :- Long, y :- Long]
|
||||||
:summary "x^y with header-parameters"
|
:summary "x^y with header-parameters"
|
||||||
(ok (long (Math/pow x y))))))
|
(ok (long (Math/pow x y)))))))
|
||||||
|
|
|
@ -9,59 +9,72 @@
|
||||||
[youyesyet.ajax :refer [load-interceptors!]]
|
[youyesyet.ajax :refer [load-interceptors!]]
|
||||||
[youyesyet.handlers]
|
[youyesyet.handlers]
|
||||||
[youyesyet.subscriptions]
|
[youyesyet.subscriptions]
|
||||||
|
[youyesyet.ui-utils :as ui]
|
||||||
|
[youyesyet.views.about :as about]
|
||||||
|
[youyesyet.views.electors :as electors]
|
||||||
|
[youyesyet.views.followup :as followup]
|
||||||
|
[youyesyet.views.issue :as issue]
|
||||||
|
[youyesyet.views.issues :as issues]
|
||||||
[youyesyet.views.map :as maps])
|
[youyesyet.views.map :as maps])
|
||||||
(:import goog.History))
|
(:import goog.History))
|
||||||
|
|
||||||
(defn nav-link [uri title page collapsed?]
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(let [selected-page (rf/subscribe [:page])]
|
;;;;
|
||||||
[:li.nav-item
|
;;;; youyesyet.core: core of the app.
|
||||||
{:class (when (= page @selected-page) "active")}
|
;;;;
|
||||||
[:a.nav-link
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
{:href uri
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
:on-click #(reset! collapsed? true)} title]]))
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defn navbar []
|
;;; So that we can do debug logging!
|
||||||
(r/with-let [collapsed? (r/atom true)]
|
(enable-console-print!)
|
||||||
[:nav.navbar.navbar-light.bg-faded
|
|
||||||
[:button.navbar-toggler.hidden-sm-up
|
|
||||||
{:on-click #(swap! collapsed? not)} "☰"]
|
|
||||||
[:div.collapse.navbar-toggleable-xs
|
|
||||||
(when-not @collapsed? {:class "in"})
|
|
||||||
[:a.navbar-brand {:href "#/"} "youyesyet"]
|
|
||||||
[:ul.nav.navbar-nav
|
|
||||||
[nav-link "#/" "Home" :home collapsed?]
|
|
||||||
[nav-link "#/map" "Map" :home collapsed?]
|
|
||||||
[nav-link "#/about" "About" :about collapsed?]]]]))
|
|
||||||
|
|
||||||
(defn about-page []
|
(defn about-page []
|
||||||
[:div.container
|
(about/panel))
|
||||||
[:div.row
|
|
||||||
[:div.col-md-12
|
|
||||||
"this is the story of youyesyet... work in progress"]]])
|
|
||||||
|
|
||||||
(defn home-page []
|
(defn electors-page []
|
||||||
[:div.container
|
(electors/panel))
|
||||||
[:div.jumbotron
|
|
||||||
[:h1 "Welcome to youyesyet"]
|
(defn followup-page []
|
||||||
[:p "Time to start building your site!"]
|
(followup/panel))
|
||||||
[:p [:a.btn.btn-primary.btn-lg {:href "http://luminusweb.net"} "Learn more »"]]]
|
|
||||||
(when-let [docs @(rf/subscribe [:docs])]
|
(defn issues-page []
|
||||||
[:div.row
|
(issues/panel))
|
||||||
[:div.col-md-12
|
|
||||||
[:div {:dangerouslySetInnerHTML
|
(defn issue-page []
|
||||||
{:__html (md->html docs)}}]]])])
|
(issue/panel))
|
||||||
|
|
||||||
(defn map-page []
|
(defn map-page []
|
||||||
(maps/map-div))
|
(maps/panel))
|
||||||
|
|
||||||
(def pages
|
(def pages
|
||||||
{:home #'home-page
|
{:about #'about-page
|
||||||
|
:electors #'electors-page
|
||||||
|
:followup #'followup-page
|
||||||
|
:issues #'issues-page
|
||||||
|
:issue #'issue-page
|
||||||
:map #'map-page
|
:map #'map-page
|
||||||
:about #'about-page})
|
})
|
||||||
|
|
||||||
(defn page []
|
(defn page []
|
||||||
[:div
|
[:div
|
||||||
[navbar]
|
[:header
|
||||||
|
[ui/navbar]]
|
||||||
[(pages @(rf/subscribe [:page]))]])
|
[(pages @(rf/subscribe [:page]))]])
|
||||||
|
|
||||||
;; -------------------------
|
;; -------------------------
|
||||||
|
@ -69,11 +82,32 @@
|
||||||
(secretary/set-config! :prefix "#")
|
(secretary/set-config! :prefix "#")
|
||||||
|
|
||||||
(secretary/defroute "/" []
|
(secretary/defroute "/" []
|
||||||
(rf/dispatch [:set-active-page :home]))
|
(rf/dispatch [:set-active-page :map]))
|
||||||
|
|
||||||
(secretary/defroute "/about" []
|
(secretary/defroute "/about" []
|
||||||
(rf/dispatch [:set-active-page :about]))
|
(rf/dispatch [:set-active-page :about]))
|
||||||
|
|
||||||
|
(secretary/defroute "/electors" []
|
||||||
|
(rf/dispatch [:set-active-page :electors]))
|
||||||
|
|
||||||
|
(secretary/defroute "/followup" []
|
||||||
|
(rf/dispatch [:set-active-page :followup]))
|
||||||
|
|
||||||
|
(secretary/defroute "/issues" []
|
||||||
|
(rf/dispatch [:set-active-page :issues]))
|
||||||
|
|
||||||
|
(secretary/defroute "/issues/:elector" {elector-id :elector}
|
||||||
|
(rf/dispatch [:set-elector-and-page {:elector-id elector-id :page :issues}]))
|
||||||
|
|
||||||
|
(secretary/defroute "/issue/:issue" {issue :issue}
|
||||||
|
(rf/dispatch [:set-issue issue]))
|
||||||
|
|
||||||
|
(secretary/defroute "/map" []
|
||||||
|
(rf/dispatch [:set-active-page :map]))
|
||||||
|
|
||||||
|
(secretary/defroute "/set-intention/:elector/:intention" {elector-id :elector intention :intention}
|
||||||
|
(rf/dispatch [:set-intention {:elector-id elector-id :intention intention}]))
|
||||||
|
|
||||||
;; -------------------------
|
;; -------------------------
|
||||||
;; History
|
;; History
|
||||||
;; must be called after routes have been defined
|
;; must be called after routes have been defined
|
||||||
|
@ -87,8 +121,6 @@
|
||||||
|
|
||||||
;; -------------------------
|
;; -------------------------
|
||||||
;; Initialize app
|
;; Initialize app
|
||||||
(defn fetch-docs! []
|
|
||||||
(GET (str js/context "/docs") {:handler #(rf/dispatch [:set-docs %])}))
|
|
||||||
|
|
||||||
(defn mount-components []
|
(defn mount-components []
|
||||||
(r/render [#'page] (.getElementById js/document "app")))
|
(r/render [#'page] (.getElementById js/document "app")))
|
||||||
|
@ -96,6 +128,5 @@
|
||||||
(defn init! []
|
(defn init! []
|
||||||
(rf/dispatch-sync [:initialize-db])
|
(rf/dispatch-sync [:initialize-db])
|
||||||
(load-interceptors!)
|
(load-interceptors!)
|
||||||
(fetch-docs!)
|
|
||||||
(hook-browser-navigation!)
|
(hook-browser-navigation!)
|
||||||
(mount-components))
|
(mount-components))
|
||||||
|
|
|
@ -1,4 +1,63 @@
|
||||||
(ns youyesyet.db)
|
(ns youyesyet.db)
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;
|
||||||
|
;;;; youyesyet.db: the state of the app.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
;;; This is the constructor for the atom in which the state of the user interface is held.
|
||||||
|
;;; The atom gets updated by 'events' registered in handler.cljs, q.v.
|
||||||
|
;;;
|
||||||
|
;;; not wonderfully happy with 'db' as a name for this namespace; will probably change to
|
||||||
|
;;; 'client-state'.
|
||||||
|
|
||||||
(def default-db
|
(def default-db
|
||||||
{:page :home})
|
{;;; the currently selected address, if any.
|
||||||
|
:address {:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2590944
|
||||||
|
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
|
||||||
|
{:id 2 :name "Ann Anderson" :gender :female}
|
||||||
|
{:id 3 :name "Alex Anderson" :gender :fluid :intention :yes}
|
||||||
|
{:id 4 :name "Andy Anderson" :intention :yes}]}
|
||||||
|
;;; a list of the addresses in the current location at which there
|
||||||
|
;;; are electors registered.
|
||||||
|
:addresses [{:id 1 :address "13 Imaginary Terrace, IM1 3TE" :latitude 55.8253043 :longitude -4.2590944
|
||||||
|
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
|
||||||
|
{:id 2 :name "Ann Anderson" :gender :female}
|
||||||
|
{:id 3 :name "Alex Anderson" :gender :fluid :intention :yes}
|
||||||
|
{:id 4 :name "Andy Anderson" :intention :yes}]}]
|
||||||
|
;;; electors at the currently selected address
|
||||||
|
:electors [{:id 1 :name "Alan Anderson" :gender :male :intention :no}
|
||||||
|
{:id 2 :name "Ann Anderson" :gender :female}
|
||||||
|
{:id 3 :name "Alex Anderson" :gender :fluid :intention :yes}
|
||||||
|
{:id 4 :name "Andy Anderson" :intention :yes}]
|
||||||
|
;;; the issue from among the issues which is currently selected.
|
||||||
|
:issue "Currency"
|
||||||
|
;;; the issues selected for the issues page on this day.
|
||||||
|
:issues {"Currency" "Scotland could keep the Pound, or use the Euro. But we could also set up a new currency of our own. Yada yada yada"
|
||||||
|
"Monarchy" "Scotland could keep the Queen. This is an issue to be decided after independence. Yada yada yada"
|
||||||
|
"Defence" "Scotland will not have nuclear weapons, and will probably not choose to engage in far-off wars. But we could remain members of NATO"}
|
||||||
|
;;; message of the day
|
||||||
|
:motd "This is a test version only. There is no real data."
|
||||||
|
;;; the options from among which electors can select.
|
||||||
|
:options [{:id :yes :description "Yes"} {:id :no :description "No"}]
|
||||||
|
;;; the currently displayed 'page' within the app.
|
||||||
|
:page :home
|
||||||
|
})
|
||||||
|
|
|
@ -1,18 +1,91 @@
|
||||||
(ns youyesyet.handlers
|
(ns youyesyet.handlers
|
||||||
(:require [youyesyet.db :as db]
|
(:require [cljs.reader :refer [read-string]]
|
||||||
[re-frame.core :refer [dispatch reg-event-db]]))
|
[re-frame.core :refer [dispatch reg-event-db]]
|
||||||
|
[youyesyet.db :as db]
|
||||||
|
))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;
|
||||||
|
;;;; youyesyet.handlers: handlers for events.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(reg-event-db
|
(reg-event-db
|
||||||
:initialize-db
|
:initialize-db
|
||||||
(fn [_ _]
|
(fn [_ _]
|
||||||
db/default-db))
|
db/default-db))
|
||||||
|
|
||||||
|
|
||||||
(reg-event-db
|
(reg-event-db
|
||||||
:set-active-page
|
:set-active-page
|
||||||
(fn [db [_ page]]
|
(fn [db [_ page]]
|
||||||
(assoc db :page page)))
|
(assoc db :page page)))
|
||||||
|
|
||||||
|
|
||||||
(reg-event-db
|
(reg-event-db
|
||||||
:set-docs
|
:set-address
|
||||||
(fn [db [_ docs]]
|
(fn [db [_ address-id]]
|
||||||
(assoc db :docs docs)))
|
(let [id (read-string address-id)
|
||||||
|
address (first (remove nil? (map #(if (= id (:id %)) %) (:addresses db))))]
|
||||||
|
(assoc (assoc db :address address) :page :electors))))
|
||||||
|
|
||||||
|
|
||||||
|
(reg-event-db
|
||||||
|
:set-elector-and-page
|
||||||
|
(fn [db [_ args]]
|
||||||
|
(let [page (:page args)
|
||||||
|
elector-id (read-string (:elector-id args))
|
||||||
|
elector
|
||||||
|
(first
|
||||||
|
(remove nil?
|
||||||
|
(map
|
||||||
|
#(if (= elector-id (:id %)) %)
|
||||||
|
(:electors (:address db)))))]
|
||||||
|
(js/console.log (str "Setting page to " page ", elector to " elector))
|
||||||
|
(assoc (assoc db :elector elector) :page page))))
|
||||||
|
|
||||||
|
|
||||||
|
(reg-event-db
|
||||||
|
:set-intention
|
||||||
|
(fn [db [_ args]]
|
||||||
|
(let [intention (:intention args)
|
||||||
|
elector-id (read-string (:elector-id args))
|
||||||
|
elector
|
||||||
|
(first
|
||||||
|
(remove nil?
|
||||||
|
(map
|
||||||
|
#(if (= elector-id (:id %)) %)
|
||||||
|
(:electors (:address db)))))
|
||||||
|
old-address (:address db)
|
||||||
|
new-address (assoc old-address :electors (cons (assoc elector :intention intention) (remove #(= % elector) (:electors old-address))))]
|
||||||
|
(cond
|
||||||
|
(nil? elector)(do (js/console.log "No elector found; not setting intention") db)
|
||||||
|
(= intention (:intention elector)) (do (js/console.log "Elector's intention hasn't changed; not setting intention") db)
|
||||||
|
true
|
||||||
|
(do
|
||||||
|
(js/console.log (str "Setting intention of elector " elector " to " intention))
|
||||||
|
(assoc db :addresses (cons new-address (remove old-address (:addresses db)))))))))
|
||||||
|
|
||||||
|
|
||||||
|
(reg-event-db
|
||||||
|
:set-issue
|
||||||
|
(fn [db [_ issue]]
|
||||||
|
(js/console.log (str "Setting page to :issue, issue to " issue))
|
||||||
|
(assoc (assoc db :issue issue) :page :issue)))
|
||||||
|
|
|
@ -1,12 +1,65 @@
|
||||||
(ns youyesyet.subscriptions
|
(ns youyesyet.subscriptions
|
||||||
(:require [re-frame.core :refer [reg-sub]]))
|
(:require [re-frame.core :refer [reg-sub]]))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;
|
||||||
|
;;;; youyesyet.views.electors: subscriptions for everything in the app state.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:motd
|
||||||
|
(fn [db _]
|
||||||
|
(:motd db)))
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:address
|
||||||
|
(fn [db _]
|
||||||
|
(:address db)))
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:addresses
|
||||||
|
(fn [db _]
|
||||||
|
(:addresses db)))
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:elector
|
||||||
|
(fn [db _]
|
||||||
|
(:elector db)))
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:issue
|
||||||
|
(fn [db _]
|
||||||
|
(:issue db)))
|
||||||
|
|
||||||
|
(reg-sub
|
||||||
|
:issues
|
||||||
|
(fn [db _]
|
||||||
|
(:issues db)))
|
||||||
|
|
||||||
(reg-sub
|
(reg-sub
|
||||||
:page
|
:page
|
||||||
(fn [db _]
|
(fn [db _]
|
||||||
(:page db)))
|
(:page db)))
|
||||||
|
|
||||||
(reg-sub
|
(reg-sub
|
||||||
:docs
|
:options
|
||||||
(fn [db _]
|
(fn [db _]
|
||||||
(:docs db)))
|
(:options db)))
|
||||||
|
|
66
src/cljs/youyesyet/ui_utils.cljs
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
(ns youyesyet.ui-utils
|
||||||
|
(:require [reagent.core :as r]
|
||||||
|
[re-frame.core :as rf]))
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;
|
||||||
|
;;;; youyesyet.ui-utils: User interface stuff common to many views.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is free software; you can redistribute it and/or
|
||||||
|
;;;; modify it under the terms of the GNU General Public License
|
||||||
|
;;;; as published by the Free Software Foundation; either version 2
|
||||||
|
;;;; of the License, or (at your option) any later version.
|
||||||
|
;;;;
|
||||||
|
;;;; This program is distributed in the hope that it will be useful,
|
||||||
|
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;;; GNU General Public License for more details.
|
||||||
|
;;;;
|
||||||
|
;;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;;; along with this program; if not, write to the Free Software
|
||||||
|
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
;;;; USA.
|
||||||
|
;;;;
|
||||||
|
;;;; Copyright (C) 2016 Simon Brooke for Radical Independence Campaign
|
||||||
|
;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
(defn back-link []
|
||||||
|
[:div.back-link-container {:id "back-link-container"}
|
||||||
|
[:a {:href "javascript:history.back()" :id "back-link"} "Back"]])
|
||||||
|
|
||||||
|
|
||||||
|
(defn big-link [text target]
|
||||||
|
[:div.big-link-container {:key target}
|
||||||
|
[:a.big-link {:href target} text]])
|
||||||
|
|
||||||
|
|
||||||
|
(defn nav-link [uri title page collapsed?]
|
||||||
|
(let [selected-page (rf/subscribe [:page])]
|
||||||
|
[:li.nav-item
|
||||||
|
{:class (when (= page @selected-page) "active")}
|
||||||
|
[:a.nav-link
|
||||||
|
{:href uri
|
||||||
|
:on-click #(reset! collapsed? true)} title]]))
|
||||||
|
|
||||||
|
|
||||||
|
(defn error-panel
|
||||||
|
[message]
|
||||||
|
[:div
|
||||||
|
[:h1.error message]
|
||||||
|
[:div.container {:id "main-container"}
|
||||||
|
(back-link)]])
|
||||||
|
|
||||||
|
|
||||||
|
(defn navbar []
|
||||||
|
(r/with-let [collapsed? (r/atom true)]
|
||||||
|
[:div {:id "nav"}
|
||||||
|
[:img {:id "nav-icon"
|
||||||
|
:src "img/threelines.png"
|
||||||
|
:on-click #(swap! collapsed? not)}]
|
||||||
|
[:menu.nav {:id "nav-menu" :class (if @collapsed? "hidden" "shown")}
|
||||||
|
(nav-link "#/map" "Map" :map collapsed?)
|
||||||
|
(nav-link "#/electors" "Electors" :electors collapsed?)
|
||||||
|
(nav-link "#/issues" "Issues" :issues collapsed?)
|
||||||
|
(nav-link "#/about" "About" :about collapsed?)]]))
|