Subida inicial APM EMTUSA
37
.gitignore
vendored
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Archivos del sistema
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Archivos de IDE/editor
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# Dependencias si las hubiera
|
||||||
|
node_modules/
|
||||||
|
vendor/
|
||||||
|
|
||||||
|
# Archivos de configuración local
|
||||||
|
*.log
|
||||||
|
```
|
||||||
|
|
||||||
|
Ahora, los comandos para inicializar el repositorio y subirlo a GitHub:
|
||||||
|
|
||||||
|
````powershell
|
||||||
|
# Inicializar el repositorio git
|
||||||
|
git init
|
||||||
|
|
||||||
|
# Añadir todos los archivos
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Hacer el primer commit
|
||||||
|
git commit -m "Initial commit: Emtusa WebApp PWA"
|
||||||
|
|
||||||
|
# Crear un nuevo repositorio en GitHub (deberás hacerlo manualmente en github.com)
|
||||||
|
# Luego, conectar tu repositorio local con el remoto (reemplaza USER y REPO con tus valores)
|
||||||
|
git remote add origin https://github.com/USER/REPO.git
|
||||||
|
|
||||||
|
# Subir el código a la rama principal
|
||||||
|
git branch -M main
|
||||||
|
git push -u origin main
|
||||||
217
css/EmtusaMobileTheme.min.css
vendored
Normal file
BIN
css/fonts/icomoon.ttf
Normal file
3
css/getmdl-select.min.css
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.getmdl-select{outline:none}.getmdl-select .mdl-textfield__input{cursor:pointer}.getmdl-select .selected{background-color:#ddd}.getmdl-select .mdl-icon-toggle__label{float:right;margin-top:-30px;color:rgba(0,0,0,0.4);transform:rotate(0);transition:transform 0.3s}.getmdl-select.is-focused .mdl-icon-toggle__label{color:#3f51b5;transform:rotate(180deg)}.getmdl-select .mdl-menu__container{width:100% !important;margin-top:2px}.getmdl-select .mdl-menu__container .mdl-menu{width:100%}.getmdl-select .mdl-menu__container .mdl-menu .mdl-menu__item{font-size:16px}.getmdl-select__fix-height .mdl-menu__container .mdl-menu{overflow-y:auto;max-height:208px !important}.getmdl-select__fix-height .mdl-menu.mdl-menu--top-left{bottom:auto;top:0}
|
||||||
|
|
||||||
|
/*# sourceMappingURL=getmdl-select.min.css.map */
|
||||||
140
css/icomoon.css
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: 'icomoon';
|
||||||
|
src: url('fonts/icomoon.eot?tkyzrx');
|
||||||
|
src: url('fonts/icomoon.eot?tkyzrx#iefix') format('embedded-opentype'),
|
||||||
|
url('fonts/icomoon.ttf?tkyzrx') format('truetype'),
|
||||||
|
url('fonts/icomoon.woff?tkyzrx') format('woff'),
|
||||||
|
url('fonts/icomoon.svg?tkyzrx#icomoon') format('svg');
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class^="icon-"], [class*=" icon-"] {
|
||||||
|
/* use !important to prevent issues with browser extensions that change fonts */
|
||||||
|
font-family: 'icomoon' !important;
|
||||||
|
speak: none;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
text-transform: none;
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
|
/* Better Font Rendering =========== */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-emtusaLogo:before {
|
||||||
|
content: "\e912";
|
||||||
|
}
|
||||||
|
.icon-mapCL:before {
|
||||||
|
content: "\e911";
|
||||||
|
}
|
||||||
|
.icon-empty-star:before {
|
||||||
|
content: "\e910";
|
||||||
|
}
|
||||||
|
.icon-3dots:before {
|
||||||
|
content: "\e90e";
|
||||||
|
}
|
||||||
|
.icon-center:before {
|
||||||
|
content: "\e90d";
|
||||||
|
}
|
||||||
|
.icon-question:before {
|
||||||
|
content: "\e900";
|
||||||
|
}
|
||||||
|
.icon-qr:before {
|
||||||
|
content: "\e901";
|
||||||
|
}
|
||||||
|
.icon-c:before {
|
||||||
|
content: "\e90f";
|
||||||
|
}
|
||||||
|
.icon-forbidden:before {
|
||||||
|
content: "\e90c";
|
||||||
|
}
|
||||||
|
.icon-eye:before {
|
||||||
|
content: "\e902";
|
||||||
|
}
|
||||||
|
.icon-gear:before {
|
||||||
|
content: "\e903";
|
||||||
|
}
|
||||||
|
.icon-search:before {
|
||||||
|
content: "\e904";
|
||||||
|
}
|
||||||
|
.icon-info:before {
|
||||||
|
content: "\e905";
|
||||||
|
}
|
||||||
|
.icon-star:before {
|
||||||
|
content: "\e906";
|
||||||
|
}
|
||||||
|
.icon-clock:before {
|
||||||
|
content: "\e907";
|
||||||
|
}
|
||||||
|
.icon-gps:before {
|
||||||
|
content: "\e908";
|
||||||
|
}
|
||||||
|
.icon-linea:before {
|
||||||
|
content: "\e909";
|
||||||
|
}
|
||||||
|
.icon-home:before {
|
||||||
|
content: "\e90a";
|
||||||
|
}
|
||||||
|
.icon-map:before {
|
||||||
|
content: "\e90b";
|
||||||
|
}
|
||||||
|
.icon-clock2:before {
|
||||||
|
content: "\e94e";
|
||||||
|
}
|
||||||
|
.icon-floppy-disk:before {
|
||||||
|
content: "\e962";
|
||||||
|
}
|
||||||
|
.icon-assist:before {
|
||||||
|
content: "\e976";
|
||||||
|
}
|
||||||
|
.icon-spinner11:before {
|
||||||
|
content: "\e984";
|
||||||
|
}
|
||||||
|
.icon-bin2:before {
|
||||||
|
content: "\e9ad";
|
||||||
|
}
|
||||||
|
.icon-switch:before {
|
||||||
|
content: "\e9b6";
|
||||||
|
}
|
||||||
|
.icon-menu:before {
|
||||||
|
content: "\e9bd";
|
||||||
|
}
|
||||||
|
.icon-play3:before {
|
||||||
|
content: "\ea1c";
|
||||||
|
}
|
||||||
|
.icon-pause2:before {
|
||||||
|
content: "\ea1d";
|
||||||
|
}
|
||||||
|
.icon-stop2:before {
|
||||||
|
content: "\ea1e";
|
||||||
|
}
|
||||||
|
.icon-arrow-up:before {
|
||||||
|
content: "\ea32";
|
||||||
|
}
|
||||||
|
.icon-arrow-right:before {
|
||||||
|
content: "\ea34";
|
||||||
|
}
|
||||||
|
.icon-arrow-down:before {
|
||||||
|
content: "\ea36";
|
||||||
|
}
|
||||||
|
.icon-arrow-left:before {
|
||||||
|
content: "\ea38";
|
||||||
|
}
|
||||||
|
.icon-arrow-right2:before {
|
||||||
|
content: "\ea3c";
|
||||||
|
}
|
||||||
|
.icon-arrow-left2:before {
|
||||||
|
content: "\ea40";
|
||||||
|
}
|
||||||
|
.icon-share2:before {
|
||||||
|
content: "\ea82";
|
||||||
|
}
|
||||||
|
.icon-appleinc:before {
|
||||||
|
content: "\eabe";
|
||||||
|
}
|
||||||
|
.icon-android:before {
|
||||||
|
content: "\eac0";
|
||||||
|
}
|
||||||
83
css/icon-pack-custom.css
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery Mobile Icon Pack - Font Awesome version 1.4.0
|
||||||
|
*
|
||||||
|
* Copyright 2013 Andy Matthews
|
||||||
|
* http://andyMatthews.net
|
||||||
|
* Released under the GPL/MIT license.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
.ui-icon-microphone:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M321.429%20196.429v35.714q0%2061.663-41.155%20107.282t-101.702%2052.316v36.831h71.429q7.254%200%2012.556%205.301t5.301%2012.556-5.301%2012.556-12.556%205.301h-178.571q-7.254%200-12.556-5.301t-5.301-12.556%205.301-12.556%2012.556-5.301h71.429v-36.831q-60.547-6.696-101.702-52.316t-41.155-107.282v-35.714q0-7.254%205.301-12.556t12.556-5.301%2012.556%205.301%205.301%2012.556v35.714q0%2051.618%2036.691%2088.309t88.309%2036.691%2088.309-36.691%2036.691-88.309v-35.714q0-7.254%205.301-12.556t12.556-5.301%2012.556%205.301%205.301%2012.556zM250%2089.286v142.857q0%2036.831-26.228%2063.058t-63.058%2026.228-63.058-26.228-26.228-63.058v-142.857q0-36.831%2026.228-63.058t63.058-26.228%2063.058%2026.228%2026.228%2063.058z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 5px 4px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-microphone:after { background-image: url('png_images/microphone.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-microphone-slash:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M75.614%20263.672l-28.181%2028.181q-11.719-28.739-11.719-59.71v-35.714q0-7.254%205.301-12.556t12.556-5.301%2012.556%205.301%205.301%2012.556v35.714q0%2014.788%204.185%2031.529zM386.44%2095.703l-100.726%20100.726v35.714q0%2036.831-26.228%2063.058t-63.058%2026.228q-15.346%200-30.413-5.301l-26.786%2026.786q27.065%2014.23%2057.199%2014.23%2051.618%200%2088.309-36.691t36.691-88.309v-35.714q0-7.254%205.301-12.556t12.556-5.301%2012.556%205.301%205.301%2012.556v35.714q0%2061.663-41.155%20107.282t-101.702%2052.316v36.831h71.429q7.254%200%2012.556%205.301t5.301%2012.556-5.301%2012.556-12.556%205.301h-178.571q-7.254%200-12.556-5.301t-5.301-12.556%205.301-12.556%2012.556-5.301h71.429v-36.831q-34.877-3.627-65.569-22.601l-70.871%2070.871q-2.79%202.79-6.417%202.79t-6.417-2.79l-22.879-22.879q-2.79-2.79-2.79-6.417t2.79-6.417l344.308-344.308q2.79-2.79%206.417-2.79t6.417%202.79l22.879%2022.879q2.79%202.79%202.79%206.417t-2.79%206.417zM280.413%2058.873l-173.27%20173.27v-142.857q0-36.831%2026.228-63.058t63.058-26.228q28.46%200%2051.479%2016.462t32.505%2042.411z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-microphone-slash:after { background-image: url('png_images/microphone-slash.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-qrcode:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M107.143%20321.429v35.714h-35.714v-35.714h35.714zM107.143%20107.143v35.714h-35.714v-35.714h35.714zM321.429%20107.143v35.714h-35.714v-35.714h35.714zM35.714%20392.578h107.143v-106.864h-107.143v106.864zM35.714%20178.571h107.143v-107.143h-107.143v107.143zM250%20178.571h107.143v-107.143h-107.143v107.143zM178.571%20250v178.571h-178.571v-178.571h178.571zM321.429%20392.857v35.714h-35.714v-35.714h35.714zM392.857%20392.857v35.714h-35.714v-35.714h35.714zM392.857%20250v107.143h-107.143v-35.714h-35.714v107.143h-35.714v-178.571h107.143v35.714h35.714v-35.714h35.714zM178.571%2035.714v178.571h-178.571v-178.571h178.571zM392.857%2035.714v178.571h-178.571v-178.571h178.571z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 5px 4px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-qrcode:after { background-image: url('png_images/qrcode.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-euro:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M272.321%20364.676l9.766%2044.364q0.837%203.348-0.837%206.278t-4.743%204.046l-1.395%200.279q-1.116%200.558-2.93%200.977t-4.464%201.255-5.999%201.535-7.115%201.395-8.371%201.395-9.347%201.255-10.184%200.837-10.742%200.279q-65.29%200-114.118-36.412t-66.406-98.075h-26.507q-3.627%200-6.278-2.651t-2.651-6.278v-31.529q0-3.627%202.651-6.278t6.278-2.651h18.415q-0.558-15.904%200.279-29.297h-18.694q-3.906%200-6.417-2.511t-2.511-6.417v-31.808q0-3.906%202.511-6.417t6.417-2.511h27.344q18.694-58.594%2067.941-94.308t111.747-35.714q28.46%200%2054.129%206.417%203.069%200.837%205.581%204.185%201.674%203.069%200.837%206.696l-11.998%2044.364q-0.837%203.627-3.906%205.441t-6.696%200.698l-1.116-0.279q-1.116-0.279-3.208-0.698l-4.883-0.977t-6.278-0.977-7.254-0.837-8.091-0.698-8.231-0.279q-35.156%200-63.058%2017.857t-41.853%2049.107h130.581q4.464%200%206.976%203.348%202.79%203.348%201.953%207.254l-6.696%2031.808q-1.395%207.254-8.929%207.254h-136.161q-0.837%2010.324%200%2029.297h128.069q4.185%200%206.976%203.348%202.511%203.348%201.674%207.534l-6.696%2031.25q-0.558%203.069-3.069%205.162t-5.581%202.093h-107.98q13.393%2032.645%2041.713%2051.758t63.755%2019.113q5.022%200%2010.044-0.418t9.347-0.977%208.231-1.255%206.836-1.395%205.162-1.255l3.348-0.837%201.395-0.558q3.627-1.395%207.254%200.558%203.348%201.953%204.185%205.859z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 5.5px 4px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-euro:after { background-image: url('png_images/euro.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-question:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M196.429%20350.446v66.964q0%204.464-3.348%207.813t-7.813%203.348h-66.964q-4.464%200-7.813-3.348t-3.348-7.813v-66.964q0-4.464%203.348-7.813t7.813-3.348h66.964q4.464%200%207.813%203.348t3.348%207.813zM284.598%20183.036q0%2015.067-4.325%2028.181t-9.766%2021.345-15.346%2016.602-16.043%2012.137-17.020%209.905q-11.44%206.417-19.113%2018.136t-7.673%2018.694q0%204.743-3.348%209.068t-7.813%204.325h-66.964q-4.185%200-7.115-5.162t-2.93-10.463v-12.556q0-23.159%2018.136-43.667t39.899-30.273q16.462-7.534%2023.438-15.625t6.976-21.206q0-11.719-12.974-20.647t-29.995-8.929q-18.136%200-30.134%208.091-9.766%206.976-29.855%2032.087-3.627%204.464-8.649%204.464-3.348%200-6.976-2.232l-45.759-34.877q-3.627-2.79-4.325-6.976t1.535-7.813q44.643-74.219%20129.464-74.219%2022.321%200%2044.922%208.649t40.737%2023.159%2029.576%2035.575%2011.44%2044.224z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 6.5px 3px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-question:after { background-image: url('png_images/question.png'); }
|
||||||
|
|
||||||
|
.ui-icon-arrows-alt:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M357.98%20150.949l-99.051%2099.051%2099.051%2099.051%2040.179-40.179q8.091-8.649%2019.531-3.906%2010.882%204.743%2010.882%2016.462v125q0%207.254-5.301%2012.556t-12.556%205.301h-125q-11.719%200-16.462-11.161-4.743-10.882%203.906-19.252l40.179-40.179-99.051-99.051-99.051%2099.051%2040.179%2040.179q8.649%208.371%203.906%2019.252-4.743%2011.161-16.462%2011.161h-125q-7.254%200-12.556-5.301t-5.301-12.556v-125q0-11.719%2011.161-16.462%2010.882-4.743%2019.252%203.906l40.179%2040.179%2099.051-99.051-99.051-99.051-40.179%2040.179q-5.301%205.301-12.556%205.301-3.348%200-6.696-1.395-11.161-4.743-11.161-16.462v-125q0-7.254%205.301-12.556t12.556-5.301h125q11.719%200%2016.462%2011.161%204.743%2010.882-3.906%2019.252l-40.179%2040.179%2099.051%2099.051%2099.051-99.051-40.179-40.179q-8.649-8.371-3.906-19.252%204.743-11.161%2016.462-11.161h125q7.254%200%2012.556%205.301t5.301%2012.556v125q0%2011.719-10.882%2016.462-3.627%201.395-6.976%201.395-7.254%200-12.556-5.301z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 4.4px 3.3px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-arrows-alt:after { background-image: url('png_images/arrows-alt.png'); }
|
||||||
|
|
||||||
|
.ui-icon-arrows:after {
|
||||||
|
background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M500%20250q0%207.254-5.301%2012.556l-71.429%2071.429q-5.301%205.301-12.556%205.301t-12.556-5.301-5.301-12.556v-35.714h-107.143v107.143h35.714q7.254%200%2012.556%205.301t5.301%2012.556-5.301%2012.556l-71.429%2071.429q-5.301%205.301-12.556%205.301t-12.556-5.301l-71.429-71.429q-5.301-5.301-5.301-12.556t5.301-12.556%2012.556-5.301h35.714v-107.143h-107.143v35.714q0%207.254-5.301%2012.556t-12.556%205.301-12.556-5.301l-71.429-71.429q-5.301-5.301-5.301-12.556t5.301-12.556l71.429-71.429q5.301-5.301%2012.556-5.301t12.556%205.301%205.301%2012.556v35.714h107.143v-107.143h-35.714q-7.254%200-12.556-5.301t-5.301-12.556%205.301-12.556l71.429-71.429q5.301-5.301%2012.556-5.301t12.556%205.301l71.429%2071.429q5.301%205.301%205.301%2012.556t-5.301%2012.556-12.556%205.301h-35.714v107.143h107.143v-35.714q0-7.254%205.301-12.556t12.556-5.301%2012.556%205.301l71.429%2071.429q5.301%205.301%205.301%2012.556z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 3.31px 3.31px;
|
||||||
|
}
|
||||||
|
.ui-nosvg .ui-icon-arrows:after { background-image: url('png_images/arrows.png'); }
|
||||||
|
|
||||||
|
.ui-icon-volume-up:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M214.286%2098.214v303.571q0%207.254-5.301%2012.556t-12.556%205.301-12.556-5.301l-92.913-92.913h-73.103q-7.254%200-12.556-5.301t-5.301-12.556v-107.143q0-7.254%205.301-12.556t12.556-5.301h73.103l92.913-92.913q5.301-5.301%2012.556-5.301t12.556%205.301%205.301%2012.556zM321.429%20250q0%2021.206-11.858%2039.481t-31.39%2026.088q-2.79%201.395-6.976%201.395-7.254%200-12.556-5.162t-5.301-12.695q0-5.859%203.348-9.905t8.091-6.976%209.487-6.417%208.091-9.905%203.348-15.904-3.348-15.904-8.091-9.905-9.487-6.417-8.091-6.976-3.348-9.905q0-7.534%205.301-12.695t12.556-5.162q4.185%200%206.976%201.395%2019.531%207.534%2031.39%2025.949t11.858%2039.621zM392.857%20250q0%2042.69-23.716%2078.823t-62.779%2052.595q-3.627%201.395-6.976%201.395-7.534%200-12.835-5.301t-5.301-12.556q0-10.882%2010.882-16.462%2015.625-8.091%2021.206-12.277%2020.647-15.067%2032.227-37.807t11.579-48.41-11.579-48.41-32.227-37.807q-5.581-4.185-21.206-12.277-10.882-5.581-10.882-16.462%200-7.254%205.301-12.556t12.556-5.301q3.627%200%207.254%201.395%2039.063%2016.462%2062.779%2052.595t23.716%2078.823zM464.286%20250q0%2064.174-35.435%20117.885t-94.308%2079.102q-3.627%201.395-7.254%201.395-7.254%200-12.556-5.301t-5.301-12.556q0-10.044%2010.882-16.462%201.953-1.116%206.278-2.93t6.278-2.93q12.835-6.976%2022.879-14.23%2034.319-25.391%2053.571-63.337t19.252-80.636-19.252-80.636-53.571-63.337q-10.044-7.254-22.879-14.23-1.953-1.116-6.278-2.93t-6.278-2.93q-10.882-6.417-10.882-16.462%200-7.254%205.301-12.556t12.556-5.301q3.627%200%207.254%201.395%2058.873%2025.391%2094.308%2079.102t35.435%20117.885z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-volume-up:after { background-image: url('png_images/volume-up.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-volume-off:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M214.286%2098.214v303.571q0%207.254-5.301%2012.556t-12.556%205.301-12.556-5.301l-92.913-92.913h-73.103q-7.254%200-12.556-5.301t-5.301-12.556v-107.143q0-7.254%205.301-12.556t12.556-5.301h73.103l92.913-92.913q5.301-5.301%2012.556-5.301t12.556%205.301%205.301%2012.556z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-volume-off:after { background-image: url('png_images/volume-off.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-volume-down:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M214.286%2098.214v303.571q0%207.254-5.301%2012.556t-12.556%205.301-12.556-5.301l-92.913-92.913h-73.103q-7.254%200-12.556-5.301t-5.301-12.556v-107.143q0-7.254%205.301-12.556t12.556-5.301h73.103l92.913-92.913q5.301-5.301%2012.556-5.301t12.556%205.301%205.301%2012.556zM321.429%20250q0%2021.206-11.858%2039.481t-31.39%2026.088q-2.79%201.395-6.976%201.395-7.254%200-12.556-5.162t-5.301-12.695q0-5.859%203.348-9.905t8.091-6.976%209.487-6.417%208.091-9.905%203.348-15.904-3.348-15.904-8.091-9.905-9.487-6.417-8.091-6.976-3.348-9.905q0-7.534%205.301-12.695t12.556-5.162q4.185%200%206.976%201.395%2019.531%207.534%2031.39%2025.949t11.858%2039.621z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-volume-down:after { background-image: url('png_images/volume-down.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-map-marker:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M214.286%20178.571q0-29.576-20.926-50.502t-50.502-20.926-50.502%2020.926-20.926%2050.502%2020.926%2050.502%2050.502%2020.926%2050.502-20.926%2020.926-50.502zM285.714%20178.571q0%2030.413-9.208%2049.944l-101.562%20215.96q-4.464%209.208-13.253%2014.509t-18.833%205.301-18.833-5.301-12.974-14.509l-101.841-215.96q-9.208-19.531-9.208-49.944%200-59.152%2041.853-101.004t101.004-41.853%20101.004%2041.853%2041.853%20101.004z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-map-marker:after { background-image: url('png_images/map-marker.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-male:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M285.714%20196.429v116.071q0%2011.161-7.813%2018.973t-18.973%207.813-18.973-7.813-7.813-18.973v-98.214h-17.857v254.464q0%2012.835-9.208%2022.042t-22.042%209.208-22.042-9.208-9.208-22.042v-129.464h-17.857v129.464q0%2012.835-9.208%2022.042t-22.042%209.208-22.042-9.208-9.208-22.042v-254.464h-17.857v98.214q0%2011.161-7.813%2018.973t-18.973%207.813-18.973-7.813-7.813-18.973v-116.071q0-22.321%2015.625-37.946t37.946-15.625h178.571q22.321%200%2037.946%2015.625t15.625%2037.946zM205.357%2071.429q0%2025.949-18.276%2044.224t-44.224%2018.276-44.224-18.276-18.276-44.224%2018.276-44.224%2044.224-18.276%2044.224%2018.276%2018.276%2044.224z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-male:after { background-image: url('png_images/male.png'); }
|
||||||
|
|
||||||
|
|
||||||
|
.ui-icon-question-circle:after { background-image: url('data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M250%20383.929v-53.571q0-3.906-2.511-6.417t-6.417-2.511h-53.571q-3.906%200-6.417%202.511t-2.511%206.417v53.571q0%203.906%202.511%206.417t6.417%202.511h53.571q3.906%200%206.417-2.511t2.511-6.417zM321.429%20196.429q0-24.554-15.485-45.48t-38.644-32.366-47.433-11.44q-67.801%200-103.516%2059.431-4.185%206.696%202.232%2011.719l36.831%2027.902q1.953%201.674%205.301%201.674%204.464%200%206.976-3.348%2014.788-18.973%2023.996-25.669%209.487-6.696%2023.996-6.696%2013.393%200%2023.856%207.254t10.463%2016.462q0%2010.603-5.581%2017.020t-18.973%2012.556q-17.578%207.813-32.227%2024.135t-14.648%2035.017v10.044q0%203.906%202.511%206.417t6.417%202.511h53.571q3.906%200%206.417-2.511t2.511-6.417q0-5.301%205.999-13.812t15.207-13.812q8.929-5.022%2013.672-7.952t12.835-9.766%2012.417-13.393%207.813-16.88%203.488-22.601zM428.571%20250q0%2058.315-28.739%20107.562t-77.985%2077.985-107.562%2028.739-107.562-28.739-77.985-77.985-28.739-107.562%2028.739-107.562%2077.985-77.985%20107.562-28.739%20107.562%2028.739%2077.985%2077.985%2028.739%20107.562z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E') }
|
||||||
|
.ui-nosvg .ui-icon-question-circle:after { background-image: url('png_images/question-circle.png'); }
|
||||||
|
|
||||||
BIN
css/images/ajax-loader.gif
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
2336
css/index.css
Normal file
3
css/jquery.mobile.icons.min.css
vendored
Normal file
3
css/jquery.mobile.structure-1.4.5.min.css
vendored
Normal file
640
css/leaflet.css
Normal file
@@ -0,0 +1,640 @@
|
|||||||
|
/* required styles */
|
||||||
|
|
||||||
|
.leaflet-pane,
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow,
|
||||||
|
.leaflet-tile-container,
|
||||||
|
.leaflet-pane > svg,
|
||||||
|
.leaflet-pane > canvas,
|
||||||
|
.leaflet-zoom-box,
|
||||||
|
.leaflet-image-layer,
|
||||||
|
.leaflet-layer {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-tile,
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
/* Prevents IE11 from highlighting tiles in blue */
|
||||||
|
.leaflet-tile::selection {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
|
||||||
|
.leaflet-safari .leaflet-tile {
|
||||||
|
image-rendering: -webkit-optimize-contrast;
|
||||||
|
}
|
||||||
|
/* hack that prevents hw layers "stretching" when loading new tiles */
|
||||||
|
.leaflet-safari .leaflet-tile-container {
|
||||||
|
width: 1600px;
|
||||||
|
height: 1600px;
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
|
||||||
|
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
|
||||||
|
.leaflet-container .leaflet-overlay-pane svg,
|
||||||
|
.leaflet-container .leaflet-marker-pane img,
|
||||||
|
.leaflet-container .leaflet-shadow-pane img,
|
||||||
|
.leaflet-container .leaflet-tile-pane img,
|
||||||
|
.leaflet-container img.leaflet-image-layer,
|
||||||
|
.leaflet-container .leaflet-tile {
|
||||||
|
max-width: none !important;
|
||||||
|
max-height: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-container.leaflet-touch-zoom {
|
||||||
|
-ms-touch-action: pan-x pan-y;
|
||||||
|
touch-action: pan-x pan-y;
|
||||||
|
}
|
||||||
|
.leaflet-container.leaflet-touch-drag {
|
||||||
|
-ms-touch-action: pinch-zoom;
|
||||||
|
/* Fallback for FF which doesn't support pinch-zoom */
|
||||||
|
touch-action: none;
|
||||||
|
touch-action: pinch-zoom;
|
||||||
|
}
|
||||||
|
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
|
||||||
|
-ms-touch-action: none;
|
||||||
|
touch-action: none;
|
||||||
|
}
|
||||||
|
.leaflet-container {
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
.leaflet-container a {
|
||||||
|
-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
|
||||||
|
}
|
||||||
|
.leaflet-tile {
|
||||||
|
filter: inherit;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.leaflet-tile-loaded {
|
||||||
|
visibility: inherit;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
z-index: 800;
|
||||||
|
}
|
||||||
|
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
|
||||||
|
.leaflet-overlay-pane svg {
|
||||||
|
-moz-user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-pane { z-index: 400; }
|
||||||
|
|
||||||
|
.leaflet-tile-pane { z-index: 200; }
|
||||||
|
.leaflet-overlay-pane { z-index: 400; }
|
||||||
|
.leaflet-shadow-pane { z-index: 500; }
|
||||||
|
.leaflet-marker-pane { z-index: 600; }
|
||||||
|
.leaflet-tooltip-pane { z-index: 650; }
|
||||||
|
.leaflet-popup-pane { z-index: 700; }
|
||||||
|
|
||||||
|
.leaflet-map-pane canvas { z-index: 100; }
|
||||||
|
.leaflet-map-pane svg { z-index: 200; }
|
||||||
|
|
||||||
|
.leaflet-vml-shape {
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
.lvml {
|
||||||
|
behavior: url(#default#VML);
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* control positioning */
|
||||||
|
|
||||||
|
.leaflet-control {
|
||||||
|
position: relative;
|
||||||
|
z-index: 800;
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.leaflet-top,
|
||||||
|
.leaflet-bottom {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1000;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.leaflet-top {
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
.leaflet-right {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.leaflet-bottom {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.leaflet-left {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control {
|
||||||
|
float: left;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.leaflet-top .leaflet-control {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.leaflet-right .leaflet-control {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* zoom and fade animations */
|
||||||
|
|
||||||
|
.leaflet-fade-anim .leaflet-tile {
|
||||||
|
will-change: opacity;
|
||||||
|
}
|
||||||
|
.leaflet-fade-anim .leaflet-popup {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: opacity 0.2s linear;
|
||||||
|
-moz-transition: opacity 0.2s linear;
|
||||||
|
transition: opacity 0.2s linear;
|
||||||
|
}
|
||||||
|
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-animated {
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
-ms-transform-origin: 0 0;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-animated {
|
||||||
|
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
-moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
transition: transform 0.25s cubic-bezier(0,0,0.25,1);
|
||||||
|
}
|
||||||
|
.leaflet-zoom-anim .leaflet-tile,
|
||||||
|
.leaflet-pan-anim .leaflet-tile {
|
||||||
|
-webkit-transition: none;
|
||||||
|
-moz-transition: none;
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-zoom-anim .leaflet-zoom-hide {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* cursors */
|
||||||
|
|
||||||
|
.leaflet-interactive {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.leaflet-grab {
|
||||||
|
cursor: -webkit-grab;
|
||||||
|
cursor: -moz-grab;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
.leaflet-crosshair,
|
||||||
|
.leaflet-crosshair .leaflet-interactive {
|
||||||
|
cursor: crosshair;
|
||||||
|
}
|
||||||
|
.leaflet-popup-pane,
|
||||||
|
.leaflet-control {
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
.leaflet-dragging .leaflet-grab,
|
||||||
|
.leaflet-dragging .leaflet-grab .leaflet-interactive,
|
||||||
|
.leaflet-dragging .leaflet-marker-draggable {
|
||||||
|
cursor: move;
|
||||||
|
cursor: -webkit-grabbing;
|
||||||
|
cursor: -moz-grabbing;
|
||||||
|
cursor: grabbing;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* marker & overlays interactivity */
|
||||||
|
.leaflet-marker-icon,
|
||||||
|
.leaflet-marker-shadow,
|
||||||
|
.leaflet-image-layer,
|
||||||
|
.leaflet-pane > svg path,
|
||||||
|
.leaflet-tile-container {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-marker-icon.leaflet-interactive,
|
||||||
|
.leaflet-image-layer.leaflet-interactive,
|
||||||
|
.leaflet-pane > svg path.leaflet-interactive,
|
||||||
|
svg.leaflet-image-layer.leaflet-interactive path {
|
||||||
|
pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* visual tweaks */
|
||||||
|
|
||||||
|
.leaflet-container {
|
||||||
|
background: #ddd;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
.leaflet-container a {
|
||||||
|
color: #0078A8;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-active {
|
||||||
|
outline: 2px solid orange;
|
||||||
|
}
|
||||||
|
.leaflet-zoom-box {
|
||||||
|
border: 2px dotted #38f;
|
||||||
|
background: rgba(255,255,255,0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general typography */
|
||||||
|
.leaflet-container {
|
||||||
|
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* general toolbar styles */
|
||||||
|
|
||||||
|
.leaflet-bar {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.65);
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #fff;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
.leaflet-bar a,
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-position: 50% 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:hover {
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:first-child {
|
||||||
|
border-top-left-radius: 4px;
|
||||||
|
border-top-right-radius: 4px;
|
||||||
|
}
|
||||||
|
.leaflet-bar a:last-child {
|
||||||
|
border-bottom-left-radius: 4px;
|
||||||
|
border-bottom-right-radius: 4px;
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.leaflet-bar a.leaflet-disabled {
|
||||||
|
cursor: default;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #bbb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-bar a {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar a:first-child {
|
||||||
|
border-top-left-radius: 2px;
|
||||||
|
border-top-right-radius: 2px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-bar a:last-child {
|
||||||
|
border-bottom-left-radius: 2px;
|
||||||
|
border-bottom-right-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* zoom control */
|
||||||
|
|
||||||
|
.leaflet-control-zoom-in,
|
||||||
|
.leaflet-control-zoom-out {
|
||||||
|
font: bold 18px 'Lucida Console', Monaco, monospace;
|
||||||
|
text-indent: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* layers control */
|
||||||
|
|
||||||
|
.leaflet-control-layers {
|
||||||
|
box-shadow: 0 1px 5px rgba(0,0,0,0.4);
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-toggle {
|
||||||
|
background-image: url(images/layers.png);
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
.leaflet-retina .leaflet-control-layers-toggle {
|
||||||
|
background-image: url(images/layers-2x.png);
|
||||||
|
background-size: 26px 26px;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers-toggle {
|
||||||
|
width: 44px;
|
||||||
|
height: 44px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers .leaflet-control-layers-list,
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded .leaflet-control-layers-list {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-expanded {
|
||||||
|
padding: 6px 10px 6px 6px;
|
||||||
|
color: #333;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-scrollbar {
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-selector {
|
||||||
|
margin-top: 2px;
|
||||||
|
position: relative;
|
||||||
|
top: 1px;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers label {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.leaflet-control-layers-separator {
|
||||||
|
height: 0;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
margin: 5px -10px 5px -6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default icon URLs */
|
||||||
|
.leaflet-default-icon-path {
|
||||||
|
background-image: url(images/marker-icon.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* attribution and scale controls */
|
||||||
|
|
||||||
|
.leaflet-container .leaflet-control-attribution {
|
||||||
|
background: #fff;
|
||||||
|
background: rgba(255, 255, 255, 0.7);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution,
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.leaflet-control-attribution a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.leaflet-container .leaflet-control-attribution,
|
||||||
|
.leaflet-container .leaflet-control-scale {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
.leaflet-left .leaflet-control-scale {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-bottom .leaflet-control-scale {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line {
|
||||||
|
border: 2px solid #777;
|
||||||
|
border-top: none;
|
||||||
|
line-height: 1.1;
|
||||||
|
padding: 2px 5px 1px;
|
||||||
|
font-size: 11px;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
background: #fff;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child) {
|
||||||
|
border-top: 2px solid #777;
|
||||||
|
border-bottom: none;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
|
||||||
|
border-bottom: 2px solid #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-touch .leaflet-control-attribution,
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-bar {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.leaflet-touch .leaflet-control-layers,
|
||||||
|
.leaflet-touch .leaflet-bar {
|
||||||
|
border: 2px solid rgba(0,0,0,0.2);
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* popup */
|
||||||
|
|
||||||
|
.leaflet-popup {
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper {
|
||||||
|
padding: 1px;
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content {
|
||||||
|
margin: 13px 19px;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
.leaflet-popup-content p {
|
||||||
|
margin: 18px 0;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip-container {
|
||||||
|
width: 40px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -20px;
|
||||||
|
overflow: hidden;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
width: 17px;
|
||||||
|
height: 17px;
|
||||||
|
padding: 1px;
|
||||||
|
|
||||||
|
margin: -10px auto 0;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(45deg);
|
||||||
|
-moz-transform: rotate(45deg);
|
||||||
|
-ms-transform: rotate(45deg);
|
||||||
|
transform: rotate(45deg);
|
||||||
|
}
|
||||||
|
.leaflet-popup-content-wrapper,
|
||||||
|
.leaflet-popup-tip {
|
||||||
|
background: white;
|
||||||
|
color: #333;
|
||||||
|
box-shadow: 0 3px 14px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
padding: 4px 4px 0 0;
|
||||||
|
border: none;
|
||||||
|
text-align: center;
|
||||||
|
width: 18px;
|
||||||
|
height: 14px;
|
||||||
|
font: 16px/14px Tahoma, Verdana, sans-serif;
|
||||||
|
color: #c3c3c3;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.leaflet-container a.leaflet-popup-close-button:hover {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.leaflet-popup-scrolled {
|
||||||
|
overflow: auto;
|
||||||
|
border-bottom: 1px solid #ddd;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .leaflet-popup-content-wrapper {
|
||||||
|
zoom: 1;
|
||||||
|
}
|
||||||
|
.leaflet-oldie .leaflet-popup-tip {
|
||||||
|
width: 24px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
||||||
|
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
||||||
|
}
|
||||||
|
.leaflet-oldie .leaflet-popup-tip-container {
|
||||||
|
margin-top: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.leaflet-oldie .leaflet-control-zoom,
|
||||||
|
.leaflet-oldie .leaflet-control-layers,
|
||||||
|
.leaflet-oldie .leaflet-popup-content-wrapper,
|
||||||
|
.leaflet-oldie .leaflet-popup-tip {
|
||||||
|
border: 1px solid #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* div icon */
|
||||||
|
|
||||||
|
.leaflet-div-icon {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Tooltip */
|
||||||
|
/* Base styles for the element that has a tooltip */
|
||||||
|
.leaflet-tooltip {
|
||||||
|
position: absolute;
|
||||||
|
padding: 6px;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
border-radius: 3px;
|
||||||
|
color: #222;
|
||||||
|
white-space: nowrap;
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
pointer-events: none;
|
||||||
|
box-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||||
|
}
|
||||||
|
.leaflet-tooltip.leaflet-clickable {
|
||||||
|
cursor: pointer;
|
||||||
|
pointer-events: auto;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top:before,
|
||||||
|
.leaflet-tooltip-bottom:before,
|
||||||
|
.leaflet-tooltip-left:before,
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: none;
|
||||||
|
border: 6px solid transparent;
|
||||||
|
background: transparent;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Directions */
|
||||||
|
|
||||||
|
.leaflet-tooltip-bottom {
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top {
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-bottom:before,
|
||||||
|
.leaflet-tooltip-top:before {
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-top:before {
|
||||||
|
bottom: 0;
|
||||||
|
margin-bottom: -12px;
|
||||||
|
border-top-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-bottom:before {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -12px;
|
||||||
|
margin-left: -6px;
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left {
|
||||||
|
margin-left: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-right {
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left:before,
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -6px;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-left:before {
|
||||||
|
right: 0;
|
||||||
|
margin-right: -12px;
|
||||||
|
border-left-color: #fff;
|
||||||
|
}
|
||||||
|
.leaflet-tooltip-right:before {
|
||||||
|
left: 0;
|
||||||
|
margin-left: -12px;
|
||||||
|
border-right-color: #fff;
|
||||||
|
}
|
||||||
204
css/slick-theme.css
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
@charset 'UTF-8';
|
||||||
|
/* Slider */
|
||||||
|
.slick-loading .slick-list
|
||||||
|
{
|
||||||
|
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icons */
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
src: url('./fonts/slick.eot');
|
||||||
|
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
|
||||||
|
}
|
||||||
|
/* Arrows */
|
||||||
|
.slick-prev,
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-transform: translate(0, -50%);
|
||||||
|
-ms-transform: translate(0, -50%);
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover,
|
||||||
|
.slick-prev:focus,
|
||||||
|
.slick-next:hover,
|
||||||
|
.slick-next:focus
|
||||||
|
{
|
||||||
|
color: transparent;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover:before,
|
||||||
|
.slick-prev:focus:before,
|
||||||
|
.slick-next:hover:before,
|
||||||
|
.slick-next:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-prev.slick-disabled:before,
|
||||||
|
.slick-next.slick-disabled:before
|
||||||
|
{
|
||||||
|
opacity: .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev:before,
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
|
opacity: .75;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev
|
||||||
|
{
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
.slick-prev:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next
|
||||||
|
{
|
||||||
|
right: auto;
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dots */
|
||||||
|
.slick-dotted.slick-slider
|
||||||
|
{
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-dots
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
bottom: -25px;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.slick-dots li
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.slick-dots li button
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover,
|
||||||
|
.slick-dots li button:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover:before,
|
||||||
|
.slick-dots li button:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-dots li button:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 6px;
|
||||||
|
line-height: 20px;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
|
||||||
|
content: '•';
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
opacity: .25;
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
.slick-dots li.slick-active button:before
|
||||||
|
{
|
||||||
|
opacity: .75;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
119
css/slick.css
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/* Slider */
|
||||||
|
.slick-slider
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-ms-touch-action: pan-y;
|
||||||
|
touch-action: pan-y;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-list
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.slick-list:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-list.dragging
|
||||||
|
{
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slider .slick-track,
|
||||||
|
.slick-slider .slick-list
|
||||||
|
{
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-ms-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-track
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.slick-track:before,
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-track
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slide
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
|
min-height: 1px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-slide
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.slick-slide img
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-slide.slick-loading img
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.slick-slide.dragging img
|
||||||
|
{
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.slick-initialized .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-slide
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.slick-vertical .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.slick-arrow.slick-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
204
css/slick/slick-theme.css
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
@charset 'UTF-8';
|
||||||
|
/* Slider */
|
||||||
|
.slick-loading .slick-list
|
||||||
|
{
|
||||||
|
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icons */
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
src: url('./fonts/slick.eot');
|
||||||
|
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
|
||||||
|
}
|
||||||
|
/* Arrows */
|
||||||
|
.slick-prev,
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-transform: translate(0, -50%);
|
||||||
|
-ms-transform: translate(0, -50%);
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover,
|
||||||
|
.slick-prev:focus,
|
||||||
|
.slick-next:hover,
|
||||||
|
.slick-next:focus
|
||||||
|
{
|
||||||
|
color: transparent;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover:before,
|
||||||
|
.slick-prev:focus:before,
|
||||||
|
.slick-next:hover:before,
|
||||||
|
.slick-next:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-prev.slick-disabled:before,
|
||||||
|
.slick-next.slick-disabled:before
|
||||||
|
{
|
||||||
|
opacity: .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev:before,
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
|
opacity: .75;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev
|
||||||
|
{
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
.slick-prev:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next
|
||||||
|
{
|
||||||
|
right: auto;
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dots */
|
||||||
|
.slick-dotted.slick-slider
|
||||||
|
{
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-dots
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
bottom: -25px;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.slick-dots li
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.slick-dots li button
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover,
|
||||||
|
.slick-dots li button:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover:before,
|
||||||
|
.slick-dots li button:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-dots li button:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 6px;
|
||||||
|
line-height: 20px;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
|
||||||
|
content: '•';
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
opacity: .25;
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
.slick-dots li.slick-active button:before
|
||||||
|
{
|
||||||
|
opacity: .75;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
119
css/slick/slick.css
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/* Slider */
|
||||||
|
.slick-slider
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-ms-touch-action: pan-y;
|
||||||
|
touch-action: pan-y;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-list
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.slick-list:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-list.dragging
|
||||||
|
{
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slider .slick-track,
|
||||||
|
.slick-slider .slick-list
|
||||||
|
{
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-ms-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-track
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.slick-track:before,
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-track
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slide
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
|
min-height: 1px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-slide
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.slick-slide img
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-slide.slick-loading img
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.slick-slide.dragging img
|
||||||
|
{
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.slick-initialized .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-slide
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.slick-vertical .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.slick-arrow.slick-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
1
css/sweetalert2.min.css
vendored
Normal file
BIN
img/bus3_64.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
img/bus64.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
img/busr64.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
img/google_play.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
img/gpsloc_azul.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
img/gpsloc_rojo.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
img/logoEmtusaAzul152.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
6
img/movile-euro.svg
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
img/reloj.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
img/stck-walk-wht.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
img/tutorial/AlarmaBB-1.1.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
img/tutorial/AlarmaBB-1.2.png
Normal file
|
After Width: | Height: | Size: 132 KiB |
BIN
img/tutorial/AlarmaBB-1.3.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
img/tutorial/AlarmaBB-1.4.png
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
img/tutorial/AlarmaBB-2.1.png
Normal file
|
After Width: | Height: | Size: 875 KiB |
BIN
img/tutorial/AlarmaBB-2.2.png
Normal file
|
After Width: | Height: | Size: 888 KiB |
BIN
img/tutorial/AlarmaBB-3.1.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
img/tutorial/Favoritos-1.1.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
img/tutorial/Favoritos-2.1.png
Normal file
|
After Width: | Height: | Size: 131 KiB |
BIN
img/tutorial/Favoritos-2.2.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
img/tutorial/Favoritos-2.3.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
BIN
img/tutorial/Favoritos-2.jpg
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
img/tutorial/Favoritos-3.1.png
Normal file
|
After Width: | Height: | Size: 277 KiB |
BIN
img/tutorial/Favoritos-3.2.png
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
img/tutorial/Favoritos-4.1.png
Normal file
|
After Width: | Height: | Size: 424 KiB |
BIN
img/tutorial/Noticias-1.1.png
Normal file
|
After Width: | Height: | Size: 534 KiB |
BIN
img/tutorial/Noticias-2.1.png
Normal file
|
After Width: | Height: | Size: 388 KiB |
848
index.html
Normal file
@@ -0,0 +1,848 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<title>Emtusa Huelva</title>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
||||||
|
<!--<meta http-equiv="Content-Security-Policy" content="default-src https://codepush.appcenter.ms 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />-->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
|
||||||
|
<meta name="format-detection" content="telephone=no">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
|
||||||
|
<meta http-equiv="Expires" content="0">
|
||||||
|
<meta http-equiv="Last-Modified" content="0">
|
||||||
|
<meta http-equiv="Cache-Control" content="no-cache">
|
||||||
|
<meta http-equiv="Pragma" content="no-cache">
|
||||||
|
|
||||||
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
|
<meta name="apple-mobile-web-app-title" content="Emtusa">
|
||||||
|
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||||
|
<link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.light_blue-blue.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/icomoon.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/EmtusaMobileTheme.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/jquery.mobile.structure-1.4.5.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/jquery.mobile.icons.min.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/sweetalert2.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/icon-pack-custom.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/leaflet.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/index.css">
|
||||||
|
<link rel="stylesheet" href="./css/getmdl-select.min.css">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./slick/slick.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="slick/slick-theme.css" />
|
||||||
|
</head>
|
||||||
|
<body class="bodyClass">
|
||||||
|
<div class="ayuda">
|
||||||
|
<p style="top: 80px;left: 43px;">
|
||||||
|
<i class="material-icons">call_received</i>
|
||||||
|
<span>Nombre de Parada</span>
|
||||||
|
</p>
|
||||||
|
<p style="top: 67px;left: 159px;">
|
||||||
|
<i class="material-icons">call_received</i>
|
||||||
|
<span>Tiempo Para llegar</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<!--Splash Screen-->
|
||||||
|
<div id="loader-wrapper">
|
||||||
|
<div class="loadingBar">
|
||||||
|
<h5 id="loadText" class="dataText">Comprobando Información</h5>
|
||||||
|
</div>
|
||||||
|
<div id="loader">
|
||||||
|
<h3 class="loader-font">
|
||||||
|
<span class="icon-emtusaLogo" style="font-size: 117px;"></span><br />EMTUSA<br />HUELVA
|
||||||
|
<div class="spinner">
|
||||||
|
<div class="bounce1"></div>
|
||||||
|
<div class="bounce2"></div>
|
||||||
|
<div class="bounce3"></div>
|
||||||
|
</div>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="loader-section section-left"></div>
|
||||||
|
<div class="loader-section section-right"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!--popup Sin conexion-->
|
||||||
|
<div id="sinInternet" class="conectado">
|
||||||
|
<span>Sin conexión de red</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--Botón control por voz-->
|
||||||
|
<div id="voz" class="btnAudio">
|
||||||
|
<button id="btnMic" class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored btnMapa" data-role="none" style="display:none;bottom: 10px;right: 10px;z-index: 2060;overflow: unset;" data-upgraded=",MaterialButton">
|
||||||
|
<i class="material-icons">mic</i>
|
||||||
|
<div id="radar" class="radar" style="display: none;"></div>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--PAGINA INICIO-->
|
||||||
|
<div id="pageInicio" data-role="page">
|
||||||
|
<div class="headInicio" data-role="header" data-position="fixed" class="logo" style="height:75px">
|
||||||
|
<h1 style="top:0;">
|
||||||
|
<span id="titleApp" style="display:none">AppTwo</span>
|
||||||
|
<a><img src="./img/logoEmtusaAzul152.png" height="76" width="76"></a>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div class="contentInicio" data-role="content" style="top:60px;overflow-x:visible;bottom:30px">
|
||||||
|
<div id="" style="margin-top:25px;">
|
||||||
|
<ul class="collection">
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageLinea');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">view_list</i></i>
|
||||||
|
<span class="title"><b>Líneas</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Muestra las paradas de las lineas y los tiempos de llegada de los autobuses.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageMapa');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">location_on</i></i>
|
||||||
|
<span class="title"><b>Mapa</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Muestra líneas y paradas representadas en el mapa.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageComoLLegar');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">near_me</i></i>
|
||||||
|
<span class="title"><b>Cómo Llegar</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Te permite ver como llegar desde un lugar a otro a través de las líneas disponibles.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageFavoritos');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">star_rate</i></i>
|
||||||
|
<span class="title"><b>Mis Paradas</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Permite crear, editar y ver paradas guardadas como favoritas.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageAlarmaLlegada');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">alarm</i></i>
|
||||||
|
<span class="title"><b>Alarma de Bajada</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Crea una alarma para saber cuando debes bajarte.</p>
|
||||||
|
</li>
|
||||||
|
<!--<li class="collection-item avatar" onclick="$.mobile.changePage('#pageAlarma');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">alarm</i></i>
|
||||||
|
<span class="title"><b>Alarmas de Llegada</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Crea una alarmas para avisarte de coger el autobús</p>
|
||||||
|
</li>-->
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageBuscarParada');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">search</i></i>
|
||||||
|
<span class="title"><b>Buscar</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Busca paradas por nombre o código.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageInfo');" id="iniInfo">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">new_releases</i></i>
|
||||||
|
<span class="title"><b>Noticias y Avisos</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Obtén toda la información actual sobre Emtusa y sus líneas </p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="Recargar()">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">euro_symbol</i></i>
|
||||||
|
<span class="title"><b>Recargas de Tarjetas</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Recarga la tarjeta sin salir de casa. </p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="PagoMovil()">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><img src="img/movile-euro.svg" width="36" /></i>
|
||||||
|
<span class="title"><b>Pago con Móvil</b></span>
|
||||||
|
<p style="color: #7e7e7e;">El billete en tu móvil. </p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="goQR()">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;">
|
||||||
|
<img width="40" height="40" style="padding-left: 6px;" src="data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M107.143%20321.429v35.714h-35.714v-35.714h35.714zM107.143%20107.143v35.714h-35.714v-35.714h35.714zM321.429%20107.143v35.714h-35.714v-35.714h35.714zM35.714%20392.578h107.143v-106.864h-107.143v106.864zM35.714%20178.571h107.143v-107.143h-107.143v107.143zM250%20178.571h107.143v-107.143h-107.143v107.143zM178.571%20250v178.571h-178.571v-178.571h178.571zM321.429%20392.857v35.714h-35.714v-35.714h35.714zM392.857%20392.857v35.714h-35.714v-35.714h35.714zM392.857%20250v107.143h-107.143v-35.714h-35.714v107.143h-35.714v-178.571h107.143v35.714h35.714v-35.714h35.714zM178.571%2035.714v178.571h-178.571v-178.571h178.571zM392.857%2035.714v178.571h-178.571v-178.571h178.571z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E">
|
||||||
|
</i>
|
||||||
|
<span class="title"><b>Escanear código QR</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Escanea el código QR de la parada para obtener sus tiempos.</p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageAyudaPpal');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;">
|
||||||
|
<img width="40" height="40" style="padding-left:11px" src="data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%20Tiny%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11-tiny.dtd%22%3E%3Csvg%20version%3D%221.1%22%20baseProfile%3D%22tiny%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20width%3D%2216px%22%20height%3D%2216px%22%20viewBox%3D%220%200%20500%20500%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cpath%20d%3D%22M196.429%20350.446v66.964q0%204.464-3.348%207.813t-7.813%203.348h-66.964q-4.464%200-7.813-3.348t-3.348-7.813v-66.964q0-4.464%203.348-7.813t7.813-3.348h66.964q4.464%200%207.813%203.348t3.348%207.813zM284.598%20183.036q0%2015.067-4.325%2028.181t-9.766%2021.345-15.346%2016.602-16.043%2012.137-17.020%209.905q-11.44%206.417-19.113%2018.136t-7.673%2018.694q0%204.743-3.348%209.068t-7.813%204.325h-66.964q-4.185%200-7.115-5.162t-2.93-10.463v-12.556q0-23.159%2018.136-43.667t39.899-30.273q16.462-7.534%2023.438-15.625t6.976-21.206q0-11.719-12.974-20.647t-29.995-8.929q-18.136%200-30.134%208.091-9.766%206.976-29.855%2032.087-3.627%204.464-8.649%204.464-3.348%200-6.976-2.232l-45.759-34.877q-3.627-2.79-4.325-6.976t1.535-7.813q44.643-74.219%20129.464-74.219%2022.321%200%2044.922%208.649t40.737%2023.159%2029.576%2035.575%2011.44%2044.224z%22%20fill%3D%22%23ffffff%22%20%2F%3E%3C%2Fsvg%3E" />
|
||||||
|
</i>
|
||||||
|
<span class="title"><b>Ayuda</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Consulta manuales de uso de la aplicación. </p>
|
||||||
|
</li>
|
||||||
|
<li class="collection-item avatar" onclick="$.mobile.changePage('#pageOpciones');">
|
||||||
|
<i class="square" style="text-shadow:none;background-color: #169ff1;"><i class="material-icons mdl-list__item-avatar" style="background-color:transparent">settings</i></i>
|
||||||
|
<span class="title"><b>Opciones</b></span>
|
||||||
|
<p style="color: #7e7e7e;">Ajustes y configuración de la APP. </p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="urlApp" class="version2" onclick=""></div>
|
||||||
|
<div id="versionApp" class="version" onclick="$.mobile.changePage('#pageVersiones');"></div>
|
||||||
|
|
||||||
|
<div id="irGplay" class="gplay" onclick="irGplay()" style="display:none"><a><img src="./img/google_play.png" alt="GooglePlay" height="20" width="20"></a></div>
|
||||||
|
|
||||||
|
<div id="errorApp" class="gplay" onclick="$.mobile.changePage('#pageError');" style="display:none">
|
||||||
|
<img heigth="20" width="20" src="data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23169FF1%22%20d%3D%22M12.601%2C11.187C13.476%2C10.018%2C14%2C8.572%2C14%2C7c0-3.866-3.134-7-7-7C5.428%2C0%2C3.982%2C0.524%2C2.813%2C1.399L2.757%2C1.343L2.053%2C2.048%20L2.048%2C2.053L1.343%2C2.758l0.056%2C0.056C0.524%2C3.982%2C0%2C5.428%2C0%2C7c0%2C3.866%2C3.134%2C7%2C7%2C7c1.572%2C0%2C3.018-0.524%2C4.187-1.399l0.056%2C0.057%20l0.705-0.705l0.005-0.005l0.705-0.705L12.601%2C11.187z%20M7%2C2c2.761%2C0%2C5%2C2.238%2C5%2C5c0%2C1.019-0.308%2C1.964-0.832%2C2.754L4.246%2C2.832%20C5.036%2C2.308%2C5.981%2C2%2C7%2C2z%20M7%2C12c-2.761%2C0-5-2.238-5-5c0-1.019%2C0.308-1.964%2C0.832-2.754l6.922%2C6.922C8.964%2C11.692%2C8.019%2C12%2C7%2C12z%22%2F%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3Cg%3E%3C%2Fg%3E%3C%2Fsvg%3E">
|
||||||
|
</div>
|
||||||
|
<div id="ins" class="inspector" onclick="$.mobile.changePage('#pageIns');" style="display:none">
|
||||||
|
<img heigth="20" width="20" src="data:image/svg+xml;charset=US-ASCII,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22iso-8859-1%22%3F%3E%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%2214px%22%20height%3D%2214px%22%20viewBox%3D%220%200%2014%2014%22%20style%3D%22enable-background%3Anew%200%200%2014%2014%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20style%3D%22fill%3A%23169FF1%3B%22%20d%3D%22M7%2C2C3%2C2%2C0%2C7%2C0%2C7s3%2C5%2C7%2C5s7-5%2C7-5S11%2C2%2C7%2C2z%20M7%2C10c-1.657%2C0-3-1.344-3-3c0-1.657%2C1.343-3%2C3-3%20s3%2C1.343%2C3%2C3C10%2C8.656%2C8.657%2C10%2C7%2C10z%20M7%2C6C6.448%2C6%2C6%2C6.447%2C6%2C7c0%2C0.553%2C0.448%2C1%2C1%2C1s1-0.447%2C1-1C8%2C6.447%2C7.552%2C6%2C7%2C6z%22%2F%3E%3C%2Fsvg%3E">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--PAGE MAPA-->
|
||||||
|
<div data-url="pageMapa" data-role="page" id="pageMapa">
|
||||||
|
<div data-role="header" data-position="fixed" id="headMapa">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1 id="toptitleMapas">
|
||||||
|
<span class="headName">EMTUSA: </span><span id="toptitleMapasText">MAPA</span>
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton menuAyuda" ayuda="ayuMapa"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div role="main" class="ui-content noFooter" data-role="content" id="contentMapa">
|
||||||
|
<div id="mapCanvas" class="mapCanvas"></div>
|
||||||
|
<div id="lineasMapa" class="rutasComoLlegar" style="display:block">
|
||||||
|
<center><b style="color: #448aff;cursor:pointer" onclick="AnimarLista()">Líneas</b></center>
|
||||||
|
<div id="containerLineasMapa" style="display:none;height:0px;overflow:auto">
|
||||||
|
<ul id="listaLineasMapa" class="collection"></ul>
|
||||||
|
<div style="display: inline-flex;white-space: nowrap;text-align: center;padding-left: 15px;padding-top: 5px;" onclick="CambiarVistaLineas('checkboxTodasLineas')">
|
||||||
|
<p style="margin:0px">
|
||||||
|
<input type="checkbox" class="filled-in todaslinB" data-role="none" name="checkboxMapa" id="checkboxTodasLineasB" disabled="disabled">
|
||||||
|
<label for="checkboxTodasLineasB"></label>
|
||||||
|
</p>
|
||||||
|
<p id="textcheckboxTodasLineasB" style="margin:0px;padding-top:5px;margin-left:3px;font-size: 15px;">Ver Todas</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored btnMapa" data-role="none" style="top: 10px;right: 5px;" onclick="$('#btnTextoMapa').toggleClass('active')">
|
||||||
|
<i class="material-icons">search</i>
|
||||||
|
</button>
|
||||||
|
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored btnMapa" data-role="none" style="top: 60px;right: 5px;" onclick="GetLocation()">
|
||||||
|
<i class="material-icons">gps_fixed</i>
|
||||||
|
</button>
|
||||||
|
<button id="btnCentrar" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored btnMapa" data-role="none" style="top: 110px;right: 5px;" onclick="CentrarMapa()">
|
||||||
|
<i class="material-icons">center_focus_weak</i>
|
||||||
|
</button>
|
||||||
|
<button id="btnCercanas" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored btnMapa" data-role="none" style="top: 160px;right: 5px;" onclick="TrigerMostrarCercanas()">
|
||||||
|
<img src="./img/stck-walk-wht.png" height="25" width="25">
|
||||||
|
</button>
|
||||||
|
<div id="btnTextoMapa" class="btnMapa">
|
||||||
|
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" data-role="none">
|
||||||
|
<input class="mdl-textfield__input" type="text" id="txtBuscarParada">
|
||||||
|
<label class="mdl-textfield__label" for="sample3">Ubicación:</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="lineasMostradas">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="popup" id="popupPuntoInteres" data-dismissible="false" style="max-height:550px;overflow:auto">
|
||||||
|
<div data-role="header">
|
||||||
|
<h1 id="popupHeader">Datos del nuevo punto</h1>
|
||||||
|
</div>
|
||||||
|
<div data-role="main" style="padding:5px">
|
||||||
|
<p id="lblId" style="display:none"></p>
|
||||||
|
<p id="lblLat" style="display:none"></p><p id="lblLng" style="display:none"></p>
|
||||||
|
<table style="">
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Nombre:<input id="txtFix" type="reset" maxlength="35" placeholder="Nombre..." data-role="none" data-clear-btn="true" class="jqueryBug"></td>
|
||||||
|
<td><input id="txtPopNombre" type="text" maxlength="35" placeholder="Nombre..." data-clear-btn="true" class="controls ui-input-text"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Dirección:</td>
|
||||||
|
<td><input id="txtPopDirec" type="text" maxlength="100" placeholder="Dirección..." data-clear-btn="true" class="controls ui-input-text"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Teléfono:</td>
|
||||||
|
<td><input id="txtPopTlfn" type="text" maxlength="100" placeholder="Teléfono..." data-clear-btn="true" class="controls ui-input-text"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Url:</td>
|
||||||
|
<td><input id="txtPopUrl" type="text" maxlength="100" placeholder="Url..." data-clear-btn="true" class="controls ui-input-text"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Icono:</td>
|
||||||
|
<td>
|
||||||
|
<div class="styled-select selectShadow" style="width:100%;">
|
||||||
|
<select name="selectIcono" id="selectIcono" data-mini="true" data-inline="true" data-role="none">
|
||||||
|
<option value="1" selected>General</option>
|
||||||
|
<option value="2">Restaurante</option>
|
||||||
|
<option value="3">Monumento</option>
|
||||||
|
<option value="4">Hotel</option>
|
||||||
|
<option value="5">Tienda</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Descripción:</td>
|
||||||
|
<td><textarea id="txtPopDesc" rows="4" cols="50" placeholder="Descripción..." maxlength="300" data-clear-btn="true"></textarea></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="textoPtoInt">Foto:</td>
|
||||||
|
<td><input type='file' class="controls" id="inputFotos" data-role="none" style="width: 156px;" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<center>
|
||||||
|
<img id="myImg" src="#" alt="your image" style="max-width:95%; display:none" />
|
||||||
|
</center> <br />
|
||||||
|
<a class="ui-btn ui-corner-all ui-shadow ui-btn-inline noRadius" data-rel="back">Cancelar</a>
|
||||||
|
<a id="btnGuardarPto" class="ui-btn ui-corner-all ui-shadow ui-btn-inline noRadius">Guardar</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--ESQUEMA-->
|
||||||
|
<div id="pageLinea" data-role="page" data-tap-toggle="false" data-hide-during-focus="">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1 id="toptitleLineas">
|
||||||
|
<span class="headName">EMTUSA: </span>LÍNEAS
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius ui-controlgroup ui-controlgroup-horizontal ui-corner-all">
|
||||||
|
<div class="ui-controlgroup-controls ">
|
||||||
|
<div style="display: inline-flex;white-space: nowrap;text-align: center;padding-left: 5px;padding-top: 5px;" onclick="CambiarVistaLineas('checkboxTodasLineas')">
|
||||||
|
<p style="margin:0px">
|
||||||
|
<input type="checkbox" class="filled-in todaslin" data-role="none" name="checkboxMapa" id="checkboxTodasLineas">
|
||||||
|
<label for="checkboxTodasLineas"></label>
|
||||||
|
</p>
|
||||||
|
<p id="textcheckboxTodasLineas" style="margin:0px;padding-top:5px;margin-left:3px;color: white;font-size: 15px;">Ver Todas</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<div id="ListaLineas" style="margin-top:5px;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="pageLineaVer" data-role="page" data-tap-toggle="false" data-hide-during-focus="">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
<button class="menuButton" onclick="history.back()"><span class=" icon-arrow-left2"></span></button>
|
||||||
|
</div>
|
||||||
|
<h1 id="toptitleLineasVer">
|
||||||
|
<span class="headName">EMTUSA </span><span id="toptitleLineasVerText"></span>
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button id="cambiarTimeout" style="color: rgb(255, 241, 168);display:none;" class="boxShadow ui-btn ui-btn-inline ui-btn-mini openMenu" data-role="button">Parar</button>
|
||||||
|
<button class="menuButton" id="recEsquema" style="color: rgb(255, 241, 168);display:none;"><span class=" icon-spinner11"></span></button>
|
||||||
|
<button class="menuButton menuAyuda" ayuda="ayuLineas" onclick="goQR()"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<center>
|
||||||
|
<div id="verLineasContNombre" class="TituloLineaEsquema" onclick="$.mobile.changePage('#pageLinea');">
|
||||||
|
<b id="headLineasVer" class="ellip ellip-line" style="font-size:28px;"></b>
|
||||||
|
</div>
|
||||||
|
<div name="ListLineasPageLineas" id="ListLineasPageLineas" class="paradasList" style="margin-top:10px">
|
||||||
|
<b>Cargando, por favor espere...</b>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--COMO LLEGAR-->
|
||||||
|
<div data-url="pageComoLLegar" data-role="page" id="pageComoLLegar">
|
||||||
|
<div data-role="header" data-position="fixed" id="headMapa">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1 id="toptitleMapas">
|
||||||
|
<span class="headName">EMTUSA: </span><span id="toptitleMapasText">Cómo Llegar</span>
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton menuAyuda" ayuda="ayuMapa"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div role="main" class="ui-content noFooter" data-role="content" id="contentMapaCL">
|
||||||
|
<div id="divComoLlegar">
|
||||||
|
<div id="MenuMapaCL">
|
||||||
|
<table style="width:100%">
|
||||||
|
<tr>
|
||||||
|
<td style="width: 30px;"><img src="./img/gpsloc_azul.png" height="24" width="24"></td>
|
||||||
|
<td>
|
||||||
|
<div id="divTxtOrigen" class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" data-role="none" style="width:100%">
|
||||||
|
<input class="mdl-textfield__input" type="text" id="txtOrigen" data-role="none" onClick="this.setSelectionRange(0, this.value.length)" />
|
||||||
|
<label class="mdl-textfield__label" for="txtOrigen" data-role="none">Origen</label>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td style="width: 40px;text-align: center;cursor:pointer"><i class="material-icons" onclick="MiUbicacion()">gps_fixed</i></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="./img/gpsloc_rojo.png" height="24" width="24"></td>
|
||||||
|
<td>
|
||||||
|
<div id="divTxtDestino" class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" data-role="none" style="width:100%">
|
||||||
|
<input class="mdl-textfield__input" type="text" id="txtDestino" data-role="none" onClick="this.setSelectionRange(0, this.value.length)">
|
||||||
|
<label class="mdl-textfield__label" for="txtDestino" data-role="none">Destino</label>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td style="width: 40px;text-align: center;cursor:pointer"> <i class="material-icons" onclick="InvertirBusqueda()">swap_vert</i> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<i class="sqInfoRuta square" onclick="$('#listRutas').toggle()"></i>
|
||||||
|
<div id="mapCanvasCL" class="mapCanvas"></div>
|
||||||
|
</div>
|
||||||
|
<div id="rutasSugeridas" class="rutasComoLlegar">
|
||||||
|
<center><b style="color: #448aff;cursor:pointer" onclick="AnimarListaRutas()">Rutas Sugeridas</b></center>
|
||||||
|
<div id="containerRutasSugeridas" style="display:none;height:0px;overflow:auto">
|
||||||
|
<p class="center subColor" style="font-size:10px"> No hay rutas disponibles, marque un origen y un destino primero.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="toastDestino" class="toast" style="display:none">
|
||||||
|
<div class="toastCenter">
|
||||||
|
<p id="toastParagraph" class="toastParagraph blinkM">Calculando rutas espere...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--BUSQUEDA-->
|
||||||
|
<div id="pageBuscarParada" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA: </span>BUSCAR
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="MostrarAyuda('ayuBuscar')"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter" id="divEmtusaBuscar">
|
||||||
|
<div>
|
||||||
|
<div style="padding:5px">
|
||||||
|
<!--<div style="display:inline-flex;padding-left:10px">-->
|
||||||
|
<input autocomplete="off" id="txtBuscar" class="controls ui-input-text " type="text" placeholder="Escriba Nombre o Código de parada" data-clear-btn="true" />
|
||||||
|
</div>
|
||||||
|
<div id="resultadoBusqueda" class="resultadoBusqueda"></div>
|
||||||
|
</div>
|
||||||
|
<!--<div id="contParCercanasBusqueda" class="">
|
||||||
|
<h4 class="centradoH">Paradas Más Cercanas</h4>
|
||||||
|
<div id="tabParadasCercanas" data-role="tabs" class="tabParadasCercanas estiloCercanasTab" style="display:none">
|
||||||
|
<div data-role="navbar">
|
||||||
|
<ul style="box-shadow: 0 2px 2px lightgrey;border-radius: 0;">
|
||||||
|
<li><a id="navCercanasLinea" href="#cercanasLinea" class="btn ui-btn-active btnPtoInteres" style="margin:0px !important">Por Línea y Sentido</a></li>
|
||||||
|
<li><a id="navCercanasOrden" href="#cercanasOrden" class="btn ui-btn btnPtoInteres" style="margin:0px !important">Por Distancia</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="cercanasLinea" class="favoritoTabs pad">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div id="cercanasOrden" class="favoritoTabs pad">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<center>
|
||||||
|
<div id="mensParCer" style="display:none;padding-left:5px;padding-right:5px;">
|
||||||
|
<p style="font-size: 13px;">
|
||||||
|
Para ver sus paradas cercanas debe establecer su ubicación primero.
|
||||||
|
<br>Puede localizarse pulsando en el botón a continuación.<br />
|
||||||
|
</p>
|
||||||
|
<button id="localizarme" class=" materialButton locOrigen ui-btn ui-shadow ui-corner-all" style="width:155px">
|
||||||
|
<span class="icon-map" style="font-size: 20px;margin-right: 5px;"></span>Localizarme
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
</div>-->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--PAGINA INFORMACION/AVISOS (RSS EMTUSA)-->
|
||||||
|
<div id="pageInfo" data-role="page">
|
||||||
|
<div data-role="panel" id="panelNoticias" data-position="right" data-swipe-close="false">
|
||||||
|
<center><p style="margin: 0;font-weight:bold">Marcar todos los avisos como:</p></center>
|
||||||
|
<center>
|
||||||
|
<button id="desmarcarNot" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" data-role="none">
|
||||||
|
Sin leer
|
||||||
|
</button>
|
||||||
|
<button id="marcarNot" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" data-role="none">
|
||||||
|
Leidos
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<p class="miniText"><b>Fecha Avi. más actual Visto: </b><span id="ultPuls" style="margin-top: 5px;"></span></p>
|
||||||
|
<p class="miniText"><b>Avisos sin ver: </b><span class="numAvisos"></span></p>
|
||||||
|
|
||||||
|
<button id="actAhora" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" data-role="none">
|
||||||
|
<span class="icon-spinner11" style="font-size: 20px;margin-right: 5px;"></span>Actualizar Avisos
|
||||||
|
</button>
|
||||||
|
<p class="miniText">
|
||||||
|
<b>Avisos Actualizados el:</b>
|
||||||
|
<span id="ultAct"></span>
|
||||||
|
</p>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA: </span><span>AVISOS </span><span class="numAvisosMenu"></span>
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="AbrirAyuda('ayudaNoticias');"><span class=" icon-question"></span></button>
|
||||||
|
<button id="gestionNoticias" class="menuButton menuButtonGest" onclick="$('#panelNoticias').panel().panel('open');">Gestión</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<center style="color: #aaa;">Pulse sobre un Aviso o Noticia para ver su contenido.</center>
|
||||||
|
<div id="divEmtusaNoticias">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="ventanaAyuda">
|
||||||
|
<div data-role="header" data-position="fixed" role="banner" style="background-color: #169FF1;color: white;text-shadow: 0 1px black;" class="ui-header ui-bar-inherit ui-header-fixed slidedown">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton" onclick="history.back()"><span class=" icon-arrow-left2"></span></button>
|
||||||
|
</div>
|
||||||
|
<h1 class="ui-title" role="heading" aria-level="1">
|
||||||
|
<span class="headName">EMTUSA:</span> <span id="vntAyudaTitulo">AYUDA</span>
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div id="vAyudaTexto"></div>
|
||||||
|
</div>
|
||||||
|
<!--FAVORITOS-->
|
||||||
|
<div id="pageFavoritos" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> MIS PARADAS
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="AbrirAyuda('ayudaFavoritos');"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter" id="divEmtusaFavoritos">
|
||||||
|
<p id="InfoFavoritos" class="center subColor" style="margin-bottom: 0px;">Pulsa sobre un favorito para obtener más información</p>
|
||||||
|
<div id="divFavoritos">
|
||||||
|
<ul id="listaFavoritos" class="mdl-list" style="margin-top: 0px;margin-bottom: 0px;"></ul>
|
||||||
|
</div>
|
||||||
|
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored btnMapa" data-role="none" style="bottom: 15px;right: 5px;" onclick="CrearFavorito()">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
</button>
|
||||||
|
<span class="ultActFavoritos subColor"></span>
|
||||||
|
</div>
|
||||||
|
<div data-role="popup" id="selFavPopup">
|
||||||
|
<p></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--ALERTAS-->
|
||||||
|
<div id="pageAlarmaLlegada" data-role="page" data-tap-toggle="false" data-hide-during-focus="">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1 id="toptitleLineas">
|
||||||
|
<span class="headName">EMTUSA: </span>ALERTA DE BAJADA
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="AbrirAyuda('ayudaAlarmasBus');"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<div id="formularioAlarma" style="max-width: 300px;margin: 0 auto;">
|
||||||
|
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select" data-role="none">
|
||||||
|
<input type="text" value="" class="mdl-textfield__input" id="ddLinea" readonly data-role="none">
|
||||||
|
<input type="hidden" value="" name="ddLinea" data-role="none">
|
||||||
|
<i class="mdl-icon-toggle__label material-icons">keyboard_arrow_down</i>
|
||||||
|
<label for="ddLinea" class="mdl-textfield__label">Línea</label>
|
||||||
|
<ul for="ddLinea" class="mdl-menu mdl-menu--bottom-left mdl-js-menu"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="getmdl_Parada" class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select" data-role="none">
|
||||||
|
<input type="text" value="" class="mdl-textfield__input" id="ddParada" readonly data-role="none">
|
||||||
|
<input type="hidden" value="" name="ddParada" data-role="none">
|
||||||
|
<i class="mdl-icon-toggle__label material-icons">keyboard_arrow_down</i>
|
||||||
|
<label for="ddParada" class="mdl-textfield__label">Parada</label>
|
||||||
|
<ul for="ddParada" class="mdl-menu mdl-menu--bottom-left mdl-js-menu"></ul>
|
||||||
|
</div>
|
||||||
|
<div id="getmdl_Buses" class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select" data-role="none">
|
||||||
|
<input type="text" value="" class="mdl-textfield__input" id="ddBus" readonly data-role="none">
|
||||||
|
<input type="hidden" value="" name="ddBus" data-role="none">
|
||||||
|
<i class="mdl-icon-toggle__label material-icons">keyboard_arrow_down</i>
|
||||||
|
<label for="ddBus" class="mdl-textfield__label">Código Autobús</label>
|
||||||
|
<ul for="ddBus" class="mdl-menu mdl-menu--bottom-left mdl-js-menu"></ul>
|
||||||
|
</div>
|
||||||
|
<!--<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label mdl-textfield--floating-label" data-role="none" style="width:100%">
|
||||||
|
<input class="mdl-textfield__input" type="text" id="txtCodigoBus">
|
||||||
|
<label class="mdl-textfield__label" for="sample3">Código Autobús</label>
|
||||||
|
</div>-->
|
||||||
|
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label getmdl-select " data-role="none">
|
||||||
|
<input type="text" value="" class="mdl-textfield__input" id="ddAvisame" readonly data-role="none">
|
||||||
|
<input type="hidden" value="" name="ddAvisame" data-role="none">
|
||||||
|
<i class="mdl-icon-toggle__label material-icons">keyboard_arrow_down</i>
|
||||||
|
<label for="ddAvisame" class="mdl-textfield__label">Avisame</label>
|
||||||
|
<ul for="ddAvisame" class="mdl-menu mdl-menu--bottom-left mdl-js-menu">
|
||||||
|
<li class="mdl-menu__item" data-val="1">1 parada antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="2">2 parada antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="3">3 parada antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="4">4 parada antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="5">5 parada antes</li>
|
||||||
|
<!--<li class="mdl-menu__item" data-val="1m">1 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="2m">2 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="3m">3 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="4m">4 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="5m">5 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="10m">10 minutos antes</li>
|
||||||
|
<li class="mdl-menu__item" data-val="15m">15 minutos antes</li>-->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<button id="btnAlarmaBajada" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" data-role="none">
|
||||||
|
Crear Alarma
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div id="AlarmaBus">
|
||||||
|
<div id="mapCanvasAlarma" class="mapCanvas"></div>
|
||||||
|
<div id="rutasSugeridas" class="rutasComoLlegar">
|
||||||
|
<center><b style="color: #448aff;cursor:pointer" onclick="AnimarAlarmas()">Información Autobus</b></center>
|
||||||
|
<div id="ventanaDatosBajada" style="display:none;height:0px;overflow:auto;padding: 15px;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="AlarmaFinalizada" style="text-align: center;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button id="btnCancAlarma" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--colored btnMapa" data-role="none" style="top: 10px;right: 5px;background-color: red;display:none" onclick="AlarmaFinalizada('Cancelar')">
|
||||||
|
<i class="material-icons">alarm_off</i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="pageAlarma" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> ALERTAS
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="MostrarAyuda('ayuFavoritos')"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter" id="divEmtusaAlarmas">
|
||||||
|
<p id="InfoAlarmas" class="center subColor" style="margin-bottom: 0px;padding:5px;">Las alarmas proporcionan una estimación teórica para que el usuario pueda saber cuando pueda saber cuando pasa el autobús y se le avise de su paso.<br /> Estas alarmas son orientativas, desde Emtusa no nos hacemos responsables de problemas ocasionados por fallo en los avisos</p>
|
||||||
|
<div id="divAlarmas">
|
||||||
|
<ul id="listaAlarmas" class="mdl-list" style="margin-top: 0px;margin-bottom: 0px;"></ul>
|
||||||
|
</div>
|
||||||
|
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored btnMapa" data-role="none" style="bottom: 15px;right: 5px;" onclick="CrearAlerta()">
|
||||||
|
<i class="material-icons">add</i>
|
||||||
|
</button>
|
||||||
|
<span class="ultActAlarmas subColor"></span>
|
||||||
|
</div>
|
||||||
|
<div data-role="popup" id="selAlarmPopup">
|
||||||
|
<p></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--OPCIONES-->
|
||||||
|
<div id="pageOpciones" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
<!--<a id="btnSalirOpciones" class="ui-btn ui-mini ui-icon-carat-l ui-btn-icon-notext" data-role="button">aaa</a>-->
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> OPCIONES
|
||||||
|
</h1>
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-right noRadius">
|
||||||
|
<button class="menuButton" onclick="MostrarAyuda('ayuOpc')"><span class=" icon-question"></span></button>
|
||||||
|
</div>
|
||||||
|
<!--<a id="btnNuevoFavorito" onclick="MostrarAyuda('ayuOpc')" class="boxShadow ui-btn ui-btn-inline ui-btn-mini ui-btn-right openMenu" data-role="button">Ayuda</a>-->
|
||||||
|
</div>
|
||||||
|
<center>
|
||||||
|
<div data-role="content" class="noFooter" id="divContentOpciones">
|
||||||
|
|
||||||
|
<!--<div class="opcP"><center><b>Opciones Generales</b></center></div>-->
|
||||||
|
|
||||||
|
<div class="opcDiv">
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-MostrarBus" data-role="none">
|
||||||
|
<input type="checkbox" id="switch-MostrarBus" class="mdl-switch__input" data-role="none" onclick="MostrarAutobus()">
|
||||||
|
<span class="mdl-switch__label" data-role="none">Mostrar Autobuses Mapa</span>
|
||||||
|
</label>
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-VerCorrespondencias" data-role="none">
|
||||||
|
<input type="checkbox" id="switch-VerCorrespondencias" class="mdl-switch__input" data-role="none" onclick="VerCorrespondencias()">
|
||||||
|
<span class="mdl-switch__label" data-role="none">Ver Correspondencias</span>
|
||||||
|
</label>
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-VerHoraLlegada" data-role="none">
|
||||||
|
<input type="checkbox" id="switch-VerHoraLlegada" class="mdl-switch__input" data-role="none" onclick="VerHoraLlegada()">
|
||||||
|
<span class="mdl-switch__label" data-role="none">Ver Hora de Llegada</span>
|
||||||
|
</label>
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-FavoritosIniciar" data-role="none">
|
||||||
|
<input type="checkbox" id="switch-FavoritosIniciar" class="mdl-switch__input" data-role="none" onclick="FavoritosInicio()">
|
||||||
|
<span class="mdl-switch__label" data-role="none">Favoritos al iniciar</span>
|
||||||
|
</label>
|
||||||
|
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-Vibracion" data-role="none" onclick="Vibracion()">
|
||||||
|
<input type="checkbox" id="switch-Vibracion" class="mdl-switch__input" data-role="none">
|
||||||
|
<span class="mdl-switch__label" data-role="none">Vibración</span>
|
||||||
|
</label>
|
||||||
|
<!--<div class="styled-select" style="width:100%; margin-bottom: 5px;">
|
||||||
|
<select name="selectComoLlegarMetros" id="selectTiempoRecarga" data-role="none">
|
||||||
|
<option value="15000">15 segundos</option>
|
||||||
|
<option value="30000">30 segundos</option>
|
||||||
|
<option value="60000">1 minutos</option>
|
||||||
|
<option value="300000">5 minutos</option>
|
||||||
|
<option value="0">No recargar</option>
|
||||||
|
</select>
|
||||||
|
</div>-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--<div class="opcP" style="margin-top:5px;"><center><b>Otras Operaciones</b></center></div>-->
|
||||||
|
<div class="opcDiv" style="border-top: 1px solid #9e9e9e;">
|
||||||
|
<div style="display:flex">
|
||||||
|
<button id="recargar" class=" materialButton ui-btn ui-shadow ui-corner-all" style="width: 49%;margin-right: 5px;">
|
||||||
|
<span class="icon-spinner11" style="font-size: 20px;margin-right: 5px;"></span>Reiniciar
|
||||||
|
</button>
|
||||||
|
<button id="verVersion" class=" materialButton ui-btn ui-shadow ui-corner-all" style="width: 49%;" onclick="$.mobile.changePage('#pageVersiones');">
|
||||||
|
<span class="icon-eye" style="font-size: 20px;margin-right: 5px;"></span>Versión
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<button id="borrar" class=" materialButton ui-btn ui-shadow ui-corner-all" style="background-color: #ff6961 !important;border-color: #ff6961 !important;">
|
||||||
|
<span class=" icon-bin2" style="font-size: 20px;margin-right: 5px;"></span>Reestablecer APP
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--VERSIONES-->
|
||||||
|
<div id="pageVersiones" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton" onclick="history.back()">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">arrow_back</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> VERSIONES
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<div class="textoAyuda" onclick="MostrarVersion('pgRestricionesP')" id="pgVersiones" style="display:none">! Nueva Version</div>
|
||||||
|
<div class="textoAyuda" onclick="MostrarVersion('verpgRestriccionesP')" id="pgRestriciones" style="display:none">! Restricciones</div>
|
||||||
|
<div class="textoAyuda" onclick="MostrarVersion('ver100')">Versión 1.00</div>
|
||||||
|
<div style="display:none">
|
||||||
|
<div id="verpgVersionesP">
|
||||||
|
<h3>! Nueva Version</h3>
|
||||||
|
<p id="pgRestricionesP">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="verpgRestriccionesP">
|
||||||
|
<h3>! Restricciones</h3>
|
||||||
|
<p id="pgRestricionesP">
|
||||||
|
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div id="ver100">
|
||||||
|
<div class="versionPG">
|
||||||
|
<h4 style="text-align:center">Versión 0.32</h4>
|
||||||
|
<p>
|
||||||
|
- Nuevo Diseño. <br />
|
||||||
|
- Mucho más rapida.<br />
|
||||||
|
- Más Ligera <br />
|
||||||
|
- Consume menos.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--AYUDAS-->
|
||||||
|
<div id="pageAyudaPpal" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton menuButtonMenu">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">home</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> AYUDA
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter">
|
||||||
|
<div class="textoAyuda" onclick="AbrirAyuda('ayudaFavoritos')">Favoritos</div>
|
||||||
|
<div class="textoAyuda" onclick="AbrirAyuda('ayudaAlarmasBus')">Alerta de bajada</div>
|
||||||
|
<div class="textoAyuda" onclick="AbrirAyuda('ayudaNoticias')">Noticias</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div id="pageAyuda" data-role="page">
|
||||||
|
<div data-role="header" data-position="fixed">
|
||||||
|
<div data-type="horizontal" data-role="controlgroup" class="btn ui-btn-left noRadius">
|
||||||
|
<button class="menuButton" onclick=" CerrarAyuda()">
|
||||||
|
<i class="material-icons mdl-list__item-avatar homeClass">arrow_back</i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<h1>
|
||||||
|
<span class="headName">EMTUSA:</span> AYUDA
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div data-role="content" class="noFooter" id="divPageAyuda">
|
||||||
|
<div class="btnHelpLeft Pointer" onclick="AnteriorAyuda()">
|
||||||
|
<i class="material-icons">arrow_back</i>
|
||||||
|
</div>
|
||||||
|
<div id="ayudaFavoritos" class="slickClass">
|
||||||
|
<div><img src="./img/tutorial/Favoritos-1.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-2.jpg" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-2.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-2.2.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-2.3.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-3.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-3.2.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Favoritos-4.1.png" border="0"></div>
|
||||||
|
</div>
|
||||||
|
<div id="ayudaAlarmasBus" class="slickClass">
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-1.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-1.2.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-1.3.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-1.4.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-2.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-2.2.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/AlarmaBB-3.1.png" border="0"></div>
|
||||||
|
</div>
|
||||||
|
<div id="ayudaNoticias" class="slickClass">
|
||||||
|
<div><img src="./img/tutorial/Noticias-1.1.png" border="0"></div>
|
||||||
|
<div><img src="./img/tutorial/Noticias-2.1.png" border="0"></div>
|
||||||
|
</div>
|
||||||
|
<div class="btnHelpRight Pointer" onclick="SiguienteAyuda()">
|
||||||
|
<i class="material-icons">arrow_forward</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="cordova.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/jquery-1.11.1.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/jquery.mobile-1.4.5.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/leaflet.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/index.js"></script>
|
||||||
|
<!--<script type="text/javascript" src="./js/nativo.js"></script>-->
|
||||||
|
<script type="text/javascript" src="./js/jquery.cookie.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/jquery.storageapi.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/json2.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/annyang.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/sweetalert2.min.js"></script>
|
||||||
|
<!--<script type="text/javascript" src="./js/infobox.js"></script>-->
|
||||||
|
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
|
||||||
|
<!--<script type="text/javascript" src="./js/jquery-ui.min.js"></script>-->
|
||||||
|
<script type="text/javascript" src="./js/jquery.ui.touch-punch.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/jszip.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/jszip-utils.min.js"></script>
|
||||||
|
<script defer src="https://code.getmdl.io/1.3.0/material.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/getmdl-select.min.js"></script>
|
||||||
|
<script type="text/javascript" src="./js/osrm.js"></script>
|
||||||
|
<script type="text/javascript" src="./slick/slick.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
680
js/annyang.min.js
vendored
Normal file
@@ -0,0 +1,680 @@
|
|||||||
|
//! annyang
|
||||||
|
//! version : 2.6.0
|
||||||
|
//! author : Tal Ater @TalAter
|
||||||
|
//! license : MIT
|
||||||
|
//! https://www.TalAter.com/annyang/
|
||||||
|
(function (root, factory) {
|
||||||
|
"use strict";
|
||||||
|
if (typeof define === 'function' && define.amd) { // AMD + global
|
||||||
|
define([], function () {
|
||||||
|
return (root.annyang = factory(root));
|
||||||
|
});
|
||||||
|
} else if (typeof module === 'object' && module.exports) { // CommonJS
|
||||||
|
module.exports = factory(root);
|
||||||
|
} else { // Browser globals
|
||||||
|
root.annyang = factory(root);
|
||||||
|
}
|
||||||
|
}(typeof window !== 'undefined' ? window : this, function (root, undefined) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* # Quick Tutorial, Intro and Demos
|
||||||
|
*
|
||||||
|
* The quickest way to get started is to visit the [annyang homepage](https://www.talater.com/annyang/).
|
||||||
|
*
|
||||||
|
* For a more in-depth look at annyang, read on.
|
||||||
|
*
|
||||||
|
* # API Reference
|
||||||
|
*/
|
||||||
|
|
||||||
|
var annyang;
|
||||||
|
|
||||||
|
// Get the SpeechRecognition object, while handling browser prefixes
|
||||||
|
var SpeechRecognition = root.SpeechRecognition ||
|
||||||
|
root.webkitSpeechRecognition ||
|
||||||
|
root.mozSpeechRecognition ||
|
||||||
|
root.msSpeechRecognition ||
|
||||||
|
root.oSpeechRecognition;
|
||||||
|
|
||||||
|
// Check browser support
|
||||||
|
// This is done as early as possible, to make it as fast as possible for unsupported browsers
|
||||||
|
if (!SpeechRecognition) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var commandsList = [];
|
||||||
|
var recognition;
|
||||||
|
var callbacks = { start: [], error: [], end: [], soundstart: [], result: [], resultMatch: [], resultNoMatch: [], errorNetwork: [], errorPermissionBlocked: [], errorPermissionDenied: [] };
|
||||||
|
var autoRestart;
|
||||||
|
var lastStartedAt = 0;
|
||||||
|
var autoRestartCount = 0;
|
||||||
|
var debugState = false;
|
||||||
|
var debugStyle = 'font-weight: bold; color: #00f;';
|
||||||
|
var pauseListening = false;
|
||||||
|
var isListening = false;
|
||||||
|
|
||||||
|
// The command matching code is a modified version of Backbone.Router by Jeremy Ashkenas, under the MIT license.
|
||||||
|
var optionalParam = /\s*\((.*?)\)\s*/g;
|
||||||
|
var optionalRegex = /(\(\?:[^)]+\))\?/g;
|
||||||
|
var namedParam = /(\(\?)?:\w+/g;
|
||||||
|
var splatParam = /\*\w+/g;
|
||||||
|
var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#]/g;
|
||||||
|
var commandToRegExp = function(command) {
|
||||||
|
command = command.replace(escapeRegExp, '\\$&')
|
||||||
|
.replace(optionalParam, '(?:$1)?')
|
||||||
|
.replace(namedParam, function(match, optional) {
|
||||||
|
return optional ? match : '([^\\s]+)';
|
||||||
|
})
|
||||||
|
.replace(splatParam, '(.*?)')
|
||||||
|
.replace(optionalRegex, '\\s*$1?\\s*');
|
||||||
|
return new RegExp('^' + command + '$', 'i');
|
||||||
|
};
|
||||||
|
|
||||||
|
// This method receives an array of callbacks to iterate over, and invokes each of them
|
||||||
|
var invokeCallbacks = function(callbacks, ...args) {
|
||||||
|
callbacks.forEach(function(callback) {
|
||||||
|
callback.callback.apply(callback.context, args);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var isInitialized = function() {
|
||||||
|
return recognition !== undefined;
|
||||||
|
};
|
||||||
|
|
||||||
|
// method for logging in developer console when debug mode is on
|
||||||
|
var logMessage = function(text, extraParameters) {
|
||||||
|
if (text.indexOf('%c') === -1 && !extraParameters) {
|
||||||
|
console.log(text);
|
||||||
|
} else {
|
||||||
|
console.log(text, extraParameters || debugStyle);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var initIfNeeded = function() {
|
||||||
|
if (!isInitialized()) {
|
||||||
|
annyang.init({}, false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var registerCommand = function(command, callback, originalPhrase) {
|
||||||
|
commandsList.push({ command, callback, originalPhrase });
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('Command successfully loaded: %c'+originalPhrase, debugStyle);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var parseResults = function(results) {
|
||||||
|
invokeCallbacks(callbacks.result, results);
|
||||||
|
var commandText;
|
||||||
|
// go over each of the 5 results and alternative results received (we've set maxAlternatives to 5 above)
|
||||||
|
for (let i = 0; i<results.length; i++) {
|
||||||
|
// the text recognized
|
||||||
|
commandText = results[i].trim();
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('Speech recognized: %c'+commandText, debugStyle);
|
||||||
|
}
|
||||||
|
|
||||||
|
// try and match recognized text to one of the commands on the list
|
||||||
|
for (let j = 0, l = commandsList.length; j < l; j++) {
|
||||||
|
var currentCommand = commandsList[j];
|
||||||
|
var result = currentCommand.command.exec(commandText);
|
||||||
|
if (result) {
|
||||||
|
var parameters = result.slice(1);
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('command matched: %c'+currentCommand.originalPhrase, debugStyle);
|
||||||
|
if (parameters.length) {
|
||||||
|
logMessage('with parameters', parameters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// execute the matched command
|
||||||
|
currentCommand.callback.apply(this, parameters);
|
||||||
|
invokeCallbacks(callbacks.resultMatch, commandText, currentCommand.originalPhrase, results);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
invokeCallbacks(callbacks.resultNoMatch, results);
|
||||||
|
};
|
||||||
|
|
||||||
|
annyang = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize annyang with a list of commands to recognize.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* var commands = {'hello :name': helloFunction};
|
||||||
|
* var commands2 = {'hi': helloFunction};
|
||||||
|
*
|
||||||
|
* // initialize annyang, overwriting any previously added commands
|
||||||
|
* annyang.init(commands, true);
|
||||||
|
* // adds an additional command without removing the previous commands
|
||||||
|
* annyang.init(commands2, false);
|
||||||
|
* ````
|
||||||
|
* As of v1.1.0 it is no longer required to call init(). Just start() listening whenever you want, and addCommands() whenever, and as often as you like.
|
||||||
|
*
|
||||||
|
* @param {Object} commands - Commands that annyang should listen to
|
||||||
|
* @param {boolean} [resetCommands=true] - Remove all commands before initializing?
|
||||||
|
* @method init
|
||||||
|
* @deprecated
|
||||||
|
* @see [Commands Object](#commands-object)
|
||||||
|
*/
|
||||||
|
init: function(commands, resetCommands = true) {
|
||||||
|
// Abort previous instances of recognition already running
|
||||||
|
if (recognition && recognition.abort) {
|
||||||
|
recognition.abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// initiate SpeechRecognition
|
||||||
|
recognition = new SpeechRecognition();
|
||||||
|
|
||||||
|
// Set the max number of alternative transcripts to try and match with a command
|
||||||
|
recognition.maxAlternatives = 5;
|
||||||
|
|
||||||
|
// In HTTPS, turn off continuous mode for faster results.
|
||||||
|
// In HTTP, turn on continuous mode for much slower results, but no repeating security notices
|
||||||
|
recognition.continuous = root.location.protocol === 'http:';
|
||||||
|
|
||||||
|
// Sets the language to the default 'en-US'. This can be changed with annyang.setLanguage()
|
||||||
|
recognition.lang = 'en-US';
|
||||||
|
|
||||||
|
recognition.onstart = function() {
|
||||||
|
isListening = true;
|
||||||
|
invokeCallbacks(callbacks.start);
|
||||||
|
};
|
||||||
|
|
||||||
|
recognition.onsoundstart = function() {
|
||||||
|
invokeCallbacks(callbacks.soundstart);
|
||||||
|
};
|
||||||
|
|
||||||
|
recognition.onerror = function(event) {
|
||||||
|
invokeCallbacks(callbacks.error, event);
|
||||||
|
switch (event.error) {
|
||||||
|
case 'network':
|
||||||
|
invokeCallbacks(callbacks.errorNetwork, event);
|
||||||
|
break;
|
||||||
|
case 'not-allowed':
|
||||||
|
case 'service-not-allowed':
|
||||||
|
// if permission to use the mic is denied, turn off auto-restart
|
||||||
|
autoRestart = false;
|
||||||
|
// determine if permission was denied by user or automatically.
|
||||||
|
if (new Date().getTime()-lastStartedAt < 200) {
|
||||||
|
invokeCallbacks(callbacks.errorPermissionBlocked, event);
|
||||||
|
} else {
|
||||||
|
invokeCallbacks(callbacks.errorPermissionDenied, event);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
recognition.onend = function() {
|
||||||
|
isListening = false;
|
||||||
|
invokeCallbacks(callbacks.end);
|
||||||
|
// annyang will auto restart if it is closed automatically and not by user action.
|
||||||
|
if (autoRestart) {
|
||||||
|
// play nicely with the browser, and never restart annyang automatically more than once per second
|
||||||
|
var timeSinceLastStart = new Date().getTime()-lastStartedAt;
|
||||||
|
autoRestartCount += 1;
|
||||||
|
if (autoRestartCount % 10 === 0) {
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('Speech Recognition is repeatedly stopping and starting. See http://is.gd/annyang_restarts for tips.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (timeSinceLastStart < 1000) {
|
||||||
|
setTimeout(function() {
|
||||||
|
annyang.start({ paused: pauseListening });
|
||||||
|
}, 1000-timeSinceLastStart);
|
||||||
|
} else {
|
||||||
|
annyang.start({ paused: pauseListening });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
recognition.onresult = function(event) {
|
||||||
|
if(pauseListening) {
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('Speech heard, but annyang is paused');
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Map the results to an array
|
||||||
|
var SpeechRecognitionResult = event.results[event.resultIndex];
|
||||||
|
var results = [];
|
||||||
|
for (let k = 0; k<SpeechRecognitionResult.length; k++) {
|
||||||
|
results[k] = SpeechRecognitionResult[k].transcript;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseResults(results);
|
||||||
|
};
|
||||||
|
|
||||||
|
// build commands list
|
||||||
|
if (resetCommands) {
|
||||||
|
commandsList = [];
|
||||||
|
}
|
||||||
|
if (commands.length) {
|
||||||
|
this.addCommands(commands);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start listening.
|
||||||
|
* It's a good idea to call this after adding some commands first, but not mandatory.
|
||||||
|
*
|
||||||
|
* Receives an optional options object which supports the following options:
|
||||||
|
*
|
||||||
|
* - `autoRestart` (boolean, default: true) Should annyang restart itself if it is closed indirectly, because of silence or window conflicts?
|
||||||
|
* - `continuous` (boolean) Allow forcing continuous mode on or off. Annyang is pretty smart about this, so only set this if you know what you're doing.
|
||||||
|
* - `paused` (boolean, default: true) Start annyang in paused mode.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* // Start listening, don't restart automatically
|
||||||
|
* annyang.start({ autoRestart: false });
|
||||||
|
* // Start listening, don't restart automatically, stop recognition after first phrase recognized
|
||||||
|
* annyang.start({ autoRestart: false, continuous: false });
|
||||||
|
* ````
|
||||||
|
* @param {Object} [options] - Optional options.
|
||||||
|
* @method start
|
||||||
|
*/
|
||||||
|
start: function(options) {
|
||||||
|
initIfNeeded();
|
||||||
|
options = options || {};
|
||||||
|
if (options.paused !== undefined) {
|
||||||
|
pauseListening = !!options.paused;
|
||||||
|
} else {
|
||||||
|
pauseListening = false;
|
||||||
|
}
|
||||||
|
if (options.autoRestart !== undefined) {
|
||||||
|
autoRestart = !!options.autoRestart;
|
||||||
|
} else {
|
||||||
|
autoRestart = true;
|
||||||
|
}
|
||||||
|
if (options.continuous !== undefined) {
|
||||||
|
recognition.continuous = !!options.continuous;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastStartedAt = new Date().getTime();
|
||||||
|
try {
|
||||||
|
recognition.start();
|
||||||
|
} catch(e) {
|
||||||
|
if (debugState) {
|
||||||
|
logMessage(e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop listening, and turn off mic.
|
||||||
|
*
|
||||||
|
* Alternatively, to only temporarily pause annyang responding to commands without stopping the SpeechRecognition engine or closing the mic, use pause() instead.
|
||||||
|
* @see [pause()](#pause)
|
||||||
|
*
|
||||||
|
* @method abort
|
||||||
|
*/
|
||||||
|
abort: function() {
|
||||||
|
autoRestart = false;
|
||||||
|
autoRestartCount = 0;
|
||||||
|
if (isInitialized()) {
|
||||||
|
recognition.abort();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pause listening. annyang will stop responding to commands (until the resume or start methods are called), without turning off the browser's SpeechRecognition engine or the mic.
|
||||||
|
*
|
||||||
|
* Alternatively, to stop the SpeechRecognition engine and close the mic, use abort() instead.
|
||||||
|
* @see [abort()](#abort)
|
||||||
|
*
|
||||||
|
* @method pause
|
||||||
|
*/
|
||||||
|
pause: function() {
|
||||||
|
pauseListening = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resumes listening and restores command callback execution when a result matches.
|
||||||
|
* If SpeechRecognition was aborted (stopped), start it.
|
||||||
|
*
|
||||||
|
* @method resume
|
||||||
|
*/
|
||||||
|
resume: function() {
|
||||||
|
annyang.start();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn on output of debug messages to the console. Ugly, but super-handy!
|
||||||
|
*
|
||||||
|
* @param {boolean} [newState=true] - Turn on/off debug messages
|
||||||
|
* @method debug
|
||||||
|
*/
|
||||||
|
debug: function(newState = true) {
|
||||||
|
debugState = !!newState;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the language the user will speak in. If this method is not called, defaults to 'en-US'.
|
||||||
|
*
|
||||||
|
* @param {String} language - The language (locale)
|
||||||
|
* @method setLanguage
|
||||||
|
* @see [Languages](https://github.com/TalAter/annyang/blob/master/docs/FAQ.md#what-languages-are-supported)
|
||||||
|
*/
|
||||||
|
setLanguage: function(language) {
|
||||||
|
initIfNeeded();
|
||||||
|
recognition.lang = language;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add commands that annyang will respond to. Similar in syntax to init(), but doesn't remove existing commands.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* var commands = {'hello :name': helloFunction, 'howdy': helloFunction};
|
||||||
|
* var commands2 = {'hi': helloFunction};
|
||||||
|
*
|
||||||
|
* annyang.addCommands(commands);
|
||||||
|
* annyang.addCommands(commands2);
|
||||||
|
* // annyang will now listen to all three commands
|
||||||
|
* ````
|
||||||
|
*
|
||||||
|
* @param {Object} commands - Commands that annyang should listen to
|
||||||
|
* @method addCommands
|
||||||
|
* @see [Commands Object](#commands-object)
|
||||||
|
*/
|
||||||
|
addCommands: function(commands) {
|
||||||
|
var cb;
|
||||||
|
|
||||||
|
initIfNeeded();
|
||||||
|
|
||||||
|
for (let phrase in commands) {
|
||||||
|
if (commands.hasOwnProperty(phrase)) {
|
||||||
|
cb = root[commands[phrase]] || commands[phrase];
|
||||||
|
if (typeof cb === 'function') {
|
||||||
|
// convert command to regex then register the command
|
||||||
|
registerCommand(commandToRegExp(phrase), cb, phrase);
|
||||||
|
} else if (typeof cb === 'object' && cb.regexp instanceof RegExp) {
|
||||||
|
// register the command
|
||||||
|
registerCommand(new RegExp(cb.regexp.source, 'i'), cb.callback, phrase);
|
||||||
|
} else {
|
||||||
|
if (debugState) {
|
||||||
|
logMessage('Can not register command: %c'+phrase, debugStyle);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove existing commands. Called with a single phrase, array of phrases, or methodically. Pass no params to remove all commands.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* var commands = {'hello': helloFunction, 'howdy': helloFunction, 'hi': helloFunction};
|
||||||
|
*
|
||||||
|
* // Remove all existing commands
|
||||||
|
* annyang.removeCommands();
|
||||||
|
*
|
||||||
|
* // Add some commands
|
||||||
|
* annyang.addCommands(commands);
|
||||||
|
*
|
||||||
|
* // Don't respond to hello
|
||||||
|
* annyang.removeCommands('hello');
|
||||||
|
*
|
||||||
|
* // Don't respond to howdy or hi
|
||||||
|
* annyang.removeCommands(['howdy', 'hi']);
|
||||||
|
* ````
|
||||||
|
* @param {String|Array|Undefined} [commandsToRemove] - Commands to remove
|
||||||
|
* @method removeCommands
|
||||||
|
*/
|
||||||
|
removeCommands: function(commandsToRemove) {
|
||||||
|
if (commandsToRemove === undefined) {
|
||||||
|
commandsList = [];
|
||||||
|
} else {
|
||||||
|
commandsToRemove = Array.isArray(commandsToRemove) ? commandsToRemove : [commandsToRemove];
|
||||||
|
commandsList = commandsList.filter(command => {
|
||||||
|
for (let i = 0; i<commandsToRemove.length; i++) {
|
||||||
|
if (commandsToRemove[i] === command.originalPhrase) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a callback function to be called in case one of the following events happens:
|
||||||
|
*
|
||||||
|
* * `start` - Fired as soon as the browser's Speech Recognition engine starts listening
|
||||||
|
* * `soundstart` - Fired as soon as any sound (possibly speech) has been detected.
|
||||||
|
* This will fire once per Speech Recognition starting. See https://is.gd/annyang_sound_start
|
||||||
|
* * `error` - Fired when the browser's Speech Recogntion engine returns an error, this generic error callback will be followed by more accurate error callbacks (both will fire if both are defined)
|
||||||
|
* Callback function will be called with the error event as the first argument
|
||||||
|
* * `errorNetwork` - Fired when Speech Recognition fails because of a network error
|
||||||
|
* Callback function will be called with the error event as the first argument
|
||||||
|
* * `errorPermissionBlocked` - Fired when the browser blocks the permission request to use Speech Recognition.
|
||||||
|
* Callback function will be called with the error event as the first argument
|
||||||
|
* * `errorPermissionDenied` - Fired when the user blocks the permission request to use Speech Recognition.
|
||||||
|
* Callback function will be called with the error event as the first argument
|
||||||
|
* * `end` - Fired when the browser's Speech Recognition engine stops
|
||||||
|
* * `result` - Fired as soon as some speech was identified. This generic callback will be followed by either the `resultMatch` or `resultNoMatch` callbacks.
|
||||||
|
* Callback functions for to this event will be called with an array of possible phrases the user said as the first argument
|
||||||
|
* * `resultMatch` - Fired when annyang was able to match between what the user said and a registered command
|
||||||
|
* Callback functions for this event will be called with three arguments in the following order:
|
||||||
|
* * The phrase the user said that matched a command
|
||||||
|
* * The command that was matched
|
||||||
|
* * An array of possible alternative phrases the user might have said
|
||||||
|
* * `resultNoMatch` - Fired when what the user said didn't match any of the registered commands.
|
||||||
|
* Callback functions for this event will be called with an array of possible phrases the user might've said as the first argument
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* annyang.addCallback('error', function() {
|
||||||
|
* $('.myErrorText').text('There was an error!');
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* annyang.addCallback('resultMatch', function(userSaid, commandText, phrases) {
|
||||||
|
* console.log(userSaid); // sample output: 'hello'
|
||||||
|
* console.log(commandText); // sample output: 'hello (there)'
|
||||||
|
* console.log(phrases); // sample output: ['hello', 'halo', 'yellow', 'polo', 'hello kitty']
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // pass local context to a global function called notConnected
|
||||||
|
* annyang.addCallback('errorNetwork', notConnected, this);
|
||||||
|
* ````
|
||||||
|
* @param {String} type - Name of event that will trigger this callback
|
||||||
|
* @param {Function} callback - The function to call when event is triggered
|
||||||
|
* @param {Object} [context] - Optional context for the callback function
|
||||||
|
* @method addCallback
|
||||||
|
*/
|
||||||
|
addCallback: function(type, callback, context) {
|
||||||
|
var cb = root[callback] || callback;
|
||||||
|
if (typeof cb === 'function' && callbacks[type] !== undefined) {
|
||||||
|
callbacks[type].push({callback: cb, context: context || this});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove callbacks from events.
|
||||||
|
*
|
||||||
|
* - Pass an event name and a callback command to remove that callback command from that event type.
|
||||||
|
* - Pass just an event name to remove all callback commands from that event type.
|
||||||
|
* - Pass undefined as event name and a callback command to remove that callback command from all event types.
|
||||||
|
* - Pass no params to remove all callback commands from all event types.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* annyang.addCallback('start', myFunction1);
|
||||||
|
* annyang.addCallback('start', myFunction2);
|
||||||
|
* annyang.addCallback('end', myFunction1);
|
||||||
|
* annyang.addCallback('end', myFunction2);
|
||||||
|
*
|
||||||
|
* // Remove all callbacks from all events:
|
||||||
|
* annyang.removeCallback();
|
||||||
|
*
|
||||||
|
* // Remove all callbacks attached to end event:
|
||||||
|
* annyang.removeCallback('end');
|
||||||
|
*
|
||||||
|
* // Remove myFunction2 from being called on start:
|
||||||
|
* annyang.removeCallback('start', myFunction2);
|
||||||
|
*
|
||||||
|
* // Remove myFunction1 from being called on all events:
|
||||||
|
* annyang.removeCallback(undefined, myFunction1);
|
||||||
|
* ````
|
||||||
|
*
|
||||||
|
* @param type Name of event type to remove callback from
|
||||||
|
* @param callback The callback function to remove
|
||||||
|
* @returns undefined
|
||||||
|
* @method removeCallback
|
||||||
|
*/
|
||||||
|
removeCallback: function(type, callback) {
|
||||||
|
var compareWithCallbackParameter = function(cb) {
|
||||||
|
return cb.callback !== callback;
|
||||||
|
};
|
||||||
|
// Go over each callback type in callbacks store object
|
||||||
|
for (let callbackType in callbacks) {
|
||||||
|
if (callbacks.hasOwnProperty(callbackType)) {
|
||||||
|
// if this is the type user asked to delete, or he asked to delete all, go ahead.
|
||||||
|
if (type === undefined || type === callbackType) {
|
||||||
|
// If user asked to delete all callbacks in this type or all types
|
||||||
|
if (callback === undefined) {
|
||||||
|
callbacks[callbackType] = [];
|
||||||
|
} else {
|
||||||
|
// Remove all matching callbacks
|
||||||
|
callbacks[callbackType] = callbacks[callbackType].filter(compareWithCallbackParameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if speech recognition is currently on.
|
||||||
|
* Returns false if speech recognition is off or annyang is paused.
|
||||||
|
*
|
||||||
|
* @return boolean true = SpeechRecognition is on and annyang is listening
|
||||||
|
* @method isListening
|
||||||
|
*/
|
||||||
|
isListening: function() {
|
||||||
|
return isListening && !pauseListening;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the instance of the browser's SpeechRecognition object used by annyang.
|
||||||
|
* Useful in case you want direct access to the browser's Speech Recognition engine.
|
||||||
|
*
|
||||||
|
* @returns SpeechRecognition The browser's Speech Recognizer currently used by annyang
|
||||||
|
* @method getSpeechRecognizer
|
||||||
|
*/
|
||||||
|
getSpeechRecognizer: function() {
|
||||||
|
return recognition;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simulate speech being recognized. This will trigger the same events and behavior as when the Speech Recognition
|
||||||
|
* detects speech.
|
||||||
|
*
|
||||||
|
* Can accept either a string containing a single sentence, or an array containing multiple sentences to be checked
|
||||||
|
* in order until one of them matches a command (similar to the way Speech Recognition Alternatives are parsed)
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* annyang.trigger('Time for some thrilling heroics');
|
||||||
|
* annyang.trigger(
|
||||||
|
* ['Time for some thrilling heroics', 'Time for some thrilling aerobics']
|
||||||
|
* );
|
||||||
|
* ````
|
||||||
|
*
|
||||||
|
* @param string|array sentences A sentence as a string or an array of strings of possible sentences
|
||||||
|
* @returns undefined
|
||||||
|
* @method trigger
|
||||||
|
*/
|
||||||
|
trigger: function(sentences) {
|
||||||
|
if(!annyang.isListening()) {
|
||||||
|
if (debugState) {
|
||||||
|
if (!isListening) {
|
||||||
|
logMessage('Cannot trigger while annyang is aborted');
|
||||||
|
} else {
|
||||||
|
logMessage('Speech heard, but annyang is paused');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Array.isArray(sentences)) {
|
||||||
|
sentences = [sentences];
|
||||||
|
}
|
||||||
|
|
||||||
|
parseResults(sentences);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return annyang;
|
||||||
|
|
||||||
|
}));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* # Good to Know
|
||||||
|
*
|
||||||
|
* ## Commands Object
|
||||||
|
*
|
||||||
|
* Both the [init()]() and addCommands() methods receive a `commands` object.
|
||||||
|
*
|
||||||
|
* annyang understands commands with `named variables`, `splats`, and `optional words`.
|
||||||
|
*
|
||||||
|
* * Use `named variables` for one word arguments in your command.
|
||||||
|
* * Use `splats` to capture multi-word text at the end of your command (greedy).
|
||||||
|
* * Use `optional words` or phrases to define a part of the command as optional.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````html
|
||||||
|
* <script>
|
||||||
|
* var commands = {
|
||||||
|
* // annyang will capture anything after a splat (*) and pass it to the function.
|
||||||
|
* // e.g. saying "Show me Batman and Robin" will call showFlickr('Batman and Robin');
|
||||||
|
* 'show me *tag': showFlickr,
|
||||||
|
*
|
||||||
|
* // A named variable is a one word variable, that can fit anywhere in your command.
|
||||||
|
* // e.g. saying "calculate October stats" will call calculateStats('October');
|
||||||
|
* 'calculate :month stats': calculateStats,
|
||||||
|
*
|
||||||
|
* // By defining a part of the following command as optional, annyang will respond
|
||||||
|
* // to both: "say hello to my little friend" as well as "say hello friend"
|
||||||
|
* 'say hello (to my little) friend': greeting
|
||||||
|
* };
|
||||||
|
*
|
||||||
|
* var showFlickr = function(tag) {
|
||||||
|
* var url = 'http://api.flickr.com/services/rest/?tags='+tag;
|
||||||
|
* $.getJSON(url);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* var calculateStats = function(month) {
|
||||||
|
* $('#stats').text('Statistics for '+month);
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* var greeting = function() {
|
||||||
|
* $('#greeting').text('Hello!');
|
||||||
|
* }
|
||||||
|
* </script>
|
||||||
|
* ````
|
||||||
|
*
|
||||||
|
* ### Using Regular Expressions in commands
|
||||||
|
* For advanced commands, you can pass a regular expression object, instead of
|
||||||
|
* a simple string command.
|
||||||
|
*
|
||||||
|
* This is done by passing an object containing two properties: `regexp`, and
|
||||||
|
* `callback` instead of the function.
|
||||||
|
*
|
||||||
|
* #### Examples:
|
||||||
|
* ````javascript
|
||||||
|
* var calculateFunction = function(month) { console.log(month); }
|
||||||
|
* var commands = {
|
||||||
|
* // This example will accept any word as the "month"
|
||||||
|
* 'calculate :month stats': calculateFunction,
|
||||||
|
* // This example will only accept months which are at the start of a quarter
|
||||||
|
* 'calculate :quarter stats': {'regexp': /^calculate (January|April|July|October) stats$/, 'callback': calculateFunction}
|
||||||
|
* }
|
||||||
|
````
|
||||||
|
*
|
||||||
|
*/
|
||||||
2
js/getmdl-select.min.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
"use strict";!function(){function e(){getmdlSelect.init(".getmdl-select")}window.addEventListener?window.addEventListener("load",e,!1):window.attachEvent&&window.attachEvent("onload",e)}();var getmdlSelect={_defaultValue:{width:300},_addEventListeners:function(e){var t=e.querySelector("input"),n=e.querySelector('input[type="hidden"]'),l=e.querySelectorAll("li"),a=e.querySelector(".mdl-js-menu"),o=e.querySelector(".mdl-icon-toggle__label"),i="",c="",s="",u=!1,d=function(o){var i=o.textContent.trim();if(t.value=i,l.forEach(function(e){e.classList.remove("selected")}),o.classList.add("selected"),e.MaterialTextfield.change(i),setTimeout(function(){e.MaterialTextfield.updateClasses_()},250),n.value=o.dataset.val||"",c=t.value,s=n.value,"createEvent"in document){var u=document.createEvent("HTMLEvents");u.initEvent("change",!1,!0),a.MaterialMenu.hide(),t.dispatchEvent(u)}else t.fireEvent("onchange")},r=function(){u=!1,t.value=c,n.value=s,e.querySelector(".mdl-menu__container").classList.contains("is-visible")||e.classList.remove("is-focused");var l=document.querySelectorAll(".getmdl-select .mdl-js-menu");[].forEach.call(l,function(e){e.MaterialMenu.hide()});var o=new Event("closeSelect");a.dispatchEvent(o)};document.body.addEventListener("click",r,!1),e.onkeydown=function(l){9==l.keyCode&&(t.value=c,n.value=s,a.MaterialMenu.hide(),e.classList.remove("is-focused"))},t.onfocus=function(e){a.MaterialMenu.show(),a.focus(),u=!0},t.onblur=function(e){e.stopPropagation()},t.onclick=function(t){t.stopPropagation(),a.classList.contains("is-visible")?(a.MaterialMenu.hide(),u=!1):(a.MaterialMenu.show(),r(),e.classList.add("is-focused"),u=!0)},t.onkeydown=function(l){27==l.keyCode&&(t.value=c,n.value=s,a.MaterialMenu.hide(),e.MaterialTextfield.onBlur_(),""!==i&&(e.querySelector(".mdl-textfield__label").textContent=i,i=""))},a.addEventListener("closeSelect",function(l){t.value=c,n.value=s,e.classList.remove("is-focused"),""!==i&&(e.querySelector(".mdl-textfield__label").textContent=i,i="")}),a.onkeydown=function(l){27==l.keyCode&&(t.value=c,n.value=s,e.classList.remove("is-focused"),""!==i&&(e.querySelector(".mdl-textfield__label").textContent=i,i=""))},o&&(o.onclick=function(l){l.stopPropagation(),u?(a.MaterialMenu.hide(),u=!1,e.classList.remove("is-focused"),e.MaterialTextfield.onBlur_(),t.value=c,n.value=s):(r(),e.MaterialTextfield.onFocus_(),t.focus(),a.MaterialMenu.show(),u=!0)}),[].forEach.call(l,function(n){n.onfocus=function(){e.classList.add("is-focused");var l=n.textContent.trim();t.value=l,e.classList.contains("mdl-textfield--floating-label")||""!=i||(i=e.querySelector(".mdl-textfield__label").textContent.trim(),e.querySelector(".mdl-textfield__label").textContent="")},n.onclick=function(){d(n)},n.dataset.selected&&d(n)})},init:function(e){var t=document.querySelectorAll(e);[].forEach.call(t,function(e){getmdlSelect._addEventListeners(e),componentHandler.upgradeElement(e),componentHandler.upgradeElement(e.querySelector("ul"))})}};
|
||||||
|
//# sourceMappingURL=getmdl-select.min.js.map
|
||||||
6227
js/index.js
Normal file
4
js/jquery-1.11.1.min.js
vendored
Normal file
114
js/jquery.cookie.js
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery Cookie Plugin v1.4.1
|
||||||
|
* https://github.com/carhartl/jquery-cookie
|
||||||
|
*
|
||||||
|
* Copyright 2006, 2014 Klaus Hartl
|
||||||
|
* Released under the MIT license
|
||||||
|
*/
|
||||||
|
(function (factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
// AMD (Register as an anonymous module)
|
||||||
|
define(['jquery'], factory);
|
||||||
|
} else if (typeof exports === 'object') {
|
||||||
|
// Node/CommonJS
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
} else {
|
||||||
|
// Browser globals
|
||||||
|
factory(jQuery);
|
||||||
|
}
|
||||||
|
}(function ($) {
|
||||||
|
|
||||||
|
var pluses = /\+/g;
|
||||||
|
|
||||||
|
function encode(s) {
|
||||||
|
return config.raw ? s : encodeURIComponent(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
function decode(s) {
|
||||||
|
return config.raw ? s : decodeURIComponent(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stringifyCookieValue(value) {
|
||||||
|
return encode(config.json ? JSON.stringify(value) : String(value));
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseCookieValue(s) {
|
||||||
|
if (s.indexOf('"') === 0) {
|
||||||
|
// This is a quoted cookie as according to RFC2068, unescape...
|
||||||
|
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Replace server-side written pluses with spaces.
|
||||||
|
// If we can't decode the cookie, ignore it, it's unusable.
|
||||||
|
// If we can't parse the cookie, ignore it, it's unusable.
|
||||||
|
s = decodeURIComponent(s.replace(pluses, ' '));
|
||||||
|
return config.json ? JSON.parse(s) : s;
|
||||||
|
} catch(e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
function read(s, converter) {
|
||||||
|
var value = config.raw ? s : parseCookieValue(s);
|
||||||
|
return $.isFunction(converter) ? converter(value) : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
var config = $.cookie = function (key, value, options) {
|
||||||
|
|
||||||
|
// Write
|
||||||
|
|
||||||
|
if (arguments.length > 1 && !$.isFunction(value)) {
|
||||||
|
options = $.extend({}, config.defaults, options);
|
||||||
|
|
||||||
|
if (typeof options.expires === 'number') {
|
||||||
|
var days = options.expires, t = options.expires = new Date();
|
||||||
|
t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (document.cookie = [
|
||||||
|
encode(key), '=', stringifyCookieValue(value),
|
||||||
|
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
||||||
|
options.path ? '; path=' + options.path : '',
|
||||||
|
options.domain ? '; domain=' + options.domain : '',
|
||||||
|
options.secure ? '; secure' : ''
|
||||||
|
].join(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read
|
||||||
|
|
||||||
|
var result = key ? undefined : {},
|
||||||
|
// To prevent the for loop in the first place assign an empty array
|
||||||
|
// in case there are no cookies at all. Also prevents odd result when
|
||||||
|
// calling $.cookie().
|
||||||
|
cookies = document.cookie ? document.cookie.split('; ') : [],
|
||||||
|
i = 0,
|
||||||
|
l = cookies.length;
|
||||||
|
|
||||||
|
for (; i < l; i++) {
|
||||||
|
var parts = cookies[i].split('='),
|
||||||
|
name = decode(parts.shift()),
|
||||||
|
cookie = parts.join('=');
|
||||||
|
|
||||||
|
if (key === name) {
|
||||||
|
// If second argument (value) is a function it's a converter...
|
||||||
|
result = read(cookie, value);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prevent storing a cookie that we couldn't decode.
|
||||||
|
if (!key && (cookie = read(cookie)) !== undefined) {
|
||||||
|
result[name] = cookie;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
||||||
|
config.defaults = {};
|
||||||
|
|
||||||
|
$.removeCookie = function (key, options) {
|
||||||
|
// Must not alter options, thus extending a fresh object...
|
||||||
|
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
|
||||||
|
return !$.cookie(key);
|
||||||
|
};
|
||||||
|
|
||||||
|
}));
|
||||||
10
js/jquery.mobile-1.4.5.min.js
vendored
Normal file
2
js/jquery.storageapi.min.js
vendored
Normal file
11
js/jquery.ui.touch-punch.min.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
/*!
|
||||||
|
* jQuery UI Touch Punch 0.2.3
|
||||||
|
*
|
||||||
|
* Copyright 2011–2014, Dave Furfero
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.ui.widget.js
|
||||||
|
* jquery.ui.mouse.js
|
||||||
|
*/
|
||||||
|
!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
|
||||||
519
js/json2.js
Normal file
@@ -0,0 +1,519 @@
|
|||||||
|
/*
|
||||||
|
json2.js
|
||||||
|
2015-05-03
|
||||||
|
|
||||||
|
Public Domain.
|
||||||
|
|
||||||
|
NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
||||||
|
|
||||||
|
See http://www.JSON.org/js.html
|
||||||
|
|
||||||
|
|
||||||
|
This code should be minified before deployment.
|
||||||
|
See http://javascript.crockford.com/jsmin.html
|
||||||
|
|
||||||
|
USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
|
||||||
|
NOT CONTROL.
|
||||||
|
|
||||||
|
|
||||||
|
This file creates a global JSON object containing two methods: stringify
|
||||||
|
and parse. This file is provides the ES5 JSON capability to ES3 systems.
|
||||||
|
If a project might run on IE8 or earlier, then this file should be included.
|
||||||
|
This file does nothing on ES5 systems.
|
||||||
|
|
||||||
|
JSON.stringify(value, replacer, space)
|
||||||
|
value any JavaScript value, usually an object or array.
|
||||||
|
|
||||||
|
replacer an optional parameter that determines how object
|
||||||
|
values are stringified for objects. It can be a
|
||||||
|
function or an array of strings.
|
||||||
|
|
||||||
|
space an optional parameter that specifies the indentation
|
||||||
|
of nested structures. If it is omitted, the text will
|
||||||
|
be packed without extra whitespace. If it is a number,
|
||||||
|
it will specify the number of spaces to indent at each
|
||||||
|
level. If it is a string (such as '\t' or ' '),
|
||||||
|
it contains the characters used to indent at each level.
|
||||||
|
|
||||||
|
This method produces a JSON text from a JavaScript value.
|
||||||
|
|
||||||
|
When an object value is found, if the object contains a toJSON
|
||||||
|
method, its toJSON method will be called and the result will be
|
||||||
|
stringified. A toJSON method does not serialize: it returns the
|
||||||
|
value represented by the name/value pair that should be serialized,
|
||||||
|
or undefined if nothing should be serialized. The toJSON method
|
||||||
|
will be passed the key associated with the value, and this will be
|
||||||
|
bound to the value
|
||||||
|
|
||||||
|
For example, this would serialize Dates as ISO strings.
|
||||||
|
|
||||||
|
Date.prototype.toJSON = function (key) {
|
||||||
|
function f(n) {
|
||||||
|
// Format integers to have at least two digits.
|
||||||
|
return n < 10
|
||||||
|
? '0' + n
|
||||||
|
: n;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.getUTCFullYear() + '-' +
|
||||||
|
f(this.getUTCMonth() + 1) + '-' +
|
||||||
|
f(this.getUTCDate()) + 'T' +
|
||||||
|
f(this.getUTCHours()) + ':' +
|
||||||
|
f(this.getUTCMinutes()) + ':' +
|
||||||
|
f(this.getUTCSeconds()) + 'Z';
|
||||||
|
};
|
||||||
|
|
||||||
|
You can provide an optional replacer method. It will be passed the
|
||||||
|
key and value of each member, with this bound to the containing
|
||||||
|
object. The value that is returned from your method will be
|
||||||
|
serialized. If your method returns undefined, then the member will
|
||||||
|
be excluded from the serialization.
|
||||||
|
|
||||||
|
If the replacer parameter is an array of strings, then it will be
|
||||||
|
used to select the members to be serialized. It filters the results
|
||||||
|
such that only members with keys listed in the replacer array are
|
||||||
|
stringified.
|
||||||
|
|
||||||
|
Values that do not have JSON representations, such as undefined or
|
||||||
|
functions, will not be serialized. Such values in objects will be
|
||||||
|
dropped; in arrays they will be replaced with null. You can use
|
||||||
|
a replacer function to replace those with JSON values.
|
||||||
|
JSON.stringify(undefined) returns undefined.
|
||||||
|
|
||||||
|
The optional space parameter produces a stringification of the
|
||||||
|
value that is filled with line breaks and indentation to make it
|
||||||
|
easier to read.
|
||||||
|
|
||||||
|
If the space parameter is a non-empty string, then that string will
|
||||||
|
be used for indentation. If the space parameter is a number, then
|
||||||
|
the indentation will be that many spaces.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
text = JSON.stringify(['e', {pluribus: 'unum'}]);
|
||||||
|
// text is '["e",{"pluribus":"unum"}]'
|
||||||
|
|
||||||
|
|
||||||
|
text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
|
||||||
|
// text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
|
||||||
|
|
||||||
|
text = JSON.stringify([new Date()], function (key, value) {
|
||||||
|
return this[key] instanceof Date
|
||||||
|
? 'Date(' + this[key] + ')'
|
||||||
|
: value;
|
||||||
|
});
|
||||||
|
// text is '["Date(---current time---)"]'
|
||||||
|
|
||||||
|
|
||||||
|
JSON.parse(text, reviver)
|
||||||
|
This method parses a JSON text to produce an object or array.
|
||||||
|
It can throw a SyntaxError exception.
|
||||||
|
|
||||||
|
The optional reviver parameter is a function that can filter and
|
||||||
|
transform the results. It receives each of the keys and values,
|
||||||
|
and its return value is used instead of the original value.
|
||||||
|
If it returns what it received, then the structure is not modified.
|
||||||
|
If it returns undefined then the member is deleted.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
// Parse the text. Values that look like ISO date strings will
|
||||||
|
// be converted to Date objects.
|
||||||
|
|
||||||
|
myData = JSON.parse(text, function (key, value) {
|
||||||
|
var a;
|
||||||
|
if (typeof value === 'string') {
|
||||||
|
a =
|
||||||
|
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
|
||||||
|
if (a) {
|
||||||
|
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
|
||||||
|
+a[5], +a[6]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
|
||||||
|
myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
|
||||||
|
var d;
|
||||||
|
if (typeof value === 'string' &&
|
||||||
|
value.slice(0, 5) === 'Date(' &&
|
||||||
|
value.slice(-1) === ')') {
|
||||||
|
d = new Date(value.slice(5, -1));
|
||||||
|
if (d) {
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
This is a reference implementation. You are free to copy, modify, or
|
||||||
|
redistribute.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*jslint
|
||||||
|
eval, for, this
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*property
|
||||||
|
JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
|
||||||
|
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
|
||||||
|
lastIndex, length, parse, prototype, push, replace, slice, stringify,
|
||||||
|
test, toJSON, toString, valueOf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// Create a JSON object only if one does not already exist. We create the
|
||||||
|
// methods in a closure to avoid creating global variables.
|
||||||
|
|
||||||
|
if (typeof JSON !== 'object') {
|
||||||
|
JSON = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var rx_one = /^[\],:{}\s]*$/,
|
||||||
|
rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
|
||||||
|
rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||||||
|
rx_four = /(?:^|:|,)(?:\s*\[)+/g,
|
||||||
|
rx_escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
||||||
|
rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
|
||||||
|
|
||||||
|
function f(n) {
|
||||||
|
// Format integers to have at least two digits.
|
||||||
|
return n < 10
|
||||||
|
? '0' + n
|
||||||
|
: n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function this_value() {
|
||||||
|
return this.valueOf();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof Date.prototype.toJSON !== 'function') {
|
||||||
|
|
||||||
|
Date.prototype.toJSON = function () {
|
||||||
|
|
||||||
|
return isFinite(this.valueOf())
|
||||||
|
? this.getUTCFullYear() + '-' +
|
||||||
|
f(this.getUTCMonth() + 1) + '-' +
|
||||||
|
f(this.getUTCDate()) + 'T' +
|
||||||
|
f(this.getUTCHours()) + ':' +
|
||||||
|
f(this.getUTCMinutes()) + ':' +
|
||||||
|
f(this.getUTCSeconds()) + 'Z'
|
||||||
|
: null;
|
||||||
|
};
|
||||||
|
|
||||||
|
Boolean.prototype.toJSON = this_value;
|
||||||
|
Number.prototype.toJSON = this_value;
|
||||||
|
String.prototype.toJSON = this_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
var gap,
|
||||||
|
indent,
|
||||||
|
meta,
|
||||||
|
rep;
|
||||||
|
|
||||||
|
|
||||||
|
function quote(string) {
|
||||||
|
|
||||||
|
// If the string contains no control characters, no quote characters, and no
|
||||||
|
// backslash characters, then we can safely slap some quotes around it.
|
||||||
|
// Otherwise we must also replace the offending characters with safe escape
|
||||||
|
// sequences.
|
||||||
|
|
||||||
|
rx_escapable.lastIndex = 0;
|
||||||
|
return rx_escapable.test(string)
|
||||||
|
? '"' + string.replace(rx_escapable, function (a) {
|
||||||
|
var c = meta[a];
|
||||||
|
return typeof c === 'string'
|
||||||
|
? c
|
||||||
|
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||||
|
}) + '"'
|
||||||
|
: '"' + string + '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function str(key, holder) {
|
||||||
|
|
||||||
|
// Produce a string from holder[key].
|
||||||
|
|
||||||
|
var i, // The loop counter.
|
||||||
|
k, // The member key.
|
||||||
|
v, // The member value.
|
||||||
|
length,
|
||||||
|
mind = gap,
|
||||||
|
partial,
|
||||||
|
value = holder[key];
|
||||||
|
|
||||||
|
// If the value has a toJSON method, call it to obtain a replacement value.
|
||||||
|
|
||||||
|
if (value && typeof value === 'object' &&
|
||||||
|
typeof value.toJSON === 'function') {
|
||||||
|
value = value.toJSON(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we were called with a replacer function, then call the replacer to
|
||||||
|
// obtain a replacement value.
|
||||||
|
|
||||||
|
if (typeof rep === 'function') {
|
||||||
|
value = rep.call(holder, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// What happens next depends on the value's type.
|
||||||
|
|
||||||
|
switch (typeof value) {
|
||||||
|
case 'string':
|
||||||
|
return quote(value);
|
||||||
|
|
||||||
|
case 'number':
|
||||||
|
|
||||||
|
// JSON numbers must be finite. Encode non-finite numbers as null.
|
||||||
|
|
||||||
|
return isFinite(value)
|
||||||
|
? String(value)
|
||||||
|
: 'null';
|
||||||
|
|
||||||
|
case 'boolean':
|
||||||
|
case 'null':
|
||||||
|
|
||||||
|
// If the value is a boolean or null, convert it to a string. Note:
|
||||||
|
// typeof null does not produce 'null'. The case is included here in
|
||||||
|
// the remote chance that this gets fixed someday.
|
||||||
|
|
||||||
|
return String(value);
|
||||||
|
|
||||||
|
// If the type is 'object', we might be dealing with an object or an array or
|
||||||
|
// null.
|
||||||
|
|
||||||
|
case 'object':
|
||||||
|
|
||||||
|
// Due to a specification blunder in ECMAScript, typeof null is 'object',
|
||||||
|
// so watch out for that case.
|
||||||
|
|
||||||
|
if (!value) {
|
||||||
|
return 'null';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make an array to hold the partial results of stringifying this object value.
|
||||||
|
|
||||||
|
gap += indent;
|
||||||
|
partial = [];
|
||||||
|
|
||||||
|
// Is the value an array?
|
||||||
|
|
||||||
|
if (Object.prototype.toString.apply(value) === '[object Array]') {
|
||||||
|
|
||||||
|
// The value is an array. Stringify every element. Use null as a placeholder
|
||||||
|
// for non-JSON values.
|
||||||
|
|
||||||
|
length = value.length;
|
||||||
|
for (i = 0; i < length; i += 1) {
|
||||||
|
partial[i] = str(i, value) || 'null';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Join all of the elements together, separated with commas, and wrap them in
|
||||||
|
// brackets.
|
||||||
|
|
||||||
|
v = partial.length === 0
|
||||||
|
? '[]'
|
||||||
|
: gap
|
||||||
|
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
|
||||||
|
: '[' + partial.join(',') + ']';
|
||||||
|
gap = mind;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the replacer is an array, use it to select the members to be stringified.
|
||||||
|
|
||||||
|
if (rep && typeof rep === 'object') {
|
||||||
|
length = rep.length;
|
||||||
|
for (i = 0; i < length; i += 1) {
|
||||||
|
if (typeof rep[i] === 'string') {
|
||||||
|
k = rep[i];
|
||||||
|
v = str(k, value);
|
||||||
|
if (v) {
|
||||||
|
partial.push(quote(k) + (
|
||||||
|
gap
|
||||||
|
? ': '
|
||||||
|
: ':'
|
||||||
|
) + v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Otherwise, iterate through all of the keys in the object.
|
||||||
|
|
||||||
|
for (k in value) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
||||||
|
v = str(k, value);
|
||||||
|
if (v) {
|
||||||
|
partial.push(quote(k) + (
|
||||||
|
gap
|
||||||
|
? ': '
|
||||||
|
: ':'
|
||||||
|
) + v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Join all of the member texts together, separated with commas,
|
||||||
|
// and wrap them in braces.
|
||||||
|
|
||||||
|
v = partial.length === 0
|
||||||
|
? '{}'
|
||||||
|
: gap
|
||||||
|
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
|
||||||
|
: '{' + partial.join(',') + '}';
|
||||||
|
gap = mind;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the JSON object does not yet have a stringify method, give it one.
|
||||||
|
|
||||||
|
if (typeof JSON.stringify !== 'function') {
|
||||||
|
meta = { // table of character substitutions
|
||||||
|
'\b': '\\b',
|
||||||
|
'\t': '\\t',
|
||||||
|
'\n': '\\n',
|
||||||
|
'\f': '\\f',
|
||||||
|
'\r': '\\r',
|
||||||
|
'"': '\\"',
|
||||||
|
'\\': '\\\\'
|
||||||
|
};
|
||||||
|
JSON.stringify = function (value, replacer, space) {
|
||||||
|
|
||||||
|
// The stringify method takes a value and an optional replacer, and an optional
|
||||||
|
// space parameter, and returns a JSON text. The replacer can be a function
|
||||||
|
// that can replace values, or an array of strings that will select the keys.
|
||||||
|
// A default replacer method can be provided. Use of the space parameter can
|
||||||
|
// produce text that is more easily readable.
|
||||||
|
|
||||||
|
var i;
|
||||||
|
gap = '';
|
||||||
|
indent = '';
|
||||||
|
|
||||||
|
// If the space parameter is a number, make an indent string containing that
|
||||||
|
// many spaces.
|
||||||
|
|
||||||
|
if (typeof space === 'number') {
|
||||||
|
for (i = 0; i < space; i += 1) {
|
||||||
|
indent += ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the space parameter is a string, it will be used as the indent string.
|
||||||
|
|
||||||
|
} else if (typeof space === 'string') {
|
||||||
|
indent = space;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there is a replacer, it must be a function or an array.
|
||||||
|
// Otherwise, throw an error.
|
||||||
|
|
||||||
|
rep = replacer;
|
||||||
|
if (replacer && typeof replacer !== 'function' &&
|
||||||
|
(typeof replacer !== 'object' ||
|
||||||
|
typeof replacer.length !== 'number')) {
|
||||||
|
throw new Error('JSON.stringify');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make a fake root object containing our value under the key of ''.
|
||||||
|
// Return the result of stringifying the value.
|
||||||
|
|
||||||
|
return str('', {'': value});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// If the JSON object does not yet have a parse method, give it one.
|
||||||
|
|
||||||
|
if (typeof JSON.parse !== 'function') {
|
||||||
|
JSON.parse = function (text, reviver) {
|
||||||
|
|
||||||
|
// The parse method takes a text and an optional reviver function, and returns
|
||||||
|
// a JavaScript value if the text is a valid JSON text.
|
||||||
|
|
||||||
|
var j;
|
||||||
|
|
||||||
|
function walk(holder, key) {
|
||||||
|
|
||||||
|
// The walk method is used to recursively walk the resulting structure so
|
||||||
|
// that modifications can be made.
|
||||||
|
|
||||||
|
var k, v, value = holder[key];
|
||||||
|
if (value && typeof value === 'object') {
|
||||||
|
for (k in value) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(value, k)) {
|
||||||
|
v = walk(value, k);
|
||||||
|
if (v !== undefined) {
|
||||||
|
value[k] = v;
|
||||||
|
} else {
|
||||||
|
delete value[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return reviver.call(holder, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Parsing happens in four stages. In the first stage, we replace certain
|
||||||
|
// Unicode characters with escape sequences. JavaScript handles many characters
|
||||||
|
// incorrectly, either silently deleting them, or treating them as line endings.
|
||||||
|
|
||||||
|
text = String(text);
|
||||||
|
rx_dangerous.lastIndex = 0;
|
||||||
|
if (rx_dangerous.test(text)) {
|
||||||
|
text = text.replace(rx_dangerous, function (a) {
|
||||||
|
return '\\u' +
|
||||||
|
('0000' + a.charCodeAt(0).toString(16)).slice(-4);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// In the second stage, we run the text against regular expressions that look
|
||||||
|
// for non-JSON patterns. We are especially concerned with '()' and 'new'
|
||||||
|
// because they can cause invocation, and '=' because it can cause mutation.
|
||||||
|
// But just to be safe, we want to reject all unexpected forms.
|
||||||
|
|
||||||
|
// We split the second stage into 4 regexp operations in order to work around
|
||||||
|
// crippling inefficiencies in IE's and Safari's regexp engines. First we
|
||||||
|
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
|
||||||
|
// replace all simple value tokens with ']' characters. Third, we delete all
|
||||||
|
// open brackets that follow a colon or comma or that begin the text. Finally,
|
||||||
|
// we look to see that the remaining characters are only whitespace or ']' or
|
||||||
|
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
|
||||||
|
|
||||||
|
if (
|
||||||
|
rx_one.test(
|
||||||
|
text
|
||||||
|
.replace(rx_two, '@')
|
||||||
|
.replace(rx_three, ']')
|
||||||
|
.replace(rx_four, '')
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
|
||||||
|
// In the third stage we use the eval function to compile the text into a
|
||||||
|
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
|
||||||
|
// in JavaScript: it can begin a block or an object literal. We wrap the text
|
||||||
|
// in parens to eliminate the ambiguity.
|
||||||
|
|
||||||
|
j = eval('(' + text + ')');
|
||||||
|
|
||||||
|
// In the optional fourth stage, we recursively walk the new structure, passing
|
||||||
|
// each name/value pair to a reviver function for possible transformation.
|
||||||
|
|
||||||
|
return typeof reviver === 'function'
|
||||||
|
? walk({'': j}, '')
|
||||||
|
: j;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the text is not JSON parseable, then a SyntaxError is thrown.
|
||||||
|
|
||||||
|
throw new SyntaxError('JSON.parse');
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}());
|
||||||
10
js/jszip-utils.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/*!
|
||||||
|
|
||||||
|
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
||||||
|
<http://stuk.github.io/jszip-utils>
|
||||||
|
|
||||||
|
(c) 2014 Stuart Knightley, David Duponchel
|
||||||
|
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
||||||
|
|
||||||
|
*/
|
||||||
|
!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.JSZipUtils=a():"undefined"!=typeof global?global.JSZipUtils=a():"undefined"!=typeof self&&(self.JSZipUtils=a())}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b){"use strict";function c(){try{return new window.XMLHttpRequest}catch(a){}}function d(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}}var e={};e._getBinaryFromXHR=function(a){return a.response||a.responseText};var f=window.ActiveXObject?function(){return c()||d()}:c;e.getBinaryContent=function(a,b){try{var c=f();c.open("GET",a,!0),"responseType"in c&&(c.responseType="arraybuffer"),c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined"),c.onreadystatechange=function(){var d,f;if(4===c.readyState)if(200===c.status||0===c.status){d=null,f=null;try{d=e._getBinaryFromXHR(c)}catch(g){f=new Error(g)}b(f,d)}else b(new Error("Ajax error for "+a+" : "+this.status+" "+this.statusText),null)},c.send()}catch(d){b(new Error(d),null)}},b.exports=e},{}]},{},[1])(1)});
|
||||||
15
js/jszip.min.js
vendored
Normal file
5
js/leaflet.js
Normal file
4
js/osrm.js
Normal file
1
js/sweetalert2.min.js
vendored
Normal file
BIN
logoEmtusaAzul152.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
41
manifest.json
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "Emtusa WebApp",
|
||||||
|
"short_name": "APPEmtusa",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "logoEmtusaAzul16.png",
|
||||||
|
"sizes": "16x16",
|
||||||
|
"type": "image/png",
|
||||||
|
"density": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "logoEmtusaAzul152.png",
|
||||||
|
"sizes": "152x152",
|
||||||
|
"type": "image/png",
|
||||||
|
"density": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "logoEmtusaAzul196.png",
|
||||||
|
"sizes": "196x196",
|
||||||
|
"type": "image/png",
|
||||||
|
"density": 1.0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"permissions": ["http://www.emtusahuelva.es/","http://www.emtusahuelva.com/"],
|
||||||
|
"description": "Aplicacion de autobuses de Huelva",
|
||||||
|
"start_url": "index.html",
|
||||||
|
"display": "standalone",
|
||||||
|
"orientation": "landscape",
|
||||||
|
"background_color": "#169FF1",
|
||||||
|
"theme_color": "#169FF1",
|
||||||
|
"dir": "ltr",
|
||||||
|
"related_applications": [
|
||||||
|
{
|
||||||
|
"platform": "play",
|
||||||
|
"url": "https://play.google.com/store/apps/details?id=net.tecnosis.EmtusaHuelva",
|
||||||
|
"id": "net.tecnosis.EmtusaHuelva"
|
||||||
|
}, {
|
||||||
|
"platform": "itunes",
|
||||||
|
"url": "https://itunes.apple.com/es/app/appemtusa-mapa-lineas-y-paradas/id1134003175?mt=8"
|
||||||
|
}]
|
||||||
|
}
|
||||||
6227
slick/index.js
Normal file
204
slick/slick-theme.css
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
@charset 'UTF-8';
|
||||||
|
/* Slider */
|
||||||
|
.slick-loading .slick-list
|
||||||
|
{
|
||||||
|
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Icons */
|
||||||
|
@font-face
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
|
||||||
|
src: url('./fonts/slick.eot');
|
||||||
|
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
|
||||||
|
}
|
||||||
|
/* Arrows */
|
||||||
|
.slick-prev,
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 0;
|
||||||
|
-webkit-transform: translate(0, -50%);
|
||||||
|
-ms-transform: translate(0, -50%);
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: none;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover,
|
||||||
|
.slick-prev:focus,
|
||||||
|
.slick-next:hover,
|
||||||
|
.slick-next:focus
|
||||||
|
{
|
||||||
|
color: transparent;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-prev:hover:before,
|
||||||
|
.slick-prev:focus:before,
|
||||||
|
.slick-next:hover:before,
|
||||||
|
.slick-next:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-prev.slick-disabled:before,
|
||||||
|
.slick-next.slick-disabled:before
|
||||||
|
{
|
||||||
|
opacity: .25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev:before,
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 1;
|
||||||
|
|
||||||
|
opacity: .75;
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-prev
|
||||||
|
{
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
.slick-prev:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-prev:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-next
|
||||||
|
{
|
||||||
|
right: -25px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next
|
||||||
|
{
|
||||||
|
right: auto;
|
||||||
|
left: -25px;
|
||||||
|
}
|
||||||
|
.slick-next:before
|
||||||
|
{
|
||||||
|
content: '→';
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-next:before
|
||||||
|
{
|
||||||
|
content: '←';
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dots */
|
||||||
|
.slick-dotted.slick-slider
|
||||||
|
{
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-dots
|
||||||
|
{
|
||||||
|
position: absolute;
|
||||||
|
bottom: -25px;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
list-style: none;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.slick-dots li
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin: 0 5px;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.slick-dots li button
|
||||||
|
{
|
||||||
|
font-size: 0;
|
||||||
|
line-height: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
padding: 5px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
color: transparent;
|
||||||
|
border: 0;
|
||||||
|
outline: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover,
|
||||||
|
.slick-dots li button:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-dots li button:hover:before,
|
||||||
|
.slick-dots li button:focus:before
|
||||||
|
{
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.slick-dots li button:before
|
||||||
|
{
|
||||||
|
font-family: 'slick';
|
||||||
|
font-size: 6px;
|
||||||
|
line-height: 20px;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
|
||||||
|
content: '•';
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
opacity: .25;
|
||||||
|
color: black;
|
||||||
|
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
.slick-dots li.slick-active button:before
|
||||||
|
{
|
||||||
|
opacity: .75;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
119
slick/slick.css
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/* Slider */
|
||||||
|
.slick-slider
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
-webkit-user-select: none;
|
||||||
|
-moz-user-select: none;
|
||||||
|
-ms-user-select: none;
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
-webkit-touch-callout: none;
|
||||||
|
-khtml-user-select: none;
|
||||||
|
-ms-touch-action: pan-y;
|
||||||
|
touch-action: pan-y;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-list
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.slick-list:focus
|
||||||
|
{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.slick-list.dragging
|
||||||
|
{
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slider .slick-track,
|
||||||
|
.slick-slider .slick-list
|
||||||
|
{
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-ms-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-track
|
||||||
|
{
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.slick-track:before,
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
display: table;
|
||||||
|
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
.slick-track:after
|
||||||
|
{
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-track
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slick-slide
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
height: 100%;
|
||||||
|
min-height: 1px;
|
||||||
|
}
|
||||||
|
[dir='rtl'] .slick-slide
|
||||||
|
{
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.slick-slide img
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-slide.slick-loading img
|
||||||
|
{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.slick-slide.dragging img
|
||||||
|
{
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.slick-initialized .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.slick-loading .slick-slide
|
||||||
|
{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.slick-vertical .slick-slide
|
||||||
|
{
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
border: 1px solid transparent;
|
||||||
|
}
|
||||||
|
.slick-arrow.slick-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||