add testing device images and a lot more, before bootstrap:themed

This commit is contained in:
2012-08-24 13:46:59 +02:00
parent 5b27d6dcd9
commit e3c189d187
33 changed files with 2003 additions and 51 deletions
+4
View File
@@ -46,6 +46,10 @@ end
group :test do group :test do
gem 'rspec-rails' gem 'rspec-rails'
#gem 'minitest'
gem 'turn', :require => false
gem 'factory_girl_rails'
gem 'selenium-webdriver' #, '2.21.1' # 2.21.2 gives trouble, remove this line when this is solved since this is a dependency of capybara
gem 'capybara' gem 'capybara'
end end
+11
View File
@@ -47,6 +47,7 @@ GEM
i18n (~> 0.6) i18n (~> 0.6)
multi_json (~> 1.0) multi_json (~> 1.0)
addressable (2.3.2) addressable (2.3.2)
ansi (1.4.3)
arel (3.0.2) arel (3.0.2)
bcrypt-ruby (3.0.1) bcrypt-ruby (3.0.1)
builder (3.0.0) builder (3.0.0)
@@ -85,6 +86,11 @@ GEM
eventmachine (0.12.10) eventmachine (0.12.10)
execjs (1.4.0) execjs (1.4.0)
multi_json (~> 1.0) multi_json (~> 1.0)
factory_girl (4.0.0)
activesupport (>= 3.0.0)
factory_girl_rails (4.0.0)
factory_girl (~> 4.0.0)
railties (>= 3.0.0)
ffi (1.1.5) ffi (1.1.5)
haml (3.1.7) haml (3.1.7)
haml-rails (0.3.4) haml-rails (0.3.4)
@@ -203,6 +209,8 @@ GEM
treetop (1.4.10) treetop (1.4.10)
polyglot polyglot
polyglot (>= 0.3.1) polyglot (>= 0.3.1)
turn (0.9.6)
ansi
twitter-bootstrap-rails (2.1.3) twitter-bootstrap-rails (2.1.3)
actionpack (>= 3.1) actionpack (>= 3.1)
less-rails (~> 2.2.3) less-rails (~> 2.2.3)
@@ -226,6 +234,7 @@ DEPENDENCIES
couch_potato! couch_potato!
devise (= 2.0.4) devise (= 2.0.4)
devise_simply_stored devise_simply_stored
factory_girl_rails
haml-rails haml-rails
jquery-rails jquery-rails
mini_magick mini_magick
@@ -234,8 +243,10 @@ DEPENDENCIES
rqrcode-rails3 rqrcode-rails3
rspec-rails rspec-rails
sass-rails (~> 3.2.3) sass-rails (~> 3.2.3)
selenium-webdriver
simply_stored! simply_stored!
slim-rails slim-rails
thin thin
turn
twitter-bootstrap-rails twitter-bootstrap-rails
uglifier (>= 1.0.3) uglifier (>= 1.0.3)
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

