Neues Initialrelease mit IonicMaterial
BIN
www/.DS_Store
vendored
Normal file
@@ -1,3 +0,0 @@
|
||||
select * from tblpokemon where pokemonweaka is null;
|
||||
|
||||
update tblpokemon set pokemonweaka=12, pokemonweakb=7, pokemonweakc=2, pokemonweakd=17, pokemonweake=0, pokemonweakf=0, pokemonweakg=0 where pokemontypa=14 and pokemontypb =18;
|
||||
66
www/app-data/product-list.json
Normal file
@@ -0,0 +1,66 @@
|
||||
[
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt. Created by material team.",
|
||||
"img": "img/shirt_01.png",
|
||||
"price": "590",
|
||||
"promotionPrice": "59"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by high quality silk",
|
||||
"fullDetail": "Plain design shirt. Created by material team. Made by high quality material.",
|
||||
"img": "img/shirt_05.png",
|
||||
"price": "800",
|
||||
"promotionPrice": "80"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by material.",
|
||||
"img": "img/shirt_03.png",
|
||||
"price": "450",
|
||||
"promotionPrice": "45"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by quality silk",
|
||||
"fullDetail": "Plain design shirt. Created by material team.",
|
||||
"img": "img/shirt_04.png",
|
||||
"price": "800",
|
||||
"promotionPrice": "80"
|
||||
},
|
||||
{
|
||||
"title": "Spring Shirt",
|
||||
"detail": "Made by quality silk",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_05.png",
|
||||
"price": "990",
|
||||
"promotionPrice": "99"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_02.png",
|
||||
"price": "100",
|
||||
"promotionPrice": "10"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_06.png",
|
||||
"price": "870",
|
||||
"promotionPrice": "87"
|
||||
},
|
||||
{
|
||||
"title": "Plain Shirt",
|
||||
"detail": "A shirt with plain design.",
|
||||
"fullDetail": "Plain design shirt made by high quality material.",
|
||||
"img": "img/shirt_01.png",
|
||||
"price": "300",
|
||||
"promotionPrice": "30"
|
||||
}
|
||||
]
|
||||
22
www/css/custom_style.css
Normal file
@@ -0,0 +1,22 @@
|
||||
.image-list-thumb {
|
||||
padding: 2px 2px 2px 2px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.chip {
|
||||
display: inline-block;
|
||||
padding: 0 25px;
|
||||
height: 50px;
|
||||
font-size: 16px;
|
||||
line-height: 50px;
|
||||
border-radius: 25px;
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
.chip img {
|
||||
float: left;
|
||||
margin: 0 10px 0 -25px;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
9076
www/css/ionic.app.css
Normal file
1
www/css/ionic.app.min.css
vendored
Normal file
1835
www/css/style.css
1
www/css/style.min.css
vendored
Normal file
BIN
www/img/.DS_Store
vendored
Normal file
BIN
www/img/720.png
|
Before Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 38 KiB |
@@ -1,121 +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://web.resource.org/cc/"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="674.71478"
|
||||
height="672.0556"
|
||||
id="svg2"
|
||||
sodipodi:version="0.32"
|
||||
inkscape:version="0.44.1"
|
||||
version="1.0"
|
||||
sodipodi:docbase="G:\upload\wikipedia"
|
||||
sodipodi:docname="Poké Ball.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
gridtolerance="10000"
|
||||
guidetolerance="10"
|
||||
objecttolerance="10"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="148.5065"
|
||||
inkscape:cy="528.83678"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
width="800px"
|
||||
height="800px"
|
||||
inkscape:window-width="1024"
|
||||
inkscape:window-height="712"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="-4"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-10.15551,-175.0227)">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:maroon;fill-opacity:1;stroke:black;stroke-width:7.0999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2774"
|
||||
sodipodi:cx="373.75644"
|
||||
sodipodi:cy="387.68182"
|
||||
sodipodi:rx="127.27922"
|
||||
sodipodi:ry="127.27922"
|
||||
d="M 501.03566,387.68182 A 127.27922,127.27922 0 1 1 246.47722,387.68182"
|
||||
sodipodi:start="0"
|
||||
sodipodi:end="3.1415927"
|
||||
transform="matrix(2.578609,0,0,-2.578609,-616.2588,1512.06)"
|
||||
sodipodi:open="true" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#f2f2f2;fill-opacity:1;stroke:black;stroke-width:7.0999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2784"
|
||||
sodipodi:cx="373.75644"
|
||||
sodipodi:cy="387.68182"
|
||||
sodipodi:rx="127.27922"
|
||||
sodipodi:ry="127.27922"
|
||||
d="M 501.03566,387.68182 A 127.27922,127.27922 0 1 1 246.47722,387.68182"
|
||||
sodipodi:start="0"
|
||||
sodipodi:end="3.1415927"
|
||||
transform="matrix(2.577502,0,0,2.577502,-615.9308,-489.3849)"
|
||||
sodipodi:open="true" />
|
||||
<rect
|
||||
style="fill:black;fill-opacity:1;stroke:black;stroke-width:18.30812073;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect2796"
|
||||
width="640.96844"
|
||||
height="54.334965"
|
||||
x="27.916542"
|
||||
y="-543.58405"
|
||||
transform="scale(1,-1)" />
|
||||
<path
|
||||
transform="matrix(0,-4.180021,-4.179929,0,2511.532,1956.897)"
|
||||
sodipodi:end="7.7984207"
|
||||
sodipodi:start="1.5158726"
|
||||
d="M 346.66304,536.97405 A 20.535715,20.535715 0 1 1 346.6761,536.97333"
|
||||
sodipodi:ry="20.535715"
|
||||
sodipodi:rx="20.535715"
|
||||
sodipodi:cy="516.4693"
|
||||
sodipodi:cx="345.53571"
|
||||
id="path2798"
|
||||
style="fill:#f2f2f2;fill-opacity:1;stroke:black;stroke-width:4.33016944;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:open="true" />
|
||||
<path
|
||||
transform="matrix(0,-2.251635,-2.251585,0,1515.508,1288.684)"
|
||||
sodipodi:open="true"
|
||||
sodipodi:end="7.7853262"
|
||||
sodipodi:start="1.5158726"
|
||||
d="M 346.66304,536.97405 A 20.535715,20.535715 0 1 1 346.94449,536.95664"
|
||||
sodipodi:ry="20.535715"
|
||||
sodipodi:rx="20.535715"
|
||||
sodipodi:cy="516.4693"
|
||||
sodipodi:cx="345.53571"
|
||||
id="path2802"
|
||||
style="fill:#999;fill-opacity:1;stroke:none;stroke-width:7.0999999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><ellipse cx="8" cy="1044.4" fill="#fff" stroke="#000" stroke-width=".8" rx="7.6" ry="7.6" transform="translate(0 -1036.362)"/><path fill="#a00" fill-rule="evenodd" stroke="#000" stroke-width=".8" d="M8 .4c4.2 0 7.6 3.4 7.5 7.6H.5C.5 3.8 3.8.4 8 .4z"/><g fill="#fff" stroke="#000"><circle cx="8" cy="8" r="2.2" stroke-width=".8"/><circle cx="8" cy="8" r="1.1" stroke-width=".4"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 448 B |
BIN
www/img/adam.jpg
|
Before Width: | Height: | Size: 42 KiB |
BIN
www/img/app_icon.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 215 KiB |
BIN
www/img/background_cover_pixels.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
www/img/ben.png
|
Before Width: | Height: | Size: 260 KiB |
BIN
www/img/bg_cover_01.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
www/img/contract_us_bg.jpg
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
www/img/cube_feed_01.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
www/img/cube_feed_02.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
www/img/cube_feed_03.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
www/img/cube_feed_04.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 216 KiB |
BIN
www/img/food_01.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_02.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_03.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_04.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_05.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_06.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_07.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_08.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_09.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_10.png
Normal file
|
After Width: | Height: | Size: 875 B |
BIN
www/img/food_cover_01.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
www/img/food_cover_02.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
www/img/food_cover_03.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
1
www/img/icons/facebook.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M38,8v6h-4c-1.1,0-2,0.9-2,2v4h6v6h-6v14h-6V26h-4v-6h4v-5c0-3.9,3.1-7,7-7H38z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 403 B |
4
www/img/icons/favorite.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<path d="M0 0h24v24h-24z" fill="none"/>
|
||||
<path d="M12 21.35l-1.45-1.32c-5.15-4.67-8.55-7.75-8.55-11.53 0-3.08 2.42-5.5 5.5-5.5 1.74 0 3.41.81 4.5 2.09 1.09-1.28 2.76-2.09 4.5-2.09 3.08 0 5.5 2.42 5.5 5.5 0 3.78-3.4 6.86-8.55 11.54l-1.45 1.31z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 344 B |
1
www/img/icons/mail.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,8H8c-2.2,0-4,1.8-4,4l0,24c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V12C44,9.8,42.2,8,40,8z M40,16L24,26L8,16v-4l16,10l16-10V16z"/><rect fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 351 B |
4
www/img/icons/menu.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
||||
<path d="M0 0h18v18h-18z" fill="none"/>
|
||||
<path d="M2 13.5h14v-1.5h-14v1.5zm0-4h14v-1.5h-14v1.5zm0-5.5v1.5h14v-1.5h-14z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 220 B |
1
www/img/icons/message.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,36l8-8h28c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M36,28H12v-4h24V28z M36,22H12v-4h24V22zM36,16H12v-4h24V16z"/><rect x="0" fill="none" width="48" height="48"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 365 B |
4
www/img/icons/more_vert.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18">
|
||||
<path d="M0 0h18v18h-18z" fill="none"/>
|
||||
<path d="M9 5.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zm0 2c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 378 B |
1
www/img/icons/share-arrow.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve"><g><g><path fill="#7d7d7d" d="M21,11l-7-7v4C7,9,4,14,3,19c2.5-3.5,6-5.1,11-5.1V18L21,11z"/><rect fill="none" width="24" height="24"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 285 B |
2
www/img/icons/twitter.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
<svg version="1.1" x="0px" y="0px" width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve"><g><g><g><path fill="#7d7d7d" d="M40,4H8C5.8,4,4,5.8,4,8l0,32c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V8C44,5.8,42.2,4,40,4z M35.4,18.7c-0.1,9.2-6,15.6-14.8,16c-3.6,0.2-6.3-1-8.6-2.5c2.7,0.4,6-0.6,7.8-2.2c-2.6-0.3-4.2-1.6-4.9-3.8c0.8,0.1,1.6,0.1,2.3-0.1
|
||||
c-2.4-0.8-4.1-2.3-4.2-5.3c0.7,0.3,1.4,0.6,2.3,0.6c-1.8-1-3.1-4.7-1.6-7.2c2.6,2.9,5.8,5.3,11,5.6c-1.3-5.6,6.1-8.6,9.2-4.9c1.3-0.3,2.4-0.8,3.4-1.3c-0.4,1.3-1.2,2.2-2.2,2.9c1.1-0.1,2.1-0.4,2.9-0.8C37.5,16.9,36.4,17.9,35.4,18.7z"/></g><g><rect fill="none" width="48" height="48"/></g></g></g></svg>
|
||||
|
After Width: | Height: | Size: 680 B |
BIN
www/img/location_feed_01.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
www/img/location_feed_02.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
www/img/location_feed_03.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
www/img/location_feed_04.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
www/img/location_feed_05.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
www/img/max.png
|
Before Width: | Height: | Size: 18 KiB |
BIN
www/img/mike.png
|
Before Width: | Height: | Size: 233 KiB |
|
Before Width: | Height: | Size: 558 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
BIN
www/img/profileAvatar.jpg
Normal file
|
After Width: | Height: | Size: 559 KiB |
BIN
www/img/shirt_01.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/shirt_02.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/shirt_03.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/shirt_04.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/shirt_05.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/shirt_06.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
www/img/slide_01.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
www/img/slide_02.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
www/img/slide_03.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
www/img/slide_04.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
www/img/slide_05.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
www/img/slide_06.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
www/img/slide_07.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
www/img/slide_08.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 180 KiB |
164
www/index.html
@@ -1,46 +1,144 @@
|
||||
<!--This is a main HTML file of project default page when application start.-->
|
||||
<!--All reference of css and javascript lib is here.-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<!--head section This is a place of all reference of css and javascript lib-->
|
||||
<head>
|
||||
<!-- Meta section -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
|
||||
<meta name="format-detection" content="telephone=no"> <!-- To disable phone number typing.-->
|
||||
<!-- end Meta section -->
|
||||
<title></title>
|
||||
|
||||
<link href="lib/ionic/css/ionic.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="lib/ionic-filter-bar/dist/ionic.filter.bar.css">
|
||||
<link href="lib/ionic-material/dist/ionic.material.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="lib/robotodraft/robotodraft.css" type="text/css" />
|
||||
<link href="css/style.css" rel="stylesheet">
|
||||
<!-- IF using Sass (run gulp sass first), then uncomment below and remove the CSS includes above
|
||||
<link href="css/ionic.app.css" rel="stylesheet">
|
||||
-->
|
||||
<!-- Font reference section -->
|
||||
<link href="lib/robotodraft/robotodraft.css">
|
||||
<!-- end Font reference section -->
|
||||
|
||||
<!-- ionic/angularjs js -->
|
||||
<!-- CSS reference section -->
|
||||
<link rel="stylesheet" href="css/ionic.app.css">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<link rel="stylesheet" href="css/custom_style.css">
|
||||
<link rel="stylesheet prefetch" href="lib/angular-material/angular-material.css">
|
||||
<link rel="stylesheet" href="lib/font-awesome-4.4.0/css/font-awesome.css">
|
||||
<!-- end CSS reference section -->
|
||||
|
||||
<!-- Ionic javascript lib -->
|
||||
<script src="lib/ionic/js/ionic.bundle.js"></script>
|
||||
<script src="lib/ionic-material/dist/ionic.material.min.js"></script>
|
||||
<script src="lib/ionic-filter-bar/dist/ionic.filter.bar.js"></script>
|
||||
<!-- end Ionic javascript lib -->
|
||||
|
||||
<script src="js/ng-cordova.min.js"></script>
|
||||
<!-- cordova script (this will be a 404 during development) -->
|
||||
<!-- Angular javascript lib -->
|
||||
<script src="lib/angular-messages/angular-messages.js"></script>
|
||||
<script src="lib/angular-aria/angular-aria.js"></script>
|
||||
<script src="lib/angular-material/angular-material.js"></script>
|
||||
<!-- end Angular javascript lib -->
|
||||
|
||||
<!-- Cordova script (this will be a 404 during development) -->
|
||||
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
|
||||
<script src="cordova.js"></script>
|
||||
<!-- end Cordova script -->
|
||||
|
||||
<!-- your app's js -->
|
||||
<!--ionic framework ngIOS9UIWebViewPatch-->
|
||||
<!--Learn more about ngIOS9UIWebViewPatch at : http://blog.ionic.io/ios-9-potential-breaking-change/-->
|
||||
<script src="lib/ngIOS9UIWebViewPatch/angular-ios9-uiwebview.patch.js"></script>
|
||||
<!--end ionic framework ngIOS9UIWebViewPatch-->
|
||||
|
||||
<!-- app.js section-->
|
||||
<script src="js/app.js"></script>
|
||||
<!-- end app.js section-->
|
||||
|
||||
<!-- Controllers section-->
|
||||
<script src="js/controllers.js"></script>
|
||||
<script src="js/services.js"></script>
|
||||
</head>
|
||||
<body ng-app="starter">
|
||||
<!--
|
||||
The nav bar that will be updated as we navigate between views.
|
||||
-->
|
||||
<ion-nav-bar class="bar-stable">
|
||||
<ion-nav-back-button>
|
||||
</ion-nav-back-button>
|
||||
</ion-nav-bar>
|
||||
<!--
|
||||
The views will be rendered in the <ion-nav-view> directive below
|
||||
Templates are in the /templates folder (but you could also
|
||||
have templates inline in this html file if you'd like).
|
||||
-->
|
||||
<ion-nav-view></ion-nav-view>
|
||||
</body>
|
||||
</html>
|
||||
<script src="js/shared/directives.js"></script>
|
||||
<script src="js/shared/filter.js"></script>
|
||||
<script src="js/shared/controllers.js"></script>
|
||||
<script src="templates/menu/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/dashboard/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/sqLite/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/sqLite/js/services.js"></script>
|
||||
<script src="templates/imagedownload/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/local-application-db/js/controllers.js"></script>
|
||||
<script src="templates/application-storage/local-application-db/js/services.js"></script>
|
||||
<script src="templates/social-network-connect/facebook/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/instagram/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/google-plus/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/foursquare/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/dropbox/js/controllers.js"></script>
|
||||
<script src="templates/share-application-content/social-share/js/controllers.js"></script>
|
||||
<script src="templates/share-application-content/email-message/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/device-information/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/mobile-contract/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/flash-light/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/vibration/js/controllers.js"></script>
|
||||
<script src="templates/advertising-application/googleAdmob/js/controllers.js"></script>
|
||||
<script src="templates/hardware-connect/image-picker/js/controllers.js"></script>
|
||||
<script src="templates/social-network-connect/wordpress/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/dashboard/js/controllers.js"></script>
|
||||
<script src="templates/material-user-interface/default-user-interface/js/controllers.js"></script>
|
||||
<script src="templates/themes/menu-dashboard/js/controllers.js"></script>
|
||||
<script src="templates/themes/expense-dashboard/js/controllers.js"></script>
|
||||
<script src="templates/themes/catalog/js/controllers.js"></script>
|
||||
<script src="templates/push-notification/single-push-notification/js/controllers.js"></script>
|
||||
<script src="templates/push-notification/schedule-push-notification/js/controllers.js"></script>
|
||||
<script src="templates/map-and-location/ios-map-connect/js/controllers.js"></script>
|
||||
<script src="templates/map-and-location/android-map-connect/js/controllers.js"></script>
|
||||
<!-- end Controllers section-->
|
||||
|
||||
<!-- jQuery section-->
|
||||
<script src="lib/jQuery/jquery.js"></script>
|
||||
<!-- end jQuery section-->
|
||||
|
||||
</head><!-- end head section-->
|
||||
|
||||
<!--body section-->
|
||||
<body ng-app="starter" class="hide-native-scroll-y">
|
||||
|
||||
<!--Custom Style section-->
|
||||
<style type="text/css">
|
||||
{{customStyle}}
|
||||
</style><!-- end Custom Style section-->
|
||||
|
||||
<!-- Ionic navigation bar section-->
|
||||
<ion-nav-view></ion-nav-view>
|
||||
<!-- end Ionic navigation bar section-->
|
||||
|
||||
</body><!-- end body section-->
|
||||
|
||||
|
||||
<!-- Angular custom template section-->
|
||||
|
||||
<!--Share template confirm-dialog section-->
|
||||
<script type="text/ng-template" id="confirm-dialog.html">
|
||||
<md-dialog aria-label="confirm-dialog">
|
||||
<form>
|
||||
<md-dialog-content>
|
||||
<div>
|
||||
<h2 class="md-title">{{displayOption.title}}</h2>
|
||||
|
||||
<p>{{displayOption.content}}</p>
|
||||
</div>
|
||||
</md-dialog-content>
|
||||
<div class="md-actions" layout="row">
|
||||
<a class="md-primary-color dialog-action-btn" ng-click="cancel()">
|
||||
{{displayOption.cancel}}
|
||||
</a>
|
||||
<a class="md-primary-color dialog-action-btn" ng-click="ok()">
|
||||
{{displayOption.ok}}
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
</md-dialog>
|
||||
</script> <!-- end share template confirm-dialog section-->
|
||||
|
||||
<!-- Share template toast section-->
|
||||
<script type="text/ng-template" id="toast.html">
|
||||
<md-toast class="toast-form">
|
||||
<span flex>{{displayOption.title}}</span>
|
||||
</md-toast>
|
||||
</script><!-- end share template toast section-->
|
||||
|
||||
<!-- end Angular custom template section-->
|
||||
|
||||
</html>
|
||||
813
www/js/app.js
@@ -1,195 +1,640 @@
|
||||
// Ionic Starter App
|
||||
|
||||
// angular.module is a global place for creating, registering and retrieving Angular modules
|
||||
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
|
||||
// the 2nd parameter is an array of 'requires'
|
||||
// 'starter.services' is found in services.js
|
||||
// 'starter.controllers' is found in controllers.js
|
||||
var db;
|
||||
|
||||
angular.module('starter', ['ionic', 'ngCordova', 'jett.ionic.filter.bar','starter.controllers', 'starter.services','ionic-material'])
|
||||
|
||||
.run(function($ionicPlatform, $window, $ionicHistory, $database, $ionicPopup, $state, $window, $rootScope) {
|
||||
|
||||
$ionicPlatform.ready(function() {
|
||||
//
|
||||
//Welcome to app.js
|
||||
//This is main application config of project. You can change a setting of :
|
||||
// - Global Variable
|
||||
// - Theme setting
|
||||
// - Icon setting
|
||||
// - Register View
|
||||
// - Spinner setting
|
||||
// - Custom style
|
||||
//
|
||||
//Global variable use for setting color, start page, message, oAuth key.
|
||||
var db = null; //Use for SQLite database.
|
||||
window.globalVariable = {
|
||||
//custom color style variable
|
||||
color: {
|
||||
appPrimaryColor: "",
|
||||
dropboxColor: "#017EE6",
|
||||
facebookColor: "#3C5C99",
|
||||
foursquareColor: "#F94777",
|
||||
googlePlusColor: "#D73D32",
|
||||
instagramColor: "#517FA4",
|
||||
wordpressColor: "#0087BE"
|
||||
},// End custom color style variable
|
||||
startPage: {
|
||||
url: "/app/contractlist",//Url of start page.
|
||||
state: "app.contractlist"//State name of start page.
|
||||
},
|
||||
message: {
|
||||
errorMessage: "Technical error please try again later." //Default error message.
|
||||
},
|
||||
oAuth: {
|
||||
dropbox: "your_api_key",//Use for Dropbox API clientID.
|
||||
facebook: "your_api_key",//Use for Facebook API appID.
|
||||
foursquare: "your_api_key", //Use for Foursquare API clientID.
|
||||
instagram: "your_api_key",//Use for Instagram API clientID.
|
||||
googlePlus: "your_api_key",//Use for Google API clientID.
|
||||
},
|
||||
adMob: "your_api_key" //Use for AdMob API clientID.
|
||||
};// End Global variable
|
||||
|
||||
|
||||
$rootScope.storeinit=99;
|
||||
$rootScope.adfree=0;
|
||||
angular.module('starter', ['ionic','ngIOS9UIWebViewPatch', 'starter.controllers', 'starter.services', 'ngMaterial', 'ngMessages', 'ngCordova'])
|
||||
.run(function ($ionicPlatform, $cordovaSQLite, $rootScope, $ionicHistory, $state, $mdDialog, $mdBottomSheet) {
|
||||
|
||||
//Create database table of contracts by using sqlite database.
|
||||
//Table schema :
|
||||
//Column Type Primary key
|
||||
// id Integer Yes
|
||||
// firstName Text No
|
||||
// lastName Text No
|
||||
// telephone Text No
|
||||
// email Text No
|
||||
// note Text No
|
||||
// createDate DateTime No
|
||||
// age Integer No
|
||||
// isEnable Boolean No
|
||||
|
||||
function initialSQLite() {
|
||||
db = window.cordova ? $cordovaSQLite.openDB("pokedex.db") : window.openDatabase("pokedex.db", "1.0", "IonicMaterialDesignDB", -1);
|
||||
};
|
||||
// End creating SQLite database table.
|
||||
|
||||
// Create custom defaultStyle.
|
||||
function getDefaultStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : " + appPrimaryColor + " !important; " +
|
||||
" border-style : none;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom defaultStyle
|
||||
|
||||
// Create custom style for product view.
|
||||
function getProductStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : " + appPrimaryColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
" background-image : url('img/background_cover_pixels.png') !important;" +
|
||||
" background-size : initial !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom style for product view.
|
||||
|
||||
// Create custom style for contract us view.
|
||||
function getContractUsStyle() {
|
||||
return "" +
|
||||
".material-background-nav-bar { " +
|
||||
" background-color : transparent !important;" +
|
||||
" border-style : none;" +
|
||||
" background-image : none !important;" +
|
||||
" background-position-y : 4px !important;" +
|
||||
" background-size : initial !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
} // End create custom style for contract us view.
|
||||
|
||||
// Create custom style for Social Network view.
|
||||
function getSocialNetworkStyle(socialColor) {
|
||||
return "" +
|
||||
".material-background-nav-bar {" +
|
||||
" background : " + socialColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
"} " +
|
||||
"md-ink-bar {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
" background : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"md-tab-item {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-left .md-half-circle {" +
|
||||
" border-left-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" +
|
||||
" border-top-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
" md-progress-circular.md-warn .md-inner .md-gap {" +
|
||||
" border-top-color : " + socialColor + " !important;" +
|
||||
" border-bottom-color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"md-progress-circular.md-warn .md-inner .md-right .md-half-circle {" +
|
||||
" border-right-color : " + socialColor + " !important;" +
|
||||
" }" +
|
||||
".spinner-android {" +
|
||||
" stroke : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
".md-primary-color {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}" +
|
||||
"a.md-button.md-primary, .md-button.md-primary {" +
|
||||
" color : " + socialColor + " !important;" +
|
||||
"}";
|
||||
}// End create custom style for Social Network view.
|
||||
|
||||
|
||||
$ionicPlatform.registerBackButtonAction(function(event) {
|
||||
function initialRootScope() {
|
||||
$rootScope.appPrimaryColor = appPrimaryColor;// Add value of appPrimaryColor to rootScope for use it to base color.
|
||||
$rootScope.isAndroid = ionic.Platform.isAndroid();// Check platform of running device is android or not.
|
||||
$rootScope.isIOS = ionic.Platform.isIOS();// Check platform of running device is ios or not.
|
||||
};
|
||||
|
||||
// Handle Android back button to avoid the application exits accidentaly
|
||||
if ($state.current.name=="tab.dash") {
|
||||
$ionicPopup.confirm({
|
||||
title: 'System-Hinweis',
|
||||
template: 'Möchten Sie die App beenden?'
|
||||
}).then(function(res) {
|
||||
if (res) {
|
||||
ionic.Platform.exitApp();
|
||||
}
|
||||
function hideActionControl() {
|
||||
//For android if user tap hardware back button, Action and Dialog should be hide.
|
||||
$mdBottomSheet.cancel();
|
||||
$mdDialog.cancel();
|
||||
};
|
||||
|
||||
|
||||
// createCustomStyle will change a style of view while view changing.
|
||||
// Parameter :
|
||||
// stateName = name of state that going to change for add style of that page.
|
||||
function createCustomStyle(stateName) {
|
||||
var customStyle =
|
||||
".material-background {" +
|
||||
" background-color : " + appPrimaryColor + " !important;" +
|
||||
" border-style : none;" +
|
||||
"}" +
|
||||
".spinner-android {" +
|
||||
" stroke : " + appPrimaryColor + " !important;" +
|
||||
"}";
|
||||
|
||||
switch (stateName) {
|
||||
case "app.productList" :
|
||||
case "app.productDetail":
|
||||
case "app.productCheckout":
|
||||
case "app.clothShop" :
|
||||
case "app.catalog" :
|
||||
customStyle += getProductStyle();
|
||||
break;
|
||||
case "app.dropboxLogin" :
|
||||
case "app.dropboxProfile":
|
||||
case "app.dropboxFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.dropboxColor);
|
||||
break;
|
||||
case "app.facebookLogin" :
|
||||
case "app.facebookProfile":
|
||||
case "app.facebookFeed" :
|
||||
case "app.facebookFriendList":
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.facebookColor);
|
||||
break;
|
||||
case "app.foursquareLogin" :
|
||||
case "app.foursquareProfile":
|
||||
case "app.foursquareFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.foursquareColor);
|
||||
break;
|
||||
case "app.googlePlusLogin" :
|
||||
case "app.googlePlusProfile":
|
||||
case "app.googlePlusFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.googlePlusColor);
|
||||
break;
|
||||
case "app.instagramLogin" :
|
||||
case "app.instagramProfile":
|
||||
case "app.instagramFeed" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.instagramColor);
|
||||
break;
|
||||
case "app.wordpressLogin" :
|
||||
case "app.wordpressFeed":
|
||||
case "app.wordpressPost" :
|
||||
customStyle += getSocialNetworkStyle(window.globalVariable.color.wordpressColor);
|
||||
break;
|
||||
case "app.contractUs":
|
||||
customStyle += getContractUsStyle();
|
||||
break;
|
||||
default:
|
||||
customStyle += getDefaultStyle();
|
||||
break;
|
||||
}
|
||||
return customStyle;
|
||||
}// End createCustomStyle
|
||||
|
||||
// Add custom style while initial application.
|
||||
$rootScope.customStyle = createCustomStyle(window.globalVariable.startPage.state);
|
||||
|
||||
$ionicPlatform.ready(function () {
|
||||
ionic.Platform.isFullScreen = true;
|
||||
if (window.cordova && window.cordova.plugins.Keyboard) {
|
||||
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
|
||||
cordova.plugins.Keyboard.disableScroll(true);
|
||||
}
|
||||
if (window.StatusBar) {
|
||||
StatusBar.styleDefault();
|
||||
}
|
||||
|
||||
// Copy the populated database to mobile device destination
|
||||
//if (window.sqlitePlugin && window.cordova) {
|
||||
if (window.sqlitePlugin && window.cordova) {
|
||||
window.plugins.sqlDB.copy("pokedex.db", function (e) {
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
|
||||
initialSQLite();
|
||||
initialRootScope();
|
||||
|
||||
//Checking if view is changing it will go to this function.
|
||||
$rootScope.$on('$ionicView.beforeEnter', function () {
|
||||
//hide Action Control for android back button.
|
||||
hideActionControl();
|
||||
// Add custom style ti view.
|
||||
$rootScope.customStyle = createCustomStyle($ionicHistory.currentStateName());
|
||||
});
|
||||
});
|
||||
} else {
|
||||
$ionicHistory.clearCache();
|
||||
$ionicHistory.nextViewOptions({
|
||||
historyRoot: true
|
||||
});
|
||||
$state.go('tab.dash');
|
||||
}
|
||||
}, 100);
|
||||
|
||||
|
||||
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
|
||||
// for form inputs)
|
||||
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
|
||||
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
|
||||
cordova.plugins.Keyboard.disableScroll(true);
|
||||
|
||||
}
|
||||
|
||||
// Mandatory for InAppBrowser plugin
|
||||
if(window.cordova){
|
||||
//window.open = cordova.InAppBrowser.open;
|
||||
}
|
||||
// Copy the populated database to mobile device destination
|
||||
//if (window.sqlitePlugin && window.cordova) {
|
||||
if (window.sqlitePlugin && window.cordova) {
|
||||
window.plugins.sqlDB.copy("pokedex.db", function (e) {
|
||||
console.log(e);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Google-Stroe Initialisieren START
|
||||
*/
|
||||
|
||||
function StoreInitsuccessHandler (result) {
|
||||
$rootScope.storeinit=1;
|
||||
inappbilling.getPurchases(purchasessuccess, purchasesfail);
|
||||
}
|
||||
|
||||
function StoreIniterrorHandler (error) {
|
||||
$rootScope.storeinit=0;
|
||||
}
|
||||
|
||||
|
||||
if((window.device && device.platform == "Android") && typeof inappbilling !== "undefined") {
|
||||
inappbilling.init(StoreInitsuccessHandler, StoreIniterrorHandler, {showLog:true});
|
||||
}
|
||||
|
||||
//FlateRate gekauft?
|
||||
|
||||
function purchasessuccess (result) {
|
||||
var p = result[0];
|
||||
|
||||
if(p['productId'] == 'rosenflatrate') {
|
||||
$rootScope.flatrate=1;
|
||||
}
|
||||
}
|
||||
|
||||
function purchasesfail (error) {
|
||||
alert("ERROR: \r\n"+error );
|
||||
}
|
||||
|
||||
/*
|
||||
* Google-Stroe Initialisieren ENDE
|
||||
*/
|
||||
|
||||
|
||||
// Initialize database through $database service
|
||||
db = $database.initDB();
|
||||
|
||||
|
||||
if (window.StatusBar) {
|
||||
// org.apache.cordova.statusbar required
|
||||
StatusBar.styleDefault();
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
.config(function($stateProvider, $urlRouterProvider,$ionicConfigProvider,$ionicFilterBarConfigProvider) {
|
||||
|
||||
// Ionic uses AngularUI Router which uses the concept of states
|
||||
// Learn more here: https://github.com/angular-ui/ui-router
|
||||
// Set up the various states which the app can be in.
|
||||
// Each state's controller can be found in controllers.js
|
||||
if(ionic.Platform.isAndroid()){
|
||||
$ionicConfigProvider.scrolling.jsScrolling(false);
|
||||
}
|
||||
|
||||
$stateProvider
|
||||
|
||||
.state('init', {
|
||||
url: '/init',
|
||||
templateUrl: 'templates/init.html',
|
||||
controller: 'InitCtrl'
|
||||
})
|
||||
|
||||
.state('firstrun', {
|
||||
url: '/first',
|
||||
templateUrl: 'templates/firstrun.html',
|
||||
controller: 'FirstRunCtrl'
|
||||
})
|
||||
|
||||
.state('imagedownload', {
|
||||
url: '/imagedownload',
|
||||
templateUrl: 'templates/imagedownload.html',
|
||||
controller: 'ImageDownloadCtrl'
|
||||
})
|
||||
|
||||
// setup an abstract state for the tabs directive
|
||||
.state('tab', {
|
||||
url: '/tab',
|
||||
abstract: true,
|
||||
templateUrl: 'templates/tabs.html'
|
||||
})
|
||||
|
||||
// Each tab has its own nav history stack:
|
||||
.state('tab.dash', {
|
||||
url: '/dash',
|
||||
views: {
|
||||
'tab-dash': {
|
||||
templateUrl: 'templates/tab-dash.html',
|
||||
controller: 'DashCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
.state('tab.chats', {
|
||||
url: '/chats',
|
||||
views: {
|
||||
'tab-chats': {
|
||||
templateUrl: 'templates/tab-chats.html',
|
||||
controller: 'ChatsCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('tab.chat-detail', {
|
||||
url: '/chats/:chatId',
|
||||
views: {
|
||||
'tab-chats': {
|
||||
templateUrl: 'templates/chat-detail.html',
|
||||
controller: 'ChatDetailCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
.state('tab.account', {
|
||||
url: '/account',
|
||||
views: {
|
||||
'tab-account': {
|
||||
templateUrl: 'templates/tab-account.html',
|
||||
controller: 'AccountCtrl'
|
||||
}
|
||||
}
|
||||
});
|
||||
.config(function ($ionicConfigProvider, $stateProvider, $urlRouterProvider, $mdThemingProvider, $mdIconProvider, $mdColorPalette, $mdIconProvider) {
|
||||
|
||||
// if none of the above states are matched, use this as the fallback
|
||||
$urlRouterProvider.otherwise('/init');
|
||||
$ionicConfigProvider.tabs.position('bottom');
|
||||
|
||||
});
|
||||
// Use for change ionic spinner to android pattern.
|
||||
$ionicConfigProvider.spinner.icon("android");
|
||||
$ionicConfigProvider.views.swipeBackEnabled(false);
|
||||
|
||||
// mdIconProvider is function of Angular Material.
|
||||
// It use for reference .SVG file and improve performance loading.
|
||||
$mdIconProvider
|
||||
.icon('facebook', 'img/icons/facebook.svg')
|
||||
.icon('twitter', 'img/icons/twitter.svg')
|
||||
.icon('mail', 'img/icons/mail.svg')
|
||||
.icon('message', 'img/icons/message.svg')
|
||||
.icon('share-arrow', 'img/icons/share-arrow.svg')
|
||||
.icon('more', 'img/icons/more_vert.svg');
|
||||
|
||||
//mdThemingProvider use for change theme color of Ionic Material Design Application.
|
||||
/* You can select color from Material Color List configuration :
|
||||
* red
|
||||
* pink
|
||||
* purple
|
||||
* purple
|
||||
* deep-purple
|
||||
* indigo
|
||||
* blue
|
||||
* light-blue
|
||||
* cyan
|
||||
* teal
|
||||
* green
|
||||
* light-green
|
||||
* lime
|
||||
* yellow
|
||||
* amber
|
||||
* orange
|
||||
* deep-orange
|
||||
* brown
|
||||
* grey
|
||||
* blue-grey
|
||||
*/
|
||||
//Learn more about material color patten: https://www.materialpalette.com/
|
||||
//Learn more about material theme: https://material.angularjs.org/latest/#/Theming/01_introduction
|
||||
$mdThemingProvider
|
||||
.theme('default')
|
||||
.primaryPalette('purple')
|
||||
.accentPalette('deep-purple');
|
||||
|
||||
appPrimaryColor = $mdColorPalette[$mdThemingProvider._THEMES.default.colors.primary.name]["500"]; //Use for get base color of theme.
|
||||
|
||||
//$stateProvider is using for add or edit HTML view to navigation bar.
|
||||
//
|
||||
//Schema :
|
||||
//state_name(String) : Name of state to use in application.
|
||||
//page_name(String) : Name of page to present at localhost url.
|
||||
//cache(Bool) : Cache of view and controller default is true. Change to false if you want page reload when application navigate back to this view.
|
||||
//html_file_path(String) : Path of html file.
|
||||
//controller_name(String) : Name of Controller.
|
||||
//
|
||||
//Learn more about ionNavView at http://ionicframework.com/docs/api/directive/ionNavView/
|
||||
//Learn more about AngularUI Router's at https://github.com/angular-ui/ui-router/wiki
|
||||
$stateProvider
|
||||
.state('app', {
|
||||
url: "/app",
|
||||
abstract: true,
|
||||
templateUrl: "templates/menu/html/menu.html",
|
||||
controller: 'menuCtrl'
|
||||
})
|
||||
.state('app.dashboard', {
|
||||
url: "/dashboard",
|
||||
params:{
|
||||
isAnimated:false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/dashboard/html/dashboard.html",
|
||||
controller: 'dashboardCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.dashboardSetting', {
|
||||
url: "/dashboardSetting",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/dashboard/html/dashboard-setting.html",
|
||||
controller: "dashboardSettingCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractlist', {
|
||||
url: "/contractlist",
|
||||
cache: false,
|
||||
params:{
|
||||
isAnimated:(ionic.Platform.isAndroid()==false)
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-list.html",
|
||||
controller: 'contractListCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractdetail', {
|
||||
url: "/contractdetail",
|
||||
params: {
|
||||
contractdetail: null,
|
||||
actionDelete: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-detail.html",
|
||||
controller: 'contractDetailCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractsetting', {
|
||||
url: "/contractsetting",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/application-storage/sqLite/html/contract-setting.html",
|
||||
controller: 'contractSettingCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.imagedownload', {
|
||||
url: "/imagedownload",
|
||||
cache: false,
|
||||
params:{
|
||||
isAnimated:(ionic.Platform.isAndroid()==false)
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/imagedownload/html/imagedownload.html",
|
||||
controller: 'imageDownloadCtrl'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.contractUs', {
|
||||
url: "/contractUs",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/share-application-content/email-message/html/contract-us.html",
|
||||
controller: 'contractUsCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.deviceInformation', {
|
||||
url: "/deviceInformation",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/device-information/html/device-information.html",
|
||||
controller: 'deviceInformationCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.mobileContractList', {
|
||||
url: "/mobileContractList",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-list.html",
|
||||
controller: 'mobileContractListCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.mobileContractDetail', {
|
||||
url: "/mobileContractDetail",
|
||||
params: {
|
||||
contractDetail: null,
|
||||
actionDelete: false
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/mobile-contract/html/mobile-contract-detail.html",
|
||||
controller: 'mobileContractDetailCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.flashLight', {
|
||||
url: "/flashLight",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/flash-light/html/flash-light.html",
|
||||
controller: 'flashLightCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.vibration', {
|
||||
url: "/vibration",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/vibration/html/vibration.html",
|
||||
controller: 'vibrationCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.googleAdmob', {
|
||||
url: "/googleAdmob",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/advertising-application/googleAdmob/html/googleAdmob.html",
|
||||
controller: 'googleAdmobCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.imagePicker', {
|
||||
url: "/imagePicker",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/hardware-connect/image-picker/html/image-picker.html",
|
||||
controller: 'imagePickerCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.defaultUI', {
|
||||
url: "/defaultUI",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/material-user-interface/default-user-interface/html/default-user-interface.html",
|
||||
controller: 'defaultUserInterfaceCtrl'
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
.state('app.tryApp', {
|
||||
url: "/tryApp",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/try-app/html/try-app.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.tryAppNoBackBtn', {
|
||||
url: "/tryAppNoBackBtn",
|
||||
cache: false,
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/try-app/html/try-app-no-back-btn.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.pricing', {
|
||||
url: "/pricing",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/pricing/html/pricing.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.menuDashboard', {
|
||||
url: "/menuDashboard",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/menu-dashboard/html/menu-dashboard.html",
|
||||
controller: "menuDashboardCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.expense', {
|
||||
url: "/expense",
|
||||
params:{
|
||||
isAnimated:true
|
||||
},
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard.html",
|
||||
controller: "expenseDashboardCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.expenseSetting', {
|
||||
url: "/expenseSetting",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/expense-dashboard/html/expense-dashboard-setting.html",
|
||||
controller: "expenseDashboardSettingCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.newsFeed', {
|
||||
url: "/newsFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/news-feed/html/news-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.clothShop', {
|
||||
url: "/clothShop",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/cloth-shop/html/cloth-shop.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.onlineCourse', {
|
||||
url: "/onlineCourse",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/online-course/html/online-course.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.catalog', {
|
||||
url: "/catalog",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/catalog/html/catalog.html",
|
||||
controller: "catalogCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.locationFeed', {
|
||||
url: "/locationFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/location-feed/html/location-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.cubeFeed', {
|
||||
url: "/cubeFeed",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/cube-feed/html/cube-feed.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.restaurant', {
|
||||
url: "/restaurant",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/themes/restaurant/html/restaurant.html"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.singlePushNotification', {
|
||||
url: "/singlePushNotification",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/push-notification/single-push-notification/html/single-push-notification.html",
|
||||
controller: "singlePushNotificationCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.schedulePushNotification', {
|
||||
url: "/schedulePushNotification",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/push-notification/schedule-push-notification/html/schedule-push-notification.html",
|
||||
controller: "schedulePushNotificationCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.iosMapConnect', {
|
||||
url: "/iosMapConnect",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/map-and-location/ios-map-connect/html/ios-map-connect.html",
|
||||
controller: "iosMapConnectCtrl"
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('app.androidMapConnect', {
|
||||
url: "/androidMapConnect",
|
||||
views: {
|
||||
'menuContent': {
|
||||
templateUrl: "templates/map-and-location/android-map-connect/html/android-map-connect.html",
|
||||
controller: "androidMapConnectCtrl"
|
||||
}
|
||||
}
|
||||
});// End $stateProvider
|
||||
|
||||
//Use $urlRouterProvider.otherwise(Url);
|
||||
$urlRouterProvider.otherwise(window.globalVariable.startPage.url);
|
||||
|
||||
});
|
||||
|
||||
@@ -1,267 +1,2 @@
|
||||
angular.module('starter.controllers', [])
|
||||
|
||||
.controller('DashCtrl', function($scope,$ionicPopup,$http, $database, $timeout,$rootScope, $cordovaFileTransfer,$cordovaFile,$ionicLoading,$state,$filter,$ionicModal,$ionicPlatform,$location) {
|
||||
|
||||
|
||||
|
||||
$scope.resetdb = function() {
|
||||
$database.setInitialRun(0);
|
||||
}
|
||||
|
||||
// Open our new task modal
|
||||
$scope.downloadImages = function() {
|
||||
$state.go('imagedownload');
|
||||
};
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
.controller('ChatsCtrl', function($scope,$ionicPopup,$http, $database,$window, $timeout,$rootScope, $cordovaFileTransfer,$cordovaFile,$ionicLoading,$state,$filter,$ionicModal,$ionicFilterBar) {
|
||||
|
||||
var filterBarInstance;
|
||||
|
||||
//View wird zum ersten mal geladen
|
||||
$scope.$on( "$ionicView.loaded", function( scopes, states ) {
|
||||
$scope.items=[];
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.$on( "$ionicView.enter", function( scopes, states ) {
|
||||
if ($scope.items.length===0){
|
||||
$scope.show($ionicLoading);
|
||||
$timeout(fill_list, 1000);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
$scope.showFilterBar = function () {
|
||||
filterBarInstance = $ionicFilterBar.show({
|
||||
items: $scope.items,
|
||||
update: function (filteredItems, filterText) {
|
||||
$scope.items = filteredItems;
|
||||
if (filterText) {
|
||||
console.log(filterText);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.refreshItems = function () {
|
||||
if (filterBarInstance) {
|
||||
filterBarInstance();
|
||||
filterBarInstance = null;
|
||||
}
|
||||
|
||||
$timeout(function () {
|
||||
fill_list();
|
||||
$scope.$broadcast('scroll.refreshComplete');
|
||||
}, 1000);
|
||||
};
|
||||
|
||||
function fill_list(){
|
||||
|
||||
$database.getAllPokemon().then(function (result) {
|
||||
|
||||
if(result.length>0){
|
||||
for(i=0;i<result.length;i++){
|
||||
$scope.items.push(result[i]);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$scope.items=[];
|
||||
}
|
||||
});
|
||||
$scope.hide($ionicLoading);
|
||||
}
|
||||
|
||||
|
||||
$scope.show = function() {
|
||||
$ionicLoading.show({
|
||||
template: '<p>Lade...</p><ion-spinner></ion-spinner>'
|
||||
});
|
||||
};
|
||||
|
||||
$scope.hide = function(){
|
||||
$ionicLoading.hide();
|
||||
};
|
||||
|
||||
|
||||
})
|
||||
|
||||
|
||||
.controller('InitCtrl', function($scope, $ionicPlatform, $database,$state) {
|
||||
|
||||
$ionicPlatform.ready(function() {
|
||||
|
||||
$database.isInitialRun().then(function (result) {
|
||||
|
||||
if (result==1) {
|
||||
$state.go('tab.dash');
|
||||
}
|
||||
else{
|
||||
$state.go('firstrun');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
|
||||
.controller('FirstRunCtrl', function($scope,$ionicSlideBoxDelegate,$database,$state) {
|
||||
|
||||
|
||||
$scope.options = {
|
||||
loop: false,
|
||||
effect: 'fade',
|
||||
speed: 500,
|
||||
}
|
||||
|
||||
$scope.$on("$ionicSlides.sliderInitialized", function(event, data){
|
||||
// data.slider is the instance of Swiper
|
||||
$scope.slider = data.slider;
|
||||
});
|
||||
|
||||
$scope.$on("$ionicSlides.slideChangeStart", function(event, data){
|
||||
console.log('Slide change is beginning');
|
||||
});
|
||||
|
||||
$scope.$on("$ionicSlides.slideChangeEnd", function(event, data){
|
||||
// note: the indexes are 0-based
|
||||
$scope.activeIndex = data.activeIndex;
|
||||
$scope.previousIndex = data.previousIndex;
|
||||
});
|
||||
|
||||
$scope.firstruncomplete = function() {
|
||||
$database.setInitialRun(1);
|
||||
$state.go('tab.dash');
|
||||
};
|
||||
|
||||
})
|
||||
|
||||
|
||||
.controller('ImageDownloadCtrl', function($scope, $database, $timeout, $cordovaFileTransfer,$cordovaFile,$state,$ionicPlatform) {
|
||||
|
||||
|
||||
$scope.progressval = 0;
|
||||
$scope.currentfile = '';
|
||||
$scope.progressprozent = 0;
|
||||
$scope.DownloadisVisible=true;
|
||||
$scope.AbbrechenisVisible=false;
|
||||
$scope.startdownloadtimer=false;
|
||||
|
||||
// Open our new task modal
|
||||
$scope.downloadImages = function() {
|
||||
$scope.startdownloadtimer=true;
|
||||
|
||||
$scope.DownloadisVisible=false;
|
||||
$scope.AbbrechenisVisible=true;
|
||||
|
||||
//$ionicPlatform.ready(function() {
|
||||
//$scope.taskModal.show();
|
||||
var baseurl = "http://assets.pokemon.com/assets/cms2/img/pokedex/full/";
|
||||
var url="";
|
||||
var filename="";
|
||||
var targetPath = "";
|
||||
var downloadprogress = 0;
|
||||
var pokedexid=1;
|
||||
var downloadinprogress=false;
|
||||
|
||||
|
||||
//Ordner erstellen auf SD-Karte
|
||||
$cordovaFile.createDir(cordova.file.externalRootDirectory, "PokedexHelperBilder", false)
|
||||
.then(function (success) {
|
||||
// success
|
||||
console.log('Erfolg bei Ordnererstellung. ' + success);
|
||||
}, function (error) {
|
||||
// error
|
||||
console.log('Error bei Ordnererstellung. ' + error);
|
||||
});
|
||||
|
||||
function downloadimage(){
|
||||
downloadinprogress=true;
|
||||
filename=pokedexid + ".png";
|
||||
|
||||
if (filename.length==5){
|
||||
filename='00' + filename;
|
||||
}
|
||||
|
||||
if (filename.length==6){
|
||||
filename='0' + filename;
|
||||
}
|
||||
|
||||
url=baseurl;
|
||||
url=encodeURI(url + filename);
|
||||
targetPath = cordova.file.externalRootDirectory + "/PokedexHelperBilder/" + filename;
|
||||
|
||||
//Bild Download
|
||||
$cordovaFileTransfer.download(url, targetPath, {Connection: "close"}, true).then(function (result) {
|
||||
$scope.currentfile=filename;
|
||||
$database.setPokemonImage(targetPath,pokedexid);
|
||||
console.log(filename + ' heruntergeladen.' + result);
|
||||
pokedexid=pokedexid + 1;
|
||||
console.log(result);
|
||||
downloadinprogress=false;
|
||||
}, function (error) {
|
||||
console.log('Error. ' + error.code + ' ' + error.constant);
|
||||
}, function (progress) {
|
||||
//downloadprogress=(progress.loaded / progress.total) * 100;
|
||||
$scope.progressprozent = Math.round(pokedexid / 721 * 100);
|
||||
$scope.progressval = pokedexid;
|
||||
$scope.currentfile=filename; //+ downloadprogress;
|
||||
});
|
||||
console.log(pokedexid);
|
||||
|
||||
if (pokedexid<721){
|
||||
downloadtimer();
|
||||
}
|
||||
else{
|
||||
$scope.progressprozent = 'Download abgeschlossen! ' + $scope.progressprozent;
|
||||
$scope.DownloadisVisible=true;
|
||||
$scope.AbbrechenisVisible=false;
|
||||
}
|
||||
|
||||
if ( $scope.startdownloadtimer==false){
|
||||
$scope.progressprozent = 'Download Abgebrochen! ' + $scope.progressprozent;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//});
|
||||
|
||||
function downloadtimer(){
|
||||
if ($scope.startdownloadtimer==true){
|
||||
|
||||
|
||||
$timeout(function(){
|
||||
if (downloadinprogress==false){
|
||||
downloadimage();
|
||||
console.log("downinprogress ist false");
|
||||
}else{
|
||||
console.log("downinprogress ist true");
|
||||
downloadtimer();
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
downloadtimer();
|
||||
};
|
||||
|
||||
|
||||
$scope.downloadabbrechen = function() {
|
||||
$scope.DownloadisVisible=true;
|
||||
$scope.AbbrechenisVisible=false;
|
||||
$scope.startdownloadtimer=false;
|
||||
};
|
||||
|
||||
})
|
||||
|
||||
.controller('Dummy', function($scope) {
|
||||
});
|
||||
|
||||
|
||||
var appControllers = angular.module('starter.controllers', []); // Use for all controller of application.
|
||||
var appServices = angular.module('starter.services', []);// Use for all service of application.
|
||||
9
www/js/ng-cordova.min.js
vendored
@@ -1,117 +0,0 @@
|
||||
|
||||
angular.module('starter.services', [])
|
||||
|
||||
.factory('$database',['$cordovaSQLite', function($cordovaSQLite) {
|
||||
var self = this;
|
||||
self.db = null;
|
||||
var query;
|
||||
|
||||
//this updateTable function is for ilustrative use here, it can be changed to manage all queries indeed.
|
||||
updateTable=function (table, column, value, condition) {
|
||||
if(!condition){
|
||||
query = "UPDATE " + table + " SET " + column + " = " + value;
|
||||
} else{
|
||||
query = "UPDATE " + table + " SET " + column + " = " + value + " WHERE " + condition;
|
||||
}
|
||||
return $cordovaSQLite.execute(self.db,query,[]).
|
||||
then(function(result) {
|
||||
console.log(query);
|
||||
query=null;
|
||||
return result;
|
||||
},function(error) {
|
||||
console.error(error);
|
||||
query=null;
|
||||
return error;
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
initDB: function() {
|
||||
if(window.cordova){
|
||||
//self.db = sqlitePlugin.openDatabase({name: "data.db", location: 2, createFromLocation: 1});
|
||||
self.db = $cordovaSQLite.openDB({name:"pokedex.db", iosDatabaseLocation:'default'});
|
||||
} else {
|
||||
self.db = window.openDatabase('pokedex.db','1','my',800*1024); // only available when WebSQL is available in Browser
|
||||
}
|
||||
console.log('Database opened');
|
||||
return self.db;
|
||||
},
|
||||
setBuys: function(itemName,itemBild,itemBildtext,itemKaufdatum,itemappimgpath,itemappimgpublicpath) {
|
||||
query="INSERT INTO buys (Name, Bild, Bildtext, Kaufdatum, appimgpath, appimgpublicpath) VALUES (?,?,?,?,?,?);";
|
||||
return $cordovaSQLite.execute(self.db,query,[itemName,itemBild,itemBildtext,itemKaufdatum,itemappimgpath,itemappimgpublicpath]).
|
||||
then(function(result) {
|
||||
console.log("Gespeichert");
|
||||
query=null;
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
deleteBuy: function(id) {
|
||||
query="DELETE FROM buys WHERE ID = ?;";
|
||||
return $cordovaSQLite.execute(self.db,query,[id]).
|
||||
then(function(result) {
|
||||
console.log("Gelöscht");
|
||||
query=null;
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
isInitialRun: function(){
|
||||
var InitilaRun;
|
||||
query="SELECT InitialRun FROM InitialRun";
|
||||
return $cordovaSQLite.execute(self.db,query).
|
||||
then(function(result) {
|
||||
for(j=0;j<result.rows.length;j++){
|
||||
InitilaRun=result.rows.item(j).InitialRun;
|
||||
}
|
||||
console.log('isInitialRun aufgerufen wert : ' + InitilaRun);
|
||||
return InitilaRun;
|
||||
},function(e){
|
||||
console.error(e);
|
||||
return e;
|
||||
});
|
||||
},
|
||||
setInitialRun: function(InitilaRunBool) {
|
||||
query="UPDATE InitialRun Set InitialRun = ?;";
|
||||
return $cordovaSQLite.execute(self.db,query,[InitilaRunBool]).
|
||||
then(function(result) {
|
||||
console.log("Update erfolge auf " + InitilaRunBool);
|
||||
query=null;
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
setPokemonImage: function(Image,Pokedexid) {
|
||||
query="UPDATE tblPokemon Set POKEMONIMAGE = ? WHERE POKEDEXID = ?;";
|
||||
return $cordovaSQLite.execute(self.db,query,[Image,Pokedexid]).
|
||||
then(function(result) {
|
||||
console.log("Update erfolge auf " + Pokedexid + ' mit ' + Image);
|
||||
query=null;
|
||||
}, function(error) {
|
||||
console.error(error);
|
||||
});
|
||||
},
|
||||
getAllPokemon: function(){
|
||||
var ArrayQ=[];
|
||||
query="SELECT * FROM tblPokemon order by POKEDEXID ASC";
|
||||
return $cordovaSQLite.execute(self.db,query).
|
||||
then(function(result) {
|
||||
for(j=0;j<result.rows.length;j++){
|
||||
var List={};
|
||||
List.ID=result.rows.item(j).ID;
|
||||
List.POKEDEXID=result.rows.item(j).POKEDEXID;
|
||||
List.POKEMONNAME=result.rows.item(j).POKEMONNAME;
|
||||
List.POKEMONTYPA=result.rows.item(j).POKEMONTYPA;
|
||||
List.POKEMONTYPB=result.rows.item(j).POKEMONTYPB;
|
||||
List.POKEMONIMAGE=result.rows.item(j).POKEMONIMAGE;
|
||||
ArrayQ.push(List);
|
||||
}
|
||||
//console.log(ArrayQ);
|
||||
return ArrayQ;
|
||||
},function(e){
|
||||
console.error(error);
|
||||
return error;
|
||||
});
|
||||
}
|
||||
};
|
||||
}]);
|
||||
34
www/js/shared/controllers.js
Normal file
@@ -0,0 +1,34 @@
|
||||
//This is Controller for Dialog box.
|
||||
appControllers.controller('DialogController', function ($scope, $mdDialog, displayOption) {
|
||||
|
||||
//This variable for display wording of dialog.
|
||||
//object schema:
|
||||
//displayOption: {
|
||||
// title: "Confirm to remove all data?",
|
||||
// content: "All data will remove from local storage.",
|
||||
// ok: "Confirm",
|
||||
// cancel: "Close"
|
||||
//}
|
||||
$scope.displayOption = displayOption;
|
||||
|
||||
$scope.cancel = function () {
|
||||
$mdDialog.cancel(); //close dialog.
|
||||
};
|
||||
|
||||
$scope.ok = function () {
|
||||
$mdDialog.hide();//hide dialog.
|
||||
};
|
||||
});// End Controller for Dialog box.
|
||||
|
||||
//Controller for Toast.
|
||||
appControllers.controller('toastController', function ($scope, displayOption) {
|
||||
|
||||
//this variable for display wording of toast.
|
||||
//object schema:
|
||||
// displayOption: {
|
||||
// title: "Data Saved !"
|
||||
//}
|
||||
|
||||
$scope.displayOption = displayOption;
|
||||
});// End Controller for Toast.
|
||||
|
||||
25
www/js/shared/directives.js
Normal file
@@ -0,0 +1,25 @@
|
||||
//Directive numbersOnly :
|
||||
//Use for change input to have ability accept only number.
|
||||
//Example : <input ng-model="contract.age" numbers-only type="tel">
|
||||
//
|
||||
appControllers.directive('numbersOnly', function () {
|
||||
return {
|
||||
require: 'ngModel',
|
||||
link: function (scope, element, attr, ngModelCtrl) {
|
||||
function fromUser(text) {
|
||||
if (text) {
|
||||
var transformedInput = text.replace(/[^0-9]/g, '');
|
||||
|
||||
if (transformedInput !== text) {
|
||||
ngModelCtrl.$setViewValue(transformedInput);
|
||||
ngModelCtrl.$render();
|
||||
}
|
||||
return transformedInput;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
ngModelCtrl.$parsers.push(fromUser);
|
||||
}
|
||||
};
|
||||
});// End Directive numbersOnly.
|
||||
33
www/js/shared/filter.js
Normal file
@@ -0,0 +1,33 @@
|
||||
//Filter epochToDate :
|
||||
//Use for convert epoch date format to default date format.
|
||||
//Example :
|
||||
//<p>{{item.createdAt |epochToDate | date:"short"}}</p>
|
||||
appControllers.filter('epochToDate', function ($filter) {
|
||||
return function (input) {
|
||||
return new Date(Date(input));
|
||||
};
|
||||
});// End Filter epochToDate.
|
||||
|
||||
//Filter numberSuffix :
|
||||
//Use for convert number to have suffix 1,000 to 1K.
|
||||
//Example :
|
||||
//{{item.likes.summary.total_count | numberSuffix}}
|
||||
//
|
||||
appControllers.filter('numberSuffix', function () {
|
||||
return function (input) {
|
||||
var exp;
|
||||
var suffixes = ['k', 'M', 'G', 'T', 'P', 'E'];
|
||||
|
||||
if (window.isNaN(input)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (input < 1000) {
|
||||
return input;
|
||||
}
|
||||
|
||||
exp = Math.floor(Math.log(input) / Math.log(1000));
|
||||
|
||||
return (input / Math.pow(1000, exp)).toFixed(1) + suffixes[exp - 1];
|
||||
}
|
||||
});// End Filter numberSuffix.
|
||||
@@ -1,20 +1,19 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.5.3",
|
||||
"license": "MIT",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-animate.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.5.3"
|
||||
"angular": "1.4.2"
|
||||
},
|
||||
"homepage": "https://github.com/angular/bower-angular-animate",
|
||||
"_release": "1.5.3",
|
||||
"_release": "1.4.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.5.3",
|
||||
"commit": "671c738980fb0509b2b494716ccd8c004c39f368"
|
||||
"tag": "v1.4.2",
|
||||
"commit": "8753e3cc8facaf2da19dbe26d318e566b89e452e"
|
||||
},
|
||||
"_source": "https://github.com/angular/bower-angular-animate.git",
|
||||
"_target": "1.5.3",
|
||||
"_source": "git://github.com/angular/bower-angular-animate.git",
|
||||
"_target": "^1.3.0 || >1.4.0-beta.0",
|
||||
"_originalSource": "angular-animate"
|
||||
}
|
||||
1622
www/lib/angular-animate/angular-animate.js
vendored
100
www/lib/angular-animate/angular-animate.min.js
vendored
@@ -1,56 +1,52 @@
|
||||
/*
|
||||
AngularJS v1.5.3
|
||||
(c) 2010-2016 Google, Inc. http://angularjs.org
|
||||
AngularJS v1.4.2
|
||||
(c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(E,w,Va){'use strict';function ya(a,b,c){if(!a)throw Ka("areq",b||"?",c||"required");return a}function za(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function La(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function V(a,b,c){var d="";a=ba(a)?a:a&&I(a)&&a.length?a.split(/\s+/):[];q(a,function(a,f){a&&0<a.length&&(d+=0<f?" ":"",d+=c?b+a:a+b)});return d}function Ma(a){if(a instanceof H)switch(a.length){case 0:return[];
|
||||
case 1:if(1===a[0].nodeType)return a;break;default:return H(ga(a))}if(1===a.nodeType)return H(a)}function ga(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Na(a,b,c){q(b,function(b){a.addClass(b,c)})}function Oa(a,b,c){q(b,function(b){a.removeClass(b,c)})}function Q(a){return function(b,c){c.addClass&&(Na(a,b,c.addClass),c.addClass=null);c.removeClass&&(Oa(a,b,c.removeClass),c.removeClass=null)}}function oa(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
|
||||
O;a.domOperation=function(){a.$$domOperationFired=!0;b();b=O};a.$$prepared=!0}return a}function ha(a,b){Aa(a,b);Ba(a,b)}function Aa(a,b){b.from&&(a.css(b.from),b.from=null)}function Ba(a,b){b.to&&(a.css(b.to),b.to=null)}function T(a,b,c){var d=b.options||{};c=c.options||{};var e=(d.addClass||"")+" "+(c.addClass||""),f=(d.removeClass||"")+" "+(c.removeClass||"");a=Pa(a.attr("class"),e,f);c.preparationClasses&&(d.preparationClasses=W(c.preparationClasses,d.preparationClasses),delete c.preparationClasses);
|
||||
e=d.domOperation!==O?d.domOperation:null;Ca(d,c);e&&(d.domOperation=e);d.addClass=a.addClass?a.addClass:null;d.removeClass=a.removeClass?a.removeClass:null;b.addClass=d.addClass;b.removeClass=d.removeClass;return d}function Pa(a,b,c){function d(a){I(a)&&(a=a.split(" "));var b={};q(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);q(b,function(a,b){e[b]=1});c=d(c);q(c,function(a,b){e[b]=1===e[b]?null:-1});var f={addClass:"",removeClass:""};q(e,function(b,c){var d,e;1===b?(d="addClass",
|
||||
e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(f[d].length&&(f[d]+=" "),f[d]+=c)});return f}function A(a){return a instanceof w.element?a[0]:a}function Qa(a,b,c){var d="";b&&(d=V(b,"ng-",!0));c.addClass&&(d=W(d,V(c.addClass,"-add")));c.removeClass&&(d=W(d,V(c.removeClass,"-remove")));d.length&&(c.preparationClasses=d,a.addClass(d))}function pa(a,b){var c=b?"-"+b+"s":"";la(a,[ma,c]);return[ma,c]}function ra(a,b){var c=b?"paused":"",d=X+"PlayState";la(a,[d,c]);return[d,c]}function la(a,b){a.style[b[0]]=
|
||||
b[1]}function W(a,b){return a?b?a+" "+b:a:b}function Da(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};q(c,function(a,b){var c=e[a];if(c){var F=c.charAt(0);if("-"===F||"+"===F||0<=F)c=Ra(c);0===c&&(c=null);d[b]=c}});return d}function Ra(a){var b=0;a=a.split(/\s*,\s*/);q(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function sa(a){return 0===a||null!=a}function Ea(a,b){var c=R,d=a+"s";b?c+="Duration":d+=" linear all";
|
||||
return[c,d]}function Fa(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}function Ga(a,b,c){q(c,function(c){a[c]=Y(a[c])?a[c]:b.style.getPropertyValue(c)})}var O=w.noop,Ha=w.copy,Ca=w.extend,H=w.element,q=w.forEach,ba=w.isArray,I=w.isString,ca=w.isObject,N=w.isUndefined,Y=w.isDefined,Ia=w.isFunction,ta=w.isElement,R,ua,X,va;N(E.ontransitionend)&&
|
||||
Y(E.onwebkittransitionend)?(R="WebkitTransition",ua="webkitTransitionEnd transitionend"):(R="transition",ua="transitionend");N(E.onanimationend)&&Y(E.onwebkitanimationend)?(X="WebkitAnimation",va="webkitAnimationEnd animationend"):(X="animation",va="animationend");var qa=X+"Delay",wa=X+"Duration",ma=R+"Delay";E=R+"Duration";var Ka=w.$$minErr("ng"),Sa={transitionDuration:E,transitionDelay:ma,transitionProperty:R+"Property",animationDuration:wa,animationDelay:qa,animationIterationCount:X+"IterationCount"},
|
||||
Ta={transitionDuration:E,transitionDelay:ma,animationDuration:wa,animationDelay:qa};w.module("ngAnimate",[]).directive("ngAnimateSwap",["$animate","$rootScope",function(a,b){return{restrict:"A",transclude:"element",terminal:!0,priority:600,link:function(b,d,e,f,r){var x,F;b.$watchCollection(e.ngAnimateSwap||e["for"],function(e){x&&a.leave(x);F&&(F.$destroy(),F=null);if(e||0===e)F=b.$new(),r(F,function(b){x=b;a.enter(b,null,d)})})}}}]).directive("ngAnimateChildren",["$interpolate",function(a){return{link:function(b,
|
||||
c,d){function e(a){c.data("$$ngAnimateChildren","on"===a||"true"===a)}var f=d.ngAnimateChildren;w.isString(f)&&0===f.length?c.data("$$ngAnimateChildren",!0):(e(a(f)(b)),d.$observe("ngAnimateChildren",e))}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d=d.concat(a);c()}function c(){if(d.length){for(var b=d.shift(),r=0;r<b.length;r++)b[r]();e||a(function(){e||c()})}}var d,e;d=b.queue=[];b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).provider("$$animateQueue",
|
||||
["$animateProvider",function(a){function b(a){if(!a)return null;a=a.split(" ");var b=Object.create(null);q(a,function(a){b[a]=!0});return b}function c(a,c){if(a&&c){var d=b(c);return a.split(" ").some(function(a){return d[a]})}}function d(a,b,c,d){return f[a].some(function(a){return a(b,c,d)})}function e(a,b){var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var f=this.rules={skip:[],cancel:[],join:[]};f.join.push(function(a,b,c){return!b.structural&&e(b)});f.skip.push(function(a,
|
||||
b,c){return!b.structural&&!e(b)});f.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});f.skip.push(function(a,b,c){return c.structural&&2===c.state&&!b.structural});f.cancel.push(function(a,b,c){return c.structural&&b.structural});f.cancel.push(function(a,b,c){return 2===c.state&&b.structural});f.cancel.push(function(a,b,d){if(d.structural)return!1;a=b.addClass;b=b.removeClass;var e=d.addClass;d=d.removeClass;return N(a)&&N(b)||N(e)&&N(d)?!1:c(a,d)||c(b,e)});this.$get=["$$rAF","$rootScope",
|
||||
"$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite","$$forceReflow",function(b,c,f,u,l,w,s,M,v,h){function P(){var a=!1;return function(b){a?b():c.$$postDigest(function(){a=!0;b()})}}function y(a,b,c){var g=A(b),d=A(a),k=[];(a=G[c])&&q(a,function(a){t.call(a.node,g)?k.push(a.callback):"leave"===c&&t.call(a.node,d)&&k.push(a.callback)});return k}function k(a,g,k){function m(c,g,d,k){F(function(){var c=y(J,a,g);c.length&&b(function(){q(c,function(b){b(a,
|
||||
d,k)})})});c.progress(g,d,k)}function G(b){var c=a,g=h;g.preparationClasses&&(c.removeClass(g.preparationClasses),g.preparationClasses=null);g.activeClasses&&(c.removeClass(g.activeClasses),g.activeClasses=null);Ja(a,h);ha(a,h);h.domOperation();f.complete(!b)}var h=Ha(k),t,J;if(a=Ma(a))t=A(a),J=a.parent();var h=oa(h),f=new s,F=P();ba(h.addClass)&&(h.addClass=h.addClass.join(" "));h.addClass&&!I(h.addClass)&&(h.addClass=null);ba(h.removeClass)&&(h.removeClass=h.removeClass.join(" "));h.removeClass&&
|
||||
!I(h.removeClass)&&(h.removeClass=null);h.from&&!ca(h.from)&&(h.from=null);h.to&&!ca(h.to)&&(h.to=null);if(!t)return G(),f;k=[t.className,h.addClass,h.removeClass].join(" ");if(!Ua(k))return G(),f;var v=0<=["enter","move","leave"].indexOf(g),l=!K||u[0].hidden||C.get(t);k=!l&&z.get(t)||{};var Z=!!k.state;l||Z&&1==k.state||(l=!n(a,J,g));if(l)return G(),f;v&&xa(a);l={structural:v,element:a,event:g,addClass:h.addClass,removeClass:h.removeClass,close:G,options:h,runner:f};if(Z){if(d("skip",a,l,k)){if(2===
|
||||
k.state)return G(),f;T(a,k,l);return k.runner}if(d("cancel",a,l,k))if(2===k.state)k.runner.end();else if(k.structural)k.close();else return T(a,k,l),k.runner;else if(d("join",a,l,k))if(2===k.state)T(a,l,{});else return Qa(a,v?g:null,h),g=l.event=k.event,h=T(a,k,l),k.runner}else T(a,l,{});(Z=l.structural)||(Z="animate"===l.event&&0<Object.keys(l.options.to||{}).length||e(l));if(!Z)return G(),ka(a),f;var M=(k.counter||0)+1;l.counter=M;D(a,1,l);c.$$postDigest(function(){var b=z.get(t),c=!b,b=b||{},d=
|
||||
0<(a.parent()||[]).length&&("animate"===b.event||b.structural||e(b));if(c||b.counter!==M||!d){c&&(Ja(a,h),ha(a,h));if(c||v&&b.event!==g)h.domOperation(),f.end();d||ka(a)}else g=!b.structural&&e(b,!0)?"setClass":b.event,D(a,2),b=w(a,g,b.options),b.done(function(b){G(!b);(b=z.get(t))&&b.counter===M&&ka(A(a));m(f,g,"close",{})}),f.setHost(b),m(f,g,"start",{})});return f}function xa(a){a=A(a).querySelectorAll("[data-ng-animate]");q(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=z.get(a);
|
||||
if(c)switch(b){case 2:c.runner.end();case 1:z.remove(a)}})}function ka(a){a=A(a);a.removeAttribute("data-ng-animate");z.remove(a)}function J(a,b){return A(a)===A(b)}function n(a,b,c){c=H(u[0].body);var g=J(a,c)||"HTML"===a[0].nodeName,d=J(a,f),k=!1,h,m=C.get(A(a));(a=H.data(a[0],"$ngAnimatePin"))&&(b=a);for(b=A(b);b;){d||(d=J(b,f));if(1!==b.nodeType)break;a=z.get(b)||{};if(!k){var e=C.get(b);if(!0===e&&!1!==m){m=!0;break}else!1===e&&(m=!1);k=a.structural}if(N(h)||!0===h)a=H.data(b,"$$ngAnimateChildren"),
|
||||
Y(a)&&(h=a);if(k&&!1===h)break;g||(g=J(b,c));if(g&&d)break;if(!d&&(a=H.data(b,"$ngAnimatePin"))){b=A(a);continue}b=b.parentNode}return(!k||h)&&!0!==m&&d&&g}function D(a,b,c){c=c||{};c.state=b;a=A(a);a.setAttribute("data-ng-animate",b);c=(b=z.get(a))?Ca(b,c):c;z.put(a,c)}var z=new l,C=new l,K=null,g=c.$watch(function(){return 0===M.totalPendingRequests},function(a){a&&(g(),c.$$postDigest(function(){c.$$postDigest(function(){null===K&&(K=!0)})}))}),G={},m=a.classNameFilter(),Ua=m?function(a){return m.test(a)}:
|
||||
function(){return!0},Ja=Q(v),t=Node.prototype.contains||function(a){return this===a||!!(this.compareDocumentPosition(a)&16)},Z={on:function(a,b,c){var g=ga(b);G[a]=G[a]||[];G[a].push({node:g,callback:c});H(b).on("$destroy",function(){Z.off(a,b,c)})},off:function(a,b,c){function g(a,b,c){var d=ga(b);return a.filter(function(a){return!(a.node===d&&(!c||a.callback===c))})}var d=G[a];d&&(G[a]=1===arguments.length?null:g(d,b,c))},pin:function(a,b){ya(ta(a),"element","not an element");ya(ta(b),"parentElement",
|
||||
"not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,g){c=c||{};c.domOperation=g;return k(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!K;else if(ta(a)){var g=A(a),d=C.get(g);1===c?b=!d:C.put(g,!b)}else b=K=!!a;return b}};return Z}]}]).provider("$$animation",["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$HashMap","$$rAFScheduler",function(a,e,
|
||||
f,r,x,F){function u(a){function b(a){if(a.processed)return a;a.processed=!0;var d=a.domNode,h=d.parentNode;e.put(d,a);for(var f;h;){if(f=e.get(h)){f.processed||(f=b(f));break}h=h.parentNode}(f||c).children.push(a);return a}var c={children:[]},d,e=new x;for(d=0;d<a.length;d++){var f=a[d];e.put(f.domNode,a[d]={domNode:f.domNode,fn:f.fn,children:[]})}for(d=0;d<a.length;d++)b(a[d]);return function(a){var b=[],c=[],d;for(d=0;d<a.children.length;d++)c.push(a.children[d]);a=c.length;var h=0,e=[];for(d=0;d<
|
||||
c.length;d++){var f=c[d];0>=a&&(a=h,h=0,b.push(e),e=[]);e.push(f.fn);f.children.forEach(function(a){h++;c.push(a)});a--}e.length&&b.push(e);return b}(c)}var l=[],w=Q(a);return function(s,x,v){function h(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];q(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function P(a){var b=[],c={};q(a,function(a,g){var d=A(a.element),k=0<=["enter","move"].indexOf(a.event),d=a.structural?
|
||||
h(d):[];if(d.length){var e=k?"to":"from";q(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][e]={animationID:g,element:H(a)}})}else b.push(a)});var d={},k={};q(c,function(c,h){var e=c.from,f=c.to;if(e&&f){var m=a[e.animationID],C=a[f.animationID],n=e.animationID.toString();if(!k[n]){var D=k[n]={structural:!0,beforeStart:function(){m.beforeStart();C.beforeStart()},close:function(){m.close();C.close()},classes:y(m.classes,C.classes),from:m,to:C,anchors:[]};D.classes.length?b.push(D):
|
||||
(b.push(m),b.push(C))}k[n].anchors.push({out:e.element,"in":f.element})}else e=e?e.animationID:f.animationID,f=e.toString(),d[f]||(d[f]=!0,b.push(a[e]))});return b}function y(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d<a.length;d++){var k=a[d];if("ng-"!==k.substring(0,3))for(var e=0;e<b.length;e++)if(k===b[e]){c.push(k);break}}return c.join(" ")}function k(a){for(var b=c.length-1;0<=b;b--){var d=c[b];if(f.has(d)&&(d=f.get(d)(a)))return d}}function xa(a,c){a.from&&a.to?(b(a.from.element).setHost(c),
|
||||
b(a.to.element).setHost(c)):b(a.element).setHost(c)}function ka(){var a=b(s);!a||"leave"===x&&v.$$domOperationFired||a.end()}function J(b){s.off("$destroy",ka);s.removeData("$$animationRunner");w(s,v);ha(s,v);v.domOperation();C&&a.removeClass(s,C);s.removeClass("ng-animate");D.complete(!b)}v=oa(v);var n=0<=["enter","move","leave"].indexOf(x),D=new r({end:function(){J()},cancel:function(){J(!0)}});if(!c.length)return J(),D;s.data("$$animationRunner",D);var z=za(s.attr("class"),za(v.addClass,v.removeClass)),
|
||||
C=v.tempClasses;C&&(z+=" "+C,v.tempClasses=null);var K;n&&(K="ng-"+x+"-prepare",a.addClass(s,K));l.push({element:s,classes:z,event:x,structural:n,options:v,beforeStart:function(){s.addClass("ng-animate");C&&a.addClass(s,C);K&&(a.removeClass(s,K),K=null)},close:J});s.on("$destroy",ka);if(1<l.length)return D;e.$$postDigest(function(){var a=[];q(l,function(c){b(c.element)?a.push(c):c.close()});l.length=0;var c=P(a),d=[];q(c,function(a){d.push({domNode:A(a.from?a.from.element:a.element),fn:function(){a.beforeStart();
|
||||
var c,d=a.close;if(b(a.anchors?a.from.element||a.to.element:a.element)){var g=k(a);g&&(c=g.start)}c?(c=c(),c.done(function(a){d(!a)}),xa(a,c)):d()}})});F(u(d))});return D}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Fa(),c=Fa();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue",function(a,e,f,r,x,F,u,l){function w(a,b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++P))+"-"+a.getAttribute("class")+
|
||||
"-"+b}function s(k,h,f,l){var n;0<b.count(f)&&(n=c.get(f),n||(h=V(h,"-stagger"),e.addClass(k,h),n=Da(a,k,l),n.animationDuration=Math.max(n.animationDuration,0),n.transitionDuration=Math.max(n.transitionDuration,0),e.removeClass(k,h),c.put(f,n)));return n||{}}function M(a){y.push(a);u.waitUntilQuiet(function(){b.flush();c.flush();for(var a=x(),d=0;d<y.length;d++)y[d](a);y.length=0})}function v(c,h,e){h=b.get(e);h||(h=Da(a,c,Sa),"infinite"===h.animationIterationCount&&(h.animationIterationCount=1));
|
||||
b.put(e,h);c=h;e=c.animationDelay;h=c.transitionDelay;c.maxDelay=e&&h?Math.max(e,h):e||h;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var h=Q(e),P=0,y=[];return function(a,c){function d(){n()}function u(){n(!0)}function n(b){if(!(P||H&&da)){P=!0;da=!1;g.$$skipPreparationClasses||e.removeClass(a,fa);e.removeClass(a,ga);ra(m,!1);pa(m,!1);q(y,function(a){m.style[a[0]]=""});h(a,g);ha(a,g);Object.keys(G).length&&q(G,function(a,b){a?m.style.setProperty(b,
|
||||
a):m.style.removeProperty(b)});if(g.onDone)g.onDone();ea&&ea.length&&a.off(ea.join(" "),C);var c=a.data("$$animateCss");c&&(r.cancel(c[0].timer),a.removeData("$$animateCss"));E&&E.complete(!b)}}function D(a){p.blockTransition&&pa(m,a);p.blockKeyframeAnimation&&ra(m,!!a)}function z(){E=new f({end:d,cancel:u});M(O);n();return{$$willAnimate:!1,start:function(){return E},end:d}}function C(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));
|
||||
Math.max(a-W,0)>=Q&&b>=L&&(H=!0,n())}function K(){function b(){if(!P){D(!1);q(y,function(a){m.style[a[0]]=a[1]});h(a,g);e.addClass(a,ga);if(p.recalculateTimingStyles){na=m.className+" "+fa;ia=w(m,na);B=v(m,na,ia);$=B.maxDelay;I=Math.max($,0);L=B.maxDuration;if(0===L){n();return}p.hasTransitions=0<B.transitionDuration;p.hasAnimations=0<B.animationDuration}p.applyAnimationDelay&&($="boolean"!==typeof g.delay&&sa(g.delay)?parseFloat(g.delay):$,I=Math.max($,0),B.animationDelay=$,aa=[qa,$+"s"],y.push(aa),
|
||||
m.style[aa[0]]=aa[1]);Q=1E3*I;T=1E3*L;if(g.easing){var d,f=g.easing;p.hasTransitions&&(d=R+"TimingFunction",y.push([d,f]),m.style[d]=f);p.hasAnimations&&(d=X+"TimingFunction",y.push([d,f]),m.style[d]=f)}B.transitionDuration&&ea.push(ua);B.animationDuration&&ea.push(va);W=Date.now();var l=Q+1.5*T;d=W+l;var f=a.data("$$animateCss")||[],K=!0;if(f.length){var z=f[0];(K=d>z.expectedEndTime)?r.cancel(z.timer):f.push(n)}K&&(l=r(c,l,!1),f[0]={timer:l,expectedEndTime:d},f.push(n),a.data("$$animateCss",f));
|
||||
if(ea.length)a.on(ea.join(" "),C);g.to&&(g.cleanupStyles&&Ga(G,m,Object.keys(g.to)),Ba(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d<b.length;d++)b[d]();a.removeData("$$animateCss")}}if(!P)if(m.parentNode){var d=function(a){if(H)da&&a&&(da=!1,n());else if(da=!a,B.animationDuration)if(a=ra(m,da),da)y.push(a);else{var b=y,c=b.indexOf(a);0<=a&&b.splice(c,1)}},f=0<ca&&(B.transitionDuration&&0===U.transitionDuration||B.animationDuration&&0===U.animationDuration)&&Math.max(U.animationDelay,
|
||||
U.transitionDelay);f?r(b,Math.floor(f*ca*1E3),!1):b();N.resume=function(){d(!0)};N.pause=function(){d(!1)}}else n()}var g=c||{};g.$$prepared||(g=oa(Ha(g)));var G={},m=A(a);if(!m||!m.parentNode||!l.enabled())return z();var y=[],x=a.attr("class"),t=La(g),P,da,H,E,N,I,Q,L,T,W,ea=[];if(0===g.duration||!F.animations&&!F.transitions)return z();var ja=g.event&&ba(g.event)?g.event.join(" "):g.event,Y="",S="";ja&&g.structural?Y=V(ja,"ng-",!0):ja&&(Y=ja);g.addClass&&(S+=V(g.addClass,"-add"));g.removeClass&&
|
||||
(S.length&&(S+=" "),S+=V(g.removeClass,"-remove"));g.applyClassesEarly&&S.length&&h(a,g);var fa=[Y,S].join(" ").trim(),na=x+" "+fa,ga=V(fa,"-active"),x=t.to&&0<Object.keys(t.to).length;if(!(0<(g.keyframeStyle||"").length||x||fa))return z();var ia,U;0<g.stagger?(t=parseFloat(g.stagger),U={transitionDelay:t,animationDelay:t,transitionDuration:0,animationDuration:0}):(ia=w(m,na),U=s(m,fa,ia,Ta));g.$$skipPreparationClasses||e.addClass(a,fa);g.transitionStyle&&(t=[R,g.transitionStyle],la(m,t),y.push(t));
|
||||
0<=g.duration&&(t=0<m.style[R].length,t=Ea(g.duration,t),la(m,t),y.push(t));g.keyframeStyle&&(t=[X,g.keyframeStyle],la(m,t),y.push(t));var ca=U?0<=g.staggerIndex?g.staggerIndex:b.count(ia):0;(ja=0===ca)&&!g.skipBlocking&&pa(m,9999);var B=v(m,na,ia),$=B.maxDelay;I=Math.max($,0);L=B.maxDuration;var p={};p.hasTransitions=0<B.transitionDuration;p.hasAnimations=0<B.animationDuration;p.hasTransitionAll=p.hasTransitions&&"all"==B.transitionProperty;p.applyTransitionDuration=x&&(p.hasTransitions&&!p.hasTransitionAll||
|
||||
p.hasAnimations&&!p.hasTransitions);p.applyAnimationDuration=g.duration&&p.hasAnimations;p.applyTransitionDelay=sa(g.delay)&&(p.applyTransitionDuration||p.hasTransitions);p.applyAnimationDelay=sa(g.delay)&&p.hasAnimations;p.recalculateTimingStyles=0<S.length;if(p.applyTransitionDuration||p.applyAnimationDuration)L=g.duration?parseFloat(g.duration):L,p.applyTransitionDuration&&(p.hasTransitions=!0,B.transitionDuration=L,t=0<m.style[R+"Property"].length,y.push(Ea(L,t))),p.applyAnimationDuration&&(p.hasAnimations=
|
||||
!0,B.animationDuration=L,y.push([wa,L+"s"]));if(0===L&&!p.recalculateTimingStyles)return z();if(null!=g.delay){var aa;"boolean"!==typeof g.delay&&(aa=parseFloat(g.delay),I=Math.max(aa,0));p.applyTransitionDelay&&y.push([ma,aa+"s"]);p.applyAnimationDelay&&y.push([qa,aa+"s"])}null==g.duration&&0<B.transitionDuration&&(p.recalculateTimingStyles=p.recalculateTimingStyles||ja);Q=1E3*I;T=1E3*L;g.skipBlocking||(p.blockTransition=0<B.transitionDuration,p.blockKeyframeAnimation=0<B.animationDuration&&0<U.animationDelay&&
|
||||
0===U.animationDuration);g.from&&(g.cleanupStyles&&Ga(G,m,Object.keys(g.from)),Aa(a,g));p.blockTransition||p.blockKeyframeAnimation?D(L):g.skipBlocking||pa(m,!1);return{$$willAnimate:!0,end:d,start:function(){if(!P)return N={end:d,cancel:u,resume:null,pause:null},E=new f(N),M(K),E}}}}]}]).provider("$$animateCssDriver",["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$sniffer","$$jqLite","$document",function(a,
|
||||
c,d,e,f,r,x){function F(a){return a.replace(/\bng-\S+\b/g,"")}function u(a,b){I(a)&&(a=a.split(" "));I(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function l(c,e,f){function k(a){var b={},c=A(a).getBoundingClientRect();q(["width","height","top","left"],function(a){var d=c[a];switch(a){case "top":d+=M.scrollTop;break;case "left":d+=M.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function l(){var c=F(f.attr("class")||""),d=u(c,n),c=u(n,c),d=a(r,{to:k(f),addClass:"ng-anchor-in "+
|
||||
d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function x(){r.remove();e.removeClass("ng-animate-shim");f.removeClass("ng-animate-shim")}var r=H(A(e).cloneNode(!0)),n=F(r.attr("class")||"");e.addClass("ng-animate-shim");f.addClass("ng-animate-shim");r.addClass("ng-anchor");v.append(r);var D;c=function(){var c=a(r,{addClass:"ng-anchor-out",delay:!0,from:k(e)});return c.$$willAnimate?c:null}();if(!c&&(D=l(),!D))return x();var z=c||D;return{start:function(){function a(){c&&
|
||||
c.end()}var b,c=z.start();c.done(function(){c=null;if(!D&&(D=l()))return c=D.start(),c.done(function(){c=null;x();b.complete()}),c;x();b.complete()});return b=new d({end:a,cancel:a})}}}function w(a,b,c,e){var f=s(a,O),r=s(b,O),x=[];q(e,function(a){(a=l(c,a.out,a["in"]))&&x.push(a)});if(f||r||0!==x.length)return{start:function(){function a(){q(b,function(a){a.end()})}var b=[];f&&b.push(f.start());r&&b.push(r.start());q(x,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});
|
||||
return c}}}function s(c){var d=c.element,e=c.options||{};c.structural&&(e.event=c.event,e.structural=!0,e.applyClassesEarly=!0,"leave"===c.event&&(e.onDone=e.domOperation));e.preparationClasses&&(e.event=W(e.event,e.preparationClasses));c=a(d,e);return c.$$willAnimate?c:null}if(!f.animations&&!f.transitions)return O;var M=x[0].body;c=A(e);var v=H(c.parentNode&&11===c.parentNode.nodeType||M.contains(c)?c:M);Q(r);return function(a){return a.from&&a.to?w(a.from,a.to,a.classes,a.anchors):s(a)}}]}]).provider("$$animateJs",
|
||||
["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$jqLite",function(b,c,d){function e(c){c=ba(c)?c:c.split(" ");for(var d=[],e={},f=0;f<c.length;f++){var l=c[f],q=a.$$registeredAnimations[l];q&&!e[l]&&(d.push(b.get(q)),e[l]=!0)}return d}var f=Q(d);return function(a,b,d,u){function l(){u.domOperation();f(a,u)}function w(a,b,d,e,g){switch(d){case "animate":b=[b,e.from,e.to,g];break;case "setClass":b=[b,h,H,g];break;case "addClass":b=[b,h,g];break;case "removeClass":b=[b,H,g];
|
||||
break;default:b=[b,g]}b.push(e);if(a=a.apply(a,b))if(Ia(a.start)&&(a=a.start()),a instanceof c)a.done(g);else if(Ia(a))return a;return O}function s(a,b,d,e,g){var f=[];q(e,function(e){var h=e[g];h&&f.push(function(){var e,g,f=!1,k=function(a){f||(f=!0,(g||O)(a),e.complete(!a))};e=new c({end:function(){k()},cancel:function(){k(!0)}});g=w(h,a,b,d,function(a){k(!1===a)});return e})});return f}function A(a,b,d,e,g){var f=s(a,b,d,e,g);if(0===f.length){var h,k;"beforeSetClass"===g?(h=s(a,"removeClass",
|
||||
d,e,"beforeRemoveClass"),k=s(a,"addClass",d,e,"beforeAddClass")):"setClass"===g&&(h=s(a,"removeClass",d,e,"removeClass"),k=s(a,"addClass",d,e,"addClass"));h&&(f=f.concat(h));k&&(f=f.concat(k))}if(0!==f.length)return function(a){var b=[];f.length&&q(f,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){q(b,function(b){a?b.cancel():b.end()})}}}var v=!1;3===arguments.length&&ca(d)&&(u=d,d=null);u=oa(u);d||(d=a.attr("class")||"",u.addClass&&(d+=" "+u.addClass),u.removeClass&&(d+=" "+
|
||||
u.removeClass));var h=u.addClass,H=u.removeClass,y=e(d),k,E;if(y.length){var I,J;"leave"==b?(J="leave",I="afterLeave"):(J="before"+b.charAt(0).toUpperCase()+b.substr(1),I=b);"enter"!==b&&"move"!==b&&(k=A(a,b,u,y,J));E=A(a,b,u,y,I)}if(k||E){var n;return{$$willAnimate:!0,end:function(){n?n.end():(v=!0,l(),ha(a,u),n=new c,n.complete(!0));return n},start:function(){function b(c){v=!0;l();ha(a,u);n.complete(c)}if(n)return n;n=new c;var d,e=[];k&&e.push(function(a){d=k(a)});e.length?e.push(function(a){l();
|
||||
a(!0)}):l();E&&e.push(function(a){d=E(a)});n.setHost({end:function(){v||((d||O)(void 0),b(void 0))},cancel:function(){v||((d||O)(!0),b(!0))}});c.chain(e,b);return n}}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),r=d(a.to);if(b||r)return{start:function(){function a(){return function(){q(d,
|
||||
function(a){a.end()})}}var d=[];b&&d.push(b.start());r&&d.push(r.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
|
||||
(function(F,t,W){'use strict';function ua(a,b,c){if(!a)throw ngMinErr("areq",b||"?",c||"required");return a}function va(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;X(a)&&(a=a.join(" "));X(b)&&(b=b.join(" "));return a+" "+b}function Ea(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function ba(a,b,c){var d="";a=X(a)?a:a&&U(a)&&a.length?a.split(/\s+/):[];u(a,function(a,s){a&&0<a.length&&(d+=0<s?" ":"",d+=c?b+a:a+b)});return d}function Fa(a){if(a instanceof G)switch(a.length){case 0:return[];
|
||||
case 1:if(1===a[0].nodeType)return a;break;default:return G(ka(a))}if(1===a.nodeType)return G(a)}function ka(a){if(!a[0])return a;for(var b=0;b<a.length;b++){var c=a[b];if(1==c.nodeType)return c}}function Ga(a,b,c){u(b,function(b){a.addClass(b,c)})}function Ha(a,b,c){u(b,function(b){a.removeClass(b,c)})}function ha(a){return function(b,c){c.addClass&&(Ga(a,b,c.addClass),c.addClass=null);c.removeClass&&(Ha(a,b,c.removeClass),c.removeClass=null)}}function ia(a){a=a||{};if(!a.$$prepared){var b=a.domOperation||
|
||||
H;a.domOperation=function(){a.$$domOperationFired=!0;b();b=H};a.$$prepared=!0}return a}function ca(a,b){wa(a,b);xa(a,b)}function wa(a,b){b.from&&(a.css(b.from),b.from=null)}function xa(a,b){b.to&&(a.css(b.to),b.to=null)}function R(a,b,c){var d=(b.addClass||"")+" "+(c.addClass||""),e=(b.removeClass||"")+" "+(c.removeClass||"");a=Ia(a.attr("class"),d,e);ya(b,c);b.addClass=a.addClass?a.addClass:null;b.removeClass=a.removeClass?a.removeClass:null;return b}function Ia(a,b,c){function d(a){U(a)&&(a=a.split(" "));
|
||||
var b={};u(a,function(a){a.length&&(b[a]=!0)});return b}var e={};a=d(a);b=d(b);u(b,function(a,b){e[b]=1});c=d(c);u(c,function(a,b){e[b]=1===e[b]?null:-1});var s={addClass:"",removeClass:""};u(e,function(b,c){var d,e;1===b?(d="addClass",e=!a[c]):-1===b&&(d="removeClass",e=a[c]);e&&(s[d].length&&(s[d]+=" "),s[d]+=c)});return s}function A(a){return a instanceof t.element?a[0]:a}function za(a,b,c){var d=Object.create(null),e=a.getComputedStyle(b)||{};u(c,function(a,b){var c=e[a];if(c){var l=c.charAt(0);
|
||||
if("-"===l||"+"===l||0<=l)c=Ja(c);0===c&&(c=null);d[b]=c}});return d}function Ja(a){var b=0;a=a.split(/\s*,\s*/);u(a,function(a){"s"==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));a=parseFloat(a)||0;b=b?Math.max(a,b):a});return b}function la(a){return 0===a||null!=a}function Aa(a,b){var c=O,d=a+"s";b?c+="Duration":d+=" linear all";return[c,d]}function ja(a,b){var c=b?"-"+b+"s":"";da(a,[ea,c]);return[ea,c]}function ma(a,b){var c=b?"paused":"",d=V+"PlayState";da(a,[d,c]);return[d,c]}function da(a,
|
||||
b){a.style[b[0]]=b[1]}function Ba(){var a=Object.create(null);return{flush:function(){a=Object.create(null)},count:function(b){return(b=a[b])?b.total:0},get:function(b){return(b=a[b])&&b.value},put:function(b,c){a[b]?a[b].total++:a[b]={total:1,value:c}}}}var H=t.noop,ya=t.extend,G=t.element,u=t.forEach,X=t.isArray,U=t.isString,na=t.isObject,Ka=t.isUndefined,La=t.isDefined,Ca=t.isFunction,oa=t.isElement,O,pa,V,qa;F.ontransitionend===W&&F.onwebkittransitionend!==W?(O="WebkitTransition",pa="webkitTransitionEnd transitionend"):
|
||||
(O="transition",pa="transitionend");F.onanimationend===W&&F.onwebkitanimationend!==W?(V="WebkitAnimation",qa="webkitAnimationEnd animationend"):(V="animation",qa="animationend");var ra=V+"Delay",sa=V+"Duration",ea=O+"Delay";F=O+"Duration";var Ma={transitionDuration:F,transitionDelay:ea,transitionProperty:O+"Property",animationDuration:sa,animationDelay:ra,animationIterationCount:V+"IterationCount"},Na={transitionDuration:F,transitionDelay:ea,animationDuration:sa,animationDelay:ra};t.module("ngAnimate",
|
||||
[]).directive("ngAnimateChildren",[function(){return function(a,b,c){a=c.ngAnimateChildren;t.isString(a)&&0===a.length?b.data("$$ngAnimateChildren",!0):c.$observe("ngAnimateChildren",function(a){b.data("$$ngAnimateChildren","on"===a||"true"===a)})}}]).factory("$$rAFMutex",["$$rAF",function(a){return function(){var b=!1;a(function(){b=!0});return function(c){b?c():a(c)}}}]).factory("$$rAFScheduler",["$$rAF",function(a){function b(a){d.push([].concat(a));c()}function c(){if(d.length){for(var b=[],n=
|
||||
0;n<d.length;n++){var g=d[n];g.shift()();g.length&&b.push(g)}d=b;e||a(function(){e||c()})}}var d=[],e;b.waitUntilQuiet=function(b){e&&e();e=a(function(){e=null;b();c()})};return b}]).factory("$$AnimateRunner",["$q","$$rAFMutex",function(a,b){function c(a){this.setHost(a);this._doneCallbacks=[];this._runInAnimationFrame=b();this._state=0}c.chain=function(a,b){function c(){if(n===a.length)b(!0);else a[n](function(a){!1===a?b(!1):(n++,c())})}var n=0;c()};c.all=function(a,b){function c(s){g=g&&s;++n===
|
||||
a.length&&b(g)}var n=0,g=!0;u(a,function(a){a.done(c)})};c.prototype={setHost:function(a){this.host=a||{}},done:function(a){2===this._state?a():this._doneCallbacks.push(a)},progress:H,getPromise:function(){if(!this.promise){var b=this;this.promise=a(function(a,c){b.done(function(b){!1===b?c():a()})})}return this.promise},then:function(a,b){return this.getPromise().then(a,b)},"catch":function(a){return this.getPromise()["catch"](a)},"finally":function(a){return this.getPromise()["finally"](a)},pause:function(){this.host.pause&&
|
||||
this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end();this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel();this._resolve(!1)},complete:function(a){var b=this;0===b._state&&(b._state=1,b._runInAnimationFrame(function(){b._resolve(a)}))},_resolve:function(a){2!==this._state&&(u(this._doneCallbacks,function(b){b(a)}),this._doneCallbacks.length=0,this._state=2)}};return c}]).provider("$$animateQueue",["$animateProvider",
|
||||
function(a){function b(a,b,c,g){return d[a].some(function(a){return a(b,c,g)})}function c(a,b){a=a||{};var c=0<(a.addClass||"").length,d=0<(a.removeClass||"").length;return b?c&&d:c||d}var d=this.rules={skip:[],cancel:[],join:[]};d.join.push(function(a,b,d){return!b.structural&&c(b.options)});d.skip.push(function(a,b,d){return!b.structural&&!c(b.options)});d.skip.push(function(a,b,c){return"leave"==c.event&&b.structural});d.skip.push(function(a,b,c){return c.structural&&!b.structural});d.cancel.push(function(a,
|
||||
b,c){return c.structural&&b.structural});d.cancel.push(function(a,b,c){return 2===c.state&&b.structural});d.cancel.push(function(a,b,c){a=b.options;c=c.options;return a.addClass&&a.addClass===c.removeClass||a.removeClass&&a.removeClass===c.addClass});this.$get=["$$rAF","$rootScope","$rootElement","$document","$$HashMap","$$animation","$$AnimateRunner","$templateRequest","$$jqLite",function(d,s,n,g,l,D,z,Z,I){function w(a,b){var c=A(a),f=[],d=m[b];d&&u(d,function(a){a.node.contains(c)&&f.push(a.callback)});
|
||||
return f}function B(a,b,c,f){d(function(){u(w(b,a),function(a){a(b,c,f)})})}function r(a,S,p){function d(b,c,f,p){B(c,a,f,p);b.progress(c,f,p)}function k(b){Da(a,p);ca(a,p);p.domOperation();m.complete(!b)}var P,E;if(a=Fa(a))P=A(a),E=a.parent();p=ia(p);var m=new z;if(!P)return k(),m;X(p.addClass)&&(p.addClass=p.addClass.join(" "));X(p.removeClass)&&(p.removeClass=p.removeClass.join(" "));p.from&&!na(p.from)&&(p.from=null);p.to&&!na(p.to)&&(p.to=null);var e=[P.className,p.addClass,p.removeClass].join(" ");
|
||||
if(!v(e))return k(),m;var M=0<=["enter","move","leave"].indexOf(S),g=!x||L.get(P),e=!g&&h.get(P)||{},l=!!e.state;g||l&&1==e.state||(g=!ta(a,E,S));if(g)return k(),m;M&&K(a);g={structural:M,element:a,event:S,close:k,options:p,runner:m};if(l){if(b("skip",a,g,e)){if(2===e.state)return k(),m;R(a,e.options,p);return e.runner}if(b("cancel",a,g,e))2===e.state?e.runner.end():e.structural?e.close():R(a,g.options,e.options);else if(b("join",a,g,e))if(2===e.state)R(a,p,{});else return S=g.event=e.event,p=R(a,
|
||||
e.options,g.options),m}else R(a,p,{});(l=g.structural)||(l="animate"===g.event&&0<Object.keys(g.options.to||{}).length||c(g.options));if(!l)return k(),C(a),m;M&&f(E);var r=(e.counter||0)+1;g.counter=r;ga(a,1,g);s.$$postDigest(function(){var b=h.get(P),v=!b,b=b||{},e=a.parent()||[],E=0<e.length&&("animate"===b.event||b.structural||c(b.options));if(v||b.counter!==r||!E){v&&(Da(a,p),ca(a,p));if(v||M&&b.event!==S)p.domOperation(),m.end();E||C(a)}else S=!b.structural&&c(b.options,!0)?"setClass":b.event,
|
||||
b.structural&&f(e),ga(a,2),b=D(a,S,b.options),b.done(function(b){k(!b);(b=h.get(P))&&b.counter===r&&C(A(a));d(m,S,"close",{})}),m.setHost(b),d(m,S,"start",{})});return m}function K(a){a=A(a).querySelectorAll("[data-ng-animate]");u(a,function(a){var b=parseInt(a.getAttribute("data-ng-animate")),c=h.get(a);switch(b){case 2:c.runner.end();case 1:c&&h.remove(a)}})}function C(a){a=A(a);a.removeAttribute("data-ng-animate");h.remove(a)}function E(a,b){return A(a)===A(b)}function f(a){a=A(a);do{if(!a||1!==
|
||||
a.nodeType)break;var b=h.get(a);if(b){var f=a;!b.structural&&c(b.options)&&(2===b.state&&b.runner.end(),C(f))}a=a.parentNode}while(1)}function ta(a,b,c){var f=c=!1,d=!1,v;for((a=a.data("$ngAnimatePin"))&&(b=a);b&&b.length;){f||(f=E(b,n));a=b[0];if(1!==a.nodeType)break;var e=h.get(a)||{};d||(d=e.structural||L.get(a));if(Ka(v)||!0===v)a=b.data("$$ngAnimateChildren"),La(a)&&(v=a);if(d&&!1===v)break;f||(f=E(b,n),f||(a=b.data("$ngAnimatePin"))&&(b=a));c||(c=E(b,k));b=b.parent()}return(!d||v)&&f&&c}function ga(a,
|
||||
b,c){c=c||{};c.state=b;a=A(a);a.setAttribute("data-ng-animate",b);c=(b=h.get(a))?ya(b,c):c;h.put(a,c)}var h=new l,L=new l,x=null,M=s.$watch(function(){return 0===Z.totalPendingRequests},function(a){a&&(M(),s.$$postDigest(function(){s.$$postDigest(function(){null===x&&(x=!0)})}))}),k=G(g[0].body),m={},P=a.classNameFilter(),v=P?function(a){return P.test(a)}:function(){return!0},Da=ha(I);return{on:function(a,b,c){b=ka(b);m[a]=m[a]||[];m[a].push({node:b,callback:c})},off:function(a,b,c){function f(a,
|
||||
b,c){var d=ka(b);return a.filter(function(a){return!(a.node===d&&(!c||a.callback===c))})}var d=m[a];d&&(m[a]=1===arguments.length?null:f(d,b,c))},pin:function(a,b){ua(oa(a),"element","not an element");ua(oa(b),"parentElement","not an element");a.data("$ngAnimatePin",b)},push:function(a,b,c,f){c=c||{};c.domOperation=f;return r(a,b,c)},enabled:function(a,b){var c=arguments.length;if(0===c)b=!!x;else if(oa(a)){var f=A(a),d=L.get(f);1===c?b=!d:(b=!!b)?d&&L.remove(f):L.put(f,!0)}else b=x=!!a;return b}}}]}]).provider("$$animation",
|
||||
["$animateProvider",function(a){function b(a){return a.data("$$animationRunner")}var c=this.drivers=[];this.$get=["$$jqLite","$rootScope","$injector","$$AnimateRunner","$$rAFScheduler",function(a,e,s,n,g){var l=[],D=ha(a),z=0,Z=0,I=[];return function(w,B,r){function K(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];u(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function C(a){var b=[],c={};u(a,function(a,f){var d=A(a.element),
|
||||
e=0<=["enter","move"].indexOf(a.event),d=a.structural?K(d):[];if(d.length){var h=e?"to":"from";u(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][h]={animationID:f,element:G(a)}})}else b.push(a)});var f={},d={};u(c,function(c,e){var h=c.from,k=c.to;if(h&&k){var m=a[h.animationID],g=a[k.animationID],x=h.animationID.toString();if(!d[x]){var B=d[x]={structural:!0,beforeStart:function(){m.beforeStart();g.beforeStart()},close:function(){m.close();g.close()},classes:E(m.classes,g.classes),
|
||||
from:m,to:g,anchors:[]};B.classes.length?b.push(B):(b.push(m),b.push(g))}d[x].anchors.push({out:h.element,"in":k.element})}else h=h?h.animationID:k.animationID,k=h.toString(),f[k]||(f[k]=!0,b.push(a[h]))});return b}function E(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],f=0;f<a.length;f++){var d=a[f];if("ng-"!==d.substring(0,3))for(var h=0;h<b.length;h++)if(d===b[h]){c.push(d);break}}return c.join(" ")}function f(a){for(var b=c.length-1;0<=b;b--){var f=c[b];if(s.has(f)&&(f=s.get(f)(a)))return f}}
|
||||
function ta(a,c){a.from&&a.to?(b(a.from.element).setHost(c),b(a.to.element).setHost(c)):b(a.element).setHost(c)}function ga(){var a=b(w);!a||"leave"===B&&r.$$domOperationFired||a.end()}function h(b){w.off("$destroy",ga);w.removeData("$$animationRunner");D(w,r);ca(w,r);r.domOperation();k&&a.removeClass(w,k);w.removeClass("ng-animate");x.complete(!b)}r=ia(r);var L=0<=["enter","move","leave"].indexOf(B),x=new n({end:function(){h()},cancel:function(){h(!0)}});if(!c.length)return h(),x;w.data("$$animationRunner",
|
||||
x);var M=va(w.attr("class"),va(r.addClass,r.removeClass)),k=r.tempClasses;k&&(M+=" "+k,r.tempClasses=null);var m;L||(m=z,z+=1);l.push({element:w,classes:M,event:B,classBasedIndex:m,structural:L,options:r,beforeStart:function(){w.addClass("ng-animate");k&&a.addClass(w,k)},close:h});w.on("$destroy",ga);if(1<l.length)return x;e.$$postDigest(function(){Z=z;z=0;I.length=0;var a=[];u(l,function(c){b(c.element)&&a.push(c)});l.length=0;u(C(a),function(a){function c(){a.beforeStart();var d,h=a.close;if(b(a.anchors?
|
||||
a.from.element||a.to.element:a.element)){var k=f(a);k&&(d=k.start)}d?(d=d(),d.done(function(a){h(!a)}),ta(a,d)):h()}a.structural?c():(I.push({node:A(a.element),fn:c}),a.classBasedIndex===Z-1&&(I=I.sort(function(a,b){return b.node.contains(a.node)}).map(function(a){return a.fn}),g(I)))})});return x}}]}]).provider("$animateCss",["$animateProvider",function(a){var b=Ba(),c=Ba();this.$get=["$window","$$jqLite","$$AnimateRunner","$timeout","$document","$sniffer","$$rAFScheduler",function(a,e,s,n,g,l,D){function z(a,
|
||||
b){var c=a.parentNode;return(c.$$ngAnimateParentKey||(c.$$ngAnimateParentKey=++r))+"-"+a.getAttribute("class")+"-"+b}function Z(g,f,B,l){var h;0<b.count(B)&&(h=c.get(B),h||(f=ba(f,"-stagger"),e.addClass(g,f),h=za(a,g,l),h.animationDuration=Math.max(h.animationDuration,0),h.transitionDuration=Math.max(h.transitionDuration,0),e.removeClass(g,f),c.put(B,h)));return h||{}}function I(a){C.push(a);D.waitUntilQuiet(function(){b.flush();c.flush();for(var a=K.offsetWidth+1,d=0;d<C.length;d++)C[d](a);C.length=
|
||||
0})}function w(c,f,e){f=b.get(e);f||(f=za(a,c,Ma),"infinite"===f.animationIterationCount&&(f.animationIterationCount=1));b.put(e,f);c=f;e=c.animationDelay;f=c.transitionDelay;c.maxDelay=e&&f?Math.max(e,f):e||f;c.maxDuration=Math.max(c.animationDuration*c.animationIterationCount,c.transitionDuration);return c}var B=ha(e),r=0,K=A(g).body,C=[];return function(a,c){function d(){h()}function g(){h(!0)}function h(b){if(!(K||C&&D)){K=!0;D=!1;e.removeClass(a,Y);e.removeClass(a,W);ma(k,!1);ja(k,!1);u(m,function(a){k.style[a[0]]=
|
||||
""});B(a,c);ca(a,c);if(c.onDone)c.onDone();p&&p.complete(!b)}}function L(a){q.blockTransition&&ja(k,a);q.blockKeyframeAnimation&&ma(k,!!a)}function x(){p=new s({end:d,cancel:g});h();return{$$willAnimate:!1,start:function(){return p},end:d}}function M(){function b(){if(!K){L(!1);u(m,function(a){k.style[a[0]]=a[1]});B(a,c);e.addClass(a,W);if(q.recalculateTimingStyles){fa=k.className+" "+Y;$=z(k,fa);y=w(k,fa,$);Q=y.maxDelay;H=Math.max(Q,0);J=y.maxDuration;if(0===J){h();return}q.hasTransitions=0<y.transitionDuration;
|
||||
q.hasAnimations=0<y.animationDuration}if(q.applyTransitionDelay||q.applyAnimationDelay){Q="boolean"!==typeof c.delay&&la(c.delay)?parseFloat(c.delay):Q;H=Math.max(Q,0);var l;q.applyTransitionDelay&&(y.transitionDelay=Q,l=[ea,Q+"s"],m.push(l),k.style[l[0]]=l[1]);q.applyAnimationDelay&&(y.animationDelay=Q,l=[ra,Q+"s"],m.push(l),k.style[l[0]]=l[1])}F=1E3*H;G=1E3*J;if(c.easing){var r=c.easing;q.hasTransitions&&(l=O+"TimingFunction",m.push([l,r]),k.style[l]=r);q.hasAnimations&&(l=V+"TimingFunction",m.push([l,
|
||||
r]),k.style[l]=r)}y.transitionDuration&&p.push(pa);y.animationDuration&&p.push(qa);x=Date.now();a.on(p.join(" "),g);n(d,F+1.5*G);xa(a,c)}}function d(){h()}function g(a){a.stopPropagation();var b=a.originalEvent||a;a=b.$manualTimeStamp||b.timeStamp||Date.now();b=parseFloat(b.elapsedTime.toFixed(3));Math.max(a-x,0)>=F&&b>=J&&(C=!0,h())}if(!K){var x,p=[],l=function(a){if(C)D&&a&&(D=!1,h());else if(D=!a,y.animationDuration)if(a=ma(k,D),D)m.push(a);else{var b=m,c=b.indexOf(a);0<=a&&b.splice(c,1)}},r=0<
|
||||
U&&(y.transitionDuration&&0===T.transitionDuration||y.animationDuration&&0===T.animationDuration)&&Math.max(T.animationDelay,T.transitionDelay);r?n(b,Math.floor(r*U*1E3),!1):b();t.resume=function(){l(!0)};t.pause=function(){l(!1)}}}var k=A(a);c=ia(c);var m=[],r=a.attr("class"),v=Ea(c),K,D,C,p,t,H,F,J,G;if(0===c.duration||!l.animations&&!l.transitions)return x();var aa=c.event&&X(c.event)?c.event.join(" "):c.event,R="",N="";aa&&c.structural?R=ba(aa,"ng-",!0):aa&&(R=aa);c.addClass&&(N+=ba(c.addClass,
|
||||
"-add"));c.removeClass&&(N.length&&(N+=" "),N+=ba(c.removeClass,"-remove"));c.applyClassesEarly&&N.length&&(B(a,c),N="");var Y=[R,N].join(" ").trim(),fa=r+" "+Y,W=ba(Y,"-active"),r=v.to&&0<Object.keys(v.to).length;if(!r&&!Y)return x();var $,T;0<c.stagger?(v=parseFloat(c.stagger),T={transitionDelay:v,animationDelay:v,transitionDuration:0,animationDuration:0}):($=z(k,fa),T=Z(k,Y,$,Na));e.addClass(a,Y);c.transitionStyle&&(v=[O,c.transitionStyle],da(k,v),m.push(v));0<=c.duration&&(v=0<k.style[O].length,
|
||||
v=Aa(c.duration,v),da(k,v),m.push(v));c.keyframeStyle&&(v=[V,c.keyframeStyle],da(k,v),m.push(v));var U=T?0<=c.staggerIndex?c.staggerIndex:b.count($):0;(aa=0===U)&&ja(k,9999);var y=w(k,fa,$),Q=y.maxDelay;H=Math.max(Q,0);J=y.maxDuration;var q={};q.hasTransitions=0<y.transitionDuration;q.hasAnimations=0<y.animationDuration;q.hasTransitionAll=q.hasTransitions&&"all"==y.transitionProperty;q.applyTransitionDuration=r&&(q.hasTransitions&&!q.hasTransitionAll||q.hasAnimations&&!q.hasTransitions);q.applyAnimationDuration=
|
||||
c.duration&&q.hasAnimations;q.applyTransitionDelay=la(c.delay)&&(q.applyTransitionDuration||q.hasTransitions);q.applyAnimationDelay=la(c.delay)&&q.hasAnimations;q.recalculateTimingStyles=0<N.length;if(q.applyTransitionDuration||q.applyAnimationDuration)J=c.duration?parseFloat(c.duration):J,q.applyTransitionDuration&&(q.hasTransitions=!0,y.transitionDuration=J,v=0<k.style[O+"Property"].length,m.push(Aa(J,v))),q.applyAnimationDuration&&(q.hasAnimations=!0,y.animationDuration=J,m.push([sa,J+"s"]));if(0===
|
||||
J&&!q.recalculateTimingStyles)return x();null==c.duration&&0<y.transitionDuration&&(q.recalculateTimingStyles=q.recalculateTimingStyles||aa);F=1E3*H;G=1E3*J;c.skipBlocking||(q.blockTransition=0<y.transitionDuration,q.blockKeyframeAnimation=0<y.animationDuration&&0<T.animationDelay&&0===T.animationDuration);wa(a,c);q.blockTransition||ja(k,!1);L(J);return{$$willAnimate:!0,end:d,start:function(){if(!K)return t={end:d,cancel:g,resume:null,pause:null},p=new s(t),I(M),p}}}}]}]).provider("$$animateCssDriver",
|
||||
["$$animationProvider",function(a){a.drivers.push("$$animateCssDriver");this.$get=["$animateCss","$rootScope","$$AnimateRunner","$rootElement","$document","$sniffer",function(a,c,d,e,s,n){function g(a){return a.replace(/\bng-\S+\b/g,"")}function l(a,b){U(a)&&(a=a.split(" "));U(b)&&(b=b.split(" "));return a.filter(function(a){return-1===b.indexOf(a)}).join(" ")}function D(c,e,z){function D(a){var b={},c=A(a).getBoundingClientRect();u(["width","height","top","left"],function(a){var d=c[a];switch(a){case "top":d+=
|
||||
I.scrollTop;break;case "left":d+=I.scrollLeft}b[a]=Math.floor(d)+"px"});return b}function s(){var c=g(z.attr("class")||""),d=l(c,t),c=l(t,c),d=a(n,{to:D(z),addClass:"ng-anchor-in "+d,removeClass:"ng-anchor-out "+c,delay:!0});return d.$$willAnimate?d:null}function f(){n.remove();e.removeClass("ng-animate-shim");z.removeClass("ng-animate-shim")}var n=G(A(e).cloneNode(!0)),t=g(n.attr("class")||"");e.addClass("ng-animate-shim");z.addClass("ng-animate-shim");n.addClass("ng-anchor");w.append(n);var h;c=
|
||||
function(){var c=a(n,{addClass:"ng-anchor-out",delay:!0,from:D(e)});return c.$$willAnimate?c:null}();if(!c&&(h=s(),!h))return f();var L=c||h;return{start:function(){function a(){c&&c.end()}var b,c=L.start();c.done(function(){c=null;if(!h&&(h=s()))return c=h.start(),c.done(function(){c=null;f();b.complete()}),c;f();b.complete()});return b=new d({end:a,cancel:a})}}}function z(a,b,c,e){var g=t(a),f=t(b),l=[];u(e,function(a){(a=D(c,a.out,a["in"]))&&l.push(a)});if(g||f||0!==l.length)return{start:function(){function a(){u(b,
|
||||
function(a){a.end()})}var b=[];g&&b.push(g.start());f&&b.push(f.start());u(l,function(a){b.push(a.start())});var c=new d({end:a,cancel:a});d.all(b,function(a){c.complete(a)});return c}}}function t(c){var d=c.element,e=c.options||{};c.structural?(e.structural=e.applyClassesEarly=!0,e.event=c.event,"leave"===e.event&&(e.onDone=e.domOperation)):e.event=null;c=a(d,e);return c.$$willAnimate?c:null}if(!n.animations&&!n.transitions)return H;var I=A(s).body;c=A(e);var w=G(I.parentNode===c?I:c);return function(a){return a.from&&
|
||||
a.to?z(a.from,a.to,a.classes,a.anchors):t(a)}}]}]).provider("$$animateJs",["$animateProvider",function(a){this.$get=["$injector","$$AnimateRunner","$$rAFMutex","$$jqLite",function(b,c,d,e){function s(c){c=X(c)?c:c.split(" ");for(var d=[],e={},z=0;z<c.length;z++){var n=c[z],s=a.$$registeredAnimations[n];s&&!e[n]&&(d.push(b.get(s)),e[n]=!0)}return d}var n=ha(e);return function(a,b,d,e){function t(){e.domOperation();n(a,e)}function A(a,b,d,e,f){switch(d){case "animate":b=[b,e.from,e.to,f];break;case "setClass":b=
|
||||
[b,r,K,f];break;case "addClass":b=[b,r,f];break;case "removeClass":b=[b,K,f];break;default:b=[b,f]}b.push(e);if(a=a.apply(a,b))if(Ca(a.start)&&(a=a.start()),a instanceof c)a.done(f);else if(Ca(a))return a;return H}function w(a,b,d,e,f){var m=[];u(e,function(e){var g=e[f];g&&m.push(function(){var e,f,m=!1,k=function(a){m||(m=!0,(f||H)(a),e.complete(!a))};e=new c({end:function(){k()},cancel:function(){k(!0)}});f=A(g,a,b,d,function(a){k(!1===a)});return e})});return m}function B(a,b,d,e,f){var m=w(a,
|
||||
b,d,e,f);if(0===m.length){var g,l;"beforeSetClass"===f?(g=w(a,"removeClass",d,e,"beforeRemoveClass"),l=w(a,"addClass",d,e,"beforeAddClass")):"setClass"===f&&(g=w(a,"removeClass",d,e,"removeClass"),l=w(a,"addClass",d,e,"addClass"));g&&(m=m.concat(g));l&&(m=m.concat(l))}if(0!==m.length)return function(a){var b=[];m.length&&u(m,function(a){b.push(a())});b.length?c.all(b,a):a();return function(a){u(b,function(b){a?b.cancel():b.end()})}}}3===arguments.length&&na(d)&&(e=d,d=null);e=ia(e);d||(d=a.attr("class")||
|
||||
"",e.addClass&&(d+=" "+e.addClass),e.removeClass&&(d+=" "+e.removeClass));var r=e.addClass,K=e.removeClass,C=s(d),E,f;if(C.length){var F,G;"leave"==b?(G="leave",F="afterLeave"):(G="before"+b.charAt(0).toUpperCase()+b.substr(1),F=b);"enter"!==b&&"move"!==b&&(E=B(a,b,e,C,G));f=B(a,b,e,C,F)}if(E||f)return{start:function(){function b(c){n=!0;t();ca(a,e);k.complete(c)}var d,l=[];E&&l.push(function(a){d=E(a)});l.length?l.push(function(a){t();a(!0)}):t();f&&l.push(function(a){d=f(a)});var n=!1,k=new c({end:function(){n||
|
||||
((d||H)(void 0),b(void 0))},cancel:function(){n||((d||H)(!0),b(!0))}});c.chain(l,b);return k}}}}]}]).provider("$$animateJsDriver",["$$animationProvider",function(a){a.drivers.push("$$animateJsDriver");this.$get=["$$animateJs","$$AnimateRunner",function(a,c){function d(c){return a(c.element,c.event,c.classes,c.options)}return function(a){if(a.from&&a.to){var b=d(a.from),n=d(a.to);if(b||n)return{start:function(){function a(){return function(){u(d,function(a){a.end()})}}var d=[];b&&d.push(b.start());
|
||||
n&&d.push(n.start());c.all(d,function(a){e.complete(a)});var e=new c({end:a(),cancel:a()});return e}}}else return d(a)}}]}])})(window,window.angular);
|
||||
//# sourceMappingURL=angular-animate.min.js.map
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.5.3",
|
||||
"license": "MIT",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-animate.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.5.3"
|
||||
"angular": "1.4.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "angular-animate",
|
||||
"version": "1.5.3",
|
||||
"version": "1.4.2",
|
||||
"description": "AngularJS module for animations",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
||||
19
www/lib/angular-aria/.bower.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-aria.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
},
|
||||
"homepage": "https://github.com/angular/bower-angular-aria",
|
||||
"_release": "1.4.2",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v1.4.2",
|
||||
"commit": "b5b37f3d12b8b23f2a0212efd08c1902216d2d8c"
|
||||
},
|
||||
"_source": "git://github.com/angular/bower-angular-aria.git",
|
||||
"_target": "^1.3.15 || >1.4.0-beta.0",
|
||||
"_originalSource": "angular-aria"
|
||||
}
|
||||
67
www/lib/angular-aria/README.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# packaged angular-aria
|
||||
|
||||
This repo is for distribution on `npm` and `bower`. The source for this module is in the
|
||||
[main AngularJS repo](https://github.com/angular/angular.js/tree/master/src/ngAria).
|
||||
Please file issues and pull requests against that repo.
|
||||
|
||||
## Install
|
||||
|
||||
You can install this package either with `npm` or with `bower`.
|
||||
|
||||
### npm
|
||||
|
||||
```shell
|
||||
npm install angular-aria
|
||||
```
|
||||
Then add `ngAria` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', [require('angular-aria')]);
|
||||
```
|
||||
|
||||
### bower
|
||||
|
||||
```shell
|
||||
bower install angular-aria
|
||||
```
|
||||
|
||||
Add a `<script>` to your `index.html`:
|
||||
|
||||
```html
|
||||
<script src="/bower_components/angular-aria/angular-aria.js"></script>
|
||||
```
|
||||
|
||||
Then add `ngAria` as a dependency for your app:
|
||||
|
||||
```javascript
|
||||
angular.module('myApp', ['ngAria']);
|
||||
```
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation is available on the
|
||||
[AngularJS docs site](http://docs.angularjs.org/api/ngAria).
|
||||
|
||||
## License
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
393
www/lib/angular-aria/angular-aria.js
vendored
Normal file
@@ -0,0 +1,393 @@
|
||||
/**
|
||||
* @license AngularJS v1.4.2
|
||||
* (c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
* License: MIT
|
||||
*/
|
||||
(function(window, angular, undefined) {'use strict';
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name ngAria
|
||||
* @description
|
||||
*
|
||||
* The `ngAria` module provides support for common
|
||||
* [<abbr title="Accessible Rich Internet Applications">ARIA</abbr>](http://www.w3.org/TR/wai-aria/)
|
||||
* attributes that convey state or semantic information about the application for users
|
||||
* of assistive technologies, such as screen readers.
|
||||
*
|
||||
* <div doc-module-components="ngAria"></div>
|
||||
*
|
||||
* ## Usage
|
||||
*
|
||||
* For ngAria to do its magic, simply include the module `ngAria` as a dependency. The following
|
||||
* directives are supported:
|
||||
* `ngModel`, `ngDisabled`, `ngShow`, `ngHide`, `ngClick`, `ngDblClick`, and `ngMessages`.
|
||||
*
|
||||
* Below is a more detailed breakdown of the attributes handled by ngAria:
|
||||
*
|
||||
* | Directive | Supported Attributes |
|
||||
* |---------------------------------------------|----------------------------------------------------------------------------------------|
|
||||
* | {@link ng.directive:ngDisabled ngDisabled} | aria-disabled |
|
||||
* | {@link ng.directive:ngShow ngShow} | aria-hidden |
|
||||
* | {@link ng.directive:ngHide ngHide} | aria-hidden |
|
||||
* | {@link ng.directive:ngDblclick ngDblclick} | tabindex |
|
||||
* | {@link module:ngMessages ngMessages} | aria-live |
|
||||
* | {@link ng.directive:ngModel ngModel} | aria-checked, aria-valuemin, aria-valuemax, aria-valuenow, aria-invalid, aria-required, input roles |
|
||||
* | {@link ng.directive:ngClick ngClick} | tabindex, keypress event, button role |
|
||||
*
|
||||
* Find out more information about each directive by reading the
|
||||
* {@link guide/accessibility ngAria Developer Guide}.
|
||||
*
|
||||
* ##Example
|
||||
* Using ngDisabled with ngAria:
|
||||
* ```html
|
||||
* <md-checkbox ng-disabled="disabled">
|
||||
* ```
|
||||
* Becomes:
|
||||
* ```html
|
||||
* <md-checkbox ng-disabled="disabled" aria-disabled="true">
|
||||
* ```
|
||||
*
|
||||
* ##Disabling Attributes
|
||||
* It's possible to disable individual attributes added by ngAria with the
|
||||
* {@link ngAria.$ariaProvider#config config} method. For more details, see the
|
||||
* {@link guide/accessibility Developer Guide}.
|
||||
*/
|
||||
/* global -ngAriaModule */
|
||||
var ngAriaModule = angular.module('ngAria', ['ng']).
|
||||
provider('$aria', $AriaProvider);
|
||||
|
||||
/**
|
||||
* @ngdoc provider
|
||||
* @name $ariaProvider
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* Used for configuring the ARIA attributes injected and managed by ngAria.
|
||||
*
|
||||
* ```js
|
||||
* angular.module('myApp', ['ngAria'], function config($ariaProvider) {
|
||||
* $ariaProvider.config({
|
||||
* ariaValue: true,
|
||||
* tabindex: false
|
||||
* });
|
||||
* });
|
||||
*```
|
||||
*
|
||||
* ## Dependencies
|
||||
* Requires the {@link ngAria} module to be installed.
|
||||
*
|
||||
*/
|
||||
function $AriaProvider() {
|
||||
var config = {
|
||||
ariaHidden: true,
|
||||
ariaChecked: true,
|
||||
ariaDisabled: true,
|
||||
ariaRequired: true,
|
||||
ariaInvalid: true,
|
||||
ariaMultiline: true,
|
||||
ariaValue: true,
|
||||
tabindex: true,
|
||||
bindKeypress: true,
|
||||
bindRoleForClick: true
|
||||
};
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $ariaProvider#config
|
||||
*
|
||||
* @param {object} config object to enable/disable specific ARIA attributes
|
||||
*
|
||||
* - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags
|
||||
* - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags
|
||||
* - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags
|
||||
* - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags
|
||||
* - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags
|
||||
* - **ariaMultiline** – `{boolean}` – Enables/disables aria-multiline tags
|
||||
* - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
|
||||
* - **tabindex** – `{boolean}` – Enables/disables tabindex tags
|
||||
* - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `<div>` and
|
||||
* `<li>` elements with ng-click
|
||||
* - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements like `div`
|
||||
* using ng-click, making them more accessible to users of assistive technologies
|
||||
*
|
||||
* @description
|
||||
* Enables/disables various ARIA attributes
|
||||
*/
|
||||
this.config = function(newConfig) {
|
||||
config = angular.extend(config, newConfig);
|
||||
};
|
||||
|
||||
function watchExpr(attrName, ariaAttr, negate) {
|
||||
return function(scope, elem, attr) {
|
||||
var ariaCamelName = attr.$normalize(ariaAttr);
|
||||
if (config[ariaCamelName] && !attr[ariaCamelName]) {
|
||||
scope.$watch(attr[attrName], function(boolVal) {
|
||||
// ensure boolean value
|
||||
boolVal = negate ? !boolVal : !!boolVal;
|
||||
elem.attr(ariaAttr, boolVal);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $aria
|
||||
*
|
||||
* @description
|
||||
* @priority 200
|
||||
*
|
||||
* The $aria service contains helper methods for applying common
|
||||
* [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
|
||||
*
|
||||
* ngAria injects common accessibility attributes that tell assistive technologies when HTML
|
||||
* elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
|
||||
* let's review a code snippet from ngAria itself:
|
||||
*
|
||||
*```js
|
||||
* ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
|
||||
* return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
|
||||
* }])
|
||||
*```
|
||||
* Shown above, the ngAria module creates a directive with the same signature as the
|
||||
* traditional `ng-disabled` directive. But this ngAria version is dedicated to
|
||||
* solely managing accessibility attributes. The internal `$aria` service is used to watch the
|
||||
* boolean attribute `ngDisabled`. If it has not been explicitly set by the developer,
|
||||
* `aria-disabled` is injected as an attribute with its value synchronized to the value in
|
||||
* `ngDisabled`.
|
||||
*
|
||||
* Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
|
||||
* anything to enable this feature. The `aria-disabled` attribute is automatically managed
|
||||
* simply as a silent side-effect of using `ng-disabled` with the ngAria module.
|
||||
*
|
||||
* The full list of directives that interface with ngAria:
|
||||
* * **ngModel**
|
||||
* * **ngShow**
|
||||
* * **ngHide**
|
||||
* * **ngClick**
|
||||
* * **ngDblclick**
|
||||
* * **ngMessages**
|
||||
* * **ngDisabled**
|
||||
*
|
||||
* Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
|
||||
* directive.
|
||||
*
|
||||
*
|
||||
* ## Dependencies
|
||||
* Requires the {@link ngAria} module to be installed.
|
||||
*/
|
||||
this.$get = function() {
|
||||
return {
|
||||
config: function(key) {
|
||||
return config[key];
|
||||
},
|
||||
$$watchExpr: watchExpr
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngShow', 'aria-hidden', true);
|
||||
}])
|
||||
.directive('ngHide', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngHide', 'aria-hidden', false);
|
||||
}])
|
||||
.directive('ngModel', ['$aria', function($aria) {
|
||||
|
||||
function shouldAttachAttr(attr, normalizedAttr, elem) {
|
||||
return $aria.config(normalizedAttr) && !elem.attr(attr);
|
||||
}
|
||||
|
||||
function shouldAttachRole(role, elem) {
|
||||
return !elem.attr('role') && (elem.attr('type') === role) && (elem[0].nodeName !== 'INPUT');
|
||||
}
|
||||
|
||||
function getShape(attr, elem) {
|
||||
var type = attr.type,
|
||||
role = attr.role;
|
||||
|
||||
return ((type || role) === 'checkbox' || role === 'menuitemcheckbox') ? 'checkbox' :
|
||||
((type || role) === 'radio' || role === 'menuitemradio') ? 'radio' :
|
||||
(type === 'range' || role === 'progressbar' || role === 'slider') ? 'range' :
|
||||
(type || role) === 'textbox' || elem[0].nodeName === 'TEXTAREA' ? 'multiline' : '';
|
||||
}
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: '?ngModel',
|
||||
priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
|
||||
compile: function(elem, attr) {
|
||||
var shape = getShape(attr, elem);
|
||||
|
||||
return {
|
||||
pre: function(scope, elem, attr, ngModel) {
|
||||
if (shape === 'checkbox' && attr.type !== 'checkbox') {
|
||||
//Use the input[checkbox] $isEmpty implementation for elements with checkbox roles
|
||||
ngModel.$isEmpty = function(value) {
|
||||
return value === false;
|
||||
};
|
||||
}
|
||||
},
|
||||
post: function(scope, elem, attr, ngModel) {
|
||||
var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem);
|
||||
|
||||
function ngAriaWatchModelValue() {
|
||||
return ngModel.$modelValue;
|
||||
}
|
||||
|
||||
function getRadioReaction() {
|
||||
if (needsTabIndex) {
|
||||
needsTabIndex = false;
|
||||
return function ngAriaRadioReaction(newVal) {
|
||||
var boolVal = (attr.value == ngModel.$viewValue);
|
||||
elem.attr('aria-checked', boolVal);
|
||||
elem.attr('tabindex', 0 - !boolVal);
|
||||
};
|
||||
} else {
|
||||
return function ngAriaRadioReaction(newVal) {
|
||||
elem.attr('aria-checked', (attr.value == ngModel.$viewValue));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function ngAriaCheckboxReaction() {
|
||||
elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue));
|
||||
}
|
||||
|
||||
switch (shape) {
|
||||
case 'radio':
|
||||
case 'checkbox':
|
||||
if (shouldAttachRole(shape, elem)) {
|
||||
elem.attr('role', shape);
|
||||
}
|
||||
if (shouldAttachAttr('aria-checked', 'ariaChecked', elem)) {
|
||||
scope.$watch(ngAriaWatchModelValue, shape === 'radio' ?
|
||||
getRadioReaction() : ngAriaCheckboxReaction);
|
||||
}
|
||||
break;
|
||||
case 'range':
|
||||
if (shouldAttachRole(shape, elem)) {
|
||||
elem.attr('role', 'slider');
|
||||
}
|
||||
if ($aria.config('ariaValue')) {
|
||||
var needsAriaValuemin = !elem.attr('aria-valuemin') &&
|
||||
(attr.hasOwnProperty('min') || attr.hasOwnProperty('ngMin'));
|
||||
var needsAriaValuemax = !elem.attr('aria-valuemax') &&
|
||||
(attr.hasOwnProperty('max') || attr.hasOwnProperty('ngMax'));
|
||||
var needsAriaValuenow = !elem.attr('aria-valuenow');
|
||||
|
||||
if (needsAriaValuemin) {
|
||||
attr.$observe('min', function ngAriaValueMinReaction(newVal) {
|
||||
elem.attr('aria-valuemin', newVal);
|
||||
});
|
||||
}
|
||||
if (needsAriaValuemax) {
|
||||
attr.$observe('max', function ngAriaValueMinReaction(newVal) {
|
||||
elem.attr('aria-valuemax', newVal);
|
||||
});
|
||||
}
|
||||
if (needsAriaValuenow) {
|
||||
scope.$watch(ngAriaWatchModelValue, function ngAriaValueNowReaction(newVal) {
|
||||
elem.attr('aria-valuenow', newVal);
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'multiline':
|
||||
if (shouldAttachAttr('aria-multiline', 'ariaMultiline', elem)) {
|
||||
elem.attr('aria-multiline', true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (needsTabIndex) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
|
||||
if (ngModel.$validators.required && shouldAttachAttr('aria-required', 'ariaRequired', elem)) {
|
||||
scope.$watch(function ngAriaRequiredWatch() {
|
||||
return ngModel.$error.required;
|
||||
}, function ngAriaRequiredReaction(newVal) {
|
||||
elem.attr('aria-required', !!newVal);
|
||||
});
|
||||
}
|
||||
|
||||
if (shouldAttachAttr('aria-invalid', 'ariaInvalid', elem)) {
|
||||
scope.$watch(function ngAriaInvalidWatch() {
|
||||
return ngModel.$invalid;
|
||||
}, function ngAriaInvalidReaction(newVal) {
|
||||
elem.attr('aria-invalid', !!newVal);
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}])
|
||||
.directive('ngDisabled', ['$aria', function($aria) {
|
||||
return $aria.$$watchExpr('ngDisabled', 'aria-disabled');
|
||||
}])
|
||||
.directive('ngMessages', function() {
|
||||
return {
|
||||
restrict: 'A',
|
||||
require: '?ngMessages',
|
||||
link: function(scope, elem, attr, ngMessages) {
|
||||
if (!elem.attr('aria-live')) {
|
||||
elem.attr('aria-live', 'assertive');
|
||||
}
|
||||
}
|
||||
};
|
||||
})
|
||||
.directive('ngClick',['$aria', '$parse', function($aria, $parse) {
|
||||
return {
|
||||
restrict: 'A',
|
||||
compile: function(elem, attr) {
|
||||
var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true);
|
||||
return function(scope, elem, attr) {
|
||||
|
||||
var nodeBlackList = ['BUTTON', 'A', 'INPUT', 'TEXTAREA'];
|
||||
|
||||
function isNodeOneOf(elem, nodeTypeArray) {
|
||||
if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($aria.config('bindRoleForClick')
|
||||
&& !elem.attr('role')
|
||||
&& !isNodeOneOf(elem, nodeBlackList)) {
|
||||
elem.attr('role', 'button');
|
||||
}
|
||||
|
||||
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
|
||||
if ($aria.config('bindKeypress') && !attr.ngKeypress && !isNodeOneOf(elem, nodeBlackList)) {
|
||||
elem.on('keypress', function(event) {
|
||||
var keyCode = event.which || event.keyCode;
|
||||
if (keyCode === 32 || keyCode === 13) {
|
||||
scope.$apply(callback);
|
||||
}
|
||||
|
||||
function callback() {
|
||||
fn(scope, { $event: event });
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}])
|
||||
.directive('ngDblclick', ['$aria', function($aria) {
|
||||
return function(scope, elem, attr) {
|
||||
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
|
||||
elem.attr('tabindex', 0);
|
||||
}
|
||||
};
|
||||
}]);
|
||||
|
||||
|
||||
})(window, window.angular);
|
||||
13
www/lib/angular-aria/angular-aria.min.js
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
AngularJS v1.4.2
|
||||
(c) 2010-2015 Google, Inc. http://angularjs.org
|
||||
License: MIT
|
||||
*/
|
||||
(function(s,n,t){'use strict';n.module("ngAria",["ng"]).provider("$aria",function(){function a(a,f,l){return function(m,d,e){var b=e.$normalize(f);c[b]&&!e[b]&&m.$watch(e[a],function(b){b=l?!b:!!b;d.attr(f,b)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0};this.config=function(a){c=n.extend(c,a)};this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}).directive("ngShow",
|
||||
["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function c(c,m,d){return a.config(m)&&!d.attr(c)}function k(a,c){return!c.attr("role")&&c.attr("type")===a&&"INPUT"!==c[0].nodeName}function f(a,c){var d=a.type,e=a.role;return"checkbox"===(d||e)||"menuitemcheckbox"===e?"checkbox":"radio"===(d||e)||"menuitemradio"===e?"radio":"range"===d||"progressbar"===
|
||||
e||"slider"===e?"range":"textbox"===(d||e)||"TEXTAREA"===c[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",priority:200,compile:function(l,m){var d=f(m,l);return{pre:function(a,b,c,g){"checkbox"===d&&"checkbox"!==c.type&&(g.$isEmpty=function(b){return!1===b})},post:function(e,b,h,g){function f(){return g.$modelValue}function m(){return p?(p=!1,function(a){a=h.value==g.$viewValue;b.attr("aria-checked",a);b.attr("tabindex",0-!a)}):function(a){b.attr("aria-checked",h.value==g.$viewValue)}}
|
||||
function l(){b.attr("aria-checked",!g.$isEmpty(g.$viewValue))}var p=c("tabindex","tabindex",b);switch(d){case "radio":case "checkbox":k(d,b)&&b.attr("role",d);c("aria-checked","ariaChecked",b)&&e.$watch(f,"radio"===d?m():l);break;case "range":k(d,b)&&b.attr("role","slider");if(a.config("ariaValue")){var n=!b.attr("aria-valuemin")&&(h.hasOwnProperty("min")||h.hasOwnProperty("ngMin")),q=!b.attr("aria-valuemax")&&(h.hasOwnProperty("max")||h.hasOwnProperty("ngMax")),r=!b.attr("aria-valuenow");n&&h.$observe("min",
|
||||
function(a){b.attr("aria-valuemin",a)});q&&h.$observe("max",function(a){b.attr("aria-valuemax",a)});r&&e.$watch(f,function(a){b.attr("aria-valuenow",a)})}break;case "multiline":c("aria-multiline","ariaMultiline",b)&&b.attr("aria-multiline",!0)}p&&b.attr("tabindex",0);g.$validators.required&&c("aria-required","ariaRequired",b)&&e.$watch(function(){return g.$error.required},function(a){b.attr("aria-required",!!a)});c("aria-invalid","ariaInvalid",b)&&e.$watch(function(){return g.$invalid},function(a){b.attr("aria-invalid",
|
||||
!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,c,k,f){c.attr("aria-live")||c.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,c){return{restrict:"A",compile:function(k,f){var l=c(f.ngClick,null,!0);return function(c,d,e){function b(a,b){if(-1!==b.indexOf(a[0].nodeName))return!0}var f=["BUTTON","A","INPUT","TEXTAREA"];
|
||||
!a.config("bindRoleForClick")||d.attr("role")||b(d,f)||d.attr("role","button");a.config("tabindex")&&!d.attr("tabindex")&&d.attr("tabindex",0);if(a.config("bindKeypress")&&!e.ngKeypress&&!b(d,f))d.on("keypress",function(a){function b(){l(c,{$event:a})}var d=a.which||a.keyCode;32!==d&&13!==d||c.$apply(b)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(c,k,f){a.config("tabindex")&&!k.attr("tabindex")&&k.attr("tabindex",0)}}])})(window,window.angular);
|
||||
//# sourceMappingURL=angular-aria.min.js.map
|
||||
8
www/lib/angular-aria/angular-aria.min.js.map
Normal file
9
www/lib/angular-aria/bower.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"main": "./angular-aria.js",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "1.4.2"
|
||||
}
|
||||
}
|
||||
2
www/lib/angular-aria/index.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
require('./angular-aria');
|
||||
module.exports = 'ngAria';
|
||||
27
www/lib/angular-aria/package.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"name": "angular-aria",
|
||||
"version": "1.4.2",
|
||||
"description": "AngularJS module for making accessibility easy",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/angular/angular.js.git"
|
||||
},
|
||||
"keywords": [
|
||||
"angular",
|
||||
"framework",
|
||||
"browser",
|
||||
"accessibility",
|
||||
"a11y",
|
||||
"client-side"
|
||||
],
|
||||
"author": "Angular Core Team <angular-core+npm@google.com>",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/angular/angular.js/issues"
|
||||
},
|
||||
"homepage": "http://angularjs.org"
|
||||
}
|
||||
25
www/lib/angular-material/.bower.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "angular-material",
|
||||
"version": "0.10.0",
|
||||
"ignore": [],
|
||||
"dependencies": {
|
||||
"angular": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-animate": "^1.3.0 || >1.4.0-beta.0",
|
||||
"angular-aria": "^1.3.15 || >1.4.0-beta.0"
|
||||
},
|
||||
"main": [
|
||||
"angular-material.js",
|
||||
"angular-material.css"
|
||||
],
|
||||
"homepage": "https://github.com/angular/bower-material",
|
||||
"_release": "0.10.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v0.10.0",
|
||||
"commit": "1e48d39c2be9aa2bf6ebb212f978947d7e52e608"
|
||||
},
|
||||
"_source": "git://github.com/angular/bower-material.git",
|
||||
"_target": "~0.10.0",
|
||||
"_originalSource": "angular-material",
|
||||
"_direct": true
|
||||
}
|
||||
5
www/lib/angular-material/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
*.log
|
||||
*.sw*
|
||||
.DS_STORE
|
||||
/.idea/
|
||||
default-theme.css
|
||||
1599
www/lib/angular-material/CHANGELOG.md
Normal file
21
www/lib/angular-material/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2014 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||