[MERGE] point_of_sale & co. : large js cleanup / refactor.
- See the branch's commit messages for details on the work done.
@@ -44,6 +44,7 @@ html {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
table {
|
||||
border-spacing: 0px;
|
||||
border-collapse: collapse;
|
||||
@@ -501,7 +502,7 @@ td {
|
||||
|
||||
/* ********* The leftpane contains the order, numpad and paypad ********* */
|
||||
|
||||
.pos .pos-leftpane {
|
||||
.pos .leftpane {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
-ms-box-sizing: border-box;
|
||||
@@ -513,7 +514,7 @@ td {
|
||||
bottom:0;
|
||||
border-right: solid 1px #CECBCB;
|
||||
}
|
||||
.pos .pos-leftpane .pads {
|
||||
.pos .leftpane .pads {
|
||||
background: #F0EEEE;
|
||||
white-space: nowrap;
|
||||
}
|
||||
@@ -640,7 +641,6 @@ td {
|
||||
.pos .rightpane {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
/*bottom: 105px;*/
|
||||
bottom:0;
|
||||
left: 440px;
|
||||
right: 0;
|
||||
@@ -1222,6 +1222,7 @@ td {
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
color: white !important;
|
||||
}
|
||||
.oe_leftbar,
|
||||
.pos .pos-topheader,
|
||||
@@ -1861,12 +1862,12 @@ td {
|
||||
box-shadow: 0px 10px 20px rgba(0,0,0,0.4);
|
||||
z-index:1200;
|
||||
}
|
||||
.pos .popup .comment{
|
||||
.pos .popup .body {
|
||||
font-weight: normal;
|
||||
font-size: 18px;
|
||||
margin: 0px 16px 16px 16px;
|
||||
}
|
||||
.pos .popup .comment.traceback {
|
||||
.pos .popup .body.traceback {
|
||||
height: 264px;
|
||||
overflow: auto;
|
||||
font-size: 14px;
|
||||
@@ -1876,17 +1877,6 @@ td {
|
||||
-moz-user-select: text;
|
||||
user-select: text;
|
||||
}
|
||||
.pos .popup .comment.traceback {
|
||||
height: 264px;
|
||||
overflow: auto;
|
||||
font-size: 12px;
|
||||
text-align: left;
|
||||
white-space: pre-wrap;
|
||||
font-family: 'Inconsolata';
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
user-select: text;
|
||||
}
|
||||
.pos .popup .footer{
|
||||
position:absolute;
|
||||
bottom:0;
|
||||
@@ -1964,7 +1954,7 @@ td {
|
||||
outline: none;
|
||||
box-shadow: 0px 0px 0px 3px #6EC89B;
|
||||
}
|
||||
.pos .popup.popup-selection .message {
|
||||
.pos .popup.popup-selection .title {
|
||||
margin-top: 0;
|
||||
}
|
||||
.pos .popup.popup-selection .selection {
|
||||
@@ -1986,12 +1976,23 @@ td {
|
||||
.pos .popup.popup-selection .selection-item:nth-child(even) {
|
||||
background: rgb(247,247,247);
|
||||
}
|
||||
.pos .popup.popup-number {
|
||||
width: 300px;
|
||||
margin-left: -150px;
|
||||
}
|
||||
.pos .popup-number .footer{
|
||||
text-align: center;
|
||||
}
|
||||
.pos .popup-number .footer .button{
|
||||
float: none;
|
||||
display: inline-block;
|
||||
}
|
||||
.pos .popup-numpad {
|
||||
margin: 12px auto;
|
||||
text-align: left;
|
||||
width: 244px;
|
||||
width: 250px;
|
||||
}
|
||||
.pos .popup-number .message {
|
||||
.pos .popup-number .title {
|
||||
margin-top: 0;
|
||||
}
|
||||
.pos .popup-numpad .input-button,
|
||||
@@ -2013,20 +2014,27 @@ td {
|
||||
}
|
||||
|
||||
.pos .popup.popup-password {
|
||||
width: 238px;
|
||||
margin-left: -119px;
|
||||
width: 250px;
|
||||
margin-left: -125;
|
||||
}
|
||||
.pos .popup-password .mode-button.add,
|
||||
.pos .popup-password .input-button.dot {
|
||||
display: none;
|
||||
}
|
||||
.pos .popup-password .popup-numpad {
|
||||
width: 182px;
|
||||
width: 190px;
|
||||
}
|
||||
.pos .popup-password .popup-input {
|
||||
width: 70%;
|
||||
-webkit-text-security: disc;
|
||||
}
|
||||
.pos .popup-password .footer{
|
||||
text-align: center;
|
||||
}
|
||||
.pos .popup-password .footer .button{
|
||||
float: none;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* ********* The Webkit Scrollbar ********* */
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 916 B |
|
Before Width: | Height: | Size: 97 B |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 293 B |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
@@ -1,502 +0,0 @@
|
||||
<?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"
|
||||
sodipodi:docname="printer.svg"
|
||||
sodipodi:docbase="/home/jimmac/src/cvs/tango-icon-theme/scalable/devices"
|
||||
inkscape:version="0.46"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2994"
|
||||
height="48px"
|
||||
width="48px"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<defs
|
||||
id="defs3">
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective79" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient6719"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient6717"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" />
|
||||
<linearGradient
|
||||
id="linearGradient5048">
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" />
|
||||
<stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient6715"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" />
|
||||
<linearGradient
|
||||
id="linearGradient4762">
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0.12371134;"
|
||||
offset="0.0000000"
|
||||
id="stop4764" />
|
||||
<stop
|
||||
id="stop4768"
|
||||
offset="0.10344828"
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4766" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4741">
|
||||
<stop
|
||||
id="stop4743"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#dcdcda;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4745"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#bab9b7;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4733">
|
||||
<stop
|
||||
id="stop4735"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#000000;stop-opacity:0.23711340;" />
|
||||
<stop
|
||||
id="stop4737"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4698">
|
||||
<stop
|
||||
id="stop4700"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#fffffd;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#bbbbb9;stop-opacity:1.0000000;"
|
||||
offset="0.50000000"
|
||||
id="stop4706" />
|
||||
<stop
|
||||
id="stop4702"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#000000;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4688">
|
||||
<stop
|
||||
id="stop4690"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#666666;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
id="stop4692"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4680"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop4682"
|
||||
offset="0"
|
||||
style="stop-color:#f7f6f5;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop4684"
|
||||
offset="1"
|
||||
style="stop-color:#f7f6f5;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient4668">
|
||||
<stop
|
||||
id="stop4670"
|
||||
offset="0"
|
||||
style="stop-color:#8e8d87;stop-opacity:1;" />
|
||||
<stop
|
||||
style="stop-color:#cbc9c1;stop-opacity:1.0000000;"
|
||||
offset="0.27586207"
|
||||
id="stop4676" />
|
||||
<stop
|
||||
id="stop4672"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#8e8d87;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient259">
|
||||
<stop
|
||||
id="stop260"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#e0e0e0;stop-opacity:1.0000000;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:1.0000000;"
|
||||
offset="0.40546969"
|
||||
id="stop4886" />
|
||||
<stop
|
||||
style="stop-color:#cdcdcd;stop-opacity:1.0000000;"
|
||||
offset="0.53448278"
|
||||
id="stop4884" />
|
||||
<stop
|
||||
id="stop261"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#494949;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient15662">
|
||||
<stop
|
||||
id="stop15664"
|
||||
offset="0.0000000"
|
||||
style="stop-color:#ffffff;stop-opacity:0.0000000;" />
|
||||
<stop
|
||||
id="stop15666"
|
||||
offset="1.0000000"
|
||||
style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="2.1227016"
|
||||
fy="26.925594"
|
||||
fx="9.1295490"
|
||||
cy="26.925594"
|
||||
cx="9.1295490"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient1433"
|
||||
xlink:href="#linearGradient4698"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="72.064316"
|
||||
x2="9.9128132"
|
||||
y1="57.227650"
|
||||
x1="9.8698082"
|
||||
gradientTransform="matrix(2.772086,0.000000,0.000000,0.360739,0.618718,2.883883)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1447"
|
||||
xlink:href="#linearGradient4733"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="54.136139"
|
||||
x2="10.338233"
|
||||
y1="64.652260"
|
||||
x1="10.338233"
|
||||
gradientTransform="matrix(2.369844,0.000000,0.000000,0.421969,0.000000,2.000000)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1451"
|
||||
xlink:href="#linearGradient4680"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="62.282467"
|
||||
x2="9.7052784"
|
||||
y1="70.724976"
|
||||
x1="9.7316532"
|
||||
gradientTransform="matrix(2.369844,0.000000,0.000000,0.421969,0.000000,2.000000)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1453"
|
||||
xlink:href="#linearGradient4688"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="19.337463"
|
||||
x2="20.717800"
|
||||
y1="25.140253"
|
||||
x1="20.771229"
|
||||
gradientTransform="matrix(1.198769,0,0,0.853565,-0.143086,2.034513)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1456"
|
||||
xlink:href="#linearGradient15662"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="25.247311"
|
||||
x2="24.789707"
|
||||
y1="3.6785457"
|
||||
x1="25.056711"
|
||||
gradientTransform="matrix(0.94571,0,0,1.076032,5.016683e-2,4.095404)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1459"
|
||||
xlink:href="#linearGradient259"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="58.831264"
|
||||
x2="15.487823"
|
||||
y1="32.539238"
|
||||
x1="15.387969"
|
||||
gradientTransform="matrix(1.492569,0,0,0.668741,8.188072e-2,2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1464"
|
||||
xlink:href="#linearGradient4762"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="88.294930"
|
||||
x2="18.972126"
|
||||
y1="88.294930"
|
||||
x1="1.8456430"
|
||||
gradientTransform="matrix(2.291824,0,0,0.434269,8.855179e-2,2)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1468"
|
||||
xlink:href="#linearGradient4741"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="88.294933"
|
||||
x2="18.972126"
|
||||
y1="88.294933"
|
||||
x1="1.8456431"
|
||||
gradientTransform="matrix(2.30272,0,0,0.437918,0,0.584034)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1471"
|
||||
xlink:href="#linearGradient4668"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
inkscape:window-y="160"
|
||||
inkscape:window-x="491"
|
||||
inkscape:window-height="688"
|
||||
inkscape:window-width="872"
|
||||
inkscape:guide-bbox="true"
|
||||
showguides="true"
|
||||
inkscape:document-units="px"
|
||||
inkscape:grid-bbox="true"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:cy="4.6034265"
|
||||
inkscape:cx="29.124539"
|
||||
inkscape:zoom="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.090196078"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false" />
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<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>Printer</dc:title>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>printer</rdf:li>
|
||||
<rdf:li>local</rdf:li>
|
||||
<rdf:li>laser</rdf:li>
|
||||
<rdf:li>bubblejet</rdf:li>
|
||||
<rdf:li>inkjet</rdf:li>
|
||||
<rdf:li>print</rdf:li>
|
||||
<rdf:li>output</rdf:li>
|
||||
<rdf:li>cups</rdf:li>
|
||||
<rdf:li>lpd</rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
inkscape:label="Layer 1"
|
||||
id="layer1">
|
||||
<g
|
||||
transform="matrix(2.311016e-2,0,0,2.271533e-2,44.68502,39.36099)"
|
||||
id="g6707">
|
||||
<rect
|
||||
style="opacity:0.40206185;color:black;fill:url(#linearGradient6715);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect6709"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" />
|
||||
<path
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6717);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M -219.61876,-150.68038 C -219.61876,-150.68038 -219.61876,327.65041 -219.61876,327.65041 C -76.744594,328.55086 125.78146,220.48075 125.78138,88.454235 C 125.78138,-43.572302 -33.655436,-150.68036 -219.61876,-150.68038 z "
|
||||
id="path6711"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path6713"
|
||||
d="M -1559.2523,-150.68038 C -1559.2523,-150.68038 -1559.2523,327.65041 -1559.2523,327.65041 C -1702.1265,328.55086 -1904.6525,220.48075 -1904.6525,88.454235 C -1904.6525,-43.572302 -1745.2157,-150.68036 -1559.2523,-150.68038 z "
|
||||
style="opacity:0.40206185;color:black;fill:url(#radialGradient6719);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
<rect
|
||||
ry="1.7115477"
|
||||
rx="1.7115483"
|
||||
y="36.004189"
|
||||
x="4.75"
|
||||
height="6.4915943"
|
||||
width="38.4375"
|
||||
id="rect4652"
|
||||
style="fill:url(#linearGradient1471);fill-opacity:1;stroke:#595959;stroke-width:0.99999982;stroke-miterlimit:4;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cssssssssssss"
|
||||
id="rect4609"
|
||||
d="M 7.1308961,21.5 L 40.870615,21.5 C 41.255661,21.5 41.747648,21.788155 42.051049,22.223919 C 42.354451,22.659684 43.787518,24.83394 44.109448,25.297964 C 44.431378,25.761987 44.502397,26.201852 44.502397,26.774049 L 44.502397,38.850951 C 44.502397,39.764524 43.770402,40.5 42.861152,40.5 L 5.1403596,40.5 C 4.2311094,40.5 3.4991138,39.764524 3.4991138,38.850951 L 3.4991138,26.774049 C 3.4991138,26.280031 3.6002798,25.571641 3.9455202,25.120718 C 4.3811666,24.551713 5.5498664,22.57277 5.8581276,22.153118 C 6.1663887,21.733467 6.7324461,21.5 7.1308961,21.5 z "
|
||||
style="color:#000000;fill:url(#linearGradient1468);fill-opacity:1;fill-rule:nonzero;stroke:#676767;stroke-width:1.00000036;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
|
||||
<path
|
||||
sodipodi:nodetypes="cssssssss"
|
||||
id="path4718"
|
||||
d="M 7.4246212,21.975532 C 6.9218931,21.975532 6.3048776,22.053784 6.0546019,22.46703 L 4.1542523,25.604816 C 3.8721285,26.070648 4.1881986,26.868141 5.0873106,26.868141 L 42.730786,26.868141 C 44.040732,26.868141 43.950533,25.858073 43.663844,25.428039 L 41.896077,22.776389 C 41.575544,22.295589 41.459199,21.975532 40.65864,21.975532 L 7.4246212,21.975532 z "
|
||||
style="fill:#fbfbfb;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1464);stroke-width:0.94696712;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 7.60536,22.445756 L 40.432673,22.445756 C 40.798351,22.445756 41.265592,22.718629 41.553733,23.131283 C 41.841873,23.543938 42.849964,25.160945 43.155701,25.60036 C 43.461437,26.039775 43.59127,26.456312 43.59127,26.998164 L 43.59127,38.279261 C 43.59127,39.144385 43.457547,39.528356 42.594031,39.528356 L 5.5322268,39.528356 C 4.6687108,39.528356 4.4726047,39.144385 4.4726047,38.279261 L 4.4726047,26.998164 C 4.4726047,26.530345 4.6934498,25.859523 5.0213249,25.432514 C 5.435059,24.893685 6.1038541,23.461633 6.3966101,23.064237 C 6.6893662,22.666841 7.2269515,22.445756 7.60536,22.445756 z "
|
||||
id="path4750"
|
||||
sodipodi:nodetypes="cssssssssssss" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
id="rect15391"
|
||||
d="M 11.672962,4.4999475 L 36.325116,4.4999475 C 36.975881,4.4999475 37.49978,5.0100777 37.49978,5.6437371 L 37.49978,24.348176 L 10.498298,24.348176 L 10.498298,5.6437371 C 10.498298,5.0100777 11.022197,4.4999475 11.672962,4.4999475 z "
|
||||
style="color:#000000;fill:url(#linearGradient1459);fill-opacity:1;fill-rule:nonzero;stroke:#898989;stroke-width:1.00000036;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient1456);stroke-width:1.00000024;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
|
||||
id="rect15660"
|
||||
width="25.000576"
|
||||
height="18.836374"
|
||||
x="11.498513"
|
||||
y="5.4992466"
|
||||
ry="0.17677675"
|
||||
rx="0.17677672" />
|
||||
<rect
|
||||
ry="1.7115483"
|
||||
rx="1.7115483"
|
||||
y="27.375000"
|
||||
x="6.8750000"
|
||||
height="5.1875000"
|
||||
width="33.750000"
|
||||
id="rect4678"
|
||||
style="fill:url(#linearGradient1451);fill-opacity:1.0000000;stroke:url(#linearGradient1453);stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" />
|
||||
<path
|
||||
transform="translate(0.000000,2.000000)"
|
||||
d="M 10.871767 27.626486 A 1.2816310 1.2816310 0 1 1 8.3085046,27.626486 A 1.2816310 1.2816310 0 1 1 10.871767 27.626486 z"
|
||||
sodipodi:ry="1.2816310"
|
||||
sodipodi:rx="1.2816310"
|
||||
sodipodi:cy="27.626486"
|
||||
sodipodi:cx="9.5901356"
|
||||
id="path4696"
|
||||
style="fill:url(#radialGradient1433);fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
sodipodi:nodetypes="csscssssc"
|
||||
id="path4731"
|
||||
d="M 11.743718,25.416053 L 37.306218,25.478553 C 37.993716,25.480234 38.294038,25.107558 38.243718,24.478553 L 38.118718,22.916053 L 39.984835,22.916053 C 40.797335,22.916053 40.975035,23.108616 41.172335,23.478553 L 41.672335,24.416053 C 42.199130,25.403793 43.483508,26.390165 42.170495,26.390165 C 37.667784,26.390165 13.993718,26.041053 11.743718,25.416053 z "
|
||||
style="fill:url(#linearGradient1447);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;opacity:0.36571429" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999994px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="M 43.488808,26.5 L 4.5111805,26.5"
|
||||
id="path4760"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<g
|
||||
transform="translate(0.000000,2.000000)"
|
||||
style="opacity:0.43575415"
|
||||
id="g4849">
|
||||
<rect
|
||||
y="7.0000000"
|
||||
x="14.000000"
|
||||
height="1.0000000"
|
||||
width="19.000000"
|
||||
id="rect4833"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4835"
|
||||
width="19.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="9.0000000" />
|
||||
<rect
|
||||
y="11.000000"
|
||||
x="14.000000"
|
||||
height="1.0000000"
|
||||
width="19.000000"
|
||||
id="rect4837"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4839"
|
||||
width="11.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="13.000000" />
|
||||
<rect
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4843"
|
||||
width="19.000000"
|
||||
height="1.0000000"
|
||||
x="14.000000"
|
||||
y="17.000000" />
|
||||
<rect
|
||||
y="19.000000"
|
||||
x="14.000000"
|
||||
height="1.0000000"
|
||||
width="19.000000"
|
||||
id="rect4845"
|
||||
style="color:#000000;fill:#000000;fill-opacity:0.29239765;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 22 KiB |
@@ -1,797 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<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="48"
|
||||
height="48"
|
||||
overflow="visible"
|
||||
enable-background="new 0 0 128 129.396"
|
||||
xml:space="preserve"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="go-home.svg"
|
||||
version="1.0"
|
||||
inkscape:export-filename="/home/tigert/My Downloads/go-home.png"
|
||||
inkscape:export-xdpi="90.000000"
|
||||
inkscape:export-ydpi="90.000000"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||
id="metadata367"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz</dc:source><dc:subject><rdf:Bag><rdf:li>home</rdf:li><rdf:li>return</rdf:li><rdf:li>go</rdf:li><rdf:li>default</rdf:li><rdf:li>user</rdf:li><rdf:li>directory</rdf:li></rdf:Bag></dc:subject><dc:contributor><cc:Agent><dc:title>Tuomas Kuosmanen</dc:title></cc:Agent></dc:contributor></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><defs
|
||||
id="defs365"><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective92" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060"><stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" /><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" /></linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><linearGradient
|
||||
id="linearGradient5048"><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" /><stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" /><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><linearGradient
|
||||
id="linearGradient2406"><stop
|
||||
style="stop-color:#7c7e79;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2408" /><stop
|
||||
id="stop2414"
|
||||
offset="0.1724138"
|
||||
style="stop-color:#848681;stop-opacity:1;" /><stop
|
||||
style="stop-color:#898c86;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2410" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2390"><stop
|
||||
style="stop-color:#919191;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2392" /><stop
|
||||
style="stop-color:#919191;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2394" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2378"><stop
|
||||
style="stop-color:#575757;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2380" /><stop
|
||||
style="stop-color:#575757;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2382" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2368"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2370" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2372" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2349"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2351" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2353" /></linearGradient><linearGradient
|
||||
id="linearGradient2341"><stop
|
||||
id="stop2343"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" /><stop
|
||||
id="stop2345"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" /></linearGradient><linearGradient
|
||||
id="linearGradient2329"><stop
|
||||
style="stop-color:#000000;stop-opacity:0.18556701;"
|
||||
offset="0"
|
||||
id="stop2331" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2333" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2319"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2321" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2323" /></linearGradient><linearGradient
|
||||
id="linearGradient2307"><stop
|
||||
style="stop-color:#edd400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2309" /><stop
|
||||
style="stop-color:#998800;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2311" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2299"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2301" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2303" /></linearGradient><linearGradient
|
||||
id="XMLID_2_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="80.223602"
|
||||
y1="117.5205"
|
||||
x2="48.046001"
|
||||
y2="59.7995"
|
||||
gradientTransform="matrix(0.314683,0.000000,0.000000,0.314683,4.128264,3.742874)">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="stop17" />
|
||||
<stop
|
||||
offset="0.9831"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="stop19" />
|
||||
<midPointStop
|
||||
offset="0"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="midPointStop48" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="midPointStop50" />
|
||||
<midPointStop
|
||||
offset="0.9831"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop52" />
|
||||
</linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#XMLID_2_"
|
||||
id="linearGradient1514"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.336922,0,0,0.166888,73.490762,15.46151)"
|
||||
x1="52.006104"
|
||||
y1="166.1331"
|
||||
x2="14.049017"
|
||||
y2="-42.218513" /><linearGradient
|
||||
id="XMLID_39_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="64.387703"
|
||||
y1="65.124001"
|
||||
x2="64.387703"
|
||||
y2="35.569"
|
||||
gradientTransform="matrix(0.354101,0,0,0.354101,57.146561,-0.08364921)">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="stop336" />
|
||||
<stop
|
||||
offset="0.8539"
|
||||
style="stop-color:#FF6200"
|
||||
id="stop338" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#F25D00"
|
||||
id="stop340" />
|
||||
<midPointStop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop335" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop337" />
|
||||
<midPointStop
|
||||
offset="0.8539"
|
||||
style="stop-color:#FF6200"
|
||||
id="midPointStop339" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#FF6200"
|
||||
id="midPointStop341" />
|
||||
<midPointStop
|
||||
offset="1"
|
||||
style="stop-color:#F25D00"
|
||||
id="midPointStop343" />
|
||||
</linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2299"
|
||||
id="radialGradient2305"
|
||||
cx="7.5326638"
|
||||
cy="24.202574"
|
||||
fx="7.5326638"
|
||||
fy="24.202574"
|
||||
r="8.2452128"
|
||||
gradientTransform="matrix(4.100086,0,0,4.201322,30.092822,-78.53967)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2307"
|
||||
id="radialGradient2313"
|
||||
cx="19.985598"
|
||||
cy="36.77816"
|
||||
fx="19.985598"
|
||||
fy="36.77816"
|
||||
r="1.0821035"
|
||||
gradientTransform="matrix(1.125263,0,0,0.982744,52.079204,0.565787)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2319"
|
||||
id="radialGradient2325"
|
||||
cx="20.443665"
|
||||
cy="37.425829"
|
||||
fx="20.443665"
|
||||
fy="37.425829"
|
||||
r="1.0821035"
|
||||
gradientTransform="matrix(1.125263,0,0,0.982744,52.079204,0.731106)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2329"
|
||||
id="linearGradient2335"
|
||||
x1="17.602522"
|
||||
y1="26.057423"
|
||||
x2="17.682528"
|
||||
y2="32.654099"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.898789,0,0,1.071914,55.985907,-2.080838)" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2341"
|
||||
id="radialGradient2339"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(4.100086,0,0,-4.201322,50.309773,105.3535)"
|
||||
cx="11.68129"
|
||||
cy="19.554111"
|
||||
fx="11.68129"
|
||||
fy="19.554111"
|
||||
r="8.2452126" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2349"
|
||||
id="radialGradient2355"
|
||||
cx="24.023088"
|
||||
cy="40.56913"
|
||||
fx="24.023088"
|
||||
fy="40.56913"
|
||||
r="16.28684"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.431250,1.157278e-15,23.07369)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2368"
|
||||
id="radialGradient2374"
|
||||
cx="29.913452"
|
||||
cy="30.442923"
|
||||
fx="29.913452"
|
||||
fy="30.442923"
|
||||
r="4.0018832"
|
||||
gradientTransform="matrix(3.751495,0,0,3.147818,-26.501188,-65.70704)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2378"
|
||||
id="radialGradient2384"
|
||||
cx="24.195112"
|
||||
cy="10.577631"
|
||||
fx="24.195112"
|
||||
fy="10.577631"
|
||||
r="15.242914"
|
||||
gradientTransform="matrix(1.125263,-3.585417e-8,4.269819e-8,1.340059,52.501178,1.355395)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2390"
|
||||
id="linearGradient2396"
|
||||
x1="30.603519"
|
||||
y1="37.337803"
|
||||
x2="30.603519"
|
||||
y2="36.112415"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.263867,0,0,0.859794,-6.499556,8.390924)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2406"
|
||||
id="linearGradient2412"
|
||||
x1="17.850183"
|
||||
y1="28.939463"
|
||||
x2="19.040216"
|
||||
y2="41.03223"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.888785,0,0,1.08932,57.918872,-1.524336)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient4689"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4691"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4693"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /></defs><sodipodi:namedview
|
||||
inkscape:cy="7.1533137"
|
||||
inkscape:cx="51.448666"
|
||||
inkscape:zoom="4"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.21568627"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-x="1431"
|
||||
inkscape:window-y="24"
|
||||
inkscape:current-layer="svg2"
|
||||
fill="#555753"
|
||||
showgrid="false"
|
||||
stroke="#a40000"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:window-maximized="1"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3818" /></sodipodi:namedview>
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(0.02158196,0,0,0.01859457,98.630392,41.63767)"><rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /><path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0" /></g><path
|
||||
style="color:#000000;fill:url(#linearGradient1514);fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:1.0000006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 77.127458,8.1833733 5.957459,0 c 0.839732,0 13.886475,15.4353277 13.886475,16.3406587 l -0.443521,18.496745 c 0,0.905333 -0.67603,1.634177 -1.515762,1.634177 l -31.457277,0 c -0.839733,0 -1.515763,-0.728844 -1.515763,-1.634177 l 0.05648,-18.496745 c 0,-0.905331 14.192179,-16.3406587 15.031911,-16.3406587 z"
|
||||
id="rect1512"
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:none"
|
||||
id="path5"
|
||||
d="m 102.47146,45.735573 -45.324901,0 0,-45.32489746 45.324901,0 0,45.32489746 z"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:url(#linearGradient2335);fill-opacity:1;fill-rule:evenodd"
|
||||
id="path2327"
|
||||
d="m 78.507882,29 -0.04574,15.090942 -11.842791,0 L 66.507882,29 l 12,0 z"
|
||||
clip-rule="evenodd"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
id="path2357"
|
||||
d="m 77.288341,9.405584 5.559097,0 c 0.783582,0 13.000869,14.399588 13.000869,15.244172 l -0.347158,18.212311 c 0,0.459259 -0.143737,0.653465 -0.512375,0.653465 l -31.387202,0.01428 c -0.368638,0 -0.583964,-0.07992 -0.583964,-0.45355 L 63.23295,24.649756 c 0,-0.844584 13.271812,-15.244172 14.055391,-15.244172 z"
|
||||
style="opacity:0.3125;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 62.715412,27.943053 -0.05426,2.595194 18.368164,-13.179254 15.286395,11.154428 0.07131,-0.311714 L 80.016568,12.297576 62.715412,27.943053 z"
|
||||
id="path23"
|
||||
style="opacity:0.2;fill:url(#radialGradient2384);fill-opacity:1;fill-rule:evenodd"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 77.507882,30 0,14.090942 -9.811029,0 L 67.507882,30 l 10,0 z"
|
||||
id="path188"
|
||||
style="fill:url(#linearGradient2412);fill-opacity:1;fill-rule:evenodd"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.40909089;fill:url(#radialGradient2325);fill-opacity:1;fill-rule:evenodd"
|
||||
id="path2315"
|
||||
d="m 75.084738,36.44767 c 0.67279,0 1.216616,0.474605 1.216616,1.058507 0,0.589811 -0.543826,1.068355 -1.216616,1.068355 -0.672272,0 -1.218686,-0.478544 -1.218686,-1.068355 5.15e-4,-0.583902 0.546414,-1.058507 1.218686,-1.058507 z"
|
||||
clip-rule="evenodd"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 74.970196,35.932229 c 0.672789,0 1.216615,0.474605 1.216615,1.058507 0,0.589809 -0.543826,1.068353 -1.216615,1.068353 -0.672273,0 -1.218687,-0.478544 -1.218687,-1.068353 5.15e-4,-0.583902 0.546414,-1.058507 1.218687,-1.058507 z"
|
||||
id="path217"
|
||||
style="fill:url(#radialGradient2313);fill-opacity:1;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 79.95563,11.559337 18.92706,17.169868 0.494679,0.391991 0.403676,-0.171385 -0.37287,-0.761673 -0.277614,-0.223436 -19.174931,-15.572306 -19.389515,15.743335 -0.237602,0.14412 -0.21671,0.706786 0.43342,0.129248 0.384554,-0.308423 19.025853,-17.248125 z"
|
||||
id="path342"
|
||||
style="fill:url(#XMLID_39_)"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:#ef2929;stroke:#a40000"
|
||||
id="path362"
|
||||
d="m 79.83805,2.2713382 -21.881738,18.1013368 -0.624729,7.165928 1.999936,2.064323 c 0,0 20.407381,-17.157285 20.624093,-17.327963 l 19.63254,17.54326 1.898428,-2.323997 L 99.870785,20.382852 79.955612,2.1668788 79.83805,2.2713382 z"
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:0.40909089;color:#000000;fill:url(#radialGradient2305);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 58.349227,20.613129 58.057672,27.236494 79.877101,8.980075 79.806773,3.0867443 58.349227,20.613129 z"
|
||||
id="path1536"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2337"
|
||||
d="M 79.991645,8.7509884 80.091105,2.9098867 99.420068,20.56184 100.91188,27.062652 79.991645,8.7509884 z"
|
||||
style="opacity:0.13636367;color:#000000;fill:url(#radialGradient2339);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.31818183;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 82.61011,27.719824 9.039995,0 c 0.770595,0 1.390967,0.62037 1.390967,1.390967 l -0.008,9.079221 c 0,0.770596 -0.596322,1.265969 -1.366918,1.265969 l -9.056083,0 c -0.770597,0 -1.390967,-0.620373 -1.390967,-1.390969 l 0,-8.954221 c 0,-0.770597 0.62037,-1.390967 1.390967,-1.390967 z"
|
||||
id="rect2361"
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0" /><rect
|
||||
style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect3263"
|
||||
width="10.001333"
|
||||
height="9.9624557"
|
||||
x="82.015648"
|
||||
y="28.514256"
|
||||
rx="0.38128215"
|
||||
ry="0.38128215" /><path
|
||||
style="opacity:0.39772728;color:#000000;fill:url(#radialGradient2374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999958;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 82.615,34.408261 c 3.617983,0.331177 5.527724,-1.445704 8.868152,-1.55274 L 91.507882,29.00603 82.59627,29 82.615,34.408261 z"
|
||||
id="rect2363"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><g
|
||||
transform="translate(-4.065864,2.0108349)"
|
||||
id="g4739"><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4741"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)" /><path
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4743"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /></g><g
|
||||
id="g4733"
|
||||
transform="translate(6.8942911,5.0160386)"><path
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4735"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4737"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)" /></g><g
|
||||
transform="translate(0.88388347,7.0268736)"
|
||||
id="g4727"><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4729"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)" /><path
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4731"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /></g><g
|
||||
id="g4723"
|
||||
transform="translate(-10.341437,5.9662134)"><path
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4719"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4721"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)" /></g><g
|
||||
id="g4695"
|
||||
transform="matrix(1.1326331,0,0,0.44340824,-4.4233826,2.4215088)"><rect
|
||||
style="fill:#8a8a8a;fill-opacity:1;stroke:none"
|
||||
id="rect4697"
|
||||
width="29.256544"
|
||||
height="18.119614"
|
||||
x="10.297243"
|
||||
y="27.449707"
|
||||
rx="1.7190553"
|
||||
ry="4.3911204" /><g
|
||||
id="g4699"><g
|
||||
id="g4701"><rect
|
||||
rx="1.7051755"
|
||||
y="27.517153"
|
||||
x="10.510214"
|
||||
height="17.982044"
|
||||
width="29.020325"
|
||||
id="rect4703"
|
||||
style="fill:none;stroke:#646464;stroke-width:1.41005611;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
ry="4.3556657" /></g><rect
|
||||
rx="0.88575488"
|
||||
y="29.624025"
|
||||
x="11.337327"
|
||||
height="13.83156"
|
||||
width="27.319036"
|
||||
id="rect4705"
|
||||
style="fill:none;stroke:#b3b3b3;stroke-width:1.40048993;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
ry="2.2625546" /></g></g><g
|
||||
transform="matrix(0.01936185,0,0,0.01859457,41.413021,40.621203)"
|
||||
id="g4681"
|
||||
style="display:inline"><rect
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient4689);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4683"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4691);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
|
||||
id="path4685"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path4687"
|
||||
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4693);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /></g><g
|
||||
id="g4672"
|
||||
transform="translate(-1.0606602,-2.9168155)"><rect
|
||||
ry="1.9470588"
|
||||
rx="1.9470588"
|
||||
y="27.449707"
|
||||
x="10.297243"
|
||||
height="18.119614"
|
||||
width="29.256544"
|
||||
id="rect4658"
|
||||
style="fill:#dddddd;fill-opacity:1;stroke:none" /><g
|
||||
id="g4667"><g
|
||||
id="g4664"><rect
|
||||
ry="1.9313381"
|
||||
style="fill:none;stroke:#646464;stroke-width:0.99927008;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4660"
|
||||
width="29.020325"
|
||||
height="17.982044"
|
||||
x="10.510214"
|
||||
y="27.517153"
|
||||
rx="1.9313381" /></g><rect
|
||||
ry="1.0032353"
|
||||
style="fill:none;stroke:#f6f6f6;stroke-width:0.99249077;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4662"
|
||||
width="26.967867"
|
||||
height="16.005489"
|
||||
x="11.532422"
|
||||
y="28.489801"
|
||||
rx="1.0032353" /></g></g><path
|
||||
transform="matrix(1.0023678,0,0,0.95596394,-1.1198557,-0.0273148)"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
sodipodi:ry="10"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:cx="25"
|
||||
id="path4679"
|
||||
style="fill:#b8b8b8;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#b8b8b8;fill-opacity:1;fill-rule:evenodd;stroke:#646464;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3820"
|
||||
sodipodi:cx="25"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:ry="10"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
transform="matrix(0.94933484,0,0,0.95596394,0.2059695,-1.4857225)" /><path
|
||||
transform="matrix(0.6928006,0,0,0.69727163,6.5972285,8.0344445)"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
sodipodi:ry="10"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:cx="25"
|
||||
id="path4590"
|
||||
style="fill:#f4f4f4;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
sodipodi:type="arc" /><g
|
||||
id="g4644"
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,29.591021,-10.924363)"><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4646"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.638252"
|
||||
y="26.853086" /><rect
|
||||
y="37.990021"
|
||||
x="24.660349"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4648"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /></g><g
|
||||
id="g4600"
|
||||
style="fill:#a2a2a2;fill-opacity:1"
|
||||
transform="translate(-0.99436894,-2.3643883)"><rect
|
||||
style="fill:#a2a2a2;fill-opacity:1;stroke:none"
|
||||
id="rect4602"
|
||||
width="1"
|
||||
height="5.9375"
|
||||
x="40.742825"
|
||||
y="-1.6325631"
|
||||
transform="matrix(0.67898035,0.73415645,-0.73415645,0.67898035,0,0)" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#a2a2a2;fill-opacity:1;stroke:none"
|
||||
id="path4604"
|
||||
sodipodi:cx="25.03125"
|
||||
sodipodi:cy="33.03125"
|
||||
sodipodi:rx="1.03125"
|
||||
sodipodi:ry="0.96875"
|
||||
d="M 26.0625,33.03125 C 26.0625,33.566276 25.600794,34 25.03125,34 24.461706,34 24,33.566276 24,33.03125 c 0,-0.535026 0.461706,-0.96875 1.03125,-0.96875 0.569544,0 1.03125,0.433724 1.03125,0.96875 z"
|
||||
transform="matrix(0.95714504,0,0,1.0228099,1.028519,-0.77553647)" /></g><g
|
||||
id="g4596"
|
||||
transform="translate(-1.0606602,-2.9168155)"><rect
|
||||
transform="matrix(0.67898035,0.73415645,-0.73415645,0.67898035,0,0)"
|
||||
y="-1.6325631"
|
||||
x="40.742825"
|
||||
height="5.9375"
|
||||
width="1"
|
||||
id="rect4592"
|
||||
style="fill:#ff2121;fill-opacity:1;stroke:none" /><path
|
||||
transform="matrix(0.95714504,0,0,1.0228099,1.028519,-0.77553647)"
|
||||
d="M 26.0625,33.03125 C 26.0625,33.566276 25.600794,34 25.03125,34 24.461706,34 24,33.566276 24,33.03125 c 0,-0.535026 0.461706,-0.96875 1.03125,-0.96875 0.569544,0 1.03125,0.433724 1.03125,0.96875 z"
|
||||
sodipodi:ry="0.96875"
|
||||
sodipodi:rx="1.03125"
|
||||
sodipodi:cy="33.03125"
|
||||
sodipodi:cx="25.03125"
|
||||
id="path4594"
|
||||
style="fill:#ff2121;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" /></g><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#646464;stroke-width:1.37966764;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4608"
|
||||
sodipodi:cx="25"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:ry="10"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
transform="matrix(0.74693846,0,0,0.74919978,5.2548304,5.3595919)" /><g
|
||||
id="g4628"
|
||||
transform="translate(-1.0606602,-2.9168155)"><rect
|
||||
y="26.853086"
|
||||
x="24.638252"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4624"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4626"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.660349"
|
||||
y="37.990021" /></g><g
|
||||
id="g4632"
|
||||
transform="matrix(0,1,-1,0,56.927223,5.087457)"><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4634"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.638252"
|
||||
y="26.853086" /><rect
|
||||
y="37.990021"
|
||||
x="24.660349"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4636"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /></g><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4640"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="3.9938221"
|
||||
y="-44.334118"
|
||||
transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)" /><rect
|
||||
y="-33.197182"
|
||||
x="4.0159187"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4642"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)" /><g
|
||||
transform="matrix(1.2021267,0,0,0.11694557,-6.1400423,11.401153)"
|
||||
id="g4707"><rect
|
||||
ry="16.649275"
|
||||
rx="1.6196786"
|
||||
y="27.449707"
|
||||
x="10.297243"
|
||||
height="18.119614"
|
||||
width="29.256544"
|
||||
id="rect4709"
|
||||
style="fill:#d4d4d4;fill-opacity:1;stroke:none" /><g
|
||||
id="g4711"><g
|
||||
id="g4713"><rect
|
||||
ry="16.514845"
|
||||
style="fill:none;stroke:#646464;stroke-width:2.66511464;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4715"
|
||||
width="29.020325"
|
||||
height="17.982044"
|
||||
x="10.510214"
|
||||
y="27.517153"
|
||||
rx="1" /></g></g></g></svg>
|
||||
|
Before Width: | Height: | Size: 34 KiB |
@@ -1,984 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<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="48"
|
||||
height="48"
|
||||
overflow="visible"
|
||||
enable-background="new 0 0 128 129.396"
|
||||
xml:space="preserve"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="scale.svg"
|
||||
version="1.0"
|
||||
inkscape:export-filename="/home/fva/Code/openerp/src/addons/trunk-pos-fva/point_of_sale/static/src/img/scale.png"
|
||||
inkscape:export-xdpi="600"
|
||||
inkscape:export-ydpi="600"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
|
||||
id="metadata367"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:source>http://jimmac.musichall.cz</dc:source><dc:subject><rdf:Bag><rdf:li>home</rdf:li><rdf:li>return</rdf:li><rdf:li>go</rdf:li><rdf:li>default</rdf:li><rdf:li>user</rdf:li><rdf:li>directory</rdf:li></rdf:Bag></dc:subject><dc:contributor><cc:Agent><dc:title>Tuomas Kuosmanen</dc:title></cc:Agent></dc:contributor></cc:Work><cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata><defs
|
||||
id="defs365"><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient4977"><stop
|
||||
style="stop-color:#ff0000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop4979" /><stop
|
||||
style="stop-color:#ff0000;stop-opacity:0"
|
||||
offset="1"
|
||||
id="stop4981" /></linearGradient><inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 24 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="48 : 24 : 1"
|
||||
inkscape:persp3d-origin="24 : 16 : 1"
|
||||
id="perspective92" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient5060"><stop
|
||||
style="stop-color:black;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop5062" /><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5064" /></linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient5029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><linearGradient
|
||||
id="linearGradient5048"><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop5050" /><stop
|
||||
id="stop5056"
|
||||
offset="0.5"
|
||||
style="stop-color:black;stop-opacity:1;" /><stop
|
||||
style="stop-color:black;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop5052" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient5027"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><linearGradient
|
||||
id="linearGradient2406"><stop
|
||||
style="stop-color:#7c7e79;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2408" /><stop
|
||||
id="stop2414"
|
||||
offset="0.1724138"
|
||||
style="stop-color:#848681;stop-opacity:1;" /><stop
|
||||
style="stop-color:#898c86;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2410" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2390"><stop
|
||||
style="stop-color:#919191;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2392" /><stop
|
||||
style="stop-color:#919191;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2394" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2378"><stop
|
||||
style="stop-color:#575757;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2380" /><stop
|
||||
style="stop-color:#575757;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2382" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2368"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2370" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2372" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2349"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2351" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2353" /></linearGradient><linearGradient
|
||||
id="linearGradient2341"><stop
|
||||
id="stop2343"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" /><stop
|
||||
id="stop2345"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" /></linearGradient><linearGradient
|
||||
id="linearGradient2329"><stop
|
||||
style="stop-color:#000000;stop-opacity:0.18556701;"
|
||||
offset="0"
|
||||
id="stop2331" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2333" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2319"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2321" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2323" /></linearGradient><linearGradient
|
||||
id="linearGradient2307"><stop
|
||||
style="stop-color:#edd400;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2309" /><stop
|
||||
style="stop-color:#998800;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2311" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient2299"><stop
|
||||
style="stop-color:#ffffff;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2301" /><stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop2303" /></linearGradient><linearGradient
|
||||
id="XMLID_2_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="80.223602"
|
||||
y1="117.5205"
|
||||
x2="48.046001"
|
||||
y2="59.7995"
|
||||
gradientTransform="matrix(0.314683,0.000000,0.000000,0.314683,4.128264,3.742874)">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="stop17" />
|
||||
<stop
|
||||
offset="0.9831"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="stop19" />
|
||||
<midPointStop
|
||||
offset="0"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="midPointStop48" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#CCCCCC"
|
||||
id="midPointStop50" />
|
||||
<midPointStop
|
||||
offset="0.9831"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop52" />
|
||||
</linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#XMLID_2_"
|
||||
id="linearGradient1514"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.336922,0,0,0.166888,143.49433,15.46151)"
|
||||
x1="52.006104"
|
||||
y1="166.1331"
|
||||
x2="14.049017"
|
||||
y2="-42.218513" /><linearGradient
|
||||
id="XMLID_39_"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="64.387703"
|
||||
y1="65.124001"
|
||||
x2="64.387703"
|
||||
y2="35.569"
|
||||
gradientTransform="matrix(0.354101,0,0,0.354101,127.15013,-0.08364921)">
|
||||
<stop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="stop336" />
|
||||
<stop
|
||||
offset="0.8539"
|
||||
style="stop-color:#FF6200"
|
||||
id="stop338" />
|
||||
<stop
|
||||
offset="1"
|
||||
style="stop-color:#F25D00"
|
||||
id="stop340" />
|
||||
<midPointStop
|
||||
offset="0"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop335" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#FFFFFF"
|
||||
id="midPointStop337" />
|
||||
<midPointStop
|
||||
offset="0.8539"
|
||||
style="stop-color:#FF6200"
|
||||
id="midPointStop339" />
|
||||
<midPointStop
|
||||
offset="0.5"
|
||||
style="stop-color:#FF6200"
|
||||
id="midPointStop341" />
|
||||
<midPointStop
|
||||
offset="1"
|
||||
style="stop-color:#F25D00"
|
||||
id="midPointStop343" />
|
||||
</linearGradient><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2299"
|
||||
id="radialGradient2305"
|
||||
cx="7.5326638"
|
||||
cy="24.202574"
|
||||
fx="7.5326638"
|
||||
fy="24.202574"
|
||||
r="8.2452128"
|
||||
gradientTransform="matrix(4.100086,0,0,4.201322,100.09639,-78.53967)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2307"
|
||||
id="radialGradient2313"
|
||||
cx="19.985598"
|
||||
cy="36.77816"
|
||||
fx="19.985598"
|
||||
fy="36.77816"
|
||||
r="1.0821035"
|
||||
gradientTransform="matrix(1.125263,0,0,0.982744,122.08278,0.565787)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2319"
|
||||
id="radialGradient2325"
|
||||
cx="20.443665"
|
||||
cy="37.425829"
|
||||
fx="20.443665"
|
||||
fy="37.425829"
|
||||
r="1.0821035"
|
||||
gradientTransform="matrix(1.125263,0,0,0.982744,122.08278,0.731106)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2329"
|
||||
id="linearGradient2335"
|
||||
x1="17.602522"
|
||||
y1="26.057423"
|
||||
x2="17.682528"
|
||||
y2="32.654099"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.898789,0,0,1.071914,125.98948,-2.080838)" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2341"
|
||||
id="radialGradient2339"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(4.100086,0,0,-4.201322,120.31334,105.3535)"
|
||||
cx="11.68129"
|
||||
cy="19.554111"
|
||||
fx="11.68129"
|
||||
fy="19.554111"
|
||||
r="8.2452126" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2349"
|
||||
id="radialGradient2355"
|
||||
cx="24.023088"
|
||||
cy="40.56913"
|
||||
fx="24.023088"
|
||||
fy="40.56913"
|
||||
r="16.28684"
|
||||
gradientTransform="matrix(1.000000,0.000000,0.000000,0.431250,1.157278e-15,23.07369)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2368"
|
||||
id="radialGradient2374"
|
||||
cx="29.913452"
|
||||
cy="30.442923"
|
||||
fx="29.913452"
|
||||
fy="30.442923"
|
||||
r="4.0018832"
|
||||
gradientTransform="matrix(3.751495,0,0,3.147818,43.502383,-65.70704)"
|
||||
gradientUnits="userSpaceOnUse" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2378"
|
||||
id="radialGradient2384"
|
||||
cx="24.195112"
|
||||
cy="10.577631"
|
||||
fx="24.195112"
|
||||
fy="10.577631"
|
||||
r="15.242914"
|
||||
gradientTransform="matrix(1.125263,-3.585417e-8,4.269819e-8,1.340059,122.50475,1.355395)"
|
||||
gradientUnits="userSpaceOnUse" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2390"
|
||||
id="linearGradient2396"
|
||||
x1="30.603519"
|
||||
y1="37.337803"
|
||||
x2="30.603519"
|
||||
y2="36.112415"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.263867,0,0,0.859794,-6.499556,8.390924)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2406"
|
||||
id="linearGradient2412"
|
||||
x1="17.850183"
|
||||
y1="28.939463"
|
||||
x2="19.040216"
|
||||
y2="41.03223"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.888785,0,0,1.08932,127.92244,-1.524336)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient4689"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4691"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4693"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5048"
|
||||
id="linearGradient4894"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
|
||||
x1="302.85715"
|
||||
y1="366.64789"
|
||||
x2="302.85715"
|
||||
y2="609.50507" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4896"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient5060"
|
||||
id="radialGradient4898"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
|
||||
cx="605.71429"
|
||||
cy="486.64789"
|
||||
fx="605.71429"
|
||||
fy="486.64789"
|
||||
r="117.14286" /><filter
|
||||
inkscape:collect="always"
|
||||
id="filter4971"
|
||||
x="-0.064853556"
|
||||
width="1.1297071"
|
||||
y="-1.9456067"
|
||||
height="4.8912134"><feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.81066946"
|
||||
id="feGaussianBlur4973" /></filter><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient4977"
|
||||
id="linearGradient4983"
|
||||
x1="23.6875"
|
||||
y1="32"
|
||||
x2="23.75"
|
||||
y2="45.25"
|
||||
gradientUnits="userSpaceOnUse" /></defs><sodipodi:namedview
|
||||
inkscape:cy="-2.746436"
|
||||
inkscape:cx="31.130127"
|
||||
inkscape:zoom="8"
|
||||
inkscape:window-height="1176"
|
||||
inkscape:window-width="1855"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="0.21568627"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base"
|
||||
inkscape:showpageshadow="false"
|
||||
inkscape:window-x="65"
|
||||
inkscape:window-y="24"
|
||||
inkscape:current-layer="svg2"
|
||||
fill="#555753"
|
||||
showgrid="true"
|
||||
stroke="#a40000"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:window-maximized="1"><inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3818" /></sodipodi:namedview>
|
||||
<g
|
||||
style="display:inline"
|
||||
id="g5022"
|
||||
transform="matrix(0.02158196,0,0,0.01859457,168.63396,41.63767)"><rect
|
||||
y="-150.69685"
|
||||
x="-1559.2523"
|
||||
height="478.35718"
|
||||
width="1339.6335"
|
||||
id="rect4173"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /><path
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path5058"
|
||||
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
|
||||
id="path5018"
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0" /></g><path
|
||||
style="color:#000000;fill:url(#linearGradient1514);fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:1.0000006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 147.13103,8.1833733 5.95746,0 c 0.83973,0 13.88647,15.4353277 13.88647,16.3406587 l -0.44352,18.496745 c 0,0.905333 -0.67603,1.634177 -1.51576,1.634177 l -31.45728,0 c -0.83973,0 -1.51576,-0.728844 -1.51576,-1.634177 l 0.0565,-18.496745 c 0,-0.905331 14.19218,-16.3406587 15.03191,-16.3406587 z"
|
||||
id="rect1512"
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:none"
|
||||
id="path5"
|
||||
d="m 172.47503,45.735573 -45.3249,0 0,-45.32489746 45.3249,0 0,45.32489746 z"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:url(#linearGradient2335);fill-opacity:1;fill-rule:evenodd"
|
||||
id="path2327"
|
||||
d="m 148.51145,29 -0.0457,15.090942 -11.84279,0 L 136.51145,29 l 12,0 z"
|
||||
clip-rule="evenodd"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
id="path2357"
|
||||
d="m 147.29191,9.405584 5.5591,0 c 0.78358,0 13.00087,14.399588 13.00087,15.244172 l -0.34716,18.212311 c 0,0.459259 -0.14374,0.653465 -0.51237,0.653465 l -31.38721,0.01428 c -0.36863,0 -0.58396,-0.07992 -0.58396,-0.45355 l 0.21534,-18.426506 c 0,-0.844584 13.27181,-15.244172 14.05539,-15.244172 z"
|
||||
style="opacity:0.3125;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 132.71898,27.943053 -0.0543,2.595194 18.36817,-13.179254 15.28639,11.154428 0.0713,-0.311714 -16.37045,-15.904131 -17.30116,15.645477 z"
|
||||
id="path23"
|
||||
style="opacity:0.2;fill:url(#radialGradient2384);fill-opacity:1;fill-rule:evenodd"
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 147.51145,30 0,14.090942 -9.81103,0 L 137.51145,30 l 10,0 z"
|
||||
id="path188"
|
||||
style="fill:url(#linearGradient2412);fill-opacity:1;fill-rule:evenodd"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.40909089;fill:url(#radialGradient2325);fill-opacity:1;fill-rule:evenodd"
|
||||
id="path2315"
|
||||
d="m 145.08831,36.44767 c 0.67279,0 1.21662,0.474605 1.21662,1.058507 0,0.589811 -0.54383,1.068355 -1.21662,1.068355 -0.67227,0 -1.21869,-0.478544 -1.21869,-1.068355 5.2e-4,-0.583902 0.54642,-1.058507 1.21869,-1.058507 z"
|
||||
clip-rule="evenodd"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
clip-rule="evenodd"
|
||||
d="m 144.97377,35.932229 c 0.67279,0 1.21661,0.474605 1.21661,1.058507 0,0.589809 -0.54382,1.068353 -1.21661,1.068353 -0.67228,0 -1.21869,-0.478544 -1.21869,-1.068353 5.2e-4,-0.583902 0.54641,-1.058507 1.21869,-1.058507 z"
|
||||
id="path217"
|
||||
style="fill:url(#radialGradient2313);fill-opacity:1;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="m 149.9592,11.559337 18.92706,17.169868 0.49468,0.391991 0.40368,-0.171385 -0.37287,-0.761673 -0.27762,-0.223436 -19.17493,-15.572306 -19.38951,15.743335 -0.23761,0.14412 -0.21671,0.706786 0.43342,0.129248 0.38456,-0.308423 19.02585,-17.248125 z"
|
||||
id="path342"
|
||||
style="fill:url(#XMLID_39_)"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="fill:#ef2929;stroke:#a40000"
|
||||
id="path362"
|
||||
d="m 149.84162,2.2713382 -21.88174,18.1013368 -0.62473,7.165928 1.99994,2.064323 c 0,0 20.40738,-17.157285 20.62409,-17.327963 l 19.63254,17.54326 1.89843,-2.323997 -1.61579,-7.111374 -19.91518,-18.2159732 -0.11756,0.1044594 z"
|
||||
sodipodi:nodetypes="cccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="opacity:0.40909089;color:#000000;fill:url(#radialGradient2305);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="M 128.3528,20.613129 128.06124,27.236494 149.88067,8.980075 149.81034,3.0867443 128.3528,20.613129 z"
|
||||
id="path1536"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
sodipodi:nodetypes="ccccc"
|
||||
id="path2337"
|
||||
d="m 149.99522,8.7509884 0.0995,-5.8411017 19.32896,17.6519533 1.49181,6.500812 -20.92023,-18.3116636 z"
|
||||
style="opacity:0.13636367;color:#000000;fill:url(#radialGradient2339);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
style="opacity:0.31818183;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999934;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 152.61368,27.719824 9.04,0 c 0.77059,0 1.39096,0.62037 1.39096,1.390967 l -0.008,9.079221 c 0,0.770596 -0.59632,1.265969 -1.36691,1.265969 l -9.05609,0 c -0.77059,0 -1.39096,-0.620373 -1.39096,-1.390969 l 0,-8.954221 c 0,-0.770597 0.62037,-1.390967 1.39096,-1.390967 z"
|
||||
id="rect2361"
|
||||
sodipodi:nodetypes="ccccccccc"
|
||||
inkscape:connector-curvature="0" /><rect
|
||||
style="color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:nonzero;stroke:#757575;stroke-width:0.9999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect3263"
|
||||
width="10.001333"
|
||||
height="9.9624557"
|
||||
x="152.01923"
|
||||
y="28.514256"
|
||||
rx="0.38128215"
|
||||
ry="0.38128215" /><path
|
||||
style="opacity:0.39772728;color:#000000;fill:url(#radialGradient2374);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999958;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m 152.61857,34.408261 c 3.61798,0.331177 5.52773,-1.445704 8.86815,-1.55274 l 0.0247,-3.849491 -8.91161,-0.006 0.0187,5.408261 z"
|
||||
id="rect2363"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0" /><g
|
||||
transform="translate(65.937707,2.0108349)"
|
||||
id="g4739"><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4741"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)" /><path
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4743"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /></g><g
|
||||
id="g4733"
|
||||
transform="translate(76.897863,5.0160386)"><path
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4735"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4737"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)" /></g><g
|
||||
transform="translate(70.887455,7.0268736)"
|
||||
id="g4727"><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4729"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)" /><path
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4731"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /></g><g
|
||||
id="g4723"
|
||||
transform="translate(59.662134,5.9662134)"><path
|
||||
transform="matrix(0.95416667,0,0,0.94583333,1.405743,0.73519001)"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
sodipodi:ry="5.3033009"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:cx="25.367456"
|
||||
id="path4719"
|
||||
style="fill:#6adb4d;fill-opacity:1;stroke:#34781d;stroke-width:1.05264175;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#b3ff9a;stroke-width:1.29034114;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4721"
|
||||
sodipodi:cx="25.367456"
|
||||
sodipodi:cy="8.2694378"
|
||||
sodipodi:rx="5.3033009"
|
||||
sodipodi:ry="5.3033009"
|
||||
d="m 30.670757,8.2694378 c 0,2.9289322 -2.374368,5.3033012 -5.303301,5.3033012 -2.928932,0 -5.3033,-2.374369 -5.3033,-5.3033012 0,-2.9289322 2.374368,-5.3033009 5.3033,-5.3033009 2.928933,0 5.303301,2.3743687 5.303301,5.3033009 z"
|
||||
transform="matrix(0.77083333,0,0,0.77916666,6.0564434,2.1576238)" /></g><g
|
||||
id="g4695"
|
||||
transform="matrix(1.1326331,0,0,0.44340824,65.580189,2.4215088)"><rect
|
||||
style="fill:#8a8a8a;fill-opacity:1;stroke:none"
|
||||
id="rect4697"
|
||||
width="29.256544"
|
||||
height="18.119614"
|
||||
x="10.297243"
|
||||
y="27.449707"
|
||||
rx="1.7190553"
|
||||
ry="4.3911204" /><g
|
||||
id="g4699"><g
|
||||
id="g4701"><rect
|
||||
rx="1.7051755"
|
||||
y="27.517153"
|
||||
x="10.510214"
|
||||
height="17.982044"
|
||||
width="29.020325"
|
||||
id="rect4703"
|
||||
style="fill:none;stroke:#646464;stroke-width:1.41005611;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
ry="4.3556657" /></g><rect
|
||||
rx="0.88575488"
|
||||
y="29.624025"
|
||||
x="11.337327"
|
||||
height="13.83156"
|
||||
width="27.319036"
|
||||
id="rect4705"
|
||||
style="fill:none;stroke:#b3b3b3;stroke-width:1.40048993;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
ry="2.2625546" /></g></g><g
|
||||
transform="matrix(0.01936185,0,0,0.01859457,111.41659,40.621203)"
|
||||
id="g4681"
|
||||
style="display:inline"><rect
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient4689);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4683"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4691);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
|
||||
id="path4685"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path4687"
|
||||
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4693);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /></g><g
|
||||
id="g4672"
|
||||
transform="translate(68.942911,-2.9168155)"><rect
|
||||
ry="1.9470588"
|
||||
rx="1.9470588"
|
||||
y="27.449707"
|
||||
x="10.297243"
|
||||
height="18.119614"
|
||||
width="29.256544"
|
||||
id="rect4658"
|
||||
style="fill:#dddddd;fill-opacity:1;stroke:none" /><g
|
||||
id="g4667"><g
|
||||
id="g4664"><rect
|
||||
ry="1.9313381"
|
||||
style="fill:none;stroke:#646464;stroke-width:0.99927008;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4660"
|
||||
width="29.020325"
|
||||
height="17.982044"
|
||||
x="10.510214"
|
||||
y="27.517153"
|
||||
rx="1.9313381" /></g><rect
|
||||
ry="1.0032353"
|
||||
style="fill:none;stroke:#f6f6f6;stroke-width:0.99249077;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4662"
|
||||
width="26.967867"
|
||||
height="16.005489"
|
||||
x="11.532422"
|
||||
y="28.489801"
|
||||
rx="1.0032353" /></g></g><path
|
||||
transform="matrix(1.0023678,0,0,0.95596394,68.883716,-0.0273148)"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
sodipodi:ry="10"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:cx="25"
|
||||
id="path4679"
|
||||
style="fill:#b8b8b8;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
sodipodi:type="arc" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#b8b8b8;fill-opacity:1;fill-rule:evenodd;stroke:#646464;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="path3820"
|
||||
sodipodi:cx="25"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:ry="10"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
transform="matrix(0.94933484,0,0,0.95596394,70.209541,-1.4857225)" /><path
|
||||
transform="matrix(0.6928006,0,0,0.69727163,76.6008,8.0344445)"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
sodipodi:ry="10"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:cx="25"
|
||||
id="path4590"
|
||||
style="fill:#f4f4f4;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
sodipodi:type="arc" /><g
|
||||
id="g4644"
|
||||
transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,99.594592,-10.924363)"><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4646"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.638252"
|
||||
y="26.853086" /><rect
|
||||
y="37.990021"
|
||||
x="24.660349"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4648"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /></g><g
|
||||
id="g4600"
|
||||
style="fill:#a2a2a2;fill-opacity:1"
|
||||
transform="translate(69.009202,-2.3643883)"><rect
|
||||
style="fill:#a2a2a2;fill-opacity:1;stroke:none"
|
||||
id="rect4602"
|
||||
width="1"
|
||||
height="5.9375"
|
||||
x="40.742825"
|
||||
y="-1.6325631"
|
||||
transform="matrix(0.67898035,0.73415645,-0.73415645,0.67898035,0,0)" /><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#a2a2a2;fill-opacity:1;stroke:none"
|
||||
id="path4604"
|
||||
sodipodi:cx="25.03125"
|
||||
sodipodi:cy="33.03125"
|
||||
sodipodi:rx="1.03125"
|
||||
sodipodi:ry="0.96875"
|
||||
d="M 26.0625,33.03125 C 26.0625,33.566276 25.600794,34 25.03125,34 24.461706,34 24,33.566276 24,33.03125 c 0,-0.535026 0.461706,-0.96875 1.03125,-0.96875 0.569544,0 1.03125,0.433724 1.03125,0.96875 z"
|
||||
transform="matrix(0.95714504,0,0,1.0228099,1.028519,-0.77553647)" /></g><g
|
||||
id="g4596"
|
||||
transform="translate(68.942911,-2.9168155)"><rect
|
||||
transform="matrix(0.67898035,0.73415645,-0.73415645,0.67898035,0,0)"
|
||||
y="-1.6325631"
|
||||
x="40.742825"
|
||||
height="5.9375"
|
||||
width="1"
|
||||
id="rect4592"
|
||||
style="fill:#ff2121;fill-opacity:1;stroke:none" /><path
|
||||
transform="matrix(0.95714504,0,0,1.0228099,1.028519,-0.77553647)"
|
||||
d="M 26.0625,33.03125 C 26.0625,33.566276 25.600794,34 25.03125,34 24.461706,34 24,33.566276 24,33.03125 c 0,-0.535026 0.461706,-0.96875 1.03125,-0.96875 0.569544,0 1.03125,0.433724 1.03125,0.96875 z"
|
||||
sodipodi:ry="0.96875"
|
||||
sodipodi:rx="1.03125"
|
||||
sodipodi:cy="33.03125"
|
||||
sodipodi:cx="25.03125"
|
||||
id="path4594"
|
||||
style="fill:#ff2121;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" /></g><path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#646464;stroke-width:1.37966764;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path4608"
|
||||
sodipodi:cx="25"
|
||||
sodipodi:cy="33"
|
||||
sodipodi:rx="10"
|
||||
sodipodi:ry="10"
|
||||
d="m 35,33 a 10,10 0 1 1 -20,0 10,10 0 1 1 20,0 z"
|
||||
transform="matrix(0.74693846,0,0,0.74919978,75.258402,5.3595919)" /><g
|
||||
id="g4628"
|
||||
transform="translate(68.942911,-2.9168155)"><rect
|
||||
y="26.853086"
|
||||
x="24.638252"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4624"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4626"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.660349"
|
||||
y="37.990021" /></g><g
|
||||
id="g4632"
|
||||
transform="matrix(0,1,-1,0,126.93079,5.087457)"><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4634"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="24.638252"
|
||||
y="26.853086" /><rect
|
||||
y="37.990021"
|
||||
x="24.660349"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4636"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none" /></g><rect
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
id="rect4640"
|
||||
width="0.68500972"
|
||||
height="1.1490486"
|
||||
x="-45.50618"
|
||||
y="-93.834114"
|
||||
transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)" /><rect
|
||||
y="-82.697182"
|
||||
x="-45.484081"
|
||||
height="1.1490486"
|
||||
width="0.68500972"
|
||||
id="rect4642"
|
||||
style="fill:#232323;fill-opacity:1;stroke:none"
|
||||
transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)" /><g
|
||||
transform="matrix(1.2021267,0,0,0.11694557,63.863529,11.401153)"
|
||||
id="g4707"><rect
|
||||
ry="16.649275"
|
||||
rx="1.6196786"
|
||||
y="27.449707"
|
||||
x="10.297243"
|
||||
height="18.119614"
|
||||
width="29.256544"
|
||||
id="rect4709"
|
||||
style="fill:#d4d4d4;fill-opacity:1;stroke:none" /><g
|
||||
id="g4711"><g
|
||||
id="g4713"><rect
|
||||
ry="16.514845"
|
||||
style="fill:none;stroke:#646464;stroke-width:2.66511464;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4715"
|
||||
width="29.020325"
|
||||
height="17.982044"
|
||||
x="10.510214"
|
||||
y="27.517153"
|
||||
rx="1" /></g></g></g><g
|
||||
id="g4985"
|
||||
transform="translate(0,-11.125)"><g
|
||||
transform="matrix(0.01936185,0,0,0.01859457,41.505849,40.621203)"
|
||||
id="g4874"
|
||||
style="display:inline"><rect
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient4894);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
id="rect4876"
|
||||
width="1339.6335"
|
||||
height="478.35718"
|
||||
x="-1559.2523"
|
||||
y="-150.69685" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4896);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
|
||||
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
|
||||
id="path4878"
|
||||
sodipodi:nodetypes="cccc" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc"
|
||||
id="path4880"
|
||||
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
|
||||
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient4898);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" /></g><g
|
||||
id="g4882"
|
||||
transform="translate(-0.96783034,-2.9168155)"><rect
|
||||
ry="1.9470588"
|
||||
rx="1.9470588"
|
||||
y="27.449707"
|
||||
x="10.297243"
|
||||
height="18.119614"
|
||||
width="29.256544"
|
||||
id="rect4884"
|
||||
style="fill:#eaeaea;fill-opacity:1;stroke:none" /><g
|
||||
id="g4886"><g
|
||||
id="g4888"><rect
|
||||
ry="1.9313381"
|
||||
style="fill:none;stroke:#646464;stroke-width:0.99927008;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4890"
|
||||
width="29.020325"
|
||||
height="17.982044"
|
||||
x="10.510214"
|
||||
y="27.517153"
|
||||
rx="1.9313381" /></g><rect
|
||||
ry="1.0032353"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.99249077;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect4892"
|
||||
width="26.967867"
|
||||
height="16.005489"
|
||||
x="11.532422"
|
||||
y="28.489801"
|
||||
rx="1.0032353" /></g></g><g
|
||||
transform="matrix(1,0,0,0.9039548,0,2.5932203)"
|
||||
id="g4922"><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="rect4900"
|
||||
width="1"
|
||||
height="11.0625"
|
||||
x="13.0625"
|
||||
y="27" /><rect
|
||||
y="27"
|
||||
x="15.0625"
|
||||
height="11.0625"
|
||||
width="1"
|
||||
id="rect4902"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="rect4904"
|
||||
width="1"
|
||||
height="11.0625"
|
||||
x="18"
|
||||
y="27" /><rect
|
||||
y="27"
|
||||
x="19.9375"
|
||||
height="11.0625"
|
||||
width="2"
|
||||
id="rect4906"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" /><rect
|
||||
y="27"
|
||||
x="22.9375"
|
||||
height="11.0625"
|
||||
width="1"
|
||||
id="rect4908"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="rect4910"
|
||||
width="2.0625"
|
||||
height="11.0625"
|
||||
x="25.9375"
|
||||
y="27" /><rect
|
||||
y="27"
|
||||
x="28.9375"
|
||||
height="11.0625"
|
||||
width="1.125"
|
||||
id="rect4912"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="rect4914"
|
||||
width="1.125"
|
||||
height="11.0625"
|
||||
x="30.9375"
|
||||
y="27" /><rect
|
||||
y="27"
|
||||
x="33.9375"
|
||||
height="11.0625"
|
||||
width="1.125"
|
||||
id="rect4916"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none" /></g><text
|
||||
sodipodi:linespacing="125%"
|
||||
id="text4918"
|
||||
y="40.195068"
|
||||
x="12.981453"
|
||||
style="font-size:36.59571838px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:3.65957189px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-family:Inconsolata;-inkscape-font-specification:Inconsolata Medium"
|
||||
y="40.195068"
|
||||
x="12.981453"
|
||||
id="tspan4920"
|
||||
sodipodi:role="line">5 92102431 8</tspan></text>
|
||||
<rect
|
||||
y="31.0625"
|
||||
x="9.0625"
|
||||
height="1"
|
||||
width="30"
|
||||
id="rect4933"
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none" /><rect
|
||||
style="fill:#ff0000;fill-opacity:1;stroke:none;filter:url(#filter4971)"
|
||||
id="rect4957"
|
||||
width="30"
|
||||
height="1"
|
||||
x="9.0625"
|
||||
y="31.0625" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4975"
|
||||
d="M 9.0625,32.0625 20,47.875 28.9375,47.9375 39,32.0625 z"
|
||||
style="opacity:0.29787233;fill:url(#linearGradient4983);fill-opacity:1;stroke:none" /></g></svg>
|
||||
|
Before Width: | Height: | Size: 41 KiB |
@@ -1,201 +0,0 @@
|
||||
<?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"
|
||||
version="1.1"
|
||||
width="48"
|
||||
height="48"
|
||||
id="svg11300">
|
||||
<defs
|
||||
id="defs3">
|
||||
<linearGradient
|
||||
id="linearGradient1442">
|
||||
<stop
|
||||
id="stop1444"
|
||||
style="stop-color:#73d216;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop1446"
|
||||
style="stop-color:#4e9a06;stop-opacity:1"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8662">
|
||||
<stop
|
||||
id="stop8664"
|
||||
style="stop-color:#000000;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop8666"
|
||||
style="stop-color:#000000;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient8650">
|
||||
<stop
|
||||
id="stop8652"
|
||||
style="stop-color:#ffffff;stop-opacity:1"
|
||||
offset="0" />
|
||||
<stop
|
||||
id="stop8654"
|
||||
style="stop-color:#ffffff;stop-opacity:0"
|
||||
offset="1" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
cx="24.837126"
|
||||
cy="36.421127"
|
||||
r="15.644737"
|
||||
fx="24.837126"
|
||||
fy="36.421127"
|
||||
id="radialGradient1444"
|
||||
xlink:href="#linearGradient8662"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" />
|
||||
<radialGradient
|
||||
cx="15.987216"
|
||||
cy="1.5350308"
|
||||
r="17.171415"
|
||||
fx="15.987216"
|
||||
fy="1.5350308"
|
||||
id="radialGradient3006"
|
||||
xlink:href="#linearGradient8650"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0,2.046729,1.55761,0,2.91297,-22.93354)" />
|
||||
<radialGradient
|
||||
cx="35.292667"
|
||||
cy="20.494493"
|
||||
r="16.9562"
|
||||
fx="35.292667"
|
||||
fy="20.494493"
|
||||
id="radialGradient3009"
|
||||
xlink:href="#linearGradient1442"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0,0.843022,-1.020168,0,46.422124,1.41307)" />
|
||||
<linearGradient
|
||||
x1="46.5"
|
||||
y1="27"
|
||||
x2="80.5"
|
||||
y2="27"
|
||||
id="linearGradient3785"
|
||||
xlink:href="#linearGradient1442"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="47.703129"
|
||||
y1="26.804157"
|
||||
x2="58.338215"
|
||||
y2="26.804157"
|
||||
id="linearGradient3807"
|
||||
xlink:href="#linearGradient8650"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="58.968754"
|
||||
y1="24.609373"
|
||||
x2="75.09375"
|
||||
y2="24.609373"
|
||||
id="linearGradient3817"
|
||||
xlink:href="#linearGradient8650"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="46.5"
|
||||
y1="27"
|
||||
x2="80.5"
|
||||
y2="27"
|
||||
id="linearGradient3825"
|
||||
xlink:href="#linearGradient1442"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="47.703129"
|
||||
y1="26.804157"
|
||||
x2="58.338215"
|
||||
y2="26.804157"
|
||||
id="linearGradient3827"
|
||||
xlink:href="#linearGradient8650"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
x1="58.968754"
|
||||
y1="24.609373"
|
||||
x2="75.09375"
|
||||
y2="24.609373"
|
||||
id="linearGradient3829"
|
||||
xlink:href="#linearGradient8650"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
</defs>
|
||||
<metadata
|
||||
id="metadata4">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Jakub Steiner</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<dc:source>http://jimmac.musichall.cz</dc:source>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
|
||||
<dc:title></dc:title>
|
||||
<dc:subject>
|
||||
<rdf:Bag>
|
||||
<rdf:li>go</rdf:li>
|
||||
<rdf:li>lower</rdf:li>
|
||||
<rdf:li>down</rdf:li>
|
||||
<rdf:li>arrow</rdf:li>
|
||||
<rdf:li>pointer</rdf:li>
|
||||
<rdf:li>></rdf:li>
|
||||
</rdf:Bag>
|
||||
</dc:subject>
|
||||
<dc:contributor>
|
||||
<cc:Agent>
|
||||
<dc:title>Andreas Nilsson</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:contributor>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/publicdomain/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
id="layer1">
|
||||
<path
|
||||
d="m 40.481863,36.421127 a 15.644737,8.3968935 0 1 1 -31.2894745,0 15.644737,8.3968935 0 1 1 31.2894745,0 z"
|
||||
transform="matrix(0.90685456,0,0,0.595458,-2.8361621,15.68775)"
|
||||
id="path8660"
|
||||
style="opacity:0.20454544;color:#000000;fill:url(#radialGradient1444);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
|
||||
<g
|
||||
transform="translate(-40.03125,-3.65625)"
|
||||
id="g3819">
|
||||
<path
|
||||
d="M 52,23 47,28 59,40 80,19 75,14 59,30 z"
|
||||
id="path3002"
|
||||
style="fill:url(#linearGradient3825);fill-opacity:1;stroke:#3a7304;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
|
||||
<path
|
||||
d="M 52,24.417969 48.411612,28 59,38.601563 78.585938,19 75,15.414063 59,31.40625 z"
|
||||
id="path3787"
|
||||
style="opacity:0.5;fill:none;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 51.968752,23.734374 -4.265625,4.25 0.995256,1.104854 8.485282,0.04052 z"
|
||||
id="path3799"
|
||||
style="opacity:0.34893619;fill:url(#linearGradient3827);fill-opacity:1;stroke:none" />
|
||||
<path
|
||||
d="m 60.913297,28.932676 8.536072,0.01148 9.931219,-9.897748 -4.349335,-4.296415 z"
|
||||
id="path3809"
|
||||
style="opacity:0.26382979;fill:url(#linearGradient3829);fill-opacity:1;stroke:none" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 220 B |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 357 B |
|
Before Width: | Height: | Size: 303 B |
|
Before Width: | Height: | Size: 195 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 186 B |
|
Before Width: | Height: | Size: 760 B |
@@ -0,0 +1,634 @@
|
||||
openerp.point_of_sale.load_chrome = function load_chrome(instance, module){ //module is instance.point_of_sale
|
||||
"use strict";
|
||||
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
/* -------- The Order Selector -------- */
|
||||
|
||||
// Allows the cashier to create / delete and
|
||||
// switch between orders.
|
||||
|
||||
module.OrderSelectorWidget = module.PosBaseWidget.extend({
|
||||
template: 'OrderSelectorWidget',
|
||||
init: function(parent, options) {
|
||||
this._super(parent, options);
|
||||
this.pos.get('orders').bind('add remove change',this.renderElement,this);
|
||||
this.pos.bind('change:selectedOrder',this.renderElement,this);
|
||||
},
|
||||
get_order_by_uid: function(uid) {
|
||||
var orders = this.pos.get_order_list();
|
||||
for (var i = 0; i < orders.length; i++) {
|
||||
if (orders[i].uid === uid) {
|
||||
return orders[i];
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
},
|
||||
order_click_handler: function(event,$el) {
|
||||
var order = this.get_order_by_uid($el.data('uid'));
|
||||
if (order) {
|
||||
this.pos.set_order(order);
|
||||
}
|
||||
},
|
||||
neworder_click_handler: function(event, $el) {
|
||||
this.pos.add_new_order();
|
||||
},
|
||||
deleteorder_click_handler: function(event, $el) {
|
||||
var self = this;
|
||||
var order = this.pos.get_order();
|
||||
if (!order) {
|
||||
return;
|
||||
} else if ( !order.is_empty() ){
|
||||
this.gui.show_popup('confirm',{
|
||||
'title': _t('Destroy Current Order ?'),
|
||||
'body': _t('You will lose any data associated with the current order'),
|
||||
confirm: function(){
|
||||
self.pos.delete_current_order();
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.pos.delete_current_order();
|
||||
}
|
||||
},
|
||||
renderElement: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
this.$('.order-button.select-order').click(function(event){
|
||||
self.order_click_handler(event,$(this));
|
||||
});
|
||||
this.$('.neworder-button').click(function(event){
|
||||
self.neworder_click_handler(event,$(this));
|
||||
});
|
||||
this.$('.deleteorder-button').click(function(event){
|
||||
self.deleteorder_click_handler(event,$(this));
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
/* ------- The User Name Widget ------- */
|
||||
|
||||
// Displays the current cashier's name and allows
|
||||
// to switch between cashiers.
|
||||
|
||||
module.UsernameWidget = module.PosBaseWidget.extend({
|
||||
template: 'UsernameWidget',
|
||||
init: function(parent, options){
|
||||
var options = options || {};
|
||||
this._super(parent,options);
|
||||
},
|
||||
renderElement: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
this.$el.click(function(){
|
||||
self.click_username();
|
||||
});
|
||||
},
|
||||
click_username: function(){
|
||||
var self = this;
|
||||
this.gui.select_user({
|
||||
'security': true,
|
||||
'current_user': this.pos.get_cashier(),
|
||||
'title': _t('Change Cashier'),
|
||||
}).then(function(user){
|
||||
self.pos.set_cashier(user);
|
||||
self.renderElement();
|
||||
});
|
||||
},
|
||||
get_name: function(){
|
||||
var user = this.pos.cashier || this.pos.user;
|
||||
if(user){
|
||||
return user.name;
|
||||
}else{
|
||||
return "";
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
/* -------- The Header Button --------- */
|
||||
|
||||
// Used to quickly add buttons with simple
|
||||
// labels and actions to the point of sale
|
||||
// header.
|
||||
|
||||
module.HeaderButtonWidget = module.PosBaseWidget.extend({
|
||||
template: 'HeaderButtonWidget',
|
||||
init: function(parent, options){
|
||||
options = options || {};
|
||||
this._super(parent, options);
|
||||
this.action = options.action;
|
||||
this.label = options.label;
|
||||
},
|
||||
renderElement: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
if(this.action){
|
||||
this.$el.click(function(){
|
||||
self.action();
|
||||
});
|
||||
}
|
||||
},
|
||||
show: function(){ this.$el.removeClass('oe_hidden'); },
|
||||
hide: function(){ this.$el.addClass('oe_hidden'); },
|
||||
});
|
||||
|
||||
/* --------- The Debug Widget --------- */
|
||||
|
||||
// The debug widget lets the user control
|
||||
// and monitor the hardware and software status
|
||||
// without the use of the proxy, or to access
|
||||
// the raw locally stored db values, useful
|
||||
// for debugging
|
||||
|
||||
module.DebugWidget = module.PosBaseWidget.extend({
|
||||
template: "DebugWidget",
|
||||
eans:{
|
||||
admin_badge: '0410100000006',
|
||||
client_badge: '0420200000004',
|
||||
invalid_ean: '1232456',
|
||||
soda_33cl: '5449000000996',
|
||||
oranges_kg: '2100002031410',
|
||||
lemon_price: '2301000001560',
|
||||
unknown_product: '9900000000004',
|
||||
},
|
||||
events:[
|
||||
'open_cashbox',
|
||||
'print_receipt',
|
||||
'scale_read',
|
||||
],
|
||||
minimized: false,
|
||||
init: function(parent,options){
|
||||
this._super(parent,options);
|
||||
var self = this;
|
||||
|
||||
this.minimized = false;
|
||||
|
||||
// for dragging the debug widget around
|
||||
this.dragging = false;
|
||||
this.dragpos = {x:0, y:0};
|
||||
|
||||
function eventpos(event){
|
||||
if(event.touches && event.touches[0]){
|
||||
return {x: event.touches[0].screenX, y: event.touches[0].screenY};
|
||||
}else{
|
||||
return {x: event.screenX, y: event.screenY};
|
||||
}
|
||||
}
|
||||
|
||||
this.dragend_handler = function(event){
|
||||
self.dragging = false;
|
||||
};
|
||||
this.dragstart_handler = function(event){
|
||||
self.dragging = true;
|
||||
self.dragpos = eventpos(event);
|
||||
};
|
||||
this.dragmove_handler = function(event){
|
||||
if(self.dragging){
|
||||
var top = this.offsetTop;
|
||||
var left = this.offsetLeft;
|
||||
var pos = eventpos(event);
|
||||
var dx = pos.x - self.dragpos.x;
|
||||
var dy = pos.y - self.dragpos.y;
|
||||
|
||||
self.dragpos = pos;
|
||||
|
||||
this.style.right = 'auto';
|
||||
this.style.bottom = 'auto';
|
||||
this.style.left = left + dx + 'px';
|
||||
this.style.top = top + dy + 'px';
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
};
|
||||
},
|
||||
start: function(){
|
||||
var self = this;
|
||||
|
||||
this.el.addEventListener('mouseleave', this.dragend_handler);
|
||||
this.el.addEventListener('mouseup', this.dragend_handler);
|
||||
this.el.addEventListener('touchend', this.dragend_handler);
|
||||
this.el.addEventListener('touchcancel',this.dragend_handler);
|
||||
this.el.addEventListener('mousedown', this.dragstart_handler);
|
||||
this.el.addEventListener('touchstart', this.dragstart_handler);
|
||||
this.el.addEventListener('mousemove', this.dragmove_handler);
|
||||
this.el.addEventListener('touchmove', this.dragmove_handler);
|
||||
|
||||
this.$('.toggle').click(function(){
|
||||
var content = self.$('.content');
|
||||
var bg = self.$el;
|
||||
if(!self.minimized){
|
||||
content.animate({'height':'0'},200);
|
||||
}else{
|
||||
content.css({'height':'auto'});
|
||||
}
|
||||
self.minimized = !self.minimized;
|
||||
});
|
||||
this.$('.button.set_weight').click(function(){
|
||||
var kg = Number(self.$('input.weight').val());
|
||||
if(!isNaN(kg)){
|
||||
self.pos.proxy.debug_set_weight(kg);
|
||||
}
|
||||
});
|
||||
this.$('.button.reset_weight').click(function(){
|
||||
self.$('input.weight').val('');
|
||||
self.pos.proxy.debug_reset_weight();
|
||||
});
|
||||
this.$('.button.custom_ean').click(function(){
|
||||
var ean = self.pos.barcode_reader.sanitize_ean(self.$('input.ean').val() || '0');
|
||||
self.$('input.ean').val(ean);
|
||||
self.pos.barcode_reader.scan(ean);
|
||||
});
|
||||
this.$('.button.reference').click(function(){
|
||||
self.pos.barcode_reader.scan(self.$('input.ean').val());
|
||||
});
|
||||
this.$('.button.show_orders').click(function(){
|
||||
self.gui.show_popup('unsent-orders');
|
||||
});
|
||||
this.$('.button.delete_orders').click(function(){
|
||||
self.gui.show_popup('confirm',{
|
||||
'title': _t('Delete Unsent Orders ?'),
|
||||
'body': _t('This operation will permanently destroy all unsent orders from the local storage. You will lose all the data. This operation cannot be undone.'),
|
||||
confirm: function(){
|
||||
self.pos.db.remove_all_orders();
|
||||
self.pos.set({synch: { state:'connected', pending: 0 }});
|
||||
},
|
||||
});
|
||||
});
|
||||
this.$('.button.show_unpaid_orders').click(function(){
|
||||
self.gui.show_popup('unpaid-orders');
|
||||
});
|
||||
this.$('.button.delete_unpaid_orders').click(function(){
|
||||
self.gui.show_popup('confirm',{
|
||||
'title': _t('Delete Unpaid Orders ?'),
|
||||
'body': _t('This operation will permanently destroy all unpaid orders from all sessions that have been put in the local storage. You will lose all the data and exit the point of sale. This operation cannot be undone.'),
|
||||
confirm: function(){
|
||||
self.pos.db.remove_all_unpaid_orders();
|
||||
window.location = '/';
|
||||
},
|
||||
});
|
||||
});
|
||||
_.each(this.eans, function(ean, name){
|
||||
self.$('.button.'+name).click(function(){
|
||||
self.$('input.ean').val(ean);
|
||||
self.pos.barcode_reader.scan(ean);
|
||||
});
|
||||
});
|
||||
_.each(this.events, function(name){
|
||||
self.pos.proxy.add_notification(name,function(){
|
||||
self.$('.event.'+name).stop().clearQueue().css({'background-color':'#6CD11D'});
|
||||
self.$('.event.'+name).animate({'background-color':'#1E1E1E'},2000);
|
||||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
/* --------- The Status Widget -------- */
|
||||
|
||||
// Base class for widgets that want to display
|
||||
// status in the point of sale header.
|
||||
|
||||
module.StatusWidget = module.PosBaseWidget.extend({
|
||||
status: ['connected','connecting','disconnected','warning'],
|
||||
set_status: function(status,msg){
|
||||
var self = this;
|
||||
for(var i = 0; i < this.status.length; i++){
|
||||
this.$('.js_'+this.status[i]).addClass('oe_hidden');
|
||||
}
|
||||
this.$('.js_'+status).removeClass('oe_hidden');
|
||||
|
||||
if(msg){
|
||||
this.$('.js_msg').removeClass('oe_hidden').html(msg);
|
||||
}else{
|
||||
this.$('.js_msg').addClass('oe_hidden').html('');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
/* ------- Synch. Notifications ------- */
|
||||
|
||||
// Displays if there are orders that could
|
||||
// not be submitted, and how many.
|
||||
|
||||
module.SynchNotificationWidget = module.StatusWidget.extend({
|
||||
template: 'SynchNotificationWidget',
|
||||
start: function(){
|
||||
var self = this;
|
||||
this.pos.bind('change:synch', function(pos,synch){
|
||||
self.set_status(synch.state, synch.pending);
|
||||
});
|
||||
this.$el.click(function(){
|
||||
self.pos.push_order();
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
/* --------- The Proxy Status --------- */
|
||||
|
||||
// Displays the status of the hardware proxy
|
||||
// (connected, disconnected, errors ... )
|
||||
|
||||
module.ProxyStatusWidget = module.StatusWidget.extend({
|
||||
template: 'ProxyStatusWidget',
|
||||
set_smart_status: function(status){
|
||||
if(status.status === 'connected'){
|
||||
var warning = false;
|
||||
var msg = ''
|
||||
if(this.pos.config.iface_scan_via_proxy){
|
||||
var scanner = status.drivers.scanner ? status.drivers.scanner.status : false;
|
||||
if( scanner != 'connected' && scanner != 'connecting'){
|
||||
warning = true;
|
||||
msg += _t('Scanner');
|
||||
}
|
||||
}
|
||||
if( this.pos.config.iface_print_via_proxy ||
|
||||
this.pos.config.iface_cashdrawer ){
|
||||
var printer = status.drivers.escpos ? status.drivers.escpos.status : false;
|
||||
if( printer != 'connected' && printer != 'connecting'){
|
||||
warning = true;
|
||||
msg = msg ? msg + ' & ' : msg;
|
||||
msg += _t('Printer');
|
||||
}
|
||||
}
|
||||
if( this.pos.config.iface_electronic_scale ){
|
||||
var scale = status.drivers.scale ? status.drivers.scale.status : false;
|
||||
if( scale != 'connected' && scale != 'connecting' ){
|
||||
warning = true;
|
||||
msg = msg ? msg + ' & ' : msg;
|
||||
msg += _t('Scale');
|
||||
}
|
||||
}
|
||||
msg = msg ? msg + ' ' + _t('Offline') : msg;
|
||||
this.set_status(warning ? 'warning' : 'connected', msg);
|
||||
}else{
|
||||
this.set_status(status.status,'');
|
||||
}
|
||||
},
|
||||
start: function(){
|
||||
var self = this;
|
||||
|
||||
this.set_smart_status(this.pos.proxy.get('status'));
|
||||
|
||||
this.pos.proxy.on('change:status',this,function(eh,status){ //FIXME remove duplicate changes
|
||||
self.set_smart_status(status.newValue);
|
||||
});
|
||||
|
||||
this.$el.click(function(){
|
||||
self.pos.connect_to_proxy();
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
/*--------------------------------------*\
|
||||
| THE CHROME |
|
||||
\*======================================*/
|
||||
|
||||
// The Chrome is the main widget that contains
|
||||
// all other widgets in the PointOfSale.
|
||||
//
|
||||
// It is the first object instanciated and the
|
||||
// starting point of the point of sale code.
|
||||
//
|
||||
// It is mainly composed of :
|
||||
// - a header, containing the list of orders
|
||||
// - a leftpane, containing the list of bought
|
||||
// products (orderlines)
|
||||
// - a rightpane, containing the screens
|
||||
// (see pos_screens.js)
|
||||
// - popups
|
||||
// - an onscreen keyboard
|
||||
// - .gui which controls the switching between
|
||||
// screens and the showing/closing of popups
|
||||
|
||||
module.Chrome = module.PosBaseWidget.extend({
|
||||
template: 'Chrome',
|
||||
init: function() {
|
||||
var self = this;
|
||||
this._super(arguments[0],{});
|
||||
|
||||
this.started = new $.Deferred(); // resolves when DOM is online
|
||||
this.ready = new $.Deferred(); // resolves when the whole GUI has been loaded
|
||||
|
||||
this.pos = new module.PosModel(this.session,{chrome:this});
|
||||
this.gui = new module.Gui({pos: this.pos, chrome: this});
|
||||
this.chrome = this; // So that chrome's childs have chrome set automatically
|
||||
this.pos.gui = this.gui;
|
||||
|
||||
this.widget = {}; // contains references to subwidgets instances
|
||||
|
||||
this.pos.ready.done(function(){
|
||||
self.build_chrome();
|
||||
self.build_widgets();
|
||||
self.disable_rubberbanding();
|
||||
self.ready.resolve();
|
||||
self.loading_hide();
|
||||
}).fail(function(err){ // error when loading models data from the backend
|
||||
self.loading_error(err);
|
||||
});
|
||||
},
|
||||
|
||||
build_chrome: function() {
|
||||
// remove default webclient handlers that induce click delay
|
||||
$(document).off();
|
||||
$(window).off();
|
||||
$('html').off();
|
||||
$('body').off();
|
||||
$(self.$el).parent().off();
|
||||
$('document').off();
|
||||
$('.oe_web_client').off();
|
||||
$('.openerp_webclient_container').off();
|
||||
|
||||
FastClick.attach(document.body);
|
||||
|
||||
instance.webclient.set_content_full_screen(true);
|
||||
|
||||
this.renderElement();
|
||||
|
||||
if(this.pos.config.iface_big_scrollbars){
|
||||
this.$el.addClass('big-scrollbars');
|
||||
}
|
||||
},
|
||||
|
||||
disable_rubberbanding: function(){
|
||||
// prevent the pos body from being scrollable.
|
||||
document.body.addEventListener('touchmove',function(event){
|
||||
var node = event.target;
|
||||
while(node){
|
||||
if(node.classList && node.classList.contains('touch-scrollable')){
|
||||
return;
|
||||
}
|
||||
node = node.parentNode;
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
},
|
||||
|
||||
loading_error: function(err){
|
||||
var self = this;
|
||||
|
||||
var title = err.message;
|
||||
var body = err.stack;
|
||||
|
||||
if(err.message === 'XmlHttpRequestError '){
|
||||
title = 'Network Failure (XmlHttpRequestError)';
|
||||
body = 'The Point of Sale could not be loaded due to a network problem.\n Please check your internet connection.';
|
||||
}else if(err.message === 'OpenERP Server Error'){
|
||||
title = err.data.message;
|
||||
body = err.data.debug;
|
||||
}
|
||||
|
||||
if( typeof body !== 'string' ){
|
||||
body = 'Traceback not available.';
|
||||
}
|
||||
|
||||
var popup = $(QWeb.render('ErrorTracebackPopupWidget',{
|
||||
widget: { title: title , body: body },
|
||||
}));
|
||||
|
||||
popup.find('.button').click(function(){
|
||||
self.gui.close();
|
||||
});
|
||||
|
||||
popup.css({ zindex: 9001 });
|
||||
|
||||
popup.appendTo(this.$el);
|
||||
},
|
||||
loading_progress: function(fac){
|
||||
this.$('.loader .loader-feedback').removeClass('oe_hidden');
|
||||
this.$('.loader .progress').removeClass('oe_hidden').css({'width': ''+Math.floor(fac*100)+'%'});
|
||||
},
|
||||
loading_message: function(msg,progress){
|
||||
this.$('.loader .loader-feedback').removeClass('oe_hidden');
|
||||
this.$('.loader .message').text(msg);
|
||||
if (typeof progress !== 'undefined') {
|
||||
this.loading_progress(progress);
|
||||
} else {
|
||||
this.$('.loader .progress').addClass('oe_hidden');
|
||||
}
|
||||
},
|
||||
loading_skip: function(callback){
|
||||
if(callback){
|
||||
this.$('.loader .loader-feedback').removeClass('oe_hidden');
|
||||
this.$('.loader .button.skip').removeClass('oe_hidden');
|
||||
this.$('.loader .button.skip').off('click');
|
||||
this.$('.loader .button.skip').click(callback);
|
||||
}else{
|
||||
this.$('.loader .button.skip').addClass('oe_hidden');
|
||||
}
|
||||
},
|
||||
loading_hide: function(){
|
||||
this.$('.loader').animate({opacity:0},1500,'swing',function(){self.$('.loader').addClass('oe_hidden');});
|
||||
},
|
||||
loading_show: function(){
|
||||
this.$('.loader').removeClass('oe_hidden').animate({opacity:1},150,'swing');
|
||||
},
|
||||
|
||||
widgets: [
|
||||
{
|
||||
'name': 'order_selector',
|
||||
'widget': module.OrderSelectorWidget,
|
||||
'replace': '.placeholder-OrderSelectorWidget',
|
||||
},{
|
||||
'name': 'proxy_status',
|
||||
'widget': module.ProxyStatusWidget,
|
||||
'append': '.pos-rightheader',
|
||||
'condition': function(){ return this.pos.config.use_proxy },
|
||||
},{
|
||||
'name': 'notification',
|
||||
'widget': module.SynchNotificationWidget,
|
||||
'append': '.pos-rightheader',
|
||||
},{
|
||||
'name': 'close_button',
|
||||
'widget': module.HeaderButtonWidget,
|
||||
'append': '.pos-rightheader',
|
||||
'args': {
|
||||
label: _t('Close'),
|
||||
action: function(){
|
||||
var self = this;
|
||||
if (!this.confirmed) {
|
||||
this.$el.addClass('confirm');
|
||||
this.$el.text(_t('Confirm'));
|
||||
this.confirmed = setTimeout(function(){
|
||||
self.$el.removeClass('confirm');
|
||||
self.$el.text(_t('Close'));
|
||||
self.confirmed = false;
|
||||
},2000);
|
||||
} else {
|
||||
clearTimeout(this.confirmed);
|
||||
this.gui.close();
|
||||
}
|
||||
},
|
||||
}
|
||||
},{
|
||||
'name': 'username',
|
||||
'widget': module.UsernameWidget,
|
||||
'replace': '.placeholder-UsernameWidget',
|
||||
},{
|
||||
'name': 'keyboard',
|
||||
'widget': module.OnscreenKeyboardWidget,
|
||||
'replace': '.placeholder-OnscreenKeyboardWidget',
|
||||
},{
|
||||
'name': 'debug',
|
||||
'widget': module.DebugWidget,
|
||||
'append': '.pos-content',
|
||||
'condition': function(){ return this.pos.debug },
|
||||
},
|
||||
],
|
||||
|
||||
// This method instantiates all the screens, widgets, etc.
|
||||
build_widgets: function() {
|
||||
var self = this;
|
||||
|
||||
for (var i = 0; i < this.widgets.length; i++) {
|
||||
var def = this.widgets[i];
|
||||
if ( !def.condition || def.condition.call(this) ) {
|
||||
var args = typeof def.args === 'function' ? def.args(this) : def.args;
|
||||
var w = new def.widget(this, args || {});
|
||||
if (def.replace) {
|
||||
w.replace(this.$(def.replace));
|
||||
} else if (def.append) {
|
||||
w.appendTo(this.$(def.append));
|
||||
} else if (def.prepend) {
|
||||
w.prependTo(this.$(def.prepend));
|
||||
} else {
|
||||
w.appendTo(this.$el);
|
||||
}
|
||||
this.widget[def.name] = w;
|
||||
}
|
||||
}
|
||||
|
||||
this.screens = {};
|
||||
for (var i = 0; i < this.gui.screen_classes.length; i++) {
|
||||
var classe = this.gui.screen_classes[i];
|
||||
if (!classe.condition || classe.condition.call(this)) {
|
||||
var screen = new classe.widget(this,{});
|
||||
screen.appendTo(this.$('.screens'));
|
||||
this.screens[classe.name] = screen;
|
||||
this.gui.add_screen(classe.name, screen);
|
||||
}
|
||||
}
|
||||
|
||||
this.popups = {};
|
||||
for (var i = 0; i < this.gui.popup_classes.length; i++) {
|
||||
var classe = this.gui.popup_classes[i];
|
||||
if (!classe.condition || classe.condition.call(this)) {
|
||||
var popup = new classe.widget(this,{});
|
||||
popup.appendTo(this.$('.popups'));
|
||||
this.popups[classe.name] = popup;
|
||||
this.gui.add_popup(classe.name, popup);
|
||||
}
|
||||
}
|
||||
|
||||
this.gui.set_startup_screen('products');
|
||||
this.gui.set_default_screen('products');
|
||||
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
this.pos.destroy();
|
||||
instance.webclient.set_content_full_screen(false);
|
||||
this._super();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -416,9 +416,9 @@ openerp.point_of_sale.load_devices = function load_devices(instance,module){ //m
|
||||
send_printing_job();
|
||||
},function(error){
|
||||
if (error) {
|
||||
self.pos.pos_widget.screen_selector.show_popup('error-traceback',{
|
||||
'message': _t('Printing Error: ') + error.data.message,
|
||||
'comment': error.data.debug,
|
||||
self.pos.chrome.screen_selector.show_popup('error-traceback',{
|
||||
'title': _t('Printing Error: ') + error.data.message,
|
||||
'body': error.data.debug,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,340 @@
|
||||
|
||||
// this file contains the Gui, which is the pos 'controller'.
|
||||
// It contains high level methods to manipulate the interface
|
||||
// such as changing between screens, creating popups, etc.
|
||||
//
|
||||
// it is available to all pos objects trough the '.gui' field.
|
||||
|
||||
openerp.point_of_sale.load_gui = function load_gui(instance, module) {
|
||||
"use strict";
|
||||
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
module.Gui = instance.web.Class.extend({
|
||||
screen_classes: [],
|
||||
popup_classes: [],
|
||||
init: function(options){
|
||||
var self = this;
|
||||
this.pos = options.pos;
|
||||
this.chrome = options.chrome;
|
||||
this.screen_instances = {};
|
||||
this.popup_instances = {};
|
||||
this.default_screen = null;
|
||||
this.startup_screen = null;
|
||||
this.current_popup = null;
|
||||
this.current_screen = null;
|
||||
|
||||
this.chrome.ready.then(function(){
|
||||
var order = self.pos.get_order();
|
||||
if (order) {
|
||||
self.show_saved_screen(order);
|
||||
} else {
|
||||
self.show_screen(self.startup_screen);
|
||||
}
|
||||
self.pos.bind('change:selectedOrder', function(){
|
||||
self.show_saved_screen(self.pos.get_order());
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/* ---- Gui: SCREEN MANIPULATION ---- */
|
||||
|
||||
// register a screen widget to the gui,
|
||||
// it must have been inserted into the dom.
|
||||
add_screen: function(name, screen){
|
||||
screen.hide();
|
||||
this.screen_instances[name] = screen;
|
||||
},
|
||||
|
||||
// sets the screen that will be displayed
|
||||
// for new orders
|
||||
set_default_screen: function(name){
|
||||
this.default_screen = name;
|
||||
},
|
||||
|
||||
// sets the screen that will be displayed
|
||||
// when no orders are present
|
||||
set_startup_screen: function(name) {
|
||||
this.startup_screen = name;
|
||||
},
|
||||
|
||||
// display the screen saved in an order,
|
||||
// called when the user changes the current order
|
||||
// no screen saved ? -> display default_screen
|
||||
// no order ? -> display startup_screen
|
||||
show_saved_screen: function(order,options) {
|
||||
options = options || {};
|
||||
this.close_popup();
|
||||
if (order) {
|
||||
this.show_screen(order.get_screen_data('screen') ||
|
||||
options.default_screen ||
|
||||
this.default_screen,
|
||||
null,'refresh');
|
||||
} else {
|
||||
this.show_screen(this.startup_screen);
|
||||
}
|
||||
},
|
||||
|
||||
// display a screen.
|
||||
// If there is an order, the screen will be saved in the order
|
||||
// - params: used to load a screen with parameters, for
|
||||
// example loading a 'product_details' screen for a specific product.
|
||||
// - refresh: if you want the screen to cycle trough show / hide even
|
||||
// if you are already on the same screen.
|
||||
show_screen: function(screen_name,params,refresh) {
|
||||
var screen = this.screen_instances[screen_name];
|
||||
if (!screen) {
|
||||
console.error("ERROR: show_screen("+screen_name+") : screen not found");
|
||||
}
|
||||
|
||||
this.close_popup();
|
||||
|
||||
var order = this.pos.get_order();
|
||||
if (order) {
|
||||
var old_screen_name = order.get_screen_data('screen');
|
||||
|
||||
order.set_screen_data('screen',screen_name);
|
||||
|
||||
if(params){
|
||||
order.set_screen_data('params',params);
|
||||
}
|
||||
|
||||
if( screen_name !== old_screen_name ){
|
||||
order.set_screen_data('previous-screen',old_screen_name);
|
||||
}
|
||||
}
|
||||
|
||||
if (refresh || screen !== this.current_screen) {
|
||||
if (this.current_screen) {
|
||||
this.current_screen.close();
|
||||
this.current_screen.hide();
|
||||
}
|
||||
this.current_screen = screen;
|
||||
this.current_screen.show();
|
||||
}
|
||||
},
|
||||
|
||||
// returns the current screen.
|
||||
get_current_screen: function() {
|
||||
return this.pos.get_order() ? ( this.pos.get_order().get_screen_data('screen') || this.default_screen ) : this.startup_screen;
|
||||
},
|
||||
|
||||
// goes to the previous screen (as specified in the order). The history only
|
||||
// goes 1 deep ...
|
||||
back: function() {
|
||||
var previous = this.pos.get_order().get_screen_data('previous-screen');
|
||||
if (previous) {
|
||||
this.show_screen(previous);
|
||||
}
|
||||
},
|
||||
|
||||
// returns the parameter specified when this screen was displayed
|
||||
get_current_screen_param: function(param) {
|
||||
if (this.pos.get_order()) {
|
||||
var params = this.pos.get_order().get_screen_data('params');
|
||||
return params ? params[param] : undefined;
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
},
|
||||
|
||||
/* ---- Gui: POPUP MANIPULATION ---- */
|
||||
|
||||
// registers a new popup in the GUI.
|
||||
// the popup must have been previously inserted
|
||||
// into the dom.
|
||||
add_popup: function(name, popup) {
|
||||
popup.hide();
|
||||
this.popup_instances[name] = popup;
|
||||
},
|
||||
|
||||
// displays a popup. Popup do not stack,
|
||||
// are not remembered by the order, and are
|
||||
// closed by screen changes or new popups.
|
||||
show_popup: function(name,options) {
|
||||
if (this.current_popup) {
|
||||
this.close_popup();
|
||||
}
|
||||
this.current_popup = this.popup_instances[name];
|
||||
this.current_popup.show(options);
|
||||
},
|
||||
|
||||
// close the current popup.
|
||||
close_popup: function() {
|
||||
if (this.current_popup) {
|
||||
this.current_popup.close();
|
||||
this.current_popup.hide();
|
||||
this.current_popup = null;
|
||||
}
|
||||
},
|
||||
|
||||
/* ---- Gui: ACCESS CONTROL ---- */
|
||||
|
||||
// A Generic UI that allow to select a user from a list.
|
||||
// It returns a deferred that resolves with the selected user
|
||||
// upon success. Several options are available :
|
||||
// - security: passwords will be asked
|
||||
// - only_managers: restricts the list to managers
|
||||
// - current_user: password will not be asked if this
|
||||
// user is selected.
|
||||
// - title: The title of the user selection list.
|
||||
select_user: function(options){
|
||||
options = options || {};
|
||||
var self = this;
|
||||
var def = new $.Deferred();
|
||||
|
||||
var list = [];
|
||||
for (var i = 0; i < this.pos.users.length; i++) {
|
||||
var user = this.pos.users[i];
|
||||
if (!options.only_managers || user.role === 'manager') {
|
||||
list.push({
|
||||
'label': user.name,
|
||||
'item': user,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.show_popup('selection',{
|
||||
'title': options.title || _t('Select User'),
|
||||
list: list,
|
||||
confirm: function(user){ def.resolve(user); },
|
||||
cancel: function(){ def.reject(); },
|
||||
});
|
||||
|
||||
return def.then(function(user){
|
||||
if (options.security && user !== options.current_user && user.pos_security_pin) {
|
||||
return self.ask_password(user.pos_security_pin).then(function(){
|
||||
return user;
|
||||
});
|
||||
} else {
|
||||
return user;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// Ask for a password, and checks if it this
|
||||
// the same as specified by the function call.
|
||||
// returns a deferred that resolves on success,
|
||||
// fails on failure.
|
||||
ask_password: function(password) {
|
||||
var self = this;
|
||||
var ret = new $.Deferred();
|
||||
if (password) {
|
||||
this.gui.show_popup('password',{
|
||||
'title': _t('Password ?'),
|
||||
confirm: function(pw) {
|
||||
if (pw !== password) {
|
||||
self.show_popup('error',_t('Incorrect Password'));
|
||||
ret.reject();
|
||||
} else {
|
||||
ret.resolve();
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
ret.resolve();
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
|
||||
// checks if the current user (or the user provided) has manager
|
||||
// access rights. If not, a popup is shown allowing the user to
|
||||
// temporarily login as an administrator.
|
||||
// This method returns a deferred, that succeeds with the
|
||||
// manager user when the login is successfull.
|
||||
sudo: function(user){
|
||||
var def = new $.Deferred();
|
||||
user = user || this.pos.get_cashier();
|
||||
|
||||
if (user.role === 'manager') {
|
||||
return new $.Deferred().resolve(user);
|
||||
} else {
|
||||
return this.select_user({
|
||||
security: true,
|
||||
only_managers: true,
|
||||
title: _t('Login as a Manager'),
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/* ---- Gui: CLOSING THE POINT OF SALE ---- */
|
||||
|
||||
close: function() {
|
||||
var self = this;
|
||||
this.chrome.loading_show();
|
||||
this.chrome.loading_message(_t('Closing ...'));
|
||||
|
||||
this.pos.push_order().then(function(){
|
||||
return new instance.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_client_pos_menu']], ['res_id'])
|
||||
.pipe(function(res) {
|
||||
window.location = '/web#action=' + res[0]['res_id'];
|
||||
},function(err,event) {
|
||||
event.preventDefault();
|
||||
self.show_popup('error',{
|
||||
'title': _t('Could not close the point of sale.'),
|
||||
'body': _t('Your internet connection is probably down.'),
|
||||
});
|
||||
self.chrome.widget.close_button.renderElement();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/* ---- Gui: KEYBOARD INPUT ---- */
|
||||
|
||||
// This is a helper to handle numpad keyboard input.
|
||||
// - buffer: an empty or number string
|
||||
// - input: '[0-9],'+','-','.','CLEAR','BACKSPACE'
|
||||
// - options: 'firstinput' -> will clear buffer if
|
||||
// input is '[0-9]' or '.'
|
||||
// returns the new buffer containing the modifications
|
||||
// (the original is not touched)
|
||||
numpad_input: function(buffer, input, options) {
|
||||
var options = options || {};
|
||||
var newbuf = buffer.slice(0);
|
||||
|
||||
if (input === '.') {
|
||||
if (options.firstinput) {
|
||||
newbuf = "0.";
|
||||
}else if (!newbuf.length || newbuf === '-') {
|
||||
newbuf += "0.";
|
||||
} else if (newbuf.indexOf('.') < 0){
|
||||
newbuf = newbuf + '.';
|
||||
}
|
||||
} else if (input === 'CLEAR') {
|
||||
newbuf = "";
|
||||
} else if (input === 'BACKSPACE') {
|
||||
newbuf = newbuf.substring(0,newbuf.length - 1);
|
||||
} else if (input === '+') {
|
||||
if ( newbuf[0] === '-' ) {
|
||||
newbuf = newbuf.substring(1,newbuf.length);
|
||||
}
|
||||
} else if (input === '-') {
|
||||
if ( newbuf[0] === '-' ) {
|
||||
newbuf = newbuf.substring(1,newbuf.length);
|
||||
} else {
|
||||
newbuf = '-' + newbuf;
|
||||
}
|
||||
} else if (input[0] === '+' && !isNaN(parseFloat(input))) {
|
||||
newbuf = '' + ((parseFloat(newbuf) || 0) + parseFloat(input));
|
||||
} else if (!isNaN(parseInt(input))) {
|
||||
if (options.firstinput) {
|
||||
newbuf = '' + input;
|
||||
} else {
|
||||
newbuf += input;
|
||||
}
|
||||
}
|
||||
|
||||
return newbuf;
|
||||
},
|
||||
});
|
||||
|
||||
module.Gui.define_screen = function (classe) {
|
||||
module.Gui.prototype.screen_classes.push(classe);
|
||||
};
|
||||
|
||||
module.Gui.define_popup = function (classe) {
|
||||
module.Gui.prototype.popup_classes.push(classe);
|
||||
};
|
||||
};
|
||||
|
||||
@@ -5,7 +5,7 @@ openerp.point_of_sale.load_keyboard = function load_keyboard(instance, module){
|
||||
// A Widget that displays an onscreen keyboard.
|
||||
// There are two options when creating the widget :
|
||||
//
|
||||
// * 'keyboard_model' : 'simple' | 'full' (default)
|
||||
// * 'keyboard_model' : 'simple' (default) | 'full'
|
||||
// The 'full' emulates a PC keyboard, while 'simple' emulates an 'android' one.
|
||||
//
|
||||
// * 'input_selector : (default: '.searchbox input')
|
||||
@@ -21,7 +21,7 @@ openerp.point_of_sale.load_keyboard = function load_keyboard(instance, module){
|
||||
this._super(parent,options);
|
||||
options = options || {};
|
||||
|
||||
this.keyboard_model = options.keyboard_model || 'full';
|
||||
this.keyboard_model = options.keyboard_model || 'simple';
|
||||
if(this.keyboard_model === 'full'){
|
||||
this.template = 'OnscreenKeyboardFull';
|
||||
}
|
||||
@@ -4,21 +4,24 @@ openerp.point_of_sale = function(openerp) {
|
||||
|
||||
var module = openerp.point_of_sale;
|
||||
|
||||
openerp.point_of_sale.load_db(openerp,module); // import db.js
|
||||
openerp.point_of_sale.load_db(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_models(openerp,module); // import pos_models.js
|
||||
openerp.point_of_sale.load_models(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_basewidget(openerp,module); // import pos_basewidget.js
|
||||
openerp.point_of_sale.load_basewidget(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_keyboard(openerp,module); // import pos_keyboard_widget.js
|
||||
openerp.point_of_sale.load_keyboard(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_screens(openerp,module); // import pos_screens.js
|
||||
openerp.point_of_sale.load_gui(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_devices(openerp,module); // import pos_devices.js
|
||||
openerp.point_of_sale.load_popups(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_widgets(openerp,module); // import pos_widgets.js
|
||||
openerp.point_of_sale.load_screens(openerp,module);
|
||||
|
||||
openerp.web.client_actions.add('pos.ui', 'openerp.point_of_sale.PosWidget');
|
||||
openerp.point_of_sale.load_devices(openerp,module);
|
||||
|
||||
openerp.point_of_sale.load_chrome(openerp,module);
|
||||
|
||||
openerp.web.client_actions.add('pos.ui', 'openerp.point_of_sale.Chrome');
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
var barcode_parser_module = instance.barcodes;
|
||||
|
||||
var round_di = instance.web.round_decimals;
|
||||
var round_pr = instance.web.round_precision
|
||||
@@ -24,7 +23,8 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
var self = this;
|
||||
this.session = session;
|
||||
this.flush_mutex = new $.Mutex(); // used to make sure the orders are sent to the server once at time
|
||||
this.pos_widget = attributes.pos_widget;
|
||||
this.chrome = attributes.chrome;
|
||||
this.gui = attributes.gui;
|
||||
|
||||
this.proxy = new module.ProxyDevice(this); // used to communicate to the hardware devices via a local proxy
|
||||
this.barcode_reader = new module.BarcodeReader({'pos': this, proxy:this.proxy});
|
||||
@@ -34,7 +34,6 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
this.debug = jQuery.deparam(jQuery.param.querystring()).debug !== undefined; //debug mode
|
||||
|
||||
// Business data; loaded from the server at launch
|
||||
this.accounting_precision = 2; //TODO
|
||||
this.company_logo = null;
|
||||
this.company_logo_base64 = '';
|
||||
this.currency = null;
|
||||
@@ -73,18 +72,23 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
this.get('orders').bind('remove', function(order,_unused_,options){
|
||||
self.on_removed_order(order,options.index,options.reason);
|
||||
});
|
||||
|
||||
|
||||
// We fetch the backend data on the server asynchronously. this is done only when the pos user interface is launched,
|
||||
// Any change on this data made on the server is thus not reflected on the point of sale until it is relaunched.
|
||||
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
|
||||
this.ready = this.load_server_data()
|
||||
.then(function(){
|
||||
if(self.config.use_proxy){
|
||||
return self.connect_to_proxy();
|
||||
}
|
||||
}); // used to read barcodes);
|
||||
this.ready = this.load_server_data().then(function(){
|
||||
return self.after_load_server_data();
|
||||
});;
|
||||
},
|
||||
after_load_server_data: function(){
|
||||
this.barcode_reader.connect();
|
||||
this.load_orders();
|
||||
this.set_start_order();
|
||||
this.push_order();
|
||||
if(this.config.use_proxy){
|
||||
return this.connect_to_proxy();
|
||||
}
|
||||
},
|
||||
|
||||
// releases ressources holds by the model at the end of life of the posmodel
|
||||
destroy: function(){
|
||||
// FIXME, should wait for flushing, return a deferred to indicate successfull destruction
|
||||
@@ -93,18 +97,19 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
this.barcode_reader.disconnect();
|
||||
this.barcode_reader.disconnect_from_proxy();
|
||||
},
|
||||
|
||||
connect_to_proxy: function(){
|
||||
var self = this;
|
||||
var done = new $.Deferred();
|
||||
this.barcode_reader.disconnect_from_proxy();
|
||||
this.pos_widget.loading_message(_t('Connecting to the PosBox'),0);
|
||||
this.pos_widget.loading_skip(function(){
|
||||
this.chrome.loading_message(_t('Connecting to the PosBox'),0);
|
||||
this.chrome.loading_skip(function(){
|
||||
self.proxy.stop_searching();
|
||||
});
|
||||
this.proxy.autoconnect({
|
||||
force_ip: self.config.proxy_ip || undefined,
|
||||
progress: function(prog){
|
||||
self.pos_widget.loading_progress(prog);
|
||||
self.chrome.loading_progress(prog);
|
||||
},
|
||||
}).then(function(){
|
||||
if(self.config.iface_scan_via_proxy){
|
||||
@@ -116,13 +121,6 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
return done;
|
||||
},
|
||||
|
||||
// helper function to load data from the server. Obsolete use the models loader below.
|
||||
fetch: function(model, fields, domain, ctx){
|
||||
this._load_progress = (this._load_progress || 0) + 0.05;
|
||||
this.pos_widget.loading_message(_t('Loading')+' '+model,this._load_progress);
|
||||
return new instance.web.Model(model).query(fields).filter(domain).context(ctx).all()
|
||||
},
|
||||
|
||||
// Server side model loaders. This is the list of the models that need to be loaded from
|
||||
// the server. The models are loaded one by one by this list's order. The 'loaded' callback
|
||||
// is used to store the data in the appropriate place once it has been loaded. This callback
|
||||
@@ -397,7 +395,7 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
}, {
|
||||
label: 'barcodes',
|
||||
loaded: function(self) {
|
||||
var barcode_parser = new barcode_parser_module.BarcodeParser({'nomenclature_id': self.config.barcode_nomenclature_id});
|
||||
var barcode_parser = new instance.barcodes.BarcodeParser({'nomenclature_id': self.config.barcode_nomenclature_id});
|
||||
self.barcode_reader.set_barcode_parser(barcode_parser);
|
||||
return barcode_parser.is_loaded();
|
||||
},
|
||||
@@ -417,7 +415,7 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
loaded.resolve();
|
||||
}else{
|
||||
var model = self.models[index];
|
||||
self.pos_widget.loading_message(_t('Loading')+' '+(model.label || model.model || ''), progress);
|
||||
self.chrome.loading_message(_t('Loading')+' '+(model.label || model.model || ''), progress);
|
||||
|
||||
var cond = typeof model.condition === 'function' ? model.condition(self,tmp) : true;
|
||||
if (!cond) {
|
||||
@@ -593,7 +591,6 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
var self = this;
|
||||
|
||||
if(order){
|
||||
this.proxy.log('push_order',order.export_as_JSON());
|
||||
this.db.add_order(order.export_as_JSON());
|
||||
}
|
||||
|
||||
@@ -649,7 +646,7 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
transfer.pipe(function(order_server_id){
|
||||
|
||||
// generate the pdf and download it
|
||||
self.pos_widget.do_action('point_of_sale.pos_invoice_report',{additional_context:{
|
||||
self.chrome.do_action('point_of_sale.pos_invoice_report',{additional_context:{
|
||||
active_ids:order_server_id,
|
||||
}});
|
||||
|
||||
@@ -722,9 +719,9 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
if (error.data.exception_type == 'warning') {
|
||||
delete error.data.debug;
|
||||
}
|
||||
self.pos_widget.screen_selector.show_popup('error-traceback',{
|
||||
message: error.data.message,
|
||||
comment: error.data.debug
|
||||
self.gui.show_popup('error-traceback',{
|
||||
'title': error.data.message,
|
||||
'body': error.data.debug
|
||||
});
|
||||
}
|
||||
// prevent an error popup creation by the rpc failure
|
||||
@@ -756,6 +753,96 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
},
|
||||
});
|
||||
|
||||
// Add fields to the list of read fields when a model is loaded
|
||||
// by the point of sale.
|
||||
// e.g: module.load_fields("product.product",['price','category'])
|
||||
|
||||
module.load_fields = function(model_name, fields) {
|
||||
if (!(fields instanceof Array)) {
|
||||
fields = [fields];
|
||||
}
|
||||
|
||||
var models = module.PosModel.prototype.models;
|
||||
for (var i = 0; i < models.length; i++) {
|
||||
var model = models[i];
|
||||
if (model.model === model_name) {
|
||||
// if 'fields' is empty all fields are loaded, so we do not need
|
||||
// to modify the array
|
||||
if ((model.fields instanceof Array) && model.fields.length > 0) {
|
||||
model.fields = model.fields.concat(fields || []);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Loads openerp models at the point of sale startup.
|
||||
// load_models take an array of model loader declarations.
|
||||
// - The models will be loaded in the array order.
|
||||
// - If no openerp model name is provided, no server data
|
||||
// will be loaded, but the system can be used to preprocess
|
||||
// data before load.
|
||||
// - loader arguments can be functions that return a dynamic
|
||||
// value. The function takes the PosModel as the first argument
|
||||
// and a temporary object that is shared by all models, and can
|
||||
// be used to store transient information between model loads.
|
||||
// - There is no dependency management. The models must be loaded
|
||||
// in the right order. Newly added models are loaded at the end
|
||||
// but the after / before options can be used to load directly
|
||||
// before / after another model.
|
||||
//
|
||||
// models: [{
|
||||
// model: [string] the name of the openerp model to load.
|
||||
// label: [string] The label displayed during load.
|
||||
// fields: [[string]|function] the list of fields to be loaded.
|
||||
// Empty Array / Null loads all fields.
|
||||
// order: [[string]|function] the models will be ordered by
|
||||
// the provided fields
|
||||
// domain: [domain|function] the domain that determines what
|
||||
// models need to be loaded. Null loads everything
|
||||
// ids: [[id]|function] the id list of the models that must
|
||||
// be loaded. Overrides domain.
|
||||
// context: [Dict|function] the openerp context for the model read
|
||||
// condition: [function] do not load the models if it evaluates to
|
||||
// false.
|
||||
// loaded: [function(self,model)] this function is called once the
|
||||
// models have been loaded, with the data as second argument
|
||||
// if the function returns a deferred, the next model will
|
||||
// wait until it resolves before loading.
|
||||
// }]
|
||||
//
|
||||
// options:
|
||||
// before: [string] The model will be loaded before the named models
|
||||
// (applies to both model name and label)
|
||||
// after: [string] The model will be loaded after the (last loaded)
|
||||
// named model. (applies to both model name and label)
|
||||
//
|
||||
module.load_models = function(models,options) {
|
||||
options = options || {};
|
||||
if (!(models instanceof Array)) {
|
||||
models = [models];
|
||||
}
|
||||
|
||||
var pmodels = module.PosModel.prototype.models;
|
||||
var index = pmodels.length;
|
||||
if (options.before) {
|
||||
for (var i = 0; i < pmodels.length; i++) {
|
||||
if ( pmodels[i].model === options.before ||
|
||||
pmodels[i].label === options.before ){
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (options.after) {
|
||||
for (var i = 0; i < pmodels.length; i++) {
|
||||
if ( pmodels[i].model === options.after ||
|
||||
pmodels[i].label === options.after ){
|
||||
index = i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
pmodels.splice.apply(pmodels,[index,0].concat(models));
|
||||
};
|
||||
|
||||
var orderline_id = 1;
|
||||
|
||||
// An orderline represent one element of the content of a client's shopping cart.
|
||||
@@ -1107,7 +1194,7 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
this.pos = options.pos;
|
||||
this.selected_orderline = undefined;
|
||||
this.selected_paymentline = undefined;
|
||||
this.screen_data = {}; // see ScreenSelector
|
||||
this.screen_data = {}; // see Gui
|
||||
this.temporary = options.temporary || false;
|
||||
this.creation_date = new Date();
|
||||
this.to_invoice = false;
|
||||
@@ -1236,7 +1323,7 @@ openerp.point_of_sale.load_models = function load_models(instance, module){ //mo
|
||||
qweb.default_dict = _.clone(QWeb.default_dict);
|
||||
qweb.add_template('<templates><t t-name="subreceipt">'+subreceipt+'</t></templates>');
|
||||
|
||||
return qweb.render('subreceipt',{'pos':self.pos,'widget':self.pos.pos_widget,'order':self, 'receipt': receipt}) ;
|
||||
return qweb.render('subreceipt',{'pos':self.pos,'widget':self.pos.chrome,'order':self, 'receipt': receipt}) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,246 @@
|
||||
|
||||
// This file contains the Popups.
|
||||
// Popups must be loaded and named in chrome.js.
|
||||
// They are instanciated / destroyed with the .gui.show_popup()
|
||||
// and .gui.close_popup() methods.
|
||||
|
||||
openerp.point_of_sale.load_popups = function load_popups(instance, module) {
|
||||
"use strict";
|
||||
|
||||
module.PopupWidget = module.PosBaseWidget.extend({
|
||||
init: function(parent, args) {
|
||||
this._super(parent, args);
|
||||
this.options = {};
|
||||
},
|
||||
events: {
|
||||
'click .button.cancel': 'click_cancel',
|
||||
'click .button.confirm': 'click_confirm',
|
||||
'click .selection-item': 'click_item',
|
||||
'click .input-button': 'click_numpad',
|
||||
'click .mode-button': 'click_numpad',
|
||||
},
|
||||
|
||||
// show the popup !
|
||||
show: function(options){
|
||||
if(this.$el){
|
||||
this.$el.removeClass('oe_hidden');
|
||||
}
|
||||
|
||||
if (typeof options === 'string') {
|
||||
this.options = {title: options};
|
||||
} else {
|
||||
this.options = options || {};
|
||||
}
|
||||
|
||||
this.renderElement();
|
||||
|
||||
// popups block the barcode reader ...
|
||||
if (this.pos.barcode_reader) {
|
||||
this.pos.barcode_reader.save_callbacks();
|
||||
this.pos.barcode_reader.reset_action_callbacks();
|
||||
}
|
||||
},
|
||||
|
||||
// called before hide, when a popup is closed.
|
||||
// extend this if you want a custom action when the
|
||||
// popup is closed.
|
||||
close: function(){
|
||||
if (this.pos.barcode_reader) {
|
||||
this.pos.barcode_reader.restore_callbacks();
|
||||
}
|
||||
},
|
||||
|
||||
// hides the popup. keep in mind that this is called in
|
||||
// the initialization pass of the pos instantiation,
|
||||
// so you don't want to do anything fancy in here
|
||||
hide: function(){
|
||||
if (this.$el) {
|
||||
this.$el.addClass('oe_hidden');
|
||||
}
|
||||
},
|
||||
|
||||
// what happens when we click cancel
|
||||
// ( it should close the popup and do nothing )
|
||||
click_cancel: function(){
|
||||
this.gui.close_popup();
|
||||
if (this.options.cancel) {
|
||||
this.options.cancel.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
// what happens when we confirm the action
|
||||
click_confirm: function(){
|
||||
this.gui.close_popup();
|
||||
if (this.options.confirm) {
|
||||
this.options.confirm.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
// Since Widget does not support extending the events declaration
|
||||
// we declared them all in the top class.
|
||||
click_item: function(){},
|
||||
click_numad: function(){},
|
||||
});
|
||||
|
||||
|
||||
module.ErrorPopupWidget = module.PopupWidget.extend({
|
||||
template:'ErrorPopupWidget',
|
||||
show: function(options){
|
||||
this._super(options);
|
||||
|
||||
$('body').append('<audio src="/point_of_sale/static/src/sounds/error.wav" autoplay="true"></audio>');
|
||||
|
||||
},
|
||||
});
|
||||
module.Gui.define_popup({name:'error', widget:module.ErrorPopupWidget});
|
||||
|
||||
|
||||
module.ErrorTracebackPopupWidget = module.ErrorPopupWidget.extend({
|
||||
template:'ErrorTracebackPopupWidget',
|
||||
});
|
||||
module.Gui.define_popup({name:'error-traceback', widget:module.ErrorTracebackPopupWidget});
|
||||
|
||||
|
||||
module.ErrorBarcodePopupWidget = module.ErrorPopupWidget.extend({
|
||||
template:'ErrorBarcodePopupWidget',
|
||||
show: function(barcode){
|
||||
this._super({barcode: barcode});
|
||||
},
|
||||
});
|
||||
module.Gui.define_popup({name:'error-barcode', widget:module.ErrorBarcodePopupWidget});
|
||||
|
||||
|
||||
module.ConfirmPopupWidget = module.PopupWidget.extend({
|
||||
template: 'ConfirmPopupWidget',
|
||||
});
|
||||
module.Gui.define_popup({name:'confirm', widget:module.ConfirmPopupWidget});
|
||||
|
||||
/**
|
||||
* A popup that allows the user to select one item from a list.
|
||||
*
|
||||
* show_popup('selection',{
|
||||
* title: "Popup Title",
|
||||
* list: [
|
||||
* { label: 'foobar', item: 45 },
|
||||
* { label: 'bar foo', item: 'stuff' },
|
||||
* ],
|
||||
* confirm: function(item) {
|
||||
* // get the item selected by the user.
|
||||
* },
|
||||
* cancel: function(){
|
||||
* // user chose nothing
|
||||
* }
|
||||
* });
|
||||
*/
|
||||
|
||||
module.SelectionPopupWidget = module.PopupWidget.extend({
|
||||
template: 'SelectionPopupWidget',
|
||||
show: function(options){
|
||||
options = options || {};
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
this.list = options.list || [];
|
||||
this.renderElement();
|
||||
|
||||
this.$('.selection-item').click(function(){
|
||||
if (options.confirm) {
|
||||
var item = self.list[parseInt($(this).data('item-index'))];
|
||||
item = item ? item.item : item;
|
||||
options.confirm.call(self,item);
|
||||
}
|
||||
});
|
||||
},
|
||||
click_item : function(event) {
|
||||
this.gui.close_popup();
|
||||
if (this.options.confirm) {
|
||||
var item = self.list[parseInt($(event.target).data('item-index'))];
|
||||
item = item ? item.item : item;
|
||||
}
|
||||
}
|
||||
});
|
||||
module.Gui.define_popup({name:'selection', widget:module.SelectionPopupWidget});
|
||||
|
||||
|
||||
module.TextInputPopupWidget = module.PopupWidget.extend({
|
||||
template: 'TextInputPopupWidget',
|
||||
show: function(options){
|
||||
options = options || {};
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
this.renderElement();
|
||||
this.$('input,textarea').focus();
|
||||
|
||||
this.$('.button.confirm').click(function(){
|
||||
});
|
||||
},
|
||||
click_confirm: function(){
|
||||
var value = self.$('input,textarea').val();
|
||||
self.gui.close_popup();
|
||||
if( this.options.confirm ){
|
||||
this.options.confirm.call(self,value);
|
||||
}
|
||||
},
|
||||
});
|
||||
module.Gui.define_popup({name:'textinput', widget:module.TextInputPopupWidget});
|
||||
|
||||
|
||||
module.TextAreaPopupWidget = module.TextInputPopupWidget.extend({
|
||||
template: 'TextAreaPopupWidget',
|
||||
});
|
||||
module.Gui.define_popup({name:'textarea', widget:module.TextAreaPopupWidget});
|
||||
|
||||
|
||||
module.NumberPopupWidget = module.PopupWidget.extend({
|
||||
template: 'NumberPopupWidget',
|
||||
show: function(options){
|
||||
options = options || {};
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
this.inputbuffer = options.value || '';
|
||||
this.renderElement();
|
||||
this.firstinput = true;
|
||||
},
|
||||
click_numpad: function(event){
|
||||
var newbuf = this.gui.numpad_input(
|
||||
this.inputbuffer,
|
||||
$(event.target).data('action'),
|
||||
{'firstinput': this.firstinput});
|
||||
|
||||
this.firstinput = (newbuf.length === 0);
|
||||
|
||||
if (newbuf !== this.inputbuffer) {
|
||||
this.inputbuffer = newbuf;
|
||||
this.$('.value').text(this.inputbuffer);
|
||||
}
|
||||
},
|
||||
click_confirm: function(event){
|
||||
this.gui.close_popup();
|
||||
if( this.options.confirm ){
|
||||
this.options.confirm.call(this,this.inputbuffer);
|
||||
}
|
||||
},
|
||||
});
|
||||
module.Gui.define_popup({name:'number', widget:module.NumberPopupWidget});
|
||||
|
||||
module.PasswordPopupWidget = module.NumberPopupWidget.extend({
|
||||
renderElement: function(){
|
||||
this._super();
|
||||
this.$('.popup').addClass('popup-password');
|
||||
},
|
||||
});
|
||||
module.Gui.define_popup({name:'password', widget:module.PasswordPopupWidget});
|
||||
|
||||
module.UnsentOrdersPopupWidget = module.ConfirmPopupWidget.extend({
|
||||
template: 'UnsentOrdersPopupWidget',
|
||||
});
|
||||
module.Gui.define_popup({name:'unsent-orders', widget:module.UnsentOrdersPopupWidget});
|
||||
|
||||
module.UnpaidOrdersPopupWidget = module.ConfirmPopupWidget.extend({
|
||||
template: 'UnpaidOrdersPopupWidget',
|
||||
});
|
||||
module.Gui.define_popup({name:'unpaid-orders', widget:module.UnpaidOrdersPopupWidget});
|
||||
};
|
||||
|
||||
@@ -17,8 +17,9 @@ openerp.point_of_sale.load_basewidget = function load_basewidget(instance, modul
|
||||
init:function(parent,options){
|
||||
this._super(parent);
|
||||
options = options || {};
|
||||
this.pos = options.pos || (parent ? parent.pos : undefined);
|
||||
this.pos_widget = options.pos_widget || (parent ? parent.pos_widget : undefined);
|
||||
this.pos = options.pos || (parent ? parent.pos : undefined);
|
||||
this.chrome = options.chrome || (parent ? parent.chrome : undefined);
|
||||
this.gui = options.gui || (parent ? parent.gui : undefined);
|
||||
},
|
||||
format_currency: function(amount,precision){
|
||||
var currency = (this.pos && this.pos.currency) ? this.pos.currency : {symbol:'$', position: 'after', rounding: 0.01, decimals: 2};
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
-->
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="PosWidget">
|
||||
<t t-name="Chrome">
|
||||
<div class="pos">
|
||||
<div class="pos-topheader">
|
||||
<div class="pos-branding">
|
||||
@@ -18,35 +18,11 @@
|
||||
|
||||
<div class="pos-content">
|
||||
|
||||
<div class="pos-leftpane">
|
||||
<div class='window'>
|
||||
<div class='subwindow'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix'>
|
||||
<div class="placeholder-OrderWidget"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='subwindow collapsed'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix pads'>
|
||||
<div class="control-buttons oe_hidden"></div>
|
||||
<div class="placeholder-ActionpadWidget"></div>
|
||||
<div class="placeholder-NumpadWidget"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rightpane">
|
||||
<div class='window'>
|
||||
<div class='subwindow'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix screens'>
|
||||
</div>
|
||||
<div class='window'>
|
||||
<div class='subwindow'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix screens'>
|
||||
<!-- here go the screens -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,6 +31,10 @@
|
||||
<div class="placeholder-OnscreenKeyboardWidget"></div>
|
||||
</div>
|
||||
|
||||
<div class='popups'>
|
||||
<!-- here go the popups -->
|
||||
</div>
|
||||
|
||||
<div class="loader">
|
||||
<div class='loader-feedback oe_hidden'>
|
||||
<h1 class='message'>Loading</h1>
|
||||
@@ -67,18 +47,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--[if IE]>
|
||||
<div class='not-supported-browser'>
|
||||
<div class='message'>
|
||||
<img src='/point_of_sale/static/src/img/pos_screenshot.jpg' />
|
||||
<p>
|
||||
The Point of Sale is not supported by Microsoft Internet Explorer. Please use
|
||||
a modern browser like <a href="http://www.mozilla.org/firefox/" target="_blank">Mozilla Firefox</a>
|
||||
or <a href="http://www.google.com/chrome" target="_blank">Google Chrome</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<![endif]-->
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -125,6 +93,12 @@
|
||||
<div>There are pending operations that could not be saved into the database, are you sure you want to exit?</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ActionButtonWidget">
|
||||
<div class='control-button'>
|
||||
<t t-esc='widget.label' />
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ActionpadWidget">
|
||||
<div class="actionpad">
|
||||
<button class='button set-customer'>
|
||||
@@ -157,7 +131,7 @@
|
||||
<button class="input-button number-char">0</button>
|
||||
<button class="input-button number-char">.</button>
|
||||
<button class="input-button numpad-backspace">
|
||||
<img src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
|
||||
<img style="pointer-events: none;" src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
|
||||
</button>
|
||||
<br />
|
||||
</div>
|
||||
@@ -224,23 +198,47 @@
|
||||
|
||||
<t t-name="ProductScreenWidget">
|
||||
<div class="product-screen screen">
|
||||
<table class="layout-table">
|
||||
|
||||
<tr class="header-row">
|
||||
<td class="header-cell">
|
||||
<span class="placeholder-ProductCategoriesWidget" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="content-row">
|
||||
<td class="content-cell">
|
||||
<div class="content-container">
|
||||
<span class="placeholder-ProductListWidget" />
|
||||
<div class="leftpane">
|
||||
<div class='window'>
|
||||
<div class='subwindow'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix'>
|
||||
<div class="placeholder-OrderWidget"></div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</div>
|
||||
|
||||
</table>
|
||||
<div class='subwindow collapsed'>
|
||||
<div class='subwindow-container'>
|
||||
<div class='subwindow-container-fix pads'>
|
||||
<div class="control-buttons oe_hidden"></div>
|
||||
<div class="placeholder-ActionpadWidget"></div>
|
||||
<div class="placeholder-NumpadWidget"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="rightpane">
|
||||
<table class="layout-table">
|
||||
|
||||
<tr class="header-row">
|
||||
<td class="header-cell">
|
||||
<span class="placeholder-ProductCategoriesWidget" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr class="content-row">
|
||||
<td class="content-cell">
|
||||
<div class="content-container">
|
||||
<span class="placeholder-ProductListWidget" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -797,72 +795,13 @@
|
||||
</receipt>
|
||||
</t>
|
||||
|
||||
<t t-name="FullscreenPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-fullscreen">
|
||||
<p class="message">Fullscreen Setup</p>
|
||||
|
||||
<t t-if='widget.ismobile()'>
|
||||
<p class="comment">
|
||||
The best way to make the point of sale fullscreen on mobile
|
||||
devices is to add the point of sale to your home screen. On
|
||||
iPhone and iPad this is done by tapping <img src='/point_of_sale/static/src/img/ios-share-icon.png' />
|
||||
and then <i>Add to Homescreen</i>
|
||||
</p>
|
||||
<p class='comment'>
|
||||
This also works on Android with the Chrome Beta Browser, using the <i>Add to Homescreen</i> option
|
||||
in the browser's menu.
|
||||
</p>
|
||||
<p class='comment'>
|
||||
If you want to work in fullscreen just this time tap the <i>Go Fullscreen</i> button.
|
||||
</p>
|
||||
</t>
|
||||
|
||||
<t t-if='!widget.ismobile()'>
|
||||
<p class="comment">
|
||||
The best way to make the point of sale fullscreen on desktop
|
||||
and laptops is to launch your browser in kiosk mode. Please
|
||||
refer to your browser's documentation for the specific
|
||||
instructions.
|
||||
</p>
|
||||
<p class="comment">
|
||||
If you want to work in fullscreen just this time, click the <i> Go Fullscreen</i> button.
|
||||
</p>
|
||||
</t>
|
||||
|
||||
<div class="footer">
|
||||
<div class="button fullscreen">
|
||||
Go Fullscreen
|
||||
</div>
|
||||
<div class="button cancel">
|
||||
Cancel
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ErrorInvoiceTransferPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-invoice">
|
||||
<p class="message">The Order could not be sent to the server for invoicing. Invoices cannot be generated
|
||||
in offline mode. Please check your internet connection and try again.</p>
|
||||
<div class="footer">
|
||||
<div class="button">
|
||||
Ok
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
|
||||
<t t-name="ErrorPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-error">
|
||||
<p class="message"><t t-esc=" widget.message || 'Error' " /></p>
|
||||
<p class="comment"><t t-esc=" widget.comment || '' "/></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || 'Error' " /></p>
|
||||
<p class="body"><t t-esc=" widget.options.body || '' "/></p>
|
||||
<div class="footer">
|
||||
<div class="button">
|
||||
<div class="button cancel">
|
||||
Ok
|
||||
</div>
|
||||
</div>
|
||||
@@ -873,10 +812,10 @@
|
||||
<t t-name="ErrorTracebackPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-error">
|
||||
<p class="message"><t t-esc=" widget.message || 'Error' " /></p>
|
||||
<p class="comment traceback"><t t-esc=" widget.comment || '' "/></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || 'Error' " /></p>
|
||||
<p class="body traceback"><t t-esc=" widget.options.body || '' "/></p>
|
||||
<div class="footer">
|
||||
<div class="button">
|
||||
<div class="button cancel">
|
||||
Ok
|
||||
</div>
|
||||
</div>
|
||||
@@ -887,10 +826,10 @@
|
||||
<t t-name="ErrorTracebackPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-error">
|
||||
<p class="message"><t t-esc=" widget.message || 'Error' " /></p>
|
||||
<p class="comment traceback"><t t-esc=" widget.comment || '' "/></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || 'Error' " /></p>
|
||||
<p class="body traceback"><t t-esc=" widget.options.body || '' "/></p>
|
||||
<div class="footer">
|
||||
<div class="button">
|
||||
<div class="button cancel">
|
||||
Ok
|
||||
</div>
|
||||
</div>
|
||||
@@ -901,16 +840,16 @@
|
||||
<t t-name="ErrorBarcodePopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-barcode">
|
||||
<p class="message">Unknown Barcode
|
||||
<p class="title">Unknown Barcode
|
||||
<br />
|
||||
<span class='barcode'><t t-esc="widget.barcode" /></span>
|
||||
<span class='barcode'><t t-esc="widget.options.barcode" /></span>
|
||||
</p>
|
||||
<p class="comment">
|
||||
<p class="body">
|
||||
The Point of Sale could not find any product, client, employee
|
||||
or action associated with the scanned barcode.
|
||||
</p>
|
||||
<div class="footer">
|
||||
<div class="button">
|
||||
<div class="button cancel">
|
||||
Ok
|
||||
</div>
|
||||
</div>
|
||||
@@ -921,8 +860,8 @@
|
||||
<t t-name="ConfirmPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-confirm">
|
||||
<p class="message"><t t-esc=" widget.message || 'Confirm ?' " /></p>
|
||||
<p class="comment"><t t-esc=" widget.comment || '' "/></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || 'Confirm ?' " /></p>
|
||||
<p class="body"><t t-esc=" widget.options.body || '' "/></p>
|
||||
<div class="footer">
|
||||
<div class="button confirm">
|
||||
Confirm
|
||||
@@ -938,8 +877,8 @@
|
||||
<t t-name="TextInputPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-textinput">
|
||||
<p class="message"><t t-esc=" widget.message || '' " /></p>
|
||||
<input type='text' t-att-value="widget.value || ''"></input>
|
||||
<p class="title"><t t-esc=" widget.options.title || '' " /></p>
|
||||
<input type='text' t-att-value="widget.options.value || ''"></input>
|
||||
<div class="footer">
|
||||
<div class="button confirm">
|
||||
Ok
|
||||
@@ -955,8 +894,8 @@
|
||||
<t t-name="TextAreaPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-textinput">
|
||||
<p class="message"><t t-esc=" widget.message || '' " /></p>
|
||||
<textarea rows="10" cols="40"><t t-esc="widget.value" /></textarea>
|
||||
<p class="title"><t t-esc=" widget.options.title || '' " /></p>
|
||||
<textarea rows="10" cols="40"><t t-esc="widget.options.value" /></textarea>
|
||||
<div class="footer">
|
||||
<div class="button confirm">
|
||||
Ok
|
||||
@@ -972,14 +911,14 @@
|
||||
<t t-name="UnsentOrdersPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-unsent-orders">
|
||||
<p class="message">Unsent Orders</p>
|
||||
<p class="title">Unsent Orders</p>
|
||||
<t t-if='widget.pos.db.get_orders().length === 0'>
|
||||
<p class='comment'>
|
||||
<p class='body'>
|
||||
There are no unsent orders
|
||||
</p>
|
||||
</t>
|
||||
<t t-if='widget.pos.db.get_orders().length > 0'>
|
||||
<p class='comment traceback'>
|
||||
<p class='body traceback'>
|
||||
<t t-esc='JSON.stringify(widget.pos.db.get_orders(),null,2)' />
|
||||
</p>
|
||||
</t>
|
||||
@@ -995,14 +934,14 @@
|
||||
<t t-name="UnpaidOrdersPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-unpaid-orders">
|
||||
<p class="message">Unpaid Orders</p>
|
||||
<p class="title">Unpaid Orders</p>
|
||||
<t t-if='widget.pos.db.get_unpaid_orders().length === 0'>
|
||||
<p class='comment'>
|
||||
<p class='body'>
|
||||
There are no unpaid orders
|
||||
</p>
|
||||
</t>
|
||||
<t t-if='widget.pos.db.get_unpaid_orders().length > 0'>
|
||||
<p class='comment traceback'>
|
||||
<p class='body traceback'>
|
||||
<t t-esc='JSON.stringify(widget.pos.db.get_unpaid_orders(),null,2)' />
|
||||
</p>
|
||||
</t>
|
||||
@@ -1018,7 +957,7 @@
|
||||
<t t-name="SelectionPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-selection">
|
||||
<p class="message"><t t-esc=" widget.message || 'Select' " /></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || 'Select' " /></p>
|
||||
<div class='selection scrollable-y touch-scrollable'>
|
||||
<t t-foreach="widget.list || []" t-as="item">
|
||||
<div class='selection-item' t-att-data-item-index='item_index'>
|
||||
@@ -1038,7 +977,7 @@
|
||||
<t t-name="NumberPopupWidget">
|
||||
<div class="modal-dialog">
|
||||
<div class="popup popup-number">
|
||||
<p class="message"><t t-esc=" widget.message || '' " /></p>
|
||||
<p class="title"><t t-esc=" widget.options.title || '' " /></p>
|
||||
<div class='popup-input value active'>
|
||||
<t t-esc='widget.inputbuffer' />
|
||||
</div>
|
||||
@@ -1062,7 +1001,7 @@
|
||||
<button class="input-button number-char" data-action='0'>0</button>
|
||||
<button class="input-button number-char dot" data-action='.'>.</button>
|
||||
<button class="input-button numpad-backspace" data-action='BACKSPACE' >
|
||||
<img src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
|
||||
<img style="pointer-events: none;" src="/point_of_sale/static/src/img/backspace.png" width="24" height="21" />
|
||||
</button>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
@@ -11,9 +11,11 @@
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/db.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/models.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/widget_base.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/widget_keyboard.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/widgets.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/keyboard.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/chrome.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/devices.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/gui.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/popups.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/screens.js"></script>
|
||||
<script type="text/javascript" src="/point_of_sale/static/src/js/tests.js"></script>
|
||||
</xpath>
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/point_of_sale/static/src/img/touch-icon-iphone-retina.png"/>
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/point_of_sale/static/src/img/touch-icon-ipad-retina.png"/>
|
||||
|
||||
<style> body { background: #222; } </style>
|
||||
|
||||
<link rel="shortcut icon" href="/web/static/src/img/favicon.ico" type="image/x-icon"/>
|
||||
<link rel="stylesheet" href="/point_of_sale/static/src/fonts/lato/stylesheet.css" />
|
||||
<link rel="stylesheet" href="/web/static/lib/fontawesome/css/font-awesome.css" />
|
||||
|
||||
@@ -5,28 +5,23 @@ openerp.pos_discount = function(instance){
|
||||
|
||||
QWeb.add_template('/pos_discount/static/src/xml/discount.xml');
|
||||
|
||||
module.PosWidget.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
if(!this.pos.config.discount_product_id){
|
||||
return;
|
||||
module.DiscountButton = module.ActionButtonWidget.extend({
|
||||
template: 'DiscountButton',
|
||||
button_click: function(){
|
||||
var order = this.pos.get_order();
|
||||
var product = this.pos.db.get_product_by_id(this.pos.config.discount_product_id[0]);
|
||||
var discount = - this.pos.config.discount_pc/ 100.0 * order.get_total_with_tax();
|
||||
if( discount < 0 ){
|
||||
order.add_product(product, { price: discount });
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
var discount = $(QWeb.render('DiscountButton'));
|
||||
|
||||
discount.click(function(){
|
||||
var order = self.pos.get_order();
|
||||
var product = self.pos.db.get_product_by_id(self.pos.config.discount_product_id[0]);
|
||||
var discount = - self.pos.config.discount_pc/ 100.0 * order.get_total_tax_included();
|
||||
if( discount < 0 ){
|
||||
order.add_product(product, { price: discount });
|
||||
}
|
||||
});
|
||||
|
||||
discount.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
module.define_action_button({
|
||||
'name': 'discount',
|
||||
'widget': module.DiscountButton,
|
||||
'condition': function(){
|
||||
return this.pos.config.discount_product_id;
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -4,67 +4,65 @@ openerp.pos_loyalty = function(instance){
|
||||
var round_pr = instance.web.round_precision
|
||||
var QWeb = instance.web.qweb;
|
||||
|
||||
var models = module.PosModel.prototype.models;
|
||||
for (var i = 0; i < models.length; i++) {
|
||||
var model = models[i];
|
||||
if (model.model === 'res.partner') {
|
||||
model.fields.push('loyalty_points');
|
||||
} else if (model.model === 'product.product') {
|
||||
// load loyalty after products
|
||||
models.push(i+1,0,{
|
||||
model: 'loyalty.program',
|
||||
condition: function(self){ return !!self.config.loyalty_id[0]; },
|
||||
fields: ['name','pp_currency','pp_product','pp_order','rounding'],
|
||||
domain: function(self){ return [['id','=',self.config.loyalty_id[0]]]; },
|
||||
loaded: function(self,loyalties){ self.loyalty = loyalties[0]; },
|
||||
},{
|
||||
model: 'loyalty.rule',
|
||||
condition: function(self){ return !!self.loyalty; },
|
||||
fields: ['name','type','product_id','category_id','cumulative','pp_product','pp_currency'],
|
||||
domain: function(self){ return [['loyalty_program_id','=',self.loyalty.id]]; },
|
||||
loaded: function(self,rules){
|
||||
module.load_fields('res.partner','loyalty_points');
|
||||
|
||||
self.loyalty.rules = rules;
|
||||
self.loyalty.rules_by_product_id = {};
|
||||
self.loyalty.rules_by_category_id = {};
|
||||
module.load_models([
|
||||
{
|
||||
model: 'loyalty.program',
|
||||
condition: function(self){ return !!self.config.loyalty_id[0]; },
|
||||
fields: ['name','pp_currency','pp_product','pp_order','rounding'],
|
||||
domain: function(self){ return [['id','=',self.config.loyalty_id[0]]]; },
|
||||
loaded: function(self,loyalties){
|
||||
self.loyalty = loyalties[0];
|
||||
console.log('loyalty',self.loyalty);
|
||||
},
|
||||
},{
|
||||
model: 'loyalty.rule',
|
||||
condition: function(self){ return !!self.loyalty; },
|
||||
fields: ['name','type','product_id','category_id','cumulative','pp_product','pp_currency'],
|
||||
domain: function(self){ return [['loyalty_program_id','=',self.loyalty.id]]; },
|
||||
loaded: function(self,rules){
|
||||
|
||||
for (var i = 0; i < rules.length; i++){
|
||||
var rule = rules[i];
|
||||
if (rule.type === 'product') {
|
||||
if (!self.loyalty.rules_by_product_id[rule.product_id[0]]) {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]] = [rule];
|
||||
} else if (rule.cumulative) {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]].unshift(rule);
|
||||
} else {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]].push(rule);
|
||||
}
|
||||
} else if (rule.type === 'category') {
|
||||
var category = self.db.get_category_by_id(rule.category_id[0]);
|
||||
if (!self.loyalty.rules_by_category_id[category.id]) {
|
||||
self.loyalty.rules_by_category_id[category.id] = [rule];
|
||||
} else if (rule.cumulative) {
|
||||
self.loyalty.rules_by_category_id[category.id].unshift(rule);
|
||||
} else {
|
||||
self.loyalty.rules_by_category_id[category.id].push(rule);
|
||||
}
|
||||
self.loyalty.rules = rules;
|
||||
self.loyalty.rules_by_product_id = {};
|
||||
self.loyalty.rules_by_category_id = {};
|
||||
|
||||
for (var i = 0; i < rules.length; i++){
|
||||
var rule = rules[i];
|
||||
if (rule.type === 'product') {
|
||||
if (!self.loyalty.rules_by_product_id[rule.product_id[0]]) {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]] = [rule];
|
||||
} else if (rule.cumulative) {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]].unshift(rule);
|
||||
} else {
|
||||
self.loyalty.rules_by_product_id[rule.product_id[0]].push(rule);
|
||||
}
|
||||
} else if (rule.type === 'category') {
|
||||
var category = self.db.get_category_by_id(rule.category_id[0]);
|
||||
if (!self.loyalty.rules_by_category_id[category.id]) {
|
||||
self.loyalty.rules_by_category_id[category.id] = [rule];
|
||||
} else if (rule.cumulative) {
|
||||
self.loyalty.rules_by_category_id[category.id].unshift(rule);
|
||||
} else {
|
||||
self.loyalty.rules_by_category_id[category.id].push(rule);
|
||||
}
|
||||
}
|
||||
},
|
||||
},{
|
||||
model: 'loyalty.reward',
|
||||
condition: function(self){ return !!self.loyalty; },
|
||||
fields: ['name','type','minimum_points','gift_product_id','point_cost','discount_product_id','discount','point_value','point_product_id'],
|
||||
domain: function(self){ return [['loyalty_program_id','=',self.loyalty.id]]; },
|
||||
loaded: function(self,rewards){
|
||||
self.loyalty.rewards = rewards;
|
||||
self.loyalty.rewards_by_id = {};
|
||||
for (var i = 0; i < rewards.length;i++) {
|
||||
self.loyalty.rewards_by_id[rewards[i].id] = rewards[i];
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},{
|
||||
model: 'loyalty.reward',
|
||||
condition: function(self){ return !!self.loyalty; },
|
||||
fields: ['name','type','minimum_points','gift_product_id','point_cost','discount_product_id','discount','point_value','point_product_id'],
|
||||
domain: function(self){ return [['loyalty_program_id','=',self.loyalty.id]]; },
|
||||
loaded: function(self,rewards){
|
||||
self.loyalty.rewards = rewards;
|
||||
self.loyalty.rewards_by_id = {};
|
||||
for (var i = 0; i < rewards.length;i++) {
|
||||
self.loyalty.rewards_by_id[rewards[i].id] = rewards[i];
|
||||
}
|
||||
},
|
||||
},
|
||||
],{'after': 'product.product'});
|
||||
|
||||
var _super_orderline = module.Orderline;
|
||||
module.Orderline = module.Orderline.extend({
|
||||
@@ -243,14 +241,11 @@ openerp.pos_loyalty = function(instance){
|
||||
return;
|
||||
} else if (reward.type === 'gift') {
|
||||
var product = this.pos.db.get_product_by_id(reward.gift_product_id[0]);
|
||||
|
||||
if (!product) {
|
||||
this.pos.pos_widget.screen_selector.show_popup('error',{
|
||||
'message':'Configuration Error',
|
||||
'comment':'The product associated with the reward "'+reward.name+'" could not be found. Make sure it is available for sale in the point of sale.',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var line = this.add_product(product, {
|
||||
price: 0,
|
||||
quantity: 1,
|
||||
@@ -271,11 +266,8 @@ openerp.pos_loyalty = function(instance){
|
||||
}
|
||||
|
||||
var product = this.pos.db.get_product_by_id(reward.discount_product_id[0]);
|
||||
if (!product) { //FIXME, move this as a server side constraint
|
||||
this.pos.pos_widget.screen_selector.show_popup('error',{
|
||||
'message':'Configuration Error',
|
||||
'comment':'The product associated with the reward "'+reward.name+'" could not be found. Make sure it is available for sale in the point of sale.',
|
||||
});
|
||||
|
||||
if (!product) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -294,11 +286,7 @@ openerp.pos_loyalty = function(instance){
|
||||
var order_total = this.get_total_with_tax();
|
||||
var product = this.pos.db.get_product_by_id(reward.point_product_id[0]);
|
||||
|
||||
if (!product) { //FIXME, move this as a server side constraint
|
||||
this.pos.pos_widget.screen_selector.show_popup('error',{
|
||||
'message':'Configuration Error',
|
||||
'comment':'The product associated with the reward "'+reward.name+'" could not be found. Make sure it is available for sale in the point of sale.',
|
||||
});
|
||||
if (!product) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -309,6 +297,7 @@ openerp.pos_loyalty = function(instance){
|
||||
if ( spendable < 0.00001 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var line = this.add_product(product, {
|
||||
quantity: -spendable,
|
||||
merge: false,
|
||||
@@ -324,6 +313,7 @@ openerp.pos_loyalty = function(instance){
|
||||
}
|
||||
_super.prototype.validate.apply(this,arguments);
|
||||
},
|
||||
|
||||
export_for_printing: function(){
|
||||
var json = _super.prototype.export_for_printing.apply(this,arguments);
|
||||
if (this.pos.loyalty && this.get_client()) {
|
||||
@@ -338,6 +328,7 @@ openerp.pos_loyalty = function(instance){
|
||||
}
|
||||
return json;
|
||||
},
|
||||
|
||||
export_as_JSON: function(){
|
||||
var json = _super.prototype.export_as_JSON.apply(this,arguments);
|
||||
json.loyalty_points = this.get_new_points();
|
||||
@@ -345,21 +336,22 @@ openerp.pos_loyalty = function(instance){
|
||||
},
|
||||
});
|
||||
|
||||
module.PosWidget.include({
|
||||
loyalty_reward_click: function(){
|
||||
module.LoyaltyButton = module.ActionButtonWidget.extend({
|
||||
template: 'LoyaltyButton',
|
||||
button_click: function(){
|
||||
var self = this;
|
||||
var order = this.pos.get_order();
|
||||
var client = order.get_client();
|
||||
if (!client) {
|
||||
this.screen_selector.set_current_screen('clientlist');
|
||||
this.gui.show_screen('clientlist');
|
||||
return;
|
||||
}
|
||||
|
||||
var rewards = order.get_available_rewards();
|
||||
if (rewards.length === 0) {
|
||||
this.screen_selector.show_popup('error',{
|
||||
'message': 'No Rewards Available',
|
||||
'comment': 'There are no rewards available for this customer as part of the loyalty program',
|
||||
this.gui.show_popup('error',{
|
||||
'title': 'No Rewards Available',
|
||||
'body': 'There are no rewards available for this customer as part of the loyalty program',
|
||||
});
|
||||
return;
|
||||
} else if (rewards.length === 1 && this.pos.loyalty.rewards.length === 1) {
|
||||
@@ -373,8 +365,8 @@ openerp.pos_loyalty = function(instance){
|
||||
item: rewards[i],
|
||||
});
|
||||
}
|
||||
this.screen_selector.show_popup('selection',{
|
||||
'message': 'Please select a reward',
|
||||
this.gui.show_popup('selection',{
|
||||
'title': 'Please select a reward',
|
||||
'list': list,
|
||||
'confirm': function(reward){
|
||||
order.apply_reward(reward);
|
||||
@@ -382,21 +374,16 @@ openerp.pos_loyalty = function(instance){
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
if(this.pos.loyalty && this.pos.loyalty.rewards.length ){
|
||||
var button = $(QWeb.render('LoyaltyButton'));
|
||||
button.click(function(){ self.loyalty_reward_click(); });
|
||||
button.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
}
|
||||
|
||||
},
|
||||
});
|
||||
|
||||
module.define_action_button({
|
||||
'name': 'loyalty',
|
||||
'widget': module.LoyaltyButton,
|
||||
'condition': function(){
|
||||
return this.pos.loyalty && this.pos.loyalty.rewards.length;
|
||||
},
|
||||
});
|
||||
|
||||
module.OrderWidget.include({
|
||||
update_summary: function(){
|
||||
this._super();
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
function openerp_restaurant_floors(instance,module){
|
||||
openerp.pos_restaurant.load_floors = function(instance,module){
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
// At POS Startup, load the floors, and add them to the pos model
|
||||
module.PosModel.prototype.models.push({
|
||||
module.load_models({
|
||||
model: 'restaurant.floor',
|
||||
fields: ['name','background_image','table_ids','sequence'],
|
||||
domain: function(self){ return [['pos_config_id','=',self.config.id]] },
|
||||
@@ -25,7 +25,7 @@ function openerp_restaurant_floors(instance,module){
|
||||
|
||||
// At POS Startup, after the floors are loaded, load the tables, and associate
|
||||
// them with their floor.
|
||||
module.PosModel.prototype.models.push({
|
||||
module.load_models({
|
||||
model: 'restaurant.table',
|
||||
fields: ['name','width','height','position_h','position_v','shape','floor_id','color'],
|
||||
loaded: function(self,tables){
|
||||
@@ -324,11 +324,11 @@ function openerp_restaurant_floors(instance,module){
|
||||
if (this.editing) {
|
||||
this.toggle_editing();
|
||||
}
|
||||
this.pos_widget.order_selector.show();
|
||||
this.chrome.widget.order_selector.show();
|
||||
},
|
||||
show: function(){
|
||||
this._super();
|
||||
this.pos_widget.order_selector.hide();
|
||||
this.chrome.widget.order_selector.hide();
|
||||
for (var i = 0; i < this.table_widgets.length; i++) {
|
||||
this.table_widgets[i].renderElement();
|
||||
}
|
||||
@@ -393,8 +393,8 @@ function openerp_restaurant_floors(instance,module){
|
||||
tool_rename_table: function(){
|
||||
var self = this;
|
||||
if (this.selected_table) {
|
||||
this.pos_widget.screen_selector.show_popup('textinput',{
|
||||
'message':_t('Table Name ?'),
|
||||
this.gui.show_popup('textinput',{
|
||||
'title':_t('Table Name ?'),
|
||||
'value': this.selected_table.table.name,
|
||||
'confirm': function(value) {
|
||||
self.selected_table.set_table_name(value);
|
||||
@@ -441,8 +441,8 @@ function openerp_restaurant_floors(instance,module){
|
||||
tool_trash_table: function(){
|
||||
var self = this;
|
||||
if (this.selected_table) {
|
||||
this.pos_widget.screen_selector.show_popup('confirm',{
|
||||
'message':_t('Are you sure ?'),
|
||||
this.gui.show_popup('confirm',{
|
||||
'title': _t('Are you sure ?'),
|
||||
'comment':_t('Removing a table cannot be undone'),
|
||||
'confirm': function(){
|
||||
self.selected_table.trash();
|
||||
@@ -562,36 +562,21 @@ function openerp_restaurant_floors(instance,module){
|
||||
},
|
||||
});
|
||||
|
||||
module.Gui.define_screen({
|
||||
'name': 'floors',
|
||||
'widget': module.FloorScreenWidget,
|
||||
'condition': function(){
|
||||
return this.pos.config.iface_floorplan;
|
||||
},
|
||||
});
|
||||
|
||||
// Add the FloorScreen to the GUI, and set it as the default screen
|
||||
module.PosWidget.include({
|
||||
module.Chrome.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
if (this.pos.config.iface_floorplan) {
|
||||
this.floors_screen = new module.FloorScreenWidget(this,{});
|
||||
this.floors_screen.appendTo(this.$('.screens'));
|
||||
this.screen_selector.add_screen('floors',this.floors_screen);
|
||||
this.screen_selector.change_default_screen('floors');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// when the floor plan is activated, we need to go back to the floor plan
|
||||
// when an order is completed. Usually on order completion, a new order is
|
||||
// set as the current one. Now, we set the new order to null.
|
||||
// load_saved_screen() is called whenever the current order is changed, and
|
||||
// will detect this, and set the current screen to the default_screen,
|
||||
// which is the floor plan.
|
||||
module.ScreenSelector.include({
|
||||
load_saved_screen: function(){
|
||||
if (this.pos.config.iface_floorplan) {
|
||||
if (!this.pos.get_order()) {
|
||||
this.set_current_screen(this.default_screen,null,'refresh');
|
||||
} else {
|
||||
this._super({default_screen:'products'});
|
||||
}
|
||||
} else {
|
||||
this._super.apply(this,arguments);
|
||||
this.gui.set_startup_screen('floors');
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -756,4 +741,5 @@ function openerp_restaurant_floors(instance,module){
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
openerp.pos_restaurant = function(instance){
|
||||
openerp.pos_restaurant = function(openerp){
|
||||
|
||||
var module = instance.point_of_sale;
|
||||
var module = openerp.point_of_sale;
|
||||
|
||||
openerp_restaurant_notes(instance,module);
|
||||
openerp.pos_restaurant.load_notes(openerp,module);
|
||||
|
||||
openerp_restaurant_splitbill(instance,module);
|
||||
openerp.pos_restaurant.load_splitbill(openerp,module);
|
||||
|
||||
openerp_restaurant_printbill(instance,module);
|
||||
openerp.pos_restaurant.load_printbill(openerp,module);
|
||||
|
||||
openerp_restaurant_floors(instance,module);
|
||||
openerp.pos_restaurant.load_floors(openerp,module);
|
||||
|
||||
openerp.pos_restaurant.load_multiprint(openerp,module);
|
||||
|
||||
openerp_restaurant_multiprint(instance,module);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
function openerp_restaurant_multiprint(instance,module){
|
||||
openerp.pos_restaurant.load_multiprint = function(instance,module){
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
@@ -33,7 +33,7 @@ function openerp_restaurant_multiprint(instance,module){
|
||||
},
|
||||
});
|
||||
|
||||
module.PosModel.prototype.models.push({
|
||||
module.load_models({
|
||||
model: 'restaurant.printer',
|
||||
fields: ['name','proxy_ip','product_categories_ids'],
|
||||
domain: null,
|
||||
@@ -220,41 +220,42 @@ function openerp_restaurant_multiprint(instance,module){
|
||||
},
|
||||
});
|
||||
|
||||
module.PosWidget.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
if(this.pos.printers.length){
|
||||
var submitorder = $(QWeb.render('SubmitOrderButton'));
|
||||
|
||||
submitorder.click(function(){
|
||||
var order = self.pos.get('selectedOrder');
|
||||
if(order.hasChangesToPrint()){
|
||||
order.printChanges();
|
||||
order.saveChanges();
|
||||
self.pos_widget.order_widget.update_summary();
|
||||
}
|
||||
});
|
||||
|
||||
submitorder.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
module.SubmitOrderButton = module.ActionButtonWidget.extend({
|
||||
'template': 'SubmitOrderButton',
|
||||
button_click: function(){
|
||||
var order = this.pos.get_order();
|
||||
if(order.hasChangesToPrint()){
|
||||
order.printChanges();
|
||||
order.saveChanges();
|
||||
}
|
||||
},
|
||||
|
||||
hilight: function(hi){
|
||||
if (hi) {
|
||||
this.$el.addClass('highlight');
|
||||
} else {
|
||||
this.$el.removeClass('highlight');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
module.define_action_button({
|
||||
'name': 'submit_order',
|
||||
'widget': module.SubmitOrderButton,
|
||||
'condition': function() {
|
||||
return this.pos.printers.length;
|
||||
},
|
||||
});
|
||||
|
||||
module.OrderWidget.include({
|
||||
update_summary: function(){
|
||||
this._super();
|
||||
var order = this.pos.get('selectedOrder');
|
||||
|
||||
if(order.hasChangesToPrint()){
|
||||
this.pos_widget.$('.order-submit').addClass('highlight');
|
||||
}else{
|
||||
this.pos_widget.$('.order-submit').removeClass('highlight');
|
||||
var changes = this.pos.get_order().hasChangesToPrint();
|
||||
if (this.getParent().action_buttons &&
|
||||
this.getParent().action_buttons.submit_order) {
|
||||
this.getParent().action_buttons.submit_order.highlight(changes);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
function openerp_restaurant_notes(instance,module){
|
||||
openerp.pos_restaurant.load_notes = function(instance,module){
|
||||
"use strict";
|
||||
|
||||
var QWeb = instance.web.qweb;
|
||||
@@ -41,13 +41,12 @@ function openerp_restaurant_notes(instance,module){
|
||||
},
|
||||
});
|
||||
|
||||
module.PosWidget.include({
|
||||
orderline_note_click: function(){
|
||||
var self = this;
|
||||
module.OrderlineNoteButton = module.ActionButtonWidget.extend({
|
||||
template: 'OrderlineNoteButton',
|
||||
button_click: function(){
|
||||
var line = this.pos.get_order().get_selected_orderline();
|
||||
|
||||
if (line) {
|
||||
this.screen_selector.show_popup('textarea',{
|
||||
this.gui.show_popup('textarea',{
|
||||
message: _t('Orderline Note'),
|
||||
value: line.get_note(),
|
||||
confirm: function(note) {
|
||||
@@ -56,16 +55,14 @@ function openerp_restaurant_notes(instance,module){
|
||||
});
|
||||
}
|
||||
},
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
});
|
||||
|
||||
if (this.pos.config.iface_orderline_notes) {
|
||||
var button = $(QWeb.render('OrderlineNoteButton'));
|
||||
button.click(function(){ self.orderline_note_click(); });
|
||||
button.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
}
|
||||
module.define_action_button({
|
||||
'name': 'orderline_note',
|
||||
'widget': module.OrderlineNoteButton,
|
||||
'condition': function(){
|
||||
return this.pos.config.iface_orderline_notes;
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
function openerp_restaurant_printbill(instance,module){
|
||||
openerp.pos_restaurant.load_printbill = function(instance,module){
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
module.PosWidget.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
|
||||
if(this.pos.config.iface_printbill){
|
||||
var printbill = $(QWeb.render('PrintBillButton'));
|
||||
|
||||
printbill.click(function(){
|
||||
var order = self.pos.get('selectedOrder');
|
||||
if(order.get_orderlines().length > 0){
|
||||
var receipt = order.export_for_printing();
|
||||
receipt.bill = true;
|
||||
self.pos.proxy.print_receipt(QWeb.render('BillReceipt',{
|
||||
receipt: receipt, widget: self, pos: self.pos, order: order,
|
||||
}));
|
||||
}
|
||||
});
|
||||
|
||||
printbill.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
module.PrintBillButton = module.ActionButtonWidget.extend({
|
||||
template: 'PrintBillButton',
|
||||
button_click: function(){
|
||||
var order = this.pos.get('selectedOrder');
|
||||
if(order.get_orderlines().length > 0){
|
||||
var receipt = order.export_for_printing();
|
||||
receipt.bill = true;
|
||||
this.pos.proxy.print_receipt(QWeb.render('BillReceipt',{
|
||||
receipt: receipt, widget: this, pos: this.pos, order: order,
|
||||
}));
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
module.define_action_button({
|
||||
'name': 'print_bill',
|
||||
'widget': module.PrintBillButton,
|
||||
'condition': function(){
|
||||
return this.pos.config.iface_printbill;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
function openerp_restaurant_splitbill(instance, module){
|
||||
openerp.pos_restaurant.load_splitbill = function(instance, module){
|
||||
var QWeb = instance.web.qweb;
|
||||
var _t = instance.web._t;
|
||||
|
||||
module.SplitbillScreenWidget = module.ScreenWidget.extend({
|
||||
template: 'SplitbillScreenWidget',
|
||||
|
||||
show_leftpane: false,
|
||||
previous_screen: 'products',
|
||||
|
||||
renderElement: function(){
|
||||
@@ -29,7 +27,7 @@ function openerp_restaurant_splitbill(instance, module){
|
||||
this.$('.orderlines').append(linewidget);
|
||||
}
|
||||
this.$('.back').click(function(){
|
||||
self.pos_widget.screen_selector.set_current_screen(self.previous_screen);
|
||||
self.gui.show_screen(self.previous_screen);
|
||||
});
|
||||
},
|
||||
|
||||
@@ -102,7 +100,7 @@ function openerp_restaurant_splitbill(instance, module){
|
||||
|
||||
|
||||
if(full){
|
||||
this.pos_widget.screen_selector.set_current_screen('payment');
|
||||
this.gui.show_screen('payment');
|
||||
}else{
|
||||
for(var id in splitlines){
|
||||
var split = splitlines[id];
|
||||
@@ -157,27 +155,29 @@ function openerp_restaurant_splitbill(instance, module){
|
||||
},
|
||||
});
|
||||
|
||||
module.PosWidget.include({
|
||||
build_widgets: function(){
|
||||
var self = this;
|
||||
this._super();
|
||||
module.Gui.define_screen({
|
||||
'name': 'splitbill',
|
||||
'widget': module.SplitbillScreenWidget,
|
||||
'condition': function(){
|
||||
return this.pos.config.iface_splitbill;
|
||||
},
|
||||
});
|
||||
|
||||
if(this.pos.config.iface_splitbill){
|
||||
this.splitbill_screen = new module.SplitbillScreenWidget(this,{});
|
||||
this.splitbill_screen.appendTo(this.$('.screens'));
|
||||
this.screen_selector.add_screen('splitbill',this.splitbill_screen);
|
||||
|
||||
var splitbill = $(QWeb.render('SplitbillButton'));
|
||||
|
||||
splitbill.click(function(){
|
||||
if(self.pos.get_order().get_orderlines().length > 0){
|
||||
self.pos_widget.screen_selector.set_current_screen('splitbill');
|
||||
}
|
||||
});
|
||||
|
||||
splitbill.appendTo(this.$('.control-buttons'));
|
||||
this.$('.control-buttons').removeClass('oe_hidden');
|
||||
module.SplitbillButton = module.ActionButtonWidget.extend({
|
||||
template: 'SplitbillButton',
|
||||
button_click: function(){
|
||||
if(this.pos.get_order().get_orderlines().length > 0){
|
||||
self.gui.show_screen('splitbill');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
module.define_action_button({
|
||||
'name': 'splitbill',
|
||||
'widget': module.SplitbillButton,
|
||||
'condition': function(){
|
||||
return this.pos.config.iface_splitbill;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
<template id="assets_frontend" inherit_id="web.assets_common">
|
||||
<xpath expr="." position="inside">
|
||||
<script type="text/javascript" src="/pos_restaurant/static/lib/js/jquery.event.drag-2.2.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/main.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/multiprint.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/splitbill.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/printbill.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/floors.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/notes.js"></script>
|
||||
<script type="text/javascript" src="/pos_restaurant/static/src/js/main.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
|
||||