+685
View File
@@ -0,0 +1,685 @@
<?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"
version="1.1"
width="108.624mm"
height="213.14101mm"
viewBox="0 0 391.753 768.694"
id="svg2"
xml:space="preserve"
style="fill-rule:evenodd"
inkscape:version="0.48.2 r9819"
sodipodi:docname="smartphone.svg"><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1449"
inkscape:window-height="859"
id="namedview176"
showgrid="false"
inkscape:zoom="0.84875522"
inkscape:cx="192.44429"
inkscape:cy="377.61218"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" /><metadata
id="metadata475"><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>
<defs
id="defs4"><style
type="text/css"
id="style153" /><linearGradient
x1="223.79601"
y1="-97.232697"
x2="429.052"
y2="-97.232697"
id="id0"
gradientUnits="userSpaceOnUse">
<stop
id="stop156"
style="stop-color:#838281;stop-opacity:1"
offset="0" />
<stop
id="stop158"
style="stop-color:#838281;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="225.41499"
y1="-95.070999"
x2="430.673"
y2="-95.070999"
id="id1"
xlink:href="#id0"
gradientUnits="userSpaceOnUse">
</linearGradient><linearGradient
x1="148.355"
y1="179.55"
x2="148.355"
y2="163.17999"
id="id2"
gradientUnits="userSpaceOnUse">
<stop
id="stop162"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop164"
style="stop-color:#d894b3;stop-opacity:1"
offset="0.0901961" />
<stop
id="stop166"
style="stop-color:#b12967;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="195.82001"
y1="646.19397"
x2="195.82001"
y2="555.20001"
id="id3"
gradientUnits="userSpaceOnUse">
<stop
id="stop169"
style="stop-color:#1f1a17;stop-opacity:1"
offset="0" />
<stop
id="stop171"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="236.436"
y1="218.17101"
x2="236.436"
y2="156.86301"
id="id4"
gradientUnits="userSpaceOnUse">
<stop
id="stop174"
style="stop-color:#00923f;stop-opacity:1"
offset="0" />
<stop
id="stop176"
style="stop-color:#7fc99f;stop-opacity:1"
offset="0.721569" />
<stop
id="stop178"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="235.814"
y1="323.40399"
x2="235.814"
y2="262.09"
id="id5"
gradientUnits="userSpaceOnUse">
<stop
id="stop181"
style="stop-color:#3300cc;stop-opacity:1"
offset="0" />
<stop
id="stop183"
style="stop-color:#997fe5;stop-opacity:1"
offset="0.721569" />
<stop
id="stop185"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="150.621"
y1="640.53198"
x2="150.621"
y2="579.22498"
id="id6"
gradientUnits="userSpaceOnUse">
<stop
id="stop188"
style="stop-color:#974578;stop-opacity:1"
offset="0" />
<stop
id="stop190"
style="stop-color:#cba2bb;stop-opacity:1"
offset="0.721569" />
<stop
id="stop192"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="149.259"
y1="323.40399"
x2="149.259"
y2="262.09"
id="id7"
gradientUnits="userSpaceOnUse">
<stop
id="stop195"
style="stop-color:#ff6600;stop-opacity:1"
offset="0" />
<stop
id="stop197"
style="stop-color:#ffb37f;stop-opacity:1"
offset="0.721569" />
<stop
id="stop199"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="322.371"
y1="218.17101"
x2="322.371"
y2="156.86301"
id="id8"
gradientUnits="userSpaceOnUse">
<stop
id="stop202"
style="stop-color:#fff500;stop-opacity:1"
offset="0" />
<stop
id="stop204"
style="stop-color:#fffa7f;stop-opacity:1"
offset="0.721569" />
<stop
id="stop206"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="62.7033"
y1="431.172"
x2="62.7033"
y2="369.85699"
id="id9"
gradientUnits="userSpaceOnUse">
<stop
id="stop209"
style="stop-color:#006633;stop-opacity:1"
offset="0" />
<stop
id="stop211"
style="stop-color:#7fb399;stop-opacity:1"
offset="0.72941202" />
<stop
id="stop213"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="238.53799"
y1="639.698"
x2="238.53799"
y2="578.38898"
id="id10"
xlink:href="#id9"
gradientUnits="userSpaceOnUse">
</linearGradient><linearGradient
x1="326.45599"
y1="639.867"
x2="326.45599"
y2="578.55798"
id="id11"
gradientUnits="userSpaceOnUse">
<stop
id="stop217"
style="stop-color:#00ccff;stop-opacity:1"
offset="0" />
<stop
id="stop219"
style="stop-color:#7fe5ff;stop-opacity:1"
offset="0.72941202" />
<stop
id="stop221"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="62.7033"
y1="323.40399"
x2="62.7033"
y2="262.09"
id="id12"
gradientUnits="userSpaceOnUse">
<stop
id="stop224"
style="stop-color:#990000;stop-opacity:1"
offset="0" />
<stop
id="stop226"
style="stop-color:#cc7f7f;stop-opacity:1"
offset="0.72941202" />
<stop
id="stop228"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="62.7033"
y1="640.70203"
x2="62.7033"
y2="579.39398"
id="id13"
gradientUnits="userSpaceOnUse">
<stop
id="stop231"
style="stop-color:#ff0000;stop-opacity:1"
offset="0" />
<stop
id="stop233"
style="stop-color:#ff7f7f;stop-opacity:1"
offset="0.72941202" />
<stop
id="stop235"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="322.371"
y1="323.40399"
x2="322.371"
y2="262.09"
id="id14"
gradientUnits="userSpaceOnUse">
<stop
id="stop238"
style="stop-color:#003333;stop-opacity:1"
offset="0" />
<stop
id="stop240"
style="stop-color:#7f9999;stop-opacity:1"
offset="0.74901998" />
<stop
id="stop242"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="62.7033"
y1="218.17101"
x2="62.7033"
y2="156.86301"
id="id15"
gradientUnits="userSpaceOnUse">
<stop
id="stop245"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop247"
style="stop-color:#7f7f7f;stop-opacity:1"
offset="0.85882401" />
<stop
id="stop249"
style="stop-color:#ffffff;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="173.216"
y1="757.45697"
x2="210.65601"
y2="716.98297"
id="id16"
gradientUnits="userSpaceOnUse">
<stop
id="stop252"
style="stop-color:#1f1a17;stop-opacity:1"
offset="0" />
<stop
id="stop254"
style="stop-color:#4d4948;stop-opacity:1"
offset="1" />
</linearGradient><linearGradient
x1="167.96001"
y1="299.25299"
x2="373.21799"
y2="299.25299"
id="id17"
xlink:href="#id0"
gradientUnits="userSpaceOnUse">
</linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#id9"
id="linearGradient3153"
gradientUnits="userSpaceOnUse"
x1="62.7033"
y1="431.172"
x2="62.7033"
y2="369.85699" />
<linearGradient
inkscape:collect="always"
xlink:href="#id0"
id="linearGradient3156"
gradientUnits="userSpaceOnUse"
x1="167.96001"
y1="299.25299"
x2="373.21799"
y2="299.25299" /><linearGradient
inkscape:collect="always"
xlink:href="#id9"
id="linearGradient3167"
gradientUnits="userSpaceOnUse"
x1="62.7033"
y1="431.172"
x2="62.7033"
y2="369.85699" /><linearGradient
inkscape:collect="always"
xlink:href="#id11"
id="linearGradient3173"
gradientUnits="userSpaceOnUse"
x1="326.45599"
y1="639.867"
x2="326.45599"
y2="578.55798" /><linearGradient
inkscape:collect="always"
xlink:href="#id9"
id="linearGradient3179"
gradientUnits="userSpaceOnUse"
x1="238.53799"
y1="639.698"
x2="238.53799"
y2="578.38898" /><linearGradient
inkscape:collect="always"
xlink:href="#id13"
id="linearGradient3184"
gradientUnits="userSpaceOnUse"
x1="62.7033"
y1="640.70203"
x2="62.7033"
y2="579.39398" /><linearGradient
inkscape:collect="always"
xlink:href="#id6"
id="linearGradient3190"
gradientUnits="userSpaceOnUse"
x1="150.621"
y1="640.53198"
x2="150.621"
y2="579.22498" /><linearGradient
inkscape:collect="always"
xlink:href="#id14"
id="linearGradient3195"
gradientUnits="userSpaceOnUse"
x1="322.371"
y1="323.40399"
x2="322.371"
y2="262.09" /><linearGradient
inkscape:collect="always"
xlink:href="#id5"
id="linearGradient3200"
gradientUnits="userSpaceOnUse"
x1="235.814"
y1="323.40399"
x2="235.814"
y2="262.09" /><linearGradient
inkscape:collect="always"
xlink:href="#id7"
id="linearGradient3205"
gradientUnits="userSpaceOnUse"
x1="149.259"
y1="323.40399"
x2="149.259"
y2="262.09" /><linearGradient
inkscape:collect="always"
xlink:href="#id12"
id="linearGradient3210"
gradientUnits="userSpaceOnUse"
x1="62.7033"
y1="323.40399"
x2="62.7033"
y2="262.09" /><linearGradient
inkscape:collect="always"
xlink:href="#id4"
id="linearGradient3222"
gradientUnits="userSpaceOnUse"
x1="236.436"
y1="218.17101"
x2="236.436"
y2="156.86301" /><linearGradient
inkscape:collect="always"
xlink:href="#id8"
id="linearGradient3227"
gradientUnits="userSpaceOnUse"
x1="322.371"
y1="218.17101"
x2="322.371"
y2="156.86301" /><linearGradient
inkscape:collect="always"
xlink:href="#id15"
id="linearGradient3232"
gradientUnits="userSpaceOnUse"
x1="62.7033"
y1="218.17101"
x2="62.7033"
y2="156.86301" /><linearGradient
inkscape:collect="always"
xlink:href="#id2"
id="linearGradient3279"
gradientUnits="userSpaceOnUse"
x1="148.355"
y1="179.55"
x2="148.355"
y2="163.17999" /><linearGradient
inkscape:collect="always"
xlink:href="#id16"
id="linearGradient3284"
gradientUnits="userSpaceOnUse"
x1="173.216"
y1="757.45697"
x2="210.65601"
y2="716.98297" /></defs>
<symbol
viewBox="223.796 -277.071 205.256 359.676"
id="x24-24-0">
<path
d="m 429.052,82.6051 -205.256,-359.676 205.256,0 0,359.676 z m 0,0 z"
id="path258"
style="fill:url(#id0);fill-rule:nonzero" />
</symbol>
<symbol
viewBox="225.415 -274.909 205.258 359.676"
id="Symbol1">
<path
d="m 430.673,84.7668 -205.258,-359.676 205.258,0 0,359.676 z m 0,0 z"
id="path261"
style="fill:url(#id1);fill-rule:nonzero" />
</symbol>
<path
inkscape:connector-curvature="0"
style="fill:#dededd;fill-rule:nonzero;stroke:#1f1a17;stroke-width:0.72130001"
id="path265"
d="m 28.2317,0.36065 335.29,0 c 15.4405,0 27.871,12.4302 27.871,27.8707 l 0,712.231 c 0,15.4416 -12.4305,27.8707 -27.871,27.8707 l -335.29,0 c -15.4405,0 -27.871,-12.4291 -27.871,-27.8707 l 0,-712.231 c 0,-15.4405 12.4305,-27.8707 27.871,-27.8707 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:#1f1a17;fill-rule:nonzero;stroke:#1f1a17;stroke-width:0.72130001"
id="path267"
d="m 33.0878,6.02105 326.845,0 c 15.442,0 27.8721,12.4302 27.8721,27.8721 l 0,702.733 c 0,15.4405 -12.4302,27.871 -27.8721,27.871 l -326.845,0 c -15.4416,0 -27.8707,-12.4305 -27.8707,-27.871 l 0,-702.733 c 0,-15.442 12.4291,-27.8721 27.8707,-27.8721 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:#1f1a17;fill-rule:nonzero;stroke:#4d4948;stroke-width:0.72130001"
id="path269"
d="m 229.264,715.017 c 0,20.4914 -16.6137,37.1051 -37.1051,37.1051 -20.4954,0 -37.1102,-16.6137 -37.1102,-37.1051 0,-20.4954 16.6148,-37.1102 37.1102,-37.1102 20.4914,0 37.1051,16.6148 37.1051,37.1102 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3284);fill-rule:nonzero;stroke:#1f1a17;stroke-width:0.72130001"
id="path271"
d="m 228.028,723.664 c -22.2067,8.79157 -46.2707,9.67732 -72.1834,2.66448 4.47314,14.4466 19.0892,24.447 35.7437,24.447 17.7865,0 33.0846,-11.3771 36.4397,-27.1115 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:none;stroke:#c2c1c1;stroke-width:0.72130001"
id="path273"
d="m 180.689,701.975 22.9355,0 c 0.86917,0 1.57532,0.7011 1.57532,1.57135 l 0,22.9355 c 0,0.87025 -0.70615,1.57532 -1.57532,1.57532 l -22.9355,0 c -0.87025,0 -1.57135,-0.70507 -1.57135,-1.57532 l 0,-22.9355 c 0,-0.87025 0.7011,-1.57135 1.57135,-1.57135 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:#1f1a17;fill-rule:nonzero;stroke:#383431;stroke-width:0.72130001"
id="path281"
d="m 160.769,53.8415 71.4671,0 c 1.55584,0 2.80802,1.25326 2.80802,2.80802 l 0,5.39316 c 0,1.55476 -1.25218,2.80802 -2.80802,2.80802 l -71.4671,0 c -1.55476,0 -2.80802,-1.25326 -2.80802,-2.80802 l 0,-5.39316 c 0,-1.55476 1.25326,-2.80802 2.80802,-2.80802 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:#72706f;fill-rule:nonzero;stroke:#383431;stroke-width:0.72130001"
id="path283"
d="m 160.372,62.2103 74.9063,0 -2.05751,1.65538 c -0.75051,0.606974 -1.65502,1.09421 -2.65402,1.42637 -0.95897,0.313044 -2.00738,0.487238 -3.09654,0.487238 l -61.92,0 c -1.08772,0 -2.13757,-0.174194 -3.09185,-0.487238 -1.00369,-0.332159 -1.9082,-0.819397 -2.65763,-1.42637 l -2.05859,-1.65538 2.62986,0 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.27481499"
id="path285"
d="m 134.468,132.898 c 0,1.0293 -0.8295,1.86384 -1.85879,1.86384 -1.02785,0 -1.85735,-0.83454 -1.85735,-1.86384 0,-1.02425 0.82949,-1.85879 1.85735,-1.85879 1.0293,0 1.85879,0.83454 1.85879,1.85879 z m 0,0 z" /><path
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:0.72130001"
id="path287"
d="m 125.066,127.202 c 4.50777,-2.32547 9.30802,-2.32547 14.3972,0" /><path
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:0.72130001"
id="path289"
d="m 123.908,124.135 c 5.39208,-2.78242 11.1376,-2.78242 17.2254,0" /><path
inkscape:connector-curvature="0"
style="fill:none;stroke:#ffffff;stroke-width:0.72130001"
id="path291"
d="m 127.452,129.583 c 2.98582,-1.54575 6.1718,-1.54575 9.54713,0" /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon293"
points="45.5425,134.762 45.5425,124.732 49.2652,124.732 49.2652,134.762 " /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon295"
points="41.0791,134.762 41.0791,126.218 44.8364,126.218 44.8364,134.762 " /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon297"
points="36.6518,134.761 36.6518,127.311 40.3744,127.311 40.3744,134.761 " /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon299"
points="32.1884,134.762 32.1884,128.693 35.9456,128.693 35.9456,134.762 " /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon301"
points="27.7596,134.762 27.7596,132.097 31.4822,132.097 31.4822,134.762 " /><g
id="g303"
transform="translate(1.30588,-240.887)">
<text
style="font-size:14.24960041px;font-weight:normal;fill:#ffffff;font-family:Arial"
id="text305"
y="375.46399"
x="54.312099">V</text>
<text
style="font-size:14.24960041px;font-weight:normal;fill:#ffffff;font-family:Arial"
id="text307"
y="375.46399"
x="63.885601">odafone</text>
</g><g
id="g309"
transform="translate(123.043,-240.887)">
<text
style="font-size:15.82499981px;font-weight:normal;fill:#ffffff;font-family:Arial"
id="text311"
y="375.46399"
x="54.312099">11:45</text>
</g><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon313"
points="348.288,134.762 348.288,124.583 367.894,124.583 367.894,134.762 " /><polygon
style="fill:#ffffff;fill-rule:nonzero"
id="polygon315"
points="368.332,132.754 368.332,126.492 371.07,126.492 371.07,132.754 " /><text
style="font-size:15.90359974px;font-weight:normal;fill:#ffffff;font-family:Arial"
id="text469"
y="133.63699"
x="220.118">pm</text>
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3156);fill-opacity:0.50196084;fill-rule:nonzero"
id="path471"
d="M 373.218,479.09 167.96,119.414 l 205.258,0 0,359.676 z m 0,0 z" />
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

+894
View File
@@ -0,0 +1,894 @@
<?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="1244"
height="890"
id="svg2"
version="1.1"
inkscape:version="0.48.0 r9654"
sodipodi:docname="zt-180_assembled-view.svg">
<defs
id="defs4">
<linearGradient
inkscape:collect="always"
id="linearGradient5049">
<stop
style="stop-color:#1d1b1c;stop-opacity:1;"
offset="0"
id="stop5051" />
<stop
style="stop-color:#1d1b1c;stop-opacity:0;"
offset="1"
id="stop5053" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5034">
<stop
style="stop-color:#e9e9e9;stop-opacity:1;"
offset="0"
id="stop5036" />
<stop
style="stop-color:#e9e9e9;stop-opacity:0;"
offset="1"
id="stop5038" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5019">
<stop
style="stop-color:#f0f0f0;stop-opacity:1;"
offset="0"
id="stop5021" />
<stop
style="stop-color:#f0f0f0;stop-opacity:0;"
offset="1"
id="stop5023" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient5004">
<stop
style="stop-color:#2d2c2a;stop-opacity:1;"
offset="0"
id="stop5006" />
<stop
style="stop-color:#2d2c2a;stop-opacity:0;"
offset="1"
id="stop5008" />
</linearGradient>
<linearGradient
id="linearGradient4964">
<stop
style="stop-color:#666465;stop-opacity:0.15602838;"
offset="0"
id="stop4966" />
<stop
id="stop4972"
offset="0.86107171"
style="stop-color:#666465;stop-opacity:1;" />
<stop
style="stop-color:#666465;stop-opacity:1;"
offset="1"
id="stop4968" />
</linearGradient>
<linearGradient
id="linearGradient4867">
<stop
style="stop-color:#5f5e5c;stop-opacity:1;"
offset="0"
id="stop4869" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4871" />
</linearGradient>
<linearGradient
id="linearGradient4807">
<stop
style="stop-color:#1d1d1d;stop-opacity:1;"
offset="0"
id="stop4809" />
<stop
style="stop-color:#737270;stop-opacity:1"
offset="1"
id="stop4811" />
</linearGradient>
<linearGradient
id="linearGradient4797">
<stop
id="stop4799"
offset="0"
style="stop-color:#676767;stop-opacity:1;" />
<stop
id="stop4801"
offset="1"
style="stop-color:#8f8f8f;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4754">
<stop
style="stop-color:#4b4b4b;stop-opacity:1;"
offset="0"
id="stop4756" />
<stop
style="stop-color:#1e1818;stop-opacity:1"
offset="1"
id="stop4758" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4754"
id="linearGradient4760"
x1="187.5"
y1="-1612.5"
x2="325.5"
y2="-834.5"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-0.5,860.5)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4797"
id="linearGradient4803"
gradientUnits="userSpaceOnUse"
x1="785.5"
y1="-1158.5"
x2="1183.5"
y2="-1590.5"
gradientTransform="translate(-0.5,860.5)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4807"
id="linearGradient4880"
gradientUnits="userSpaceOnUse"
x1="1216.0392"
y1="290.82339"
x2="1229.7705"
y2="317.86127" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4867"
id="linearGradient4882"
gradientUnits="userSpaceOnUse"
x1="1217.2399"
y1="306.93759"
x2="1198.2317"
y2="271.81259" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4964"
id="radialGradient4970"
cx="561.10303"
cy="-1825.7366"
fx="561.10303"
fy="-1825.7366"
r="619"
gradientTransform="matrix(1.100423,0,0,1.9244617,-56.84766,2750.4087)"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
id="filter4982"
color-interpolation-filters="sRGB">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.032"
id="feGaussianBlur4984" />
</filter>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5004"
id="radialGradient5010"
cx="3034.168"
cy="-3586.9634"
fx="3034.168"
fy="-3586.9634"
r="619"
gradientTransform="matrix(0.05380913,0,0,0.04908983,1063.9853,-577.0674)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5019"
id="radialGradient5025"
cx="8652.0986"
cy="4158.9136"
fx="8652.0986"
fy="4158.9136"
r="619"
gradientTransform="matrix(0.07583194,0.00105325,-0.00100421,0.07230108,573.57098,-270.5567)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5034"
id="radialGradient5040"
cx="-2.5823901"
cy="-1199.4236"
fx="-2.5823901"
fy="-1199.4236"
r="619"
gradientTransform="matrix(0.09542631,0,0,1.1745452,-2.835967,1063.5051)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5049"
id="linearGradient5055"
x1="449.5"
y1="-812.5"
x2="449.5"
y2="-880.5"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-0.5,860.5)" />
<radialGradient
r="4.125"
fy="-10.375"
fx="684.125"
cy="-10.375"
cx="684.125"
gradientTransform="matrix(1.2302326,0,0,1.2302326,-157.50785,2.3886627)"
gradientUnits="userSpaceOnUse"
id="radialGradient4639"
xlink:href="#linearGradient4348-4-9"
inkscape:collect="always" />
<radialGradient
r="4.125"
fy="-10.375"
fx="684.125"
cy="-10.375"
cx="684.125"
gradientTransform="matrix(1.2302326,0,0,1.2302326,-157.50785,2.3886627)"
gradientUnits="userSpaceOnUse"
id="radialGradient4637"
xlink:href="#linearGradient4348-4"
inkscape:collect="always" />
<linearGradient
id="linearGradient4348-4-9"
inkscape:collect="always">
<stop
id="stop4350-8-6"
offset="0"
style="stop-color:#454545;stop-opacity:1;" />
<stop
id="stop4352-6-3"
offset="1"
style="stop-color:#454545;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient4348-4"
inkscape:collect="always">
<stop
id="stop4350-8"
offset="0"
style="stop-color:#454545;stop-opacity:1;" />
<stop
id="stop4352-6"
offset="1"
style="stop-color:#454545;stop-opacity:0;" />
</linearGradient>
<radialGradient
r="4.125"
fy="-10.375"
fx="684.125"
cy="-10.375"
cx="684.125"
gradientTransform="matrix(1.2302326,0,0,1.2302326,-157.50785,2.3886627)"
gradientUnits="userSpaceOnUse"
id="radialGradient4363"
xlink:href="#linearGradient4348"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4118-0"
id="radialGradient4261"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3599416,0,0,2.3333334,-190.95156,-31.3125)"
cx="529.8125"
cy="28.964285"
fx="529.8125"
fy="28.964285"
r="2.4375" />
<linearGradient
id="linearGradient4253">
<stop
id="stop4255"
offset="0"
style="stop-color:#aaaaaa;stop-opacity:1;" />
<stop
id="stop4257"
offset="1"
style="stop-color:#dcdcdc;stop-opacity:1;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3599416,0,0,2.3333334,-190.70156,-38.4375)"
r="2.4375"
fy="28.964285"
fx="529.8125"
cy="28.964285"
cx="529.8125"
id="radialGradient4124-2"
xlink:href="#linearGradient4118-0"
inkscape:collect="always" />
<linearGradient
id="linearGradient4118-0">
<stop
id="stop4120-1"
offset="0"
style="stop-color:#959595;stop-opacity:1;" />
<stop
id="stop4122-0"
offset="1"
style="stop-color:#d4d4d4;stop-opacity:1;" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient4118-0"
id="radialGradient4141-4"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3599416,0,0,2.3333334,-182.95156,-31.3125)"
cx="529.8125"
cy="28.964285"
fx="529.8125"
fy="28.964285"
r="2.4375" />
<radialGradient
r="619"
fy="636.77783"
fx="623"
cy="636.77783"
cx="623"
gradientTransform="matrix(0.99838449,0,0,0.03073715,0.00646204,-60.572735)"
gradientUnits="userSpaceOnUse"
id="radialGradient4022"
xlink:href="#linearGradient3899"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="-22"
x2="1244"
y1="-22"
x1="0"
id="linearGradient3883"
xlink:href="#linearGradient3877"
inkscape:collect="always" />
<linearGradient
id="linearGradient3877">
<stop
id="stop3879"
offset="0"
style="stop-color:#a3a3a3;stop-opacity:1" />
<stop
style="stop-color:#b4b4b4;stop-opacity:1"
offset="0.00409657"
id="stop3897" />
<stop
style="stop-color:#d7d7d7;stop-opacity:1"
offset="0.01563698"
id="stop3895" />
<stop
style="stop-color:#d4d4d4;stop-opacity:1"
offset="0.02174701"
id="stop3893" />
<stop
style="stop-color:#f5f5f5;stop-opacity:1;"
offset="0.58460319"
id="stop3889" />
<stop
style="stop-color:#e8e8e8;stop-opacity:1"
offset="0.9540211"
id="stop3887" />
<stop
style="stop-color:#7b7b7b;stop-opacity:1"
offset="0.98477578"
id="stop3885" />
<stop
id="stop3891"
offset="0.99279392"
style="stop-color:#898989;stop-opacity:1" />
<stop
id="stop3881"
offset="1"
style="stop-color:#7a7a7a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3899">
<stop
id="stop3901"
offset="0"
style="stop-color:#bababa;stop-opacity:1;" />
<stop
style="stop-color:#dfdfdf;stop-opacity:1;"
offset="0.25"
id="stop3909" />
<stop
style="stop-color:#c7c7c7;stop-opacity:1"
offset="0.68395591"
id="stop3907" />
<stop
id="stop3903"
offset="1"
style="stop-color:#bababa;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4118">
<stop
id="stop4120"
offset="0"
style="stop-color:#aaaaaa;stop-opacity:1;" />
<stop
id="stop4122"
offset="1"
style="stop-color:#dcdcdc;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient4348"
inkscape:collect="always">
<stop
id="stop4350"
offset="0"
style="stop-color:#454545;stop-opacity:1;" />
<stop
id="stop4352"
offset="1"
style="stop-color:#454545;stop-opacity:0;" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.70710678"
inkscape:cx="639.48949"
inkscape:cy="425.72075"
inkscape:document-units="px"
inkscape:current-layer="layer2"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="971"
inkscape:window-x="1280"
inkscape:window-y="0"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:showpageshadow="false"
showguides="true"
inkscape:guide-bbox="true" />
<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>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="draw"
transform="translate(0,832)">
<rect
style="color:#000000;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4678"
width="1244"
height="832"
x="0"
y="-774"
rx="61"
ry="61" />
<rect
style="color:#000000;fill:#e9e9e9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4678-9"
width="1238"
height="826"
x="3"
y="-771"
rx="59"
ry="59" />
<rect
style="color:#000000;fill:#131313;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4678-9-1"
width="1220"
height="812"
x="12"
y="-764"
rx="52"
ry="52" />
<rect
style="color:#000000;fill:url(#linearGradient4760);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4678-9-1-4"
width="1214"
height="806"
x="15"
y="-761"
rx="49"
ry="49" />
<path
style="color:#000000;fill:url(#linearGradient4803);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 275.5,-761 904.5,0 c 27.146,0 49,21.854 49,49 l 0,602.5 z"
id="rect4678-9-1-4-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csscc" />
<rect
style="color:#000000;fill:#424242;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4734"
width="1024"
height="600"
x="93"
y="-657" />
<rect
style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4734-2"
width="1020"
height="596"
x="95"
y="-655" />
<g
id="g4875"
transform="translate(-1.4377202,81.437725)">
<path
transform="matrix(1.1245554,0,0,1.1245554,-178.91576,-768.16833)"
d="m 1244.8615,292.70975 c 0,16.20675 -13.1381,29.34493 -29.3449,29.34493 -16.2068,0 -29.3449,-13.13818 -29.3449,-29.34493 0,-16.20676 13.1381,-29.34493 29.3449,-29.34493 16.2068,0 29.3449,13.13817 29.3449,29.34493 z"
sodipodi:ry="29.344931"
sodipodi:rx="29.344931"
sodipodi:cy="292.70975"
sodipodi:cx="1215.5166"
id="path4805"
style="color:#000000;fill:url(#linearGradient4880);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<rect
ry="4"
rx="4"
y="-451.5"
x="1175.5"
height="25"
width="25"
id="rect4831"
style="color:#000000;fill:none;stroke:#ada7a7;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
transform="matrix(1.1245554,0,0,1.1245554,-178.91576,-768.16833)"
d="m 1244.8615,292.70975 c 0,16.20675 -13.1381,29.34493 -29.3449,29.34493 -16.2068,0 -29.3449,-13.13818 -29.3449,-29.34493 0,-16.20676 13.1381,-29.34493 29.3449,-29.34493 16.2068,0 29.3449,13.13817 29.3449,29.34493 z"
sodipodi:ry="29.344931"
sodipodi:rx="29.344931"
sodipodi:cy="292.70975"
sodipodi:cx="1215.5166"
id="path4805-2"
style="color:#000000;fill:none;stroke:url(#linearGradient4882);stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
</g>
<path
style="color:#000000;fill:url(#radialGradient4970);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4982);enable-background:accumulate"
d="m 62,-771 c -32.686,0 -59,26.314 -59,59 L 3,-4 c 0,32.686 26.314,59 59,59 l 1120,0 c 32.686,0 59,-26.314 59,-59 l 0,-708 c 0,-32.686 -26.314,-59 -59,-59 z m 2,5 1118,0 c 28.808,0 54,23.192 54,52 l 0,710 c 0,28.808 -25.192,56 -54,56 L 64,52 C 35.192,52 8,24.808 8,-4 l 0,-708 c 0,-28.808 27.192,-54 56,-54 z"
id="rect4678-9-16"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
style="color:#000000;fill:url(#radialGradient5010);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 62,-771 c -32.686,0 -59,26.314 -59,59 L 3,-4 c 0,32.686 26.314,59 59,59 l 1120,0 c 32.686,0 59,-26.314 59,-59 l 0,-708 c 0,-32.686 -26.314,-59 -59,-59 z m -2,3 1124,0 c 28.808,0 52,23.192 52,52 l 0,716 c 0,28.808 -23.192,52 -52,52 L 60,52 C 31.192,52 8,28.808 8,0 l 0,-716 c 0,-28.808 23.192,-52 52,-52 z"
id="rect4678-9-16-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
style="color:#000000;fill:url(#linearGradient5055);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 62,-771 c -32.686,0 -59,26.314 -59,59 L 3,-4 c 0,32.686 26.314,61 59,61 l 1120,0 c 32.686,0 59,-28.314 59,-61 l 0,-708 c 0,-32.686 -26.314,-59 -59,-59 z m -2,3 1124,0 c 28.808,0 52,23.192 52,52 l 0,716 c 0,28.808 -23.192,52 -52,52 L 60,52 C 31.192,52 8,28.808 8,0 l 0,-716 c 0,-28.808 23.192,-52 52,-52 z"
id="rect4678-9-16-0-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
style="color:#000000;fill:url(#radialGradient5025);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 62,-771 c -32.686,0 -59,26.314 -59,59 L 3,-4 c 0,32.686 26.314,59 59,59 l 1120,0 c 32.686,0 59,-26.314 59,-59 l 0,-708 c 0,-32.686 -26.314,-59 -59,-59 z m -2,3 1124,0 c 28.808,0 52.1618,23.1924 52,52 l -4,712 c -0.1618,28.80755 -23.1921,51.89711 -52,52 L 60,52 C 31.192184,52.10289 8,28.808 8,0 l 0,-716 c 0,-28.808 23.192,-52 52,-52 z"
id="rect4678-9-16-0-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssssssssssss" />
<path
style="color:#000000;fill:url(#radialGradient5040);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 62,-771 c -32.686,0 -59,26.314 -59,59 L 3,-4 c 0,32.686 26.314,59 59,59 l 1120,0 c 32.686,0 59,-26.314 59,-59 l 0,-708 c 0,-32.686 -26.314,-59 -59,-59 z m -2,3 1124,0 c 28.808,0 52,23.192 52,52 l 0,716 c 0,28.808 -23.192,52 -52,52 L 60,52 C 31.192,52 10,28.808 10,0 l 0,-716 c 0,-28.808 21.192,-52 50,-52 z"
id="rect4678-9-16-0-42"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssssssssssssssss" />
<g
id="g5389"
transform="translate(0,-832)">
<g
style="display:none"
transform="translate(-32,-229.36218)"
id="layer1"
inkscape:label="pict">
<image
width="1244"
height="892"
xlink:href="file:///home/leon/_DATA/gnu/hard/ZT-180%20Android%20Tablet/skin/zt-180-hor.png"
id="image3073"
x="32"
y="229.36218" />
</g>
<g
inkscape:label="draw"
id="layer2-4">
<g
transform="translate(0,60)"
id="g4016">
<rect
style="color:#000000;fill:url(#linearGradient3883);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3856"
width="1244"
height="40"
x="0"
y="-42"
rx="4"
ry="4" />
<path
style="color:#000000;fill:url(#radialGradient4022);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 622,-60 c 603.2302,0 618,18 618,18 L 4,-42 c 0,0 14.769786,-18 618,-18 z"
id="rect3856-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="zccz" />
<path
style="color:#000000;fill:#000000;fill-opacity:0.11917102;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 1244,-6 c 0,2.216 -1.784,4 -4,4 L 4,-2 C 1.784,-2 0,-3.784 0,-6 z"
id="rect3856-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csscc" />
<path
style="color:#000000;fill:#ffffff;fill-opacity:0.26943006;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 1244,-38 c 0,-2.216 -1.784,-4 -4,-4 L 4,-42 c -2.216,0 -4,1.784 -4,4 z"
id="rect3856-3-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csscc" />
</g>
<g
transform="translate(-0.21961,7.353554)"
id="g4110-2">
<path
style="color:#000000;fill:#e2e2e2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 517.43841,17.396446 c 0.0103,0.08266 0.0312,0.164456 0.0312,0.25 l 0,14 c 0,1.108 -0.892,2 -2,2 l -69,0 c -0.0855,0 -0.16734,-0.02093 -0.25,-0.03125 0.54908,0.62744 1.3469,1.03125 2.25,1.03125 l 67,0 c 1.662,0 3,-1.338 3,-3 l 0,-12 c 0,-0.903101 -0.40381,-1.700917 -1.03125,-2.25 z"
id="rect4024-2-6"
inkscape:connector-curvature="0" />
<rect
style="color:#000000;fill:#1e1e1e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4090-6"
width="63.75"
height="7.75"
x="451.2196"
y="21.896446"
rx="1"
ry="1" />
<rect
style="color:#000000;fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4090-9-6"
width="49.75"
height="4.75"
x="458.2196"
y="24.896446"
rx="0.78039217"
ry="0.61290324" />
<path
style="color:#000000;fill:#c8c8c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 447.25091,34.646446 c -0.0103,-0.08266 -0.0312,-0.164456 -0.0312,-0.25 l 0,-14 c 0,-1.108 0.892,-2 2,-2 l 69,0 c 0.0855,0 0.16734,0.02093 0.25,0.03125 -0.54913,-0.62744 -1.34695,-1.03125 -2.25005,-1.03125 l -67,0 c -1.662,0 -3,1.338 -3,3 l 0,12 c 0,0.903101 0.40381,1.700917 1.03125,2.25 z"
id="rect4024-2-6-2"
inkscape:connector-curvature="0" />
</g>
<rect
ry="3"
rx="3"
y="29.5"
x="526.5"
height="11"
width="5"
id="rect4116"
style="color:#000000;fill:url(#radialGradient4261);fill-opacity:1;fill-rule:nonzero;stroke:#cfcfcf;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
ry="3"
rx="3"
y="29.5"
x="534.5"
height="11"
width="5"
id="rect4116-7"
style="color:#000000;fill:url(#radialGradient4141-4);fill-opacity:1;fill-rule:nonzero;stroke:#cfcfcf;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<g
transform="translate(0,47)"
id="g4356">
<rect
style="color:#000000;fill:#c8c8c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4290"
width="59.431141"
height="22.25"
x="657"
y="-21.25"
rx="11.191579"
ry="11.125" />
<rect
style="color:#000000;fill:#454545;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4290-7"
width="56.111511"
height="19.75"
x="658.65979"
y="-20"
rx="10.566453"
ry="9.875" />
<rect
style="color:#000000;fill:#616161;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4290-7-4"
width="52.347717"
height="17.678572"
x="660.54169"
y="-18.964287"
rx="9.857687"
ry="8.8392859" />
<path
sodipodi:type="arc"
style="color:#000000;fill:url(#radialGradient4363);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path4328-1"
sodipodi:cx="684.125"
sodipodi:cy="-10.375"
sodipodi:rx="4.125"
sodipodi:ry="4.125"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
transform="matrix(1.5794307,0,0,1.3030303,-393.81246,3.3939394)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:#686868;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="path4328"
sodipodi:cx="684.125"
sodipodi:cy="-10.375"
sodipodi:rx="4.125"
sodipodi:ry="4.125"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
transform="matrix(1.2121212,0,0,1,-142.52685,0.25)" />
</g>
<g
transform="translate(-0.34375,27.09375)"
id="g4467">
<path
style="fill:#c2c2c2;fill-opacity:1;stroke:none"
d="m 774.65625,-3.9375 c -1.33604,0 -2.29162,0.563876 -2.96875,1.21875 l -4.125,4 C 766.91609,1.906396 766.34375,2.643917 766.34375,3.5 l 0,6.5625 c 0,2.103777 1.53455,2.84375 2.84375,2.84375 l 37.71875,0 c 1.3092,0 2.84375,-0.739973 2.84375,-2.84375 l 0,-6.5625 c 0,-0.856083 -0.60359,-1.593604 -1.25,-2.21875 l -4.125,-4 c -0.67713,-0.654874 -1.60146,-1.21875 -2.9375,-1.21875 z"
id="path4365"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccssssssccss" />
<path
style="fill:#2d2d2d;fill-opacity:1;stroke:none"
d="m 775.53933,-2.9652282 c -1.24793,0 -2.14049,0.4987788 -2.77297,1.0780502 l -3.85296,3.538216 c -0.60378,0.5529754 -1.13838,1.2053525 -1.13838,1.9626042 l 0,5.8048855 c 0,1.8609043 1.43335,2.5154503 2.65621,2.5154503 l 35.23129,0 c 1.22286,0 2.65621,-0.654546 2.65621,-2.5154503 l 0,-5.8048855 c 0,-0.7572517 -0.56378,-1.4096288 -1.16757,-1.9626042 l -3.85296,-3.538216 c -0.63248,-0.5792714 -1.49585,-1.0780502 -2.74378,-1.0780502 z"
id="path4365-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccssssssccss" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 775.53125,-2.96875 c -0.57135,0 -1.04246,0.1399685 -1.46875,0.3125 0.31519,2.26319549 1.87842,5.75 3.78125,5.75 l 20.40625,0 c 1.90283,0 3.46606,-3.48680451 3.78125,-5.75 -0.42629,-0.1725315 -0.8974,-0.3125 -1.46875,-0.3125 l -25.03125,0 z"
id="rect4404" />
<path
inkscape:connector-curvature="0"
style="color:#000000;fill:#444444;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 778.46875,8.21875 c -1.81523,0 -3.30522,1.793811 -3.5625,3.71875 l 26.28125,0 c -0.25728,-1.924939 -1.74727,-3.71875 -3.5625,-3.71875 l -19.15625,0 z"
id="rect4404-8" />
</g>
<g
id="g4652">
<rect
style="color:#000000;fill:none;stroke:#c9c9c9;stroke-width:0.87128627;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4473"
width="8.1287136"
height="6.1287136"
x="820.43567"
y="27.435644"
rx="0.60415089"
ry="0.60100937" />
<rect
style="color:#000000;fill:none;stroke:#c9c9c9;stroke-width:0.87128627;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4473-5"
width="8.1287136"
height="6.1287136"
x="836.43567"
y="27.435644"
rx="0.60415089"
ry="0.60100937" />
<rect
style="color:#000000;fill:none;stroke:#c9c9c9;stroke-width:0.87128627;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect4473-5-4"
width="8.1287136"
height="6.1287136"
x="828.43567"
y="38.435642"
rx="0.60415089"
ry="0.60100937" />
<path
style="fill:none;stroke:#c9c9c9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 824.00003,33.625 0,2.375 17,0 0,-2.5"
id="path4515"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;stroke:#c9c9c9;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 832.50003,36.113514 0,2.386486"
id="path4517"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-0.53992,7.602922)"
id="g4626">
<path
style="color:#000000;fill:#c8c8c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 966.33909,19.798727 c 0,0 26.11947,1.000273 39.17921,1.000273 13.0597,0 39.1792,-1.000273 39.1792,-1.000273 5.4288,0 9.7992,4.370432 9.7992,9.799175 0,5.428743 -4.3704,9.799176 -9.7992,9.799176 0,0 -26.1195,-1.000078 -39.1792,-1.000078 -13.05974,0 -39.17921,1.000078 -39.17921,1.000078 -5.42874,0 -9.79917,-4.370433 -9.79917,-9.799176 0,-5.428743 4.37043,-9.799175 9.79917,-9.799175 z"
id="rect4290-79"
inkscape:connector-curvature="0"
sodipodi:nodetypes="szssszsss" />
<path
style="color:#000000;fill:#454545;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 966.73635,20.899759 c 0,0 25.85462,1.000241 38.78195,1.000241 12.9273,0 38.7819,-1.000241 38.7819,-1.000241 4.8188,0 8.6981,3.879372 8.6981,8.698144 0,4.818772 -3.8793,8.698144 -8.6981,8.698144 0,0 -25.8546,-1.000047 -38.7819,-1.000047 -12.92733,0 -38.78195,1.000047 -38.78195,1.000047 -4.81877,0 -8.69814,-3.879372 -8.69814,-8.698144 0,-4.818772 3.87937,-8.698144 8.69814,-8.698144 z"
id="rect4290-7-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="szssszsss" />
<path
style="color:#000000;fill:#616161;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="m 968.39548,21.812042 c 0,0 24.74847,0.999958 37.12272,0.999958 12.3742,0 37.1227,-0.999958 37.1227,-0.999958 4.3134,0 7.7859,3.472494 7.7859,7.785862 0,4.313367 -3.4725,7.785861 -7.7859,7.785861 0,0 -24.7485,-0.999765 -37.1227,-0.999765 -12.37425,0 -37.12272,0.999765 -37.12272,0.999765 -4.31337,0 -7.78586,-3.472494 -7.78586,-7.785861 0,-4.313368 3.47249,-7.785862 7.78586,-7.785862 z"
id="rect4290-7-4-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="szssszsss" />
<g
id="g4580">
<path
transform="matrix(1.2197818,0,0,1.0063199,135.67978,40.038472)"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
sodipodi:ry="4.125"
sodipodi:rx="4.125"
sodipodi:cy="-10.375"
sodipodi:cx="684.125"
id="path4328-1-3"
style="color:#000000;fill:url(#radialGradient4637);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
transform="matrix(0.93611155,0,0,0.77229203,329.74564,37.610434)"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
sodipodi:ry="4.125"
sodipodi:rx="4.125"
sodipodi:cy="-10.375"
sodipodi:cx="684.125"
id="path4328-6"
style="color:#000000;fill:#686868;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
</g>
<g
id="g4580-4"
transform="matrix(-1,0,0,1,2011.0364,0)">
<path
transform="matrix(1.2197818,0,0,1.0063199,135.67978,40.038472)"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
sodipodi:ry="4.125"
sodipodi:rx="4.125"
sodipodi:cy="-10.375"
sodipodi:cx="684.125"
id="path4328-1-3-5"
style="color:#000000;fill:url(#radialGradient4639);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
<path
transform="matrix(0.93611155,0,0,0.77229203,329.74564,37.610434)"
d="m 688.25,-10.375 c 0,2.2781746 -1.84683,4.125 -4.125,4.125 -2.27817,0 -4.125,-1.8468254 -4.125,-4.125 0,-2.278175 1.84683,-4.125 4.125,-4.125 2.27817,0 4.125,1.846825 4.125,4.125 z"
sodipodi:ry="4.125"
sodipodi:rx="4.125"
sodipodi:cy="-10.375"
sodipodi:cx="684.125"
id="path4328-6-3"
style="color:#000000;fill:#686868;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:type="arc" />
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

+7 -3
View File
@@ -59,8 +59,8 @@ root.Qrammer =
return return
window.location = '/' if res['message'] && !res['ok'] window.location = '/' if res['message'] && !res['ok']
window.location = '/view_active_list' if res['ok'] window.location = '/view_active_list' if res['ok']
load_active_order_list: (supplier_id) -> load_active_orders: (supplier_id) ->
$.get('/suppliers/'+supplier_id+'/active_order_list.json', (res) -> $.get('/suppliers/'+supplier_id+'/active_orders.json', (res) ->
body = $('#active-orders-table tbody') body = $('#active-orders-table tbody')
body.find('tr').remove() body.find('tr').remove()
foot = $('#active-orders-table tfoot') foot = $('#active-orders-table tfoot')
@@ -112,7 +112,11 @@ root.Qrammer =
)(list, row) )(list, row)
close_btn.click(close_callback) close_btn.click(close_callback)
row.append($('<td></td>').text(list._id)) icons_td = $('<td class="status-icons"></td>').appendTo(row)
icons_td.append('<li class="icon-hand-up"></li>') if list.need_help # or icon-bell
icons_td.append('<li class="icon-check"></li>') if list.needs_payment
row.append($('<td></td>').text(list.table_number))
row.append($('<td class="currency"></td>').html(Qrammer.currency(list.total_amount))) row.append($('<td class="currency"></td>').html(Qrammer.currency(list.total_amount)))
td_buttons = $('<td class="actions"></td>') td_buttons = $('<td class="actions"></td>')
td_buttons.append(close_btn) td_buttons.append(close_btn)
+1 -1
View File
@@ -9,5 +9,5 @@
* compiled file, but it's generally better to create a new file per style scope. * compiled file, but it's generally better to create a new file per style scope.
* *
*= require_self *= require_self
*= require_tree . *= require_directory .
*/ */
@@ -0,0 +1,13 @@
/*
* This is a manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
*
* You're free to add application-wide styles to this file and they'll appear at the top of the
* compiled file, but it's generally better to create a new file per style scope.
*
*= require_self
*= require_directory .
*/
@@ -0,0 +1,7 @@
body
padding-left: 0px
padding-right: 0px
//padding-top: 50px
.navbar-fixed-top
margin-left: 0px
margin-right: 0px
+30
View File
@@ -31,3 +31,33 @@ table
td td
&:first-child &:first-child
background-image: image-url('icons/order-doublecheck.png') background-image: image-url('icons/order-doublecheck.png')
.phone-wrapper
position: absolute
top: 60px
left: 20px
width: 353px
height: 693px
background-image: image-url('frames/smartphone.png')
background-repeat: no-repeat
.phone-content-frame
position: absolute
left: 40px
top: 182px
height: 482px
width: 310px
.tablet-wrapper
position: absolute
top: 60px
left: 393px
width: 1002px
height: 670px
background-image: image-url('frames/tablet.png')
background-repeat: no-repeat
.tablet-content-frame
position: absolute
left: 433px
top: 100px
width: 880px
height: 590px
+28 -2
View File
@@ -4,10 +4,14 @@ class DashboardController < ApplicationController
def home def home
end end
def phone_home
render layout: 'phone'
end
# Testing action # Testing action
def select_qrcode def select_qrcode
@tables = Table.all @tables = Table.all
render layout: 'phone'
end end
def create_list def create_list
@@ -25,8 +29,7 @@ class DashboardController < ApplicationController
def show_products def show_products
@supplier = Supplier.first @supplier = Supplier.first
render layout: 'phone'
end end
def order_active_list def order_active_list
@@ -50,6 +53,29 @@ class DashboardController < ApplicationController
def view_active_list def view_active_list
redirect_to(root_path, alert: t('messages.there_is_no_list_active')) and return unless session[:active_list_id].present? redirect_to(root_path, alert: t('messages.there_is_no_list_active')) and return unless session[:active_list_id].present?
render layout: 'phone'
end
##
# Displays the closed lists of the user
def user_history
render layout: 'phone'
end
def list_info
respond_to do |format|
format.json do
render json: {list_active: false} and return unless session[:active_list_id].present?
render json: active_list.as_json.merge(list_active: true)
end
end
end
def supplier_home
redirect_to active_orders_supplier_path(Supplier.first)
end
def supplier_lists
redirect_to active_lists_supplier_path(Supplier.first)
end end
end end
+7 -7
View File
@@ -99,12 +99,12 @@ class SuppliersController < ApplicationController
end end
end end
# GET /suppliers/1/active_order_list # GET /suppliers/1/active_orders
# GET /suppliers/1/active_order_list.json # GET /suppliers/1/active_orders.json
def active_order_list def active_orders
@supplier = Supplier.find(params[:id]) @supplier = Supplier.find(params[:id])
respond_to do |format| respond_to do |format|
format.html format.html { render layout: 'tablet' }
format.json do format.json do
h = @supplier.as_json h = @supplier.as_json
h[:orders] = [] h[:orders] = []
@@ -124,7 +124,7 @@ class SuppliersController < ApplicationController
h[:orders] << ho h[:orders] << ho
end end
h[:total_amount] = list_total.round(2) h[:total_amount] = list_total.round(2)
render json: h render json: h, layout: 'tablet'
end end
end end
end end
@@ -134,7 +134,7 @@ class SuppliersController < ApplicationController
def active_lists def active_lists
@supplier = Supplier.find(params[:id]) @supplier = Supplier.find(params[:id])
respond_to do |format| respond_to do |format|
format.html format.html { render layout: 'tablet' }
format.json do format.json do
h = @supplier.as_json h = @supplier.as_json
h[:lists] = [] h[:lists] = []
@@ -146,7 +146,7 @@ class SuppliersController < ApplicationController
h[:lists] << hl h[:lists] << hl
end end
h[:total_amount] = grand_total.round(2) h[:total_amount] = grand_total.round(2)
render json: h render json: h, layout: 'tablet'
end end
end end
end end
+8
View File
@@ -22,6 +22,10 @@ class List
table.supplier table.supplier
end end
def table_number
@table_number ||= table.number
end
def active? def active?
state == 'active' state == 'active'
end end
@@ -35,4 +39,8 @@ class List
ProductOrder.create order: @order, product_id: product_id, amount: number if number > 0 ProductOrder.create order: @order, product_id: product_id, amount: number if number > 0
end end
end end
def as_json
super.merge(table_number: table_number)
end
end end
+4 -14
View File
@@ -1,15 +1,5 @@
.page-header= title 'Home' .phone-wrapper
ul.nav.nav-tabs.nav-stacked iframe.phone-content-frame src=phone_root_path
- if list_open?
li= link_to 'Place order', '/show_products?supplier_id=' + active_list.supplier.id
li= link_to 'Active list', view_active_list_path
li= link_to 'Request bill', '#'
li= link_to 'I have a question', '#'
- else
li= link_to 'Place order', '/select_qrcode'
li= link_to 'Subscribe to list', '#'
li= link_to 'Check out menu', '#'
ul.nav.nav-tabs.nav-stacked
li= link_to 'View history', '#'
.tablet-wrapper
iframe.tablet-content-frame src=supplier_root_path
+11
View File
@@ -0,0 +1,11 @@
ul.nav.nav-tabs.nav-stacked
- if list_open?
li= link_to 'Place order', '/show_products?supplier_id=' + active_list.supplier.id
li= link_to 'Active list', view_active_list_path
li= link_to 'Request bill', '#'
li= link_to 'Move table', '#'
li= link_to 'I have a question', '#'
- else
li= link_to 'Place order', '/select_qrcode'
li= link_to 'Subscribe to list', '#'
li= link_to 'Check out menu', '#'
+2 -3
View File
@@ -1,8 +1,7 @@
button onClick='Qrammer.build_product_list()' class='btn btn-inverse'Lijst
table#products-table.table.table-striped.table-hover table#products-table.table.table-striped.table-hover
tbody tbody
- content_for :sidebar do -# content_for :sidebar do
table#active-order-table.table.hide table#active-order-table.table.table-striped.hide
thead thead
tr tr
th Product th Product
@@ -0,0 +1,2 @@
.page-header= title 'User history'
p Todo
+55
View File
@@ -0,0 +1,55 @@
doctype html
html lang="en"
head
meta charset="utf-8"
meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"
meta name="viewport" content="width=device-width, initial-scale=1.0"
title= content_for?(:title) ? yield(:title) : "Qrammer"
= csrf_meta_tags
/! Le HTML5 shim, for IE6-8 support of HTML elements
/[if lt IE 9]
= javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js"
= stylesheet_link_tag "application", :media => "all"
= stylesheet_link_tag "phone/application", :media => "all"
link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="images/favicon.ico" rel="shortcut icon"
javascript:
var active_list_id = #{session[:active_list_id] ? "'#{session[:active_list_id]}'" : 'null'};
body
.navbar.navbar-fixed-top
.navbar-inner
.container
a.btn.btn-navbar data-target=".nav-collapse" data-toggle="collapse"
span.icon-bar
span.icon-bar
span.icon-bar
a.brand href=phone_root_path Qrammer
.container.nav-collapse
ul.nav#top-navigation-list
li= link_to 'View history', user_history_path
.container
.content
- if flash[:alert].present?
.alert.alert-error
a.close data-dismiss="alert" &#215;
div= flash[:alert]
- if flash[:notice].present?
.alert.alert-success
a.close data-dismiss="alert" &#215;
div= flash[:notice]
.row
.span12
= yield
/!
Javascripts
\==================================================
/! Placed at the end of the document so the pages load faster
= javascript_include_tag "application"
= yield :footer
+56
View File
@@ -0,0 +1,56 @@
doctype html
html lang="en"
head
meta charset="utf-8"
meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"
meta name="viewport" content="width=device-width, initial-scale=1.0"
title= content_for?(:title) ? yield(:title) : "Qrammer"
= csrf_meta_tags
/! Le HTML5 shim, for IE6-8 support of HTML elements
/[if lt IE 9]
= javascript_include_tag "http://html5shim.googlecode.com/svn/trunk/html5.js"
= stylesheet_link_tag "application", :media => "all"
= stylesheet_link_tag "phone/application", :media => "all"
link href="images/apple-touch-icon-144x144.png" rel="apple-touch-icon-precomposed" sizes="144x144"
link href="images/apple-touch-icon-114x114.png" rel="apple-touch-icon-precomposed" sizes="114x114"
link href="images/apple-touch-icon-72x72.png" rel="apple-touch-icon-precomposed" sizes="72x72"
link href="images/apple-touch-icon.png" rel="apple-touch-icon-precomposed"
link href="images/favicon.ico" rel="shortcut icon"
javascript:
var active_list_id = #{session[:active_list_id] ? "'#{session[:active_list_id]}'" : 'null'};
body
.navbar.navbar-fixed-top.navbar-inverse
.navbar-inner
.container
a.btn.btn-navbar data-target=".nav-collapse" data-toggle="collapse"
span.icon-bar
span.icon-bar
span.icon-bar
a.brand href=supplier_root_path Qrammer
.container.nav-collapse-disabled
ul.nav#top-navigation-list
li= link_to t('supplier.menu.active_orders', orders: Order.model_name.human_plural), supplier_orders_path
li= link_to t('supplier.menu.active_lists', lists: List.model_name.human_plural), supplier_lists_path
.container
.content
- if flash[:alert].present?
.alert.alert-error
a.close data-dismiss="alert" &#215;
div= flash[:alert]
- if flash[:notice].present?
.alert.alert-success
a.close data-dismiss="alert" &#215;
div= flash[:notice]
.row
.span12
= yield
/!
Javascripts
\==================================================
/! Placed at the end of the document so the pages load faster
= javascript_include_tag "application"
= yield :footer
+2 -1
View File
@@ -1,7 +1,8 @@
.page-header= title 'Active lists' .page-header= title 'Active lists'
table#active-lists-table.table table#active-lists-table.table.table-striped
thead thead
tr tr
th.status-icons
th.number Table number th.number Table number
th.currency Price th.currency Price
th.actions th.actions
@@ -10,7 +10,7 @@ table#active-orders-table.table
- content_for :footer do - content_for :footer do
javascript: javascript:
jQuery(function(){ jQuery(function(){
Qrammer.load_active_order_list('#{@supplier.id}') Qrammer.load_active_orders('#{@supplier.id}')
setInterval( "Qrammer.load_active_order_list('#{@supplier.id}')", 7500); setInterval( "Qrammer.load_active_orders('#{@supplier.id}')", 7500);
}); });
+7
View File
@@ -5,6 +5,13 @@ Qrammer::Application.configure do
# every request. This slows down response time but is perfect for development # every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes. # since you don't have to restart the web server when you make code changes.
config.cache_classes = false config.cache_classes = false
silence_warnings do
begin
require 'pry'
IRB = Pry
rescue LoadError
end
end
# Log error messages when you accidentally call methods on nil. # Log error messages when you accidentally call methods on nil.
config.whiny_nils = true config.whiny_nils = true
+3
View File
@@ -43,3 +43,6 @@ en:
list: Lists list: Lists
product: Products product: Products
product_category: Product categories product_category: Product categories
supplier:
menu:
active_lists: Active %{lists}
+6 -1
View File
@@ -14,7 +14,7 @@ Qrammer::Application.routes.draw do
resources :suppliers do resources :suppliers do
member do member do
get :product_list get :product_list
get :active_order_list get :active_orders
get :active_lists get :active_lists
end end
end end
@@ -29,6 +29,11 @@ Qrammer::Application.routes.draw do
match "/:action", controller: 'dashboard' match "/:action", controller: 'dashboard'
match '/view_active_list' => 'dashboard#view_active_list', as: :view_active_list match '/view_active_list' => 'dashboard#view_active_list', as: :view_active_list
match '/phone_home' => 'dashboard#phone_home', as: :phone_root
match '/supplier_home' => 'dashboard#supplier_home', as: :supplier_root
match '/supplier_home' => 'dashboard#supplier_home', as: :supplier_orders
match '/supplier_lists' => 'dashboard#supplier_lists', as: :supplier_lists
match '/user_history' => 'dashboard#user_history', as: :user_history
# The priority is based upon order of creation: # The priority is based upon order of creation:
# first created -> highest priority. # first created -> highest priority.
+5
View File
@@ -0,0 +1,5 @@
FactoryGirl.define do
factory :list do
association :table
end
end
+5
View File
@@ -0,0 +1,5 @@
FactoryGirl.define do
factory :supplier do
sequence(:name){|i| "Supplier #{i}"}
end
end
+6
View File
@@ -0,0 +1,6 @@
FactoryGirl.define do
factory :table do
number 22
association :supplier
end
end
+17
View File
@@ -0,0 +1,17 @@
require 'spec_helper'
describe List do
before :each do
@list = create :list
end
describe :as_json do
it 'should include _id in as_json serialization' do
@list.as_json.keys.map(&:to_sym).should include :_id
end
it 'should include table_number in as_json serialization' do
@list.as_json.keys.should include :table_number
end
end
end
+65
View File
@@ -0,0 +1,65 @@
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
#Dir[Rails.root.join("spec/factories/**/*.rb")].each {|f| require f }
I18n.locale = :en
Devise.stretches = 1
Capybara.default_driver = :selenium
RSpec.configure do |config|
# == Mock Framework
#
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr
config.mock_with :rspec
config.include FactoryGirl::Syntax::Methods
config.include Devise::TestHelpers, :type => :controller
config.include EndWithMatcher
#config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = true
config.render_views = true
# Use color in STDOUT
config.color_enabled = true
# Use color not only in STDOUT but also in pagers and files
config.tty = true
# Use the specified formatter
config.formatter = :documentation # :progress, :html, :textmate
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
#config.fixture_path = "#{::Rails.root}/spec/fixtures"
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
#config.use_transactional_fixtures = true
config.before :each do
CouchPotato.couchrest_database.recreate!
end
config.before :each, type: :request do
#Capybara.current_driver = :selenium
#sign_in_user_through_request
end
# If true, the base class of anonymous controllers will be inferred
# automatically. This will be the default behavior in future versions of
# rspec-rails.
#config.infer_base_class_for_anonymous_controllers = true
def sign_in_user_through_request
visit "/users/sign_in"
fill_in 'user[email]', with: @user.email
fill_in 'user[password]', with: @user.password
click_on 'Inloggen'
end
end
+43
View File
@@ -0,0 +1,43 @@
module EndWithMatcher
class EndWith
def initialize(expected)
@expected = expected
end
def matches?(target)
@target = target
@target =~ /#{@expected}$/
end
def failure_message
"expected <#{to_string(@target)}> to " +
"end with <#{to_string(@expected)}>"
end
def negative_failure_message
"expected <#{to_string(@target)}> not to " +
"end with <#{to_string(@expected)}>"
end
# Returns string representation of an object.
def to_string(value)
# indicate a nil
if value.nil?
'nil'
end
# join arrays
if value.class == Array
return value.join(", ")
end
# otherwise return to_s() instead of inspect()
return value.to_s
end
end
# Actual matcher that is exposed.
def end_with(expected)
EndWith.new(expected)
end
